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

[cvs-ml 941] Re: WinCVSでの改行コード




柳田と申します。
先日、WinCVS で外部 Diff を使うと、改行コードがおかしくなる、
という内容のメールを致しました。が残念ながら何方からも反応を
いただけなかったので、自分でソースを追って見ました。

で、前回のメールでちょっと説明が足りなかったなという反省も込めて、
再度状況を説明致します。

1. リポジトリはsambaで共有している(pserverは使っていない)。
2. もともと改行コードが CRLF のファイルを UNIX 上で import する。
   (リポジトリには CRLFで記録される)

3. WinCVS で checkout する。
    3-1) 共通設定で
         "UNIXの改行コード付きでテキストファイルをチェックアウトする"
         をチェックしない -> 改行コードがCRCRLFになってしまう

    3-2) "UNIXの改行コード付きでテキストファイルをチェックアウトする"
         をチェックする -> 改行コードは正常にCRLFになる

   ここでは 3-2) で checkout します 

4. 外部 diffを使って差分を表示すると、C:\tmp に CRCRLF なファイルが
   チェックアウトされてしまう

というような、内容です。
このような使い方をされている方はいらっしゃらないんでしょうか?
それとも、もっと基本的な部分で僕が勘違いしているんでしょうか?

で、ソースを追っかけた結果、原因が分かりました。
AppGlue.cpp の FILE *launchCVS() という関数内で、tmpFile をテキスト形式で
オープンしているからでした。対策としては、共通設定の設定を参照して、
UNIX LF で checkout していれば、tmpFile をバイナリ形式でオープンしてやれば
良いと思うんですが、このlaunchCVSという関数は、logやグラフ表示のときも、
呼ばれていて、c:\tmp\cvsgui0(null) 等のファイルをオープンしています。

そこで質問です。この cvsgui0(null) というファイルは何に
使われているんでしょうか?
#普段は空のファイルみたいです。

また、上記のような変更はアプローチとして正しいでしょうか?
パッチを添付しておきます。

****************************************************
* 福岡県春日市
*  柳田 和弘 <Kazuhiro YANAGIDA>
*  e-mail: yanagida@gin.or.jp
****************************************************

WinCVS_CRLF.diff.gz