From: Jonathan Nieder <jrnieder@gmail.com>
To: git@vger.kernel.org
Cc: Jakub Narebski <jnareb@gmail.com>, Jeff King <peff@peff.net>,
Thomas Rast <trast@student.ethz.ch>
Subject: [PATCH 9/9] commit: suppress status summary when no changes staged
Date: Sat, 24 Jul 2010 20:02:30 -0500 [thread overview]
Message-ID: <20100725010230.GI18420@burratino> (raw)
In-Reply-To: <20100725005443.GA18370@burratino>
Starting out, it can be unnerving that “git commit” spews out
a list of changes instead of just making a commit when the user
has forgotten to stage any changes.
So give some focused advice in that case, by suppressing the
status summary so the existing message about the need to stage
changes can be read more easily.
Example: before:
$ git commit
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: dir1/modified
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# actual
# dir1/untracked
# dir2/modified
# dir2/untracked
# expect
# output
# untracked
no changes added to commit (use "git add" and/or "git commit -a")
$
After:
$ git commit
no changes added to commit (use "git add" and/or "git commit -a")
$
Cc: Jakub Narebski <jnareb@gmail.com>
Cc: Jeff King <peff@peff.net>
Cc: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
That’s the end of the series. Thanks for reading.
builtin/commit.c | 10 +++++++++-
t/t7508-status.sh | 7 ++++---
wt-status.c | 2 +-
wt-status.h | 1 +
4 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/builtin/commit.c b/builtin/commit.c
index 9a4ea34..a2588a9 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -96,7 +96,8 @@ static int null_termination;
static enum {
STATUS_FORMAT_LONG,
STATUS_FORMAT_SHORT,
- STATUS_FORMAT_PORCELAIN
+ STATUS_FORMAT_PORCELAIN,
+ STATUS_FORMAT_NOCHANGES
} status_format = STATUS_FORMAT_LONG;
static int status_show_branch;
@@ -443,6 +444,9 @@ static int run_status(FILE *fp, const char *index_file, const char *prefix, int
case STATUS_FORMAT_LONG:
wt_status_print(s);
break;
+ case STATUS_FORMAT_NOCHANGES:
+ wt_status_print_nochanges(s);
+ break;
}
return s->commitable;
@@ -711,6 +715,8 @@ static int empty_commit_ok(const char *index_file, const char *prefix,
if (in_merge || allow_empty || (amend && is_a_merge(head_sha1)))
return 1;
+ if (status_format == STATUS_FORMAT_LONG)
+ status_format = STATUS_FORMAT_NOCHANGES;
run_status(stdout, index_file, prefix, 0, s);
if (amend)
fputs(empty_amend_advice, stderr);
@@ -1170,6 +1176,8 @@ int cmd_status(int argc, const char **argv, const char *prefix)
s.ignore_submodule_arg = ignore_submodule_arg;
wt_status_print(&s);
break;
+ case STATUS_FORMAT_NOCHANGES:
+ return error("unexpected status format");
}
return 0;
}
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index 882e5d7..c41a54c 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -800,10 +800,11 @@ test_expect_success 'status submodule summary (clean submodule)' '
git commit -m "commit submodule" &&
git config status.submodulesummary 10 &&
test_when_finished "git config --unset status.submodulesummary" &&
- test_must_fail git commit --dry-run >output &&
+ test_must_fail git commit --dry-run >actual &&
+ git status >output &&
test_cmp expect output &&
- git status >output &&
- test_cmp expect output
+ echo '\''no changes added to commit (use "git add" and/or "git commit -a")'\'' >expect &&
+ test_cmp expect actual
'
test_expect_success 'status -s submodule summary (clean submodule)' '
diff --git a/wt-status.c b/wt-status.c
index 90a0824..83d2ae2 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -612,7 +612,7 @@ static void wt_status_print_verbose(struct wt_status *s)
run_diff_index(&rev, 1);
}
-static void wt_status_print_nochanges(struct wt_status *s)
+void wt_status_print_nochanges(struct wt_status *s)
{
if (s->amend)
fprintf(s->fp, "# No changes\n");
diff --git a/wt-status.h b/wt-status.h
index 9df9c9f..1cee54b 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -65,5 +65,6 @@ void wt_status_collect(struct wt_status *s);
void wt_shortstatus_print(struct wt_status *s, int null_termination, int show_branch);
void wt_porcelain_print(struct wt_status *s, int null_termination);
+void wt_status_print_nochanges(struct wt_status *s);
#endif /* STATUS_H */
--
1.7.2.9.ge3789.dirty
next prev parent reply other threads:[~2010-07-25 1:03 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-25 0:54 [RFC/PATCH 0/9] commit: more focused advice in the no-changes-staged case Jonathan Nieder
2010-07-25 0:56 ` [PATCH 1/9] wt-status: split wt_status_print into digestible pieces Jonathan Nieder
2010-07-25 0:57 ` [PATCH 2/9] wt-status: split off a function for printing submodule summary Jonathan Nieder
2010-07-25 0:58 ` [PATCH 3/9] commit: split off a function to fetch the default log message Jonathan Nieder
2010-07-25 0:58 ` [PATCH 4/9] commit: split commit -s handling into its own function Jonathan Nieder
2010-07-25 0:59 ` [PATCH 5/9] commit: split off the piece that writes status Jonathan Nieder
2010-07-25 0:59 ` [PATCH 6/9] t7508 (status): modernize style Jonathan Nieder
2010-07-25 8:38 ` Ævar Arnfjörð Bjarmason
2010-07-25 1:00 ` [PATCH 7/9] commit: give empty-commit avoidance code its own function Jonathan Nieder
2010-07-25 1:01 ` [PATCH 8/9] commit --dry-run: give advice on empty amend Jonathan Nieder
2010-07-25 1:02 ` Jonathan Nieder [this message]
2010-08-11 7:11 ` [PATCH 9/9] commit: suppress status summary when no changes staged Thomas Rast
2010-08-11 7:30 ` Jonathan Nieder
2010-08-11 7:49 ` [PATCH v2] t6040 (branch tracking): check “status” instead of “commit” Jonathan Nieder
2010-08-12 0:45 ` Ævar Arnfjörð Bjarmason
2010-08-11 12:15 ` [PATCH 9/9] commit: suppress status summary when no changes staged Ævar Arnfjörð Bjarmason
2010-08-11 23:57 ` Jonathan Nieder
2010-08-12 0:05 ` Ævar Arnfjörð Bjarmason
2010-08-12 0:10 ` Jonathan Nieder
2010-07-25 8:54 ` [RFC/PATCH 0/9] commit: more focused advice in the no-changes-staged case Ævar Arnfjörð Bjarmason
2010-07-25 9:22 ` Thomas Rast
2010-07-29 23:51 ` Making error messages stand out (Re: [RFC/PATCH 0/9] commit: more focused advice in the no-changes-staged case) Jonathan Nieder
2010-07-30 18:44 ` Sverre Rabbelier
2010-08-11 8:31 ` [WIP/PATCH 0/4] Re: Making error messages stand out Jonathan Nieder
2010-08-11 8:36 ` [PATCH 1/4] Eliminate “Finished cherry-pick/revert” message Jonathan Nieder
2010-08-11 8:36 ` [PATCH 2/4] Introduce advise() to print hints Jonathan Nieder
2010-08-11 8:37 ` [PATCH 3/4] cherry-pick/revert: Use error() for failure message Jonathan Nieder
2010-08-11 8:37 ` [PATCH 4/4] cherry-pick/revert: Use advise() for hints Jonathan Nieder
2010-08-11 9:21 ` [WIP/PATCH 0/4] Re: Making error messages stand out Nguyen Thai Ngoc Duy
2010-08-11 9:39 ` Matthieu Moy
2010-08-11 9:58 ` Nguyen Thai Ngoc Duy
2010-08-11 17:34 ` Sverre Rabbelier
2010-08-18 14:36 ` [PATCH] tests: fix syntax error in "Use advise() for hints" test Ævar Arnfjörð Bjarmason
2010-08-19 4:30 ` Jonathan Nieder
2010-08-19 12:22 ` Ævar Arnfjörð Bjarmason
2010-08-20 10:13 ` Raja R Harinath
2010-08-20 14:22 ` Ævar Arnfjörð Bjarmason
2010-08-20 17:51 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100725010230.GI18420@burratino \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=peff@peff.net \
--cc=trast@student.ethz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox