8.2 Marking Conflicts
diff3
can mark conflicts in the merged output by
bracketing them with special marker lines. A conflict
that comes from two files A and B is marked as follows:
| <<<<<<< A
lines from A
=======
lines from B
>>>>>>> B
|
A conflict that comes from three files A, B and C is
marked as follows:
| <<<<<<< A
lines from A
||||||| B
lines from B
=======
lines from C
>>>>>>> C
|
The ‘-A’ or ‘--show-all’ option acts like the ‘-e’
option, except that it brackets conflicts, and it outputs all changes
from older to yours, not just the unmerged changes. Thus,
given the sample input files (see section A Third Sample Input File), ‘diff3
-A lao tzu tao’ puts brackets around the conflict where only ‘tzu’
differs:
| <<<<<<< 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
|
And it outputs the three-way conflict as follows:
| <<<<<<< 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
|
The ‘-E’ or ‘--show-overlap’ option outputs less information
than the ‘-A’ or ‘--show-all’ option, because it outputs only
unmerged changes, and it never outputs the contents of the second
file. Thus the ‘-E’ option acts like the ‘-e’ option,
except that it brackets the first and third files from three-way
overlapping changes. Similarly, ‘-X’ acts like ‘-x’, except
it brackets all its (necessarily overlapping) changes. For example,
for the three-way overlapping change above, the ‘-E’ and ‘-X’
options output the following:
| <<<<<<< lao
=======
-- The Way of Lao-Tzu, tr. Wing-tsit Chan
>>>>>>> tao
|
If you are comparing files that have meaningless or uninformative names,
you can use the ‘-L label’ or ‘--label=label’
option to show alternate names in the ‘<<<<<<<’, ‘|||||||’
and ‘>>>>>>>’ brackets. This option can be given up to three
times, once for each input file. Thus ‘diff3 -A -L X -L Y -L Z A
B C’ acts like ‘diff3 -A A B C’, except that the output looks like
it came from files named ‘X’, ‘Y’ and ‘Z’ rather than
from files named ‘A’, ‘B’ and ‘C’.