このページの内容

7.4 diff3 の hunk

入力ファイルの2つまたは3つで異なる行の集まりを、diff の hunk(hunk を参照)にならって diff3 の hunk と呼びます。diff3 の hunk で3つの入力ファイルがすべて異なる場合は 3方向の hunk、2つだけが異なる場合は 2方向の hunk と呼びます。

diff と同様に、複数の解が可能です。「A」「B」「C」を比較するとき、diff3 は通常、2つのコマンド「diff A B」と「diff A C」が出力する2方向の hunk をまとめることで、diff3 の hunk を求めます。これが出力の大きさを最小にするとは限りませんが、例外はまれなはずです。

たとえば F に「a」「b」「f」の3行があり、G に「g」「b」「g」、H に「a」「b」「h」があるとします。「diff3 F G H」は次のように出力するかもしれません。

====2
1:1c
3:1c
  a
2:1c
  g
====
1:3c
  f
2:3c
  g
3:3c
  h

これは、1番目と3番目のファイルの「a」と2番目のファイルの「g」を含む2方向の hunk を求め、次に3つのファイルで共通する1行「b」、最後に各ファイルの最終行を含む3方向の hunk を求めたためです。