[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