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