[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cvs-ml 856] Re: WinCVS / cvs knjwrpの現状と課題



はじめまして。岡と申します。

Hiroshi Kato <tumibito@air.linkclub.or.jp> さん:
> (4) client mode の SJIS <-> EUC
> 	(a) テキスト	(b) ファイル名	(c) commited log (d) diff / rdiff
>     いろいろ考えたけど,server で対応するよりも client に対応する方がよさそう.

これに関して、1.10.8 ベースの Win用 cvs.exe にパッチを当てて、
上記の「(b) ファイル名」を除き、SJIS <-> EUC 変換を行うように
したものが手元にあります。以下のような特徴および制限があります。


・-J というグローバルオプションを付けると、サーバとのやり取りで、
  sjis/euc 変換が行なわれる。

	例: cvs -J import -m 'initial version' foo bar start

・特に、import 時と checkout 時は、上の例のように、-J を付ける必要
  がある。

・import 時に -J が付いていると、カレントディレクトリ (すなわち、
  モジュールのトップディレクトリ) に、.cvsjconv という(空の)ファイル
  が作成される。

・import/checkout 以外のコマンドは、-J オプションが付いていなくても、
  トップディレクリトリに .cvsjconv があれば、sjis/euc 変換を行なう。

  つまり、-J を付けて import/checkout することにより、後は、その
  モジュール全体で sjis/euc 変換を行なえるようになるわけである。

・現在のところ、sjis/euc 変換が行なわれることを確認しているコマンドは、

    import / checkout / commit / update / log / diff / rdiff / annotate

  である。commit と import のログメッセージについては、-m オプションに
  よる指定、およびエディタによる入力のどちらも、変換される。

・制限: コード変換は、cvsサーバとのデータ交換用バッファを直接いじって
        いるので、1バイト半角カナを、euc の2バイト半角カナに変換する
        ことができない。しかたがないので、半角カナは、すべて '#' に
        置換される。

・注意: commit や update など、ファイルが対象となるコマンドについては、
        作業ディレクトリ (CVSディレクトリを持つディレクトリ) 上で実行する
        必要がある。これは、.cvsjconv の有無を検索するためである。
        (あるいは、-J を付ければよい)

・注意: -J を付けずに import したモジュールを、cvs -J checkout すると、
        半角カナ文字および、ShiftJISコードで 0xE040 以降の文字が化ける。
        第一水準の文字は化けないので気づかない可能性がある。注意すること。


問題は、あまり(というか、ほとんど)テストされていないことです(^^;
それでも興味がおありの方がいらっしゃるようでしたら、パッチを公開
いたします。
--
岡 俊行 (OKA, Toshiyuki) oka@langedge.com