Hatena::ブログ(Diary)

shouhの日記

2014-03-14

WinMerge で差分を比較すると黄色一色になった件

改行コードが違うから。WinMerge から以下の設定を行うと直る。

編集 > 設定 > 比較 > 改行文字の違いを無視する


余談。SVNGit を使っていると、改行コードを変えたつもりがないのに、このような現象が起きることがある。それは SVNGit が、コミット前に改行コードを変換してコミットしているから。どうもバージョン管理ソフトウェアは、OS間の改行コードの違いを吸収するために、リポジトリへのコミット時とリポジトリからの取り込み時に、対象ファイルを特定の改行コードに変換するようだ。

たとえば Windows で使われる改行コードは CRLF なので、ファイルの改行コードも CRLF である。これはコミット時には、たとえば LF に変換される。このファイルを Windows からローカルに取り込む場合は、LF から CRLF に変換されてから取り込む。Linux から取り込む場合は(Linux で使われる改行コードは LF だから)変換は不要。…こんな仕組みみたい。なるほど、確かにこれなら OS 間での改行コードの違いを気にする必要はないですね。

こういう仕組みがあるから、ローカルに保持しているファイルと、リポジトリ内にあるファイルとでは、改行コードに違いが生じることがある。