Browse Source

cherry-pick, revert: add a label for ancestor

When writing conflict hunks in ‘diff3 -m’ format, also add a label to
the common ancestor.  Especially in a cherry-pick, it is not immediately
obvious without such a label what the common ancestor represents.

git rerere does not have trouble parsing the new output and its preimage
ids are unchanged since it includes its own code for recreating conflict
hunks.  No other code in git parses 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>
maint
Jonathan Nieder 15 years ago committed by Junio C Hamano
parent
commit
bf975d379d
  1. 5
      builtin/revert.c
  2. 4
      t/t3507-cherry-pick-conflict.sh

5
builtin/revert.c

@ -281,7 +281,7 @@ static int revert_or_cherry_pick(int argc, const char **argv) @@ -281,7 +281,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
{
unsigned char head[20];
struct commit *base, *next, *parent;
const char *next_label;
const char *base_label, *next_label;
int i, index_fd, clean;
struct commit_message msg = { NULL, NULL, NULL, NULL, NULL };

@ -368,6 +368,7 @@ static int revert_or_cherry_pick(int argc, const char **argv) @@ -368,6 +368,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)

if (action == REVERT) {
base = commit;
base_label = msg.label;
next = parent;
next_label = msg.parent_label;
add_to_msg("Revert \"");
@ -382,6 +383,7 @@ static int revert_or_cherry_pick(int argc, const char **argv) @@ -382,6 +383,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
add_to_msg(".\n");
} else {
base = parent;
base_label = msg.parent_label;
next = commit;
next_label = msg.label;
set_author_ident_env(msg.message);
@ -395,6 +397,7 @@ static int revert_or_cherry_pick(int argc, const char **argv) @@ -395,6 +397,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)

read_cache();
init_merge_options(&o);
o.ancestor = base ? base_label : "(empty tree)";
o.branch1 = "HEAD";
o.branch2 = next ? next_label : "(empty tree)";


4
t/t3507-cherry-pick-conflict.sh

@ -112,7 +112,7 @@ test_expect_success 'diff3 -m style' ' @@ -112,7 +112,7 @@ test_expect_success 'diff3 -m style' '
cat <<-EOF > expected &&
<<<<<<< HEAD
a
|||||||
||||||| parent of objid picked
b
=======
c
@ -179,7 +179,7 @@ test_expect_success 'revert conflict, diff3 -m style' ' @@ -179,7 +179,7 @@ test_expect_success 'revert conflict, diff3 -m style' '
cat <<-EOF > expected &&
<<<<<<< HEAD
a
|||||||
||||||| objid picked
c
=======
b

Loading…
Cancel
Save