зеркало из https://github.com/microsoft/git.git
git-commit: squelch needless message during an empty merge
When recording a merge that conflicted and ends up in no changes after manual resolution, commit callchain looked like this: cmd_commit() -> prepare_log_message() -> run_status() -> wt_status_print() This invocation of run_status() is asked to find out if there is a committable change, but it unconditionally gave instructions such as "use git-add" at the same time. When in merge, we do allow an empty change to be recorded, so after showing this message the code still went ahead and made a commit. This introduces "nowarn" parameter to run_status() to avoid these useless messages. If we are not allowed to create an empty commit, we already call run_status() again in the original codepath, and the message will be shown from that call anyway. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
1e8df762b3
Коммит
37d07f8f98
|
@ -280,7 +280,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix)
|
|||
return false_lock.filename;
|
||||
}
|
||||
|
||||
static int run_status(FILE *fp, const char *index_file, const char *prefix)
|
||||
static int run_status(FILE *fp, const char *index_file, const char *prefix, int nowarn)
|
||||
{
|
||||
struct wt_status s;
|
||||
|
||||
|
@ -296,6 +296,7 @@ static int run_status(FILE *fp, const char *index_file, const char *prefix)
|
|||
s.untracked = untracked_files;
|
||||
s.index_file = index_file;
|
||||
s.fp = fp;
|
||||
s.nowarn = nowarn;
|
||||
|
||||
wt_status_print(&s);
|
||||
|
||||
|
@ -412,7 +413,7 @@ static int prepare_log_message(const char *index_file, const char *prefix)
|
|||
|
||||
saved_color_setting = wt_status_use_color;
|
||||
wt_status_use_color = 0;
|
||||
commitable = run_status(fp, index_file, prefix);
|
||||
commitable = run_status(fp, index_file, prefix, 1);
|
||||
wt_status_use_color = saved_color_setting;
|
||||
|
||||
fclose(fp);
|
||||
|
@ -606,7 +607,7 @@ int cmd_status(int argc, const char **argv, const char *prefix)
|
|||
|
||||
index_file = prepare_index(argc, argv, prefix);
|
||||
|
||||
commitable = run_status(stdout, index_file, prefix);
|
||||
commitable = run_status(stdout, index_file, prefix, 0);
|
||||
|
||||
rollback_index_files();
|
||||
|
||||
|
@ -717,7 +718,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
|
|||
|
||||
if (!prepare_log_message(index_file, prefix) && !in_merge &&
|
||||
!allow_empty && !(amend && is_a_merge(head_sha1))) {
|
||||
run_status(stdout, index_file, prefix);
|
||||
run_status(stdout, index_file, prefix, 0);
|
||||
rollback_index_files();
|
||||
unlink(commit_editmsg);
|
||||
return 1;
|
||||
|
|
|
@ -381,6 +381,8 @@ void wt_status_print(struct wt_status *s)
|
|||
if (!s->commitable) {
|
||||
if (s->amend)
|
||||
fprintf(s->fp, "# No changes\n");
|
||||
else if (s->nowarn)
|
||||
; /* nothing */
|
||||
else if (s->workdir_dirty)
|
||||
printf("no changes added to commit (use \"git add\" and/or \"git commit -a\")\n");
|
||||
else if (s->workdir_untracked)
|
||||
|
|
|
@ -17,6 +17,7 @@ struct wt_status {
|
|||
int verbose;
|
||||
int amend;
|
||||
int untracked;
|
||||
int nowarn;
|
||||
/* These are computed during processing of the individual sections */
|
||||
int commitable;
|
||||
int workdir_dirty;
|
||||
|
|
Загрузка…
Ссылка в новой задаче