Friday, November 25, 2005

diff

diff

■オプション
-u unified 出力形式を用いる。
-w, --ignore-all-space 行を比較するときスペースを無視する。不完全な行は無視される。
-y, --side-by-side side-by-side 出力形式を用いる。

■形式
unified 形式
--- FROMFILE FROMFILE-MODIFICATION-TIME
+++ TOFILE TOFILE-MODIFICATION-TIME

-L LABEL を用いるとヘッダの内容は変化する。次に来るのは hunk (テキストブロック) である。繰り返し登場することもある。それぞれの hunk はファイルの異なっている 1 つ 1 つの部分を示している。 unified 形式の hunk は以下のようなものである
@@ FROMFILE-RANGE TOFILE-RANGE @@
LINE-FROM-EITHER-FILE
LINE-FROM-EITHER-FILE...

両者で共通な行の前には 1 つのスペースが置かれる。異なる行の前には以下の表示文字が置かれる:
+ ここで 1 つめのファイルに行の追加が行われた。
- ここで 1 つめのファイルから行の削除が行われた。

side-by-side 形式
ファイルは 2 列に表示され、間に溝 (gutter) が置かれる。溝には以下のマーカーのいずれか 1 つが含まれる。

‘ ’ 対応する行が共通である。つまり、両方の行が同一であるか、違いが --ignore オプションのいずれかによって 無視された。
対応する行が異なる。両方とも完全か、両方とも不完全かである。
< ファイルは異なり、1 番目のファイルにだけこの行が含まれている。
> ファイルは異なり、2 番目のファイルにだけこの行が含まれている。
( 1 番目のファイルにだけこの行が含まれているが、違いは無視される。
) 2 番目のファイルにだけこの行が含まれているが、違いは無視される。
\ 対応する行が異なる。1 番目の行だけに行末の改行がない。
/ 対応する行が異なる。2 番目の行だけに行末の改行がない。通常出力行は、そこに含まれる行の末尾に改行がない場合に限って改行されない。しかし、出力行が 2 行の差異を表している場合には、片方だけに改行がない場合もあり 得る。この場合出力行には改行が出力されるが、溝のマークは 1 番目の行末に改行がなければ ‘\’ に、2 番目の行末に改行がなければ ‘/’ になる。

side-by-side 形式が一番読みやすいような場合もあるが、限界もある。この形式は通常よりもずっと広い幅の出力を生 成 し、長すぎる行は折り畳んでしまう。またこの出力では通常よりも文字の整列への依存が大きくなるので、等幅フォントを 使っていなかったり、通常と異なるタブストップを使っていたり、印字されない文字を使っていたりすると、出力が非常に醜くなる。

No comments:

Post a Comment