diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-12-13 06:09:16 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-13 07:50:33 +0300 |
commit | 37d07f8f9841a29cb53a1eda6acd3804c957f0e3 (patch) | |
tree | 6f450af5c78b44eefb539fd15fcd09dc30e29336 | |
parent | 1e8df762b38e01685f3aa3613e2d61f73346fcbe (diff) |
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>
-rw-r--r-- | builtin-commit.c | 9 | ||||
-rw-r--r-- | wt-status.c | 2 | ||||
-rw-r--r-- | wt-status.h | 1 |
3 files changed, 8 insertions, 4 deletions
diff --git a/builtin-commit.c b/builtin-commit.c index 9cb7589ac6..ad9f9211b3 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -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; diff --git a/wt-status.c b/wt-status.c index 51c1879691..c0c247243b 100644 --- a/wt-status.c +++ b/wt-status.c @@ -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) diff --git a/wt-status.h b/wt-status.h index 63d50f2871..02afaa60ee 100644 --- a/wt-status.h +++ b/wt-status.h @@ -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; |