[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cvs-ml 45] cvs 1.10 + rmtwrp patch, WinCVS
加藤です.
#ボチボチ,cvs 1.10.x に移行しようと画策しています.
前にもちょっと御紹介しましたが,現在の当方の構成はこんなヘンな構成
(^^;;; です.
サーバー ---------------- クライアントその1
HP-UX 10.01 | SunOS 4.1.3
cvs-1.9.26 | cvs-1.9.26 + pcl-cvs Rel.2.0B2
+rmtwrp patch |
+cvsweb |--------- クライアントその2
WinNT4.0 SP3
cvs-1.9.26
(1) クライアント/サーバー間は,pserver で運用しています.
(2) リポジトリ内は EUC-jp で統一しています.
(3) 以前,はやしさんから,クライアント2な環境で,Meadow + pcl-cvs も
運用可能という ありがたいアドバイスをいただきました [cvs-ml 16] が,
まだ,実現に至っていません.
西本さん>
> 今日は pserver の設定もして、こちらの動作も確認しました。
> こうなると、たとえば一つの module を UNIX からは EUC-JP で使い、
> Windows からは SJIS で使えたら、などと思っています。
>
> 移行前の ML で、 remote-client から cvswrappers の filter が
> 使用できるようになる patch (rmtwrp) の話題が出ましたが、
> さきほど入手して確認したら 1.9.18 への patch でした。
> server と Windows 用の client の両方で、patch を当てた
> 実行ファイルが必要であると書かれていました。
>
> cvs-1.10.x や WinCVS でこのような使い方をしておられる方は
> いらっしゃいますか?
まず,rmtwrp patch についてですが,
少なくとも当方では,rmtwrp patch は,サーバー側だけに当てるだけで,OK
でした.昨日,1.10.4 のパッチの当てる先のソース (wrapper.c) をながめて
みましたが,あのパッチで,少なくとも 1.10.4 にはあたります.
ただし,120 行あたりの部分:
homedir = get_homedir ();
/* If we can't find a home directory, ignore ~/.cvswrappers. This may
make tracking down problems a bit of a pain, but on the other
hand it might be obnoxious to complain when CVS will function
just fine without .cvswrappers (and many users won't even know what
.cvswrappers is). */
if (homedir != NULL)
{
は,上記のように,"/* if we can't ... */" というコメント文が新たに挿入
されたので,手で当てる必要がありますね.
あと,rmtwrp patch の作者である河田@富士フイルム さんがお書きになって
いるように,CVS の pserver は今のところ UNIX machine clients と
Windoze-NT/95 clients との区別が出来ません.
そこで,末尾に示すような簡単な修正で,サーバー側の $HOME/.cvswrappers
の設定が優先されるようにし,クライアント1,2のうち多数派な方を
$CVSROOT/cvswrappers に設定し,少数派の方は,各自のホームに,.cvswrappers
をおいてもらって運用しています.
また,rmtwrp patch は,commit する際の log message については関知し
ません (つまり,commit するファイルには filter が効くが,その際の
message には filter が効かない).したがって,このままだと,WinNT で
commit すると,log message が MS-Kanji なままリポジトリ内にいってしま
います.
そこで,WinNT 側だけ,以下のようなことをしています.
(1) 漢字コードコンバーター nkf (Win32 版) を get して cvs と同じディレク
トリに展開する.または,パスの通っているディレクトリに展開してもよい.
(2) 以下のような cvsedit.bat を作成する.
---- cvsedit.bat ----
@echo off
C:\winnt\notepad %1
pause
nkf32 -e %1 > %1.cvs
copy %1.cvs %1 >NUL
del %1.cvs ; %1.bak
---- cvsedit.bat ----
(3) [スタート]-[設定]-[コントロールパネル]-[システム]をクリックして,
「環境」タグを選択し,ユーザー環境変数「CVSEDITOR」に cvsedit.bat
を 登録する.もちろん,set CVSEDITOR = cvsedit.bat でもかまわない.
上記の cvsedit.bat では,エディタとしてメモ 帳 (notepad) を使っていま
すが,もちろんお好みのエディタを指定してもか まいません.その際には,
"C:\winnt\notepad" の部分を使うエディタに置き換えます.
で,次に,クライアント2な環境で WinCVS を使う際の話なのですが,現在,
困っている点が一つあります.
それは,WinCVS の log message の入力の際,MFC なコンポーネント(?) を使っ
てしまうので,(1)-(3) のように,簡単に漢字コードフィルターをかませられ
ないような気がするのです.
#気のせい? (^^;;; ひょっとしたらいい方法があるのでしょうか? > all
そこで,手元の WinCVS を hack しようと考えて,
私>
> いやぁ〜素晴らしい!WinCVS って VC++5.0 でコンパイル可能なのでしょうか?
> <URL:http://www.digapp.com/maccvs/> によると,"It requires Visual C++6.0"
> って書いてあるので,ちょっと躊躇していたのですが...
石本さん>
> どうでしょう?一応、VC5用のプロジェクトファイルは入っているようです
> が試していません。
VC++6.0 と VC++5.0 の両方でやってみましたが,VC++ 5.0 では,「設定の対
象」をwinCVS にしてやっても,
プロジェクトの設定 -> Midl タグ
が存在していないので,ダメでした.VC5用のプロジェクトファイルも同じ状
況です.
VC++6.0 な環境は,借りモノの環境なので,地道に hack or patch or build
するだけの自由度がなく,借りモノじゃない VC++5.0 でできないのは(私にとっ
て)とても悲しい結果でございました.
#よく考えてみれば,私の技量では,もともと,C++ と MFC な組合せなんか,
#とてもじゃないけれど,立ち打ちできなかったですねぇ..(T_T)
暇があれば,cvs-1.10.4/src/rcs*.c あたりに漢字パッチをいれたりできない
か検討する予定でが,どなたかエライ方がやっていらっしゃっていたら,それ
にのりたい気分です (^^;;;;;
付録:
--- wrapper.c.980310 Fri Mar 6 22:57:25 1998
+++ wrapper.c Tue Mar 10 21:29:18 1998
@@ -530,7 +530,9 @@
{
int x,count=wrap_count+wrap_tempcount;
- for(x=0;x<count;++x)
+ /* changed by tumibito, 98/03/10 */
+ /* $CVSROOT/cvswrappers と .cvswrappers でワイルドカードが重なった場合の対処 */
+ for(x=count-1;x>=0;--x)
if (CVS_FNMATCH (wrap_list[x]->wildCard, name, 0) == 0)
return wrap_list[x];
return (WrapperEntry *)NULL;
===============================================================
今月の教訓: 百夜通いとストーカーな世界は紙一重
E-mail: tumibito@mm.rd.nttdata.co.jp