次: , 前: Which Changes, 上: diff3 Merging


8.2 衝突の印づけ

diff3で,衝突部分に特殊なマーカー行を用いてマージされた出力を 囲むことで,印を付けることが可能です.二つのファイルABから の衝突は,以下のように印が付きます.

     <<<<<<< A
     lines from A
     =======
     lines from B
     >>>>>>> B

三つのファイルABそしてCからの衝突は,以下のように印 が付きます.

     <<<<<<< A
     lines from A
     ||||||| B
     lines from B
     =======
     lines from C
     >>>>>>> C

-A--show-allオプションは,-eオプションのよ うな動作をしますが,衝突部分を大カッコで囲み,マージされていない変更だけ でなく,olderからyoursへのすべての変更を出力します.このため, サンプルの入力ファイル(see Sample diff3 Input)が与えられると, `diff3 -A lao tzu tao'は,tzuの差異部分の衝突の周りに大カッ コを書きます.

     <<<<<<< tzu
     =======
     The Way that can be told of is not the eternal Way;
     The name that can be named is not the eternal name.
     >>>>>>> tao

また,三方向の衝突は以下のように出力されます.

     <<<<<<< lao
     ||||||| tzu
     They both may be called deep and profound.
     Deeper and more profound,
     The door of all subtleties!
     =======
     
       -- The Way of Lao-Tzu, tr. Wing-tsit Chan
     >>>>>>> tao

-E--show-overlapオプションは,-A--show-allオプションより情報が少なくなり,それはマージされてい ない変更だけを出力し,二番目のファイルの内容を出力しないためです.そのた め,-Eオプションは-eオプションのように動作しますが,三 方向のオーバーラップした変更で,最初と三番目のファイルが大カッコで囲みま す.同様に,-X-xのように動作しますが,(オーバーラッ プが必要な)変更のすべてを大カッコで囲みます.例えば,上記のような三方向 のオーバーラップしている変更に対し,-E-Xオプションは 以下を出力します.

     <<<<<<< lao
     =======
     
       -- The Way of Lao-Tzu, tr. Wing-tsit Chan
     >>>>>>> tao

無意味で情報のない名前を持つファイルを比較している場合,`<<<<<<<', `|||||||',そして`>>>>>>>'の大カッコで別名を表示するために, -L label--label=labelオプションを使用す ることが可能です.このオプションで,それぞれの入力ファイルごとに,三回ま で与えることが可能です.このため,`diff3 -A -L X -L Y -L Z A B C'は `diff3 -A A B C'のように動作しますが,出力は,ファイル名`A', `B',そして`C'ではなく,ファイル名`X',`Y',そして `Z'からのようになります.