xdl_merge(): add optional ancestor label to diff3-style output
authorJonathan Nieder <jrnieder@gmail.com>
Sun, 21 Mar 2010 00:31:44 +0000 (19:31 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sun, 21 Mar 2010 03:36:10 +0000 (20:36 -0700)
commit8a161433a0b414d15093e312eb9be99587074309
treee346398c5c40f7aaad66efa4f9f4e07ff9790034
parent6a843348ab08e7c701ac2343ffbe2d11ecb7ebab
xdl_merge(): add optional ancestor label to diff3-style output

The ‘git checkout --conflict=diff3’ command can be used to
present conflicts hunks including text from the common ancestor:

<<<<<<< ours
ourside
|||||||
original
=======
theirside
>>>>>>> theirs

The added information is helpful for resolving merges by hand, and
merge tools can usually grok it because it is very similar to the
output from diff3 -m.

A subtle change can help more tools to understand the output.  ‘diff3’
includes the name of the merge base on the ||||||| line of the output,
and some tools misparse the conflict hunks without it.  Add a new
xmp->ancestor parameter to xdl_merge() for use with conflict style
XDL_MERGE_DIFF3 as a label on the ||||||| line for any conflict hunks.

If xmp->ancestor is NULL, the output format is unchanged.  Thus, this
change only provides unexposed plumbing for the new feature; it does
not affect the outward behavior of git.

Requested-by: Stefan Monnier <monnier@iro.umontreal.ca>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Bert Wesarg <Bert.Wesarg@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff/xdiff.h
xdiff/xmerge.c