summaryrefslogtreecommitdiff
path: root/builtin/revert.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/revert.c')
-rw-r--r--builtin/revert.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/builtin/revert.c b/builtin/revert.c
index 1f27c63343..5f9fa44db4 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -481,8 +481,6 @@ static int do_pick_commit(void)
strbuf_addstr(&msgbuf, sha1_to_hex(commit->object.sha1));
strbuf_addstr(&msgbuf, ")\n");
}
- if (!no_commit)
- write_cherry_pick_head();
}
if (!strategy || !strcmp(strategy, "recursive") || action == REVERT) {
@@ -503,6 +501,15 @@ static int do_pick_commit(void)
free_commit_list(remotes);
}
+ /*
+ * If the merge was clean or if it failed due to conflict, we write
+ * CHERRY_PICK_HEAD for the subsequent invocation of commit to use.
+ * However, if the merge did not even start, then we don't want to
+ * write it at all.
+ */
+ if (action == CHERRY_PICK && !no_commit && (res == 0 || res == 1))
+ write_cherry_pick_head();
+
if (res) {
error(action == REVERT
? _("could not revert %s... %s")