[PATCH 14/16] revert: clarify label on conflict hunks
From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:48:26
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 <redacted> --- 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