Improved three-way blob merging code
authorLinus Torvalds <torvalds@osdl.org>
Thu, 29 Jun 2006 05:06:36 +0000 (22:06 -0700)
committerJunio C Hamano <junkio@cox.net>
Thu, 29 Jun 2006 05:24:45 +0000 (22:24 -0700)
commit0c7993839b92f466278439a724023f8be50391c1
treefd1fc5395f2dce9c742b0902c82fe60e4b9da718
parent83788070a3dd0a4905dd76c865320c51f7d74a83
Improved three-way blob merging code

This fleshes out the code that generates a three-way merge of a set of
blobs.

It still actually does the three-way merge using an external executable
(ie just calling "merge"), but the interfaces have been cleaned up a lot
and are now fully based on the 'mmfile_t' interface, so if libxdiff were
to ever grow a compatible three-way-merge, it could probably be directly
plugged in.

It also uses the previous XDL_EMIT_COMMON functionality extension to
libxdiff to generate a made-up base file for the merge for the case where
no base file previously existed. This should be equivalent to what we
currently do in git-merge-one-file.sh:

diff -u -La/$orig -Lb/$orig $orig $src2 | git-apply --no-add

except it should be much simpler and can be done using the direct libxdiff
interfaces.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile
merge-file.c [new file with mode: 0644]
merge-tree.c