@matheusbsbs / matheus-bagliano / commits / 5c4f55f1f6
Fork 0

commit: honor advice.statusHints when rejecting an empty commit

In ea9882bfc4 (commit: disable status hints when writing to COMMIT_EDITMSG, 2013-09-12) the intent was to disable status hints when writing to COMMIT_EDITMSG, because giving the hints in the "git status" like output in the commit message template are too late to be useful (they say things like "'git add' to stage", but that is only possible after aborting the current "git commit" session). But there is one case that the hints can be useful: When the current attempt to commit is rejected because no change is recorded in the index. The message is given and "git commit" errors out, so the hints can immediately be followed by the user. Teach the codepath to honor the configuration variable. Signed-off-by: Heba Waly <heba.waly@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Heba Waly committed Dec 17, 2019 at 09:17 UTC 5c4f55f1f62b64f530bd135e5b248ceba7b95708
2 files changed +10
builtin/commit.c
+1
@@ -944,6 +944,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
944 */
945 if (!committable && whence != FROM_MERGE && !allow_empty &&
946 !(amend && is_a_merge(current_head))) {
947 + s->hints = advice_status_hints;
948 s->display_comment_prefix = old_display_comment_prefix;
949 run_status(stdout, index_file, prefix, 0, s);
950 if (amend)
t/t7500-commit-template-squash-signoff.sh
+9
@@ -382,4 +382,13 @@ test_expect_success 'check commit with unstaged rename and copy' '
382 )
383 '
384
385 +test_expect_success 'commit without staging files fails and displays hints' '
386 + echo "initial" >file &&
387 + git add file &&
388 + git commit -m initial &&
389 + echo "changes" >>file &&
390 + test_must_fail git commit -m update >actual &&
391 + test_i18ngrep "no changes added to commit (use \"git add\" and/or \"git commit -a\")" actual
392 +'
393 +
394 test_done