git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Stephen Boyd <bebarino@gmail.com>
Cc: git@vger.kernel.org, Stefan Monnier <monnier@iro.umontreal.ca>
Subject: [PATCH 15/16 v2] cherry-pick, revert: add a label for ancestor
Date: Wed, 17 Mar 2010 22:34:11 -0500	[thread overview]
Message-ID: <20100318033411.GC18193@progeny.tock> (raw)
In-Reply-To: <20100318031638.GA18193@progeny.tock>

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>
---
 builtin/revert.c                |    5 ++++-
 t/t3507-cherry-pick-conflict.sh |    4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/builtin/revert.c b/builtin/revert.c
index b314629..625281c 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -280,7 +280,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 };
 
@@ -367,6 +367,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 \"");
@@ -381,6 +382,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);
@@ -394,6 +396,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)";
 
diff --git a/t/t3507-cherry-pick-conflict.sh b/t/t3507-cherry-pick-conflict.sh
index 6a20817..e25cf80 100644
--- a/t/t3507-cherry-pick-conflict.sh
+++ b/t/t3507-cherry-pick-conflict.sh
@@ -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' '
 	cat <<-EOF > expected &&
 	<<<<<<< HEAD
 	a
-	|||||||
+	||||||| objid picked
 	c
 	=======
 	b
-- 
1.7.0

  parent reply	other threads:[~2010-03-18  3:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-17 11:36 [PATCH v2 0/16] Add label for common ancestor to conflictstyle=diff3 Jonathan Nieder
2010-03-17 11:46 ` [PATCH 01/16] xdl_merge(): add optional ancestor label to diff3-style output Jonathan Nieder
2010-03-17 14:22   ` Bert Wesarg
2010-03-20 22:47     ` Jonathan Nieder
2010-03-17 11:53 ` [PATCH 02/16] xdl_merge(): move file1 and file2 labels to xmparam structure Jonathan Nieder
2010-03-17 11:57 ` [PATCH 03/16] merge-file --diff3: add a label for ancestor Jonathan Nieder
2010-03-17 12:03 ` [PATCH 04/16] ll_merge(): add ancestor label parameter for diff3-style output Jonathan Nieder
2010-03-17 12:04 ` [PATCH 05/16] checkout --conflict=diff3: add a label for ancestor Jonathan Nieder
2010-03-17 12:05 ` [PATCH 06/16] merge_file(): add comment explaining behavior wrt conflict style Jonathan Nieder
2010-03-17 12:08 ` [PATCH 07/16] merge_trees(): add ancestor label parameter for diff3-style output Jonathan Nieder
2010-03-17 12:09 ` [PATCH 08/16] tests: document format of conflicts from checkout -m Jonathan Nieder
2010-03-17 12:13 ` [PATCH 09/16] checkout -m --conflict=diff3: add a label for ancestor Jonathan Nieder
2010-03-17 12:13 ` [PATCH 10/16] tests: document cherry-pick behavior in face of conflicts Jonathan Nieder
2010-03-17 12:15 ` [PATCH 11/16] revert_or_cherry_pick(): get oneline_body from get_oneline() Jonathan Nieder
2010-03-17 20:09   ` Stephen Boyd
2010-03-18  3:16     ` Jonathan Nieder
2010-03-18  3:33       ` [PATCH 11,13,14 v2] revert: clarify label on conflict hunks Jonathan Nieder
2010-03-18  3:34       ` Jonathan Nieder [this message]
2010-03-17 12:16 ` [PATCH 12/16] compat: add mempcpy() Jonathan Nieder
2010-03-17 12:17 ` [PATCH 13/16] revert: simplify get_oneline() using mempcpy Jonathan Nieder
2010-03-17 12:19 ` [PATCH 14/16] revert: clarify label on conflict hunks Jonathan Nieder
2010-03-17 12:23 ` [PATCH 15/16] cherry-pick: add a label for ancestor Jonathan Nieder
2010-03-17 12:26 ` [PATCH 16/16] merge-recursive: " Jonathan Nieder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100318033411.GC18193@progeny.tock \
    --to=jrnieder@gmail.com \
    --cc=bebarino@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).