[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cvs-ml 955] Re: WinCVSでの改行コード
From: Kazuhiro YANAGIDA <yanagida@gin.or.jp>
Subject: [cvs-ml 948] Re: WinCVS での改行コード
Date: Wed, 15 Nov 2000 01:21:03 +0900
| 最初のメールにもちょっと書きましたが,私が求めているのは,
| 「pserverを使わない環境で,WinCVSを使って改行コードの変換を
| しないようにするにはどうしたら良いのか?」
改行コードの変換をうまくやってほしいということではなく
変換を止めてほしいということですね。理解しました。
| えっ? "UNIXの改行コード付きで.." をチェックした場合,
| _fmode = _O_BINARY
| になってからファイルをオープンするものだと思ってました.
| なので CRLF で import した場合は,CRLF で checkout されるのは正常な
| 結果だと思ってたんですが….違うんでしょうか?
それは実装のこととですね。
「UNIXの改行コード付きでテキストファイルをチェックアウトする」
というのだけを見て、リポジトリにCRLFで記録されていても
チェックアウトされた作業ファイルの改行コードはLFになると予想したのですが。
| # "UNIXの改行コード付きでテキストファイルをチェックアウトする"
| # の項目は何のためにあるんでしょうか?
ソースコードは参照してませんが、
リポジトリのstringの改行コードはLFに正規化するつもりなんじゃないでしょうか。
(stringについてはrcsfile(5)を参照のこと)
リポジトリの改行コードをLFと想定しているときだけ
「UNIXの改行コード付きで...」するために
バイナリモードでのopenするのが成立します。
もしそうだとすれば、
リポジトリの改行コードがCRLFのときの動作は未定義ということでしょう。
またdiffに喰わせるためのファイルをnon-binaryモードで作成するのは
「diffはwindowsのツールで、unix改行コードを扱えないだろう」
という心遣いからだと思いました。
想像でデータフローを書いてみました。
┌──┐
│ │repository (改行コードはLF)
│ │
└──┘
│ │
checkout┌──┘ └──┐checkout
(いつでも │ │ (UNIXの改行コード付きで)
UNIXの改行コード付き │ ↓
ではない) │ ┌──┐
│ │ │workfile (改行コードはLF)
│ │ │
│ └──┘
│ │
│ │copy workfile to tmp.2
↓ ↓ with s/LF/CRLF/
┌──┐ ┌──┐
tmp.1 │ │ │ │tmp.2
(改行コードはCRLF) │ │ │ │ (改行コードはCRLF)
└──┘ └──┘
│ │
└──┐ ┌──┘
↓ ↓
DIFF
--
KOIE Hidetaka 鯉江英隆 <hide@koie.org>