зеркало из https://github.com/microsoft/git.git
Merge branch 'jt/commit-redundant-scissors-fix'
"git commit -v --cleanup=scissors" used to add the scissors line twice in the log message buffer, which has been corrected. * jt/commit-redundant-scissors-fix: commit: unify logic to avoid multiple scissors lines when merging commit: avoid redundant scissor line with --cleanup=scissors -v
This commit is contained in:
Коммит
798ddfc17f
|
@ -738,7 +738,6 @@ 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;
|
||||
int invoked_hook;
|
||||
|
||||
/* This checks and barfs if author is badly specified */
|
||||
|
@ -842,7 +841,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
|||
wt_status_locate_end(sb.buf + merge_msg_start,
|
||||
sb.len - merge_msg_start) <
|
||||
sb.len - merge_msg_start)
|
||||
merge_contains_scissors = 1;
|
||||
s->added_cut_line = 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"));
|
||||
|
@ -925,9 +924,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
|||
" yourself if you want to.\n"
|
||||
"An empty message aborts the commit.\n");
|
||||
if (whence != FROM_COMMIT) {
|
||||
if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS &&
|
||||
!merge_contains_scissors)
|
||||
wt_status_add_cut_line(s->fp);
|
||||
if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
|
||||
wt_status_add_cut_line(s);
|
||||
status_printf_ln(
|
||||
s, GIT_COLOR_NORMAL,
|
||||
whence == FROM_MERGE ?
|
||||
|
@ -947,8 +945,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
|||
if (cleanup_mode == COMMIT_MSG_CLEANUP_ALL)
|
||||
status_printf(s, GIT_COLOR_NORMAL, hint_cleanup_all, comment_line_char);
|
||||
else if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
|
||||
if (whence == FROM_COMMIT && !merge_contains_scissors)
|
||||
wt_status_add_cut_line(s->fp);
|
||||
if (whence == FROM_COMMIT)
|
||||
wt_status_add_cut_line(s);
|
||||
} else /* COMMIT_MSG_CLEANUP_SPACE, that is. */
|
||||
status_printf(s, GIT_COLOR_NORMAL, hint_cleanup_space, comment_line_char);
|
||||
|
||||
|
|
|
@ -736,6 +736,11 @@ test_expect_success 'message shows date when it is explicitly set' '
|
|||
.git/COMMIT_EDITMSG
|
||||
'
|
||||
|
||||
test_expect_success 'message does not have multiple scissors lines' '
|
||||
git commit --cleanup=scissors -v --allow-empty -e -m foo &&
|
||||
test $(grep -c -e "--- >8 ---" .git/COMMIT_EDITMSG) -eq 1
|
||||
'
|
||||
|
||||
test_expect_success AUTOIDENT 'message shows committer when it is automatic' '
|
||||
|
||||
echo >>negative &&
|
||||
|
|
12
wt-status.c
12
wt-status.c
|
@ -1107,12 +1107,15 @@ void wt_status_append_cut_line(struct strbuf *buf)
|
|||
strbuf_add_commented_lines(buf, explanation, strlen(explanation), comment_line_char);
|
||||
}
|
||||
|
||||
void wt_status_add_cut_line(FILE *fp)
|
||||
void wt_status_add_cut_line(struct wt_status *s)
|
||||
{
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
|
||||
if (s->added_cut_line)
|
||||
return;
|
||||
s->added_cut_line = 1;
|
||||
wt_status_append_cut_line(&buf);
|
||||
fputs(buf.buf, fp);
|
||||
fputs(buf.buf, s->fp);
|
||||
strbuf_release(&buf);
|
||||
}
|
||||
|
||||
|
@ -1143,11 +1146,12 @@ static void wt_longstatus_print_verbose(struct wt_status *s)
|
|||
* file (and even the "auto" setting won't work, since it
|
||||
* will have checked isatty on stdout). But we then do want
|
||||
* to insert the scissor line here to reliably remove the
|
||||
* diff before committing.
|
||||
* diff before committing, if we didn't already include one
|
||||
* before.
|
||||
*/
|
||||
if (s->fp != stdout) {
|
||||
rev.diffopt.use_color = 0;
|
||||
wt_status_add_cut_line(s->fp);
|
||||
wt_status_add_cut_line(s);
|
||||
}
|
||||
if (s->verbose > 1 && s->committable) {
|
||||
/* print_updated() printed a header, so do we */
|
||||
|
|
|
@ -130,6 +130,7 @@ struct wt_status {
|
|||
int rename_score;
|
||||
int rename_limit;
|
||||
enum wt_status_format status_format;
|
||||
unsigned char added_cut_line; /* boolean */
|
||||
struct wt_status_state state;
|
||||
struct object_id oid_commit; /* when not Initial */
|
||||
|
||||
|
@ -147,7 +148,7 @@ struct wt_status {
|
|||
|
||||
size_t wt_status_locate_end(const char *s, size_t len);
|
||||
void wt_status_append_cut_line(struct strbuf *buf);
|
||||
void wt_status_add_cut_line(FILE *fp);
|
||||
void wt_status_add_cut_line(struct wt_status *s);
|
||||
void wt_status_prepare(struct repository *r, struct wt_status *s);
|
||||
void wt_status_print(struct wt_status *s);
|
||||
void wt_status_collect(struct wt_status *s);
|
||||
|
|
Загрузка…
Ссылка в новой задаче