Merge branch 'dl/merge-cleanup-scissors-fix'
The list of conflicted paths shown in the editor while concluding a conflicted merge was shown above the scissors line when the clean-up mode is set to "scissors", even though it was commented out just like the list of updated paths and other information to help the user explain the merge better. * dl/merge-cleanup-scissors-fix: cherry-pick/revert: add scissors line on merge conflict sequencer.c: save and restore cleanup mode merge: add scissors line on merge conflict merge: cleanup messages like commit parse-options.h: extract common --cleanup option commit: extract cleanup_mode functions to sequencer t7502: clean up style t7604: clean up style t3507: clean up style t7600: clean up style
This commit is contained in:
@ -668,6 +668,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||
const char *hook_arg2 = NULL;
|
||||
int clean_message_contents = (cleanup_mode != COMMIT_MSG_CLEANUP_NONE);
|
||||
int old_display_comment_prefix;
|
||||
int merge_contains_scissors = 0;
|
||||
|
||||
/* This checks and barfs if author is badly specified */
|
||||
determine_author_info(author_ident);
|
||||
@ -728,6 +729,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||
strbuf_addbuf(&sb, &message);
|
||||
hook_arg1 = "message";
|
||||
} else if (!stat(git_path_merge_msg(the_repository), &statbuf)) {
|
||||
size_t merge_msg_start;
|
||||
|
||||
/*
|
||||
* prepend SQUASH_MSG here if it exists and a
|
||||
* "merge --squash" was originally performed
|
||||
@ -738,8 +741,16 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||
hook_arg1 = "squash";
|
||||
} else
|
||||
hook_arg1 = "merge";
|
||||
|
||||
merge_msg_start = sb.len;
|
||||
if (strbuf_read_file(&sb, git_path_merge_msg(the_repository), 0) < 0)
|
||||
die_errno(_("could not read MERGE_MSG"));
|
||||
|
||||
if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS &&
|
||||
wt_status_locate_end(sb.buf + merge_msg_start,
|
||||
sb.len - merge_msg_start) <
|
||||
sb.len - merge_msg_start)
|
||||
merge_contains_scissors = 1;
|
||||
} else if (!stat(git_path_squash_msg(the_repository), &statbuf)) {
|
||||
if (strbuf_read_file(&sb, git_path_squash_msg(the_repository), 0) < 0)
|
||||
die_errno(_("could not read SQUASH_MSG"));
|
||||
@ -807,7 +818,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||
struct ident_split ci, ai;
|
||||
|
||||
if (whence != FROM_COMMIT) {
|
||||
if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
|
||||
if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS &&
|
||||
!merge_contains_scissors)
|
||||
wt_status_add_cut_line(s->fp);
|
||||
status_printf_ln(s, GIT_COLOR_NORMAL,
|
||||
whence == FROM_MERGE
|
||||
@ -832,10 +844,10 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||
_("Please enter the commit message for your changes."
|
||||
" Lines starting\nwith '%c' will be ignored, and an empty"
|
||||
" message aborts the commit.\n"), comment_line_char);
|
||||
else if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS &&
|
||||
whence == FROM_COMMIT)
|
||||
wt_status_add_cut_line(s->fp);
|
||||
else /* COMMIT_MSG_CLEANUP_SPACE, that is. */
|
||||
else if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
|
||||
if (whence == FROM_COMMIT && !merge_contains_scissors)
|
||||
wt_status_add_cut_line(s->fp);
|
||||
} else /* COMMIT_MSG_CLEANUP_SPACE, that is. */
|
||||
status_printf(s, GIT_COLOR_NORMAL,
|
||||
_("Please enter the commit message for your changes."
|
||||
" Lines starting\n"
|
||||
@ -1172,24 +1184,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
|
||||
die(_("Only one of --include/--only/--all/--interactive/--patch can be used."));
|
||||
if (argc == 0 && (also || (only && !amend && !allow_empty)))
|
||||
die(_("No paths with --include/--only does not make sense."));
|
||||
if (!cleanup_arg || !strcmp(cleanup_arg, "default"))
|
||||
cleanup_mode = use_editor ? COMMIT_MSG_CLEANUP_ALL :
|
||||
COMMIT_MSG_CLEANUP_SPACE;
|
||||
else if (!strcmp(cleanup_arg, "verbatim"))
|
||||
cleanup_mode = COMMIT_MSG_CLEANUP_NONE;
|
||||
else if (!strcmp(cleanup_arg, "whitespace"))
|
||||
cleanup_mode = COMMIT_MSG_CLEANUP_SPACE;
|
||||
else if (!strcmp(cleanup_arg, "strip"))
|
||||
cleanup_mode = COMMIT_MSG_CLEANUP_ALL;
|
||||
else if (!strcmp(cleanup_arg, "scissors"))
|
||||
cleanup_mode = use_editor ? COMMIT_MSG_CLEANUP_SCISSORS :
|
||||
COMMIT_MSG_CLEANUP_SPACE;
|
||||
/*
|
||||
* Please update _git_commit() in git-completion.bash when you
|
||||
* add new options.
|
||||
*/
|
||||
else
|
||||
die(_("Invalid cleanup mode %s"), cleanup_arg);
|
||||
cleanup_mode = get_cleanup_mode(cleanup_arg, use_editor);
|
||||
|
||||
handle_untracked_files_arg(s);
|
||||
|
||||
@ -1491,7 +1486,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
|
||||
OPT_BOOL('s', "signoff", &signoff, N_("add Signed-off-by:")),
|
||||
OPT_FILENAME('t', "template", &template_file, N_("use specified template file")),
|
||||
OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
|
||||
OPT_STRING(0, "cleanup", &cleanup_arg, N_("default"), N_("how to strip spaces and #comments from message")),
|
||||
OPT_CLEANUP(&cleanup_arg),
|
||||
OPT_BOOL(0, "status", &include_status, N_("include status in commit message template")),
|
||||
{ OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key-id"),
|
||||
N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
|
||||
@ -1627,11 +1622,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
|
||||
die(_("could not read commit message: %s"), strerror(saved_errno));
|
||||
}
|
||||
|
||||
if (verbose || /* Truncate the message just before the diff, if any. */
|
||||
cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
|
||||
strbuf_setlen(&sb, wt_status_locate_end(sb.buf, sb.len));
|
||||
if (cleanup_mode != COMMIT_MSG_CLEANUP_NONE)
|
||||
strbuf_stripspace(&sb, cleanup_mode == COMMIT_MSG_CLEANUP_ALL);
|
||||
cleanup_message(&sb, cleanup_mode, verbose);
|
||||
|
||||
if (message_is_empty(&sb, cleanup_mode) && !allow_empty_message) {
|
||||
rollback_index_files();
|
||||
|
Reference in New Issue
Block a user