|Comparing and Merging Files with GNU diff and patch|
by David MacKenzie, Paul Eggert, and Richard Stallman
Paperback (6"x9"), 120 pages
RRP £12.95 ($19.95)
"Well packaged... the quality of information is excellent" --- Linux User and Developer Magazine (Issue 36, Feb 2004) Get a printed copy>>>
8 Merging From a Common Ancestor
When two people have made changes to copies of the same file,
diff3 can produce a merged output that contains both sets of
changes together with warnings about conflicts.
One might imagine programs with names like
to compare more than three files simultaneously, but in practice the
need rarely arises. You can use
diff3 to merge three or more
sets of changes to a file by merging two change sets at a time.
diff3 can incorporate changes from two modified versions into a
common preceding version. This lets you merge the sets of changes
represented by the two newer files. Specify the common ancestor version
as the second argument and the two newer versions as the first and third
arguments, like this:
diff3 mine older yours
You can remember the order of the arguments by noting that they are in alphabetical order.
You can think of this as subtracting older from yours and adding the result to mine, or as merging into mine the changes that would turn older into yours. This merging is well-defined as long as mine and older match in the neighborhood of each such change. This fails to be true when all three input files differ or when only older differs; we call this a conflict. When all three input files differ, we call the conflict an overlap.
diff3 gives you several ways to handle overlaps and conflicts.
You can omit overlaps or conflicts, or select only overlaps,
or mark conflicts with special ‘<<<<<<<’ and ‘>>>>>>>’ lines.
diff3 can output the merge results as an
ed script that
that can be applied to the first file to yield the merged output.
However, it is usually better to have
diff3 generate the merged
output directly; this bypasses some problems with
|ISBN 0954161750||Comparing and Merging Files with GNU diff and patch||See the print edition|