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 を求めたためです。