merge: add scissors line on merge conflict

This fixes a bug where the scissors line is placed after the Conflicts:
section, in the case where a merge conflict occurs and
commit.cleanup = scissors.

Next, if commit.cleanup = scissors is specified, don't produce a
scissors line in commit if one already exists in the MERGE_MSG file.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Denton Liu
2019-04-17 11:23:28 +01:00
committed by Junio C Hamano
parent d540b70c85
commit 1055997e2f
4 changed files with 82 additions and 7 deletions

View File

@ -920,6 +920,20 @@ static int suggest_conflicts(void)
filename = git_path_merge_msg(the_repository);
fp = xfopen(filename, "a");
/*
* We can't use cleanup_mode because if we're not using the editor,
* get_cleanup_mode will return COMMIT_MSG_CLEANUP_SPACE instead, even
* though the message is meant to be processed later by git-commit.
* Thus, we will get the cleanup mode which is returned when we _are_
* using an editor.
*/
if (get_cleanup_mode(cleanup_arg, 1) == COMMIT_MSG_CLEANUP_SCISSORS) {
fputc('\n', fp);
wt_status_add_cut_line(fp);
/* comments out the newline from append_conflicts_hint */
fputc(comment_line_char, fp);
}
append_conflicts_hint(&the_index, &msgbuf);
fputs(msgbuf.buf, fp);
strbuf_release(&msgbuf);