|Developer(s)||AT&T Bell Laboratories|
|Initial release||January 1979|
|Operating system||Unix and Unix-like|
History and implementationsEdit
This section is missing information about algorithm and similarity to diff.June 2020)(
On most modern Unix-like systems, even BSD-derived ones like FreeBSD and NetBSD, the diff3 provided is GNU's version in diffutils (formerly GNU Tools). This version has the ability to merge files on its own without relying on
ed. It internally invokes
diff to do the comparison, but can use any other compatible tool too.
"Diff3" has also become a generic name for the three-way-merge algorithm, specifically one based on reconciling two different diffs stemming from the first source.
Merging from a common ancestorEdit
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. diff3 can 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 enables users to merge the sets of changes represented by the two newer files. This can be enabled using a command like this:
diff3 mine older yours.
This is like subtracting the file
older from the file
yours and adding the result to the file
mine, or as merging into
mine the changes that would turn
yours. This merging is well-defined as long as
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; this is a conflict. When all three input files differ, the conflict is an overlap.
diff3 has several methods to handle overlaps and conflicts. It can omit overlaps or conflicts, or select only overlaps, or mark conflicts with special