@matheusbsbs / matheus-bagliano / commits / f0531a2937
Fork 0

checkout --conflict=diff3: add a label for ancestor

git checkout --conflict=diff3 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 a merge by hand, and merge tools can usually understand it without trouble because it looks like output from ‘diff3 -m’. diff3 includes a label for the merge base on the ||||||| line, and it seems some tools (for example, Emacs 22’s smerge-mode) cannot parse conflict hunks without such a label. Humans could use help in interpreting the output, too. So change the marker for the start of the text from the common ancestor to include the label “base”. git rerere’s conflict identifiers are not affected: to parse conflict hunks, rerere looks for whitespace after the ||||||| marker rather than a newline, and to compute preimage ids, rerere has its own code for creating conflict hunks. No other code in git tries to parse conflict hunks. Requested-by: Stefan Monnier <monnier@iro.umontreal.ca> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jonathan Nieder committed Mar 20, 2010 at 19:40 UTC f0531a2937e919e763ab05e9800aef51658104fc
2 files changed +3 -3
builtin/checkout.c
+1 -1
@@ -149,7 +149,7 @@ static int checkout_merged(int pos, struct checkout *state)
149 read_mmblob(&ours, active_cache[pos+1]->sha1);
150 read_mmblob(&theirs, active_cache[pos+2]->sha1);
151
152 - status = ll_merge(&result_buf, path, &ancestor, NULL,
152 + status = ll_merge(&result_buf, path, &ancestor, "base",
153 &ours, "ours", &theirs, "theirs", 0);
154 free(ancestor.ptr);
155 free(ours.ptr);
t/t7201-co.sh
+2 -2
@@ -538,7 +538,7 @@ test_expect_success 'checkout with --merge, in diff3 -m style' '
538 (
539 echo "<<<<<<< ours"
540 echo ourside
541 - echo "|||||||"
541 + echo "||||||| base"
542 echo original
543 echo "======="
544 echo theirside
@@ -582,7 +582,7 @@ test_expect_success 'checkout --conflict=diff3' '
582 (
583 echo "<<<<<<< ours"
584 echo ourside
585 - echo "|||||||"
585 + echo "||||||| base"
586 echo original
587 echo "======="
588 echo theirside