Jonathan Nieder wrote: > Stefan Monnier wrote [1]: >> I can't live without conflictstyle=diff3m and I'm very happy it exists. >> But it has a little problem: it uses "|||||||\n" as a separator for the >> ancestor version of the text, whereas diff3 uses "||||||| <ancestorname>\n". >> The difference is harmless for a human (tho the <ancestorname> can sometimes >> be useful, assuming it's meaningful), but it makes some tools fail to >> recognize the conflict markers properly. >> So please add a " BASE" or " ANCESTOR" after the "|||||||". > > No opinion on this myself. I changed my mind; it looked like a useful and fun thing to do, so here it is. The bad news is that sometimes the labels for the ancestor are kind of pointless, as in “merged common ancestors” for merge-recursive. I am not planning to improve this soon. I’d be thrilled if someone changes it to something like “merge of ac76d, 8d7ca9, and 81873”. This patch series adds a label for the common ancestor to various places git outputs conflict hunks: <<<<<<< ours Text from the current branch ||||||| original Text from the merge base ======= Text from the remote branch >>>>>>> theirs I am hoping this output will be more self explanatory, especially in cases where it is not completely obvious to a naïve user what the common ancestor would be, such as cherry-pick. This passes all tests here and I tried to find any untested in-tree consumers of conflict hunks that would be affected to make sure it would be safe. I would like to see it get some testing on other machines, especially by people using merge tools and other programs that parse conflicts. Thoughts? Jonathan Nieder (10): xdl_merge(): add optional ancestor label to diff3-style output merge-file --diff3: add a label for ancestor ll_merge(): add ancestor label parameter for diff3-style output checkout --conflict=diff3: add a label for ancestor merge_file(): add comment explaining behavior wrt conflict style merge_trees(): add ancestor label parameter for diff3-style output tests: document format of conflicts from checkout -m checkout -m --conflict=diff3: add a label for ancestor cherry-pick: add a label for ancestor merge-recursive: add a label for ancestor builtin/checkout.c | 3 +- builtin/merge-file.c | 1 + builtin/revert.c | 1 + ll-merge.c | 20 ++++++++------ ll-merge.h | 2 +- merge-file.c | 8 +++++- merge-recursive.c | 12 ++++++-- merge-recursive.h | 1 + rerere.c | 4 +- t/t6023-merge-file.sh | 2 +- t/t7201-co.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++---- xdiff/xdiff.h | 1 + xdiff/xmerge.c | 16 ++++++++++- 13 files changed, 114 insertions(+), 26 deletions(-) [1] http://bugs.debian.org/572720 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html