diffutils: Marking Conflicts
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 '--show-all' ('-A') 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
(⇒Sample diff3 Input), '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 '--show-overlap' ('-E') option outputs less information than the
'--show-all' ('-A') 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 '--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
--label X --label Y --label 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'.