[PATCH 14/16] revert: clarify label on conflict hunks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When reverting a commit, the commit being merged is not the commit
to revert itself but its parent.  Clarify the text in conflict
hunks to explain this.

Example:

	<<<<<<< HEAD
	Something old.
	Something new.
	Something blue.
	=======
	Something old.
	Something rotten.
	Something blue.
	>>>>>>> parent of ac789a9... Remove rotten line

Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
---
New patch: a small fix.

 builtin/revert.c                |   14 +++++++++-----
 t/t3507-cherry-pick-conflict.sh |    4 ++--
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/builtin/revert.c b/builtin/revert.c
index 6a47655..56f2947 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -73,11 +73,11 @@ static void parse_args(int argc, const char **argv)
 		exit(1);
 }
 
-static char *get_oneline(const char *message, char **body)
+static char *get_oneline(const char *message, int revert, char **body)
 {
 	char *result, *q;
-	const char *p = message, *abbrev, *eol;
-	int abbrev_len, oneline_len;
+	const char *p = message, *prefix, *abbrev, *eol;
+	int prefix_len, abbrev_len, oneline_len;
 
 	if (!p)
 		die ("Could not read commit message of %s",
@@ -91,10 +91,14 @@ static char *get_oneline(const char *message, char **body)
 			; /* do nothing */
 	} else
 		eol = p;
+	prefix = revert ? "parent of " : "";
+	prefix_len = revert ? strlen("parent of ") : 0;
 	abbrev = find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV);
 	abbrev_len = strlen(abbrev);
 	oneline_len = eol - p;
-	q = result = xmalloc(abbrev_len + strlen("... ") + oneline_len + 1);
+	q = result = xmalloc(prefix_len + abbrev_len +
+			     strlen("... ") + oneline_len + 1);
+	q = mempcpy(q, prefix, prefix_len);
 	q = mempcpy(q, abbrev, abbrev_len);
 	*body = q = mempcpy(q, "... ", strlen("... "));
 	q = mempcpy(q, p, oneline_len);
@@ -341,7 +345,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
 					git_commit_encoding, encoding)))
 		message = reencoded_message;
 
-	oneline = get_oneline(message, &oneline_body);
+	oneline = get_oneline(message, action == REVERT, &oneline_body);
 
 	if (action == REVERT) {
 		base = commit;
diff --git a/t/t3507-cherry-pick-conflict.sh b/t/t3507-cherry-pick-conflict.sh
index e856356..6a20817 100644
--- a/t/t3507-cherry-pick-conflict.sh
+++ b/t/t3507-cherry-pick-conflict.sh
@@ -138,7 +138,7 @@ test_expect_success 'revert also handles conflicts sanely' '
 	a
 	=======
 	b
-	>>>>>>> objid picked
+	>>>>>>> parent of objid picked
 	EOF
 	{
 		git checkout picked -- foo &&
@@ -183,7 +183,7 @@ test_expect_success 'revert conflict, diff3 -m style' '
 	c
 	=======
 	b
-	>>>>>>> objid picked
+	>>>>>>> parent of objid picked
 	EOF
 
 	git update-index --refresh &&
-- 
1.7.0

--
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]