On Thu, Dec 19, 2019 at 11:22:38AM -0800, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > > > This fix was about "we do not want to unconditionally drop the > > advice messages when we reject the attempt to commit and show the > > output like 'git status'", wasn't it? The earlier single-liner fix > > in v1 that flips s->hints just before calling run_status() before > > rejecting the attempt to commit was a lot easier to reason about, as > > the fix was very focused and to the point. Why are we seeing this > > many (seemingly unrelated) changes? > > In any case, here is what I tentatively have in my tree (with heavy > rewrite to the proposed log message). Hm. I'm surprised to see this feedback come in the form of a local change when making the topic branch, rather than in a reply to the v1 patch. What's the reasoning? (Or is this scissors patch intended to be the feedback?) I ask because out of all of us, it seems the Outreachy interns can benefit the most from advice on how and why to write their commit messages - that is, part of the point of an internship is to learn best practices and cultural norms in addition to coding practice. (Plus, I find being asked to rewrite a commit message tends to force me to understand my own change even better than before.) I'll go ahead and look through the changes to the commit message so I can learn what you're looking for too :) > > -- >8 -- > From: Heba Waly <heba.waly@xxxxxxxxx> > Date: Tue, 17 Dec 2019 09:17:22 +0000 > Subject: [PATCH] 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). More context on why the previous change was made - "by the time the editor was open, it was too late to apply hints anyways". Sure. > > 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. Expanding the "but" to supply the specific story this commit touches, including "what happens instead" and "how are we gonna fix it". And the copy-paste of the output before and the output now is different. For me, I don't particularly see why we'd want to be rid of it - it sort of feels like "a picture is worth a thousand words" to include the actual use case in the commit message. Is there style guidance suggesting not to do that that I missed? - Emily > > Signed-off-by: Heba Waly <heba.waly@xxxxxxxxx> > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > builtin/commit.c | 1 + > t/t7500-commit-template-squash-signoff.sh | 9 +++++++++ > 2 files changed, 10 insertions(+) > > diff --git a/builtin/commit.c b/builtin/commit.c > index e588bc6ad3..0078faf117 100644 > --- a/builtin/commit.c > +++ b/builtin/commit.c > @@ -944,6 +944,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, > */ > if (!committable && whence != FROM_MERGE && !allow_empty && > !(amend && is_a_merge(current_head))) { > + s->hints = advice_status_hints; > s->display_comment_prefix = old_display_comment_prefix; > run_status(stdout, index_file, prefix, 0, s); > if (amend) > diff --git a/t/t7500-commit-template-squash-signoff.sh b/t/t7500-commit-template-squash-signoff.sh > index 46a5cd4b73..a8179e4074 100755 > --- a/t/t7500-commit-template-squash-signoff.sh > +++ b/t/t7500-commit-template-squash-signoff.sh > @@ -382,4 +382,13 @@ test_expect_success 'check commit with unstaged rename and copy' ' > ) > ' > > +test_expect_success 'commit without staging files fails and displays hints' ' > + echo "initial" >>file && > + git add file && > + git commit -m initial && > + echo "changes" >>file && > + test_must_fail git commit -m update >actual && > + test_i18ngrep "no changes added to commit (use \"git add\" and/or \"git commit -a\")" actual > +' > + > test_done > -- > 2.24.1-732-ga9f9d4909c >