[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cvs-ml 747] cvs-1.10.8 knjwrp clint/server bug?
加藤です.
先日,秋葉さんという方から,cvs knjwrp で
cvs update した際に client 側の
file の漢字コードが EUC-JP と SJIS に混在してしまうバグ
の報告とその対策 patch をいただきました.
秋葉さん,どうもありがとうございます.
現在,不幸にして,すぐに使える C/S の再現環境がなく確認しきれてないの
ですが,だいたい以下のような症状のようです.
どなたか,チェックして下さると助かります.
#ちっとはわかりやすい説明になっているとよいのですが....
------------------- ここから ---------------------
1.環境
(1) client: WinCVS knjwrp + server: cvs knjwrp
(2) client の漢字コード SJIS,server の漢字コード EUC-JP
※ WinCVS1.1b で cvs-1.10.8 なら,特に minor version は問わない模様.
2.症状
(1) cvs update した際に client 側の file の漢字コードが EUC-JP と SJIS
に混在してしまう.
3.原因
server 側で RCS-Diff を送るときに
1. wrapnkf を通過しないため EUC で送られてくる.
2. (MD5 sum が EUC で算出されている.)
4.例
foo.txt,v リポジトリ(server) foo.txt (client)
rev. 1.1 rev. 1.1
----------- -----------
ABCDEF ABCDEF
----------- -----------
rev. 1.2
-----------
ABCDEF
あいうえお <--- EUC
-----------
の場合,cvs update foo.txt を行うと,client 側の foo.txt は
-----------
ABCDEF
あいうえお <--- EUC
-----------
となってしまう.
○原因
2行目が server から EUC で差分として送られてきて client で patch をあ
てる際に,server も client も EUC で MD5 を取るのでエラーとは判断されない.
そのため,ファイルは EUC のままで SJIS に変換されない.
ところが...
foo.txt,v リポジトリ(server) foo.txt (client)
rev. 1.1 rev. 1.2
----------- -----------
ABCDEF ABCDEF
----------- あいうえお <--- SJIS
-----------
rev. 1.2
-----------
ABCDEF
あいうえお <--- EUC
-----------
rev. 1.3
-----------
ABCDEF
あいうえお <--- EUC
カキクケコ <--- EUC
-----------
の場合,cvs update foo.txt を行うと,client 側の foo.txt は,
rev. 1.3
-----------
ABCDEF
あいうえお <--- SJIS
カキクケコ <--- EUC
-----------
3行目が server から EUC で差分として送られてきて,client で patch をあ
てる.ところがこの場合,server は EUC で client は SJIS + EUC の状
態で MD5 を取るのでエラーと判断され,ファイル全体を checkout しにいく.
よって,wrapnkf を通過して SJIS のファイルに
となって,症状が見えにくくなっている.
4.対策パッチ
<URL:http://www.linkclub.or.jp/~tumibito/soft-an/cvs/income/akiba.000831.patch>
------------------- ここまで ---------------------
---------------------------------------------------------
今月の目標:
かげろうお銀は誰がやるのか考えよう.
加藤裕史 E-mail: tumibito@air.linkclub.or.jp
<URL:http://www.linkclub.or.jp/~tumibito/>