diff options
author | Michael J Gruber <git@grubix.eu> | 2017-08-23 15:10:45 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-08-23 20:35:02 +0300 |
commit | 9d89b35526b54c3ba33371b184a1ba6e30f8f46f (patch) | |
tree | c8ee29a878b32625273316edf9c84bbfce7c19cf /builtin/merge.c | |
parent | 8e6a6bb36037da87ac98da280459269168b9f525 (diff) |
merge: save merge state earlier
If the `git merge` process is killed while waiting for the editor to
finish, the merge state is lost but the prepared merge msg and tree is kept.
So, a subsequent `git commit` creates a squashed merge even when the
user asked for proper merge commit originally.
Demonstrate the problem with a test crafted after the in t7502. The test
requires EXECKEEPSPID (thus does not run under MINGW).
Save the merge state earlier (in the non-squash case) so that it does
not get lost. This makes the test pass.
Reported-by: hIpPy <hippy2981@gmail.com>
Signed-off-by: Michael J Gruber <git@grubix.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/merge.c')
-rw-r--r-- | builtin/merge.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin/merge.c b/builtin/merge.c index f239fd55ef..08a4083b6d 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -756,6 +756,7 @@ N_("Please enter a commit message to explain why this merge is necessary,\n" "Lines starting with '%c' will be ignored, and an empty message aborts\n" "the commit.\n"); +static void write_merge_heads(struct commit_list *); static void prepare_to_commit(struct commit_list *remoteheads) { struct strbuf msg = STRBUF_INIT; @@ -765,6 +766,7 @@ static void prepare_to_commit(struct commit_list *remoteheads) BUG("the control must not reach here under --squash"); if (0 < option_edit) strbuf_commented_addf(&msg, _(merge_editor_comment), comment_line_char); + write_merge_heads(remoteheads); write_file_buf(git_path_merge_msg(), msg.buf, msg.len); if (run_commit_hook(0 < option_edit, get_index_file(), "prepare-commit-msg", git_path_merge_msg(), "merge", NULL)) |