On Wed, Jun 16, 2021 at 5:46 PM Martin Sebor <mse...@gmail.com> wrote:

> On 6/16/21 2:49 PM, Jason Merrill wrote:
> > On 6/15/21 11:42 PM, Jason Merrill wrote:
> >> On Tue, Jun 15, 2021 at 10:04 PM Martin Sebor via Gcc <gcc@gcc.gnu.org
> >> <mailto:gcc@gcc.gnu.org>> wrote:
> >>
> >>     On 6/15/21 6:56 PM, Hans-Peter Nilsson wrote:
> >>      > On Fri, 11 Jun 2021, Martin Sebor via Gcc wrote:
> >>      >
> >>      >> On 6/11/21 11:32 AM, Jonathan Wakely wrote:
> >>      >>> On Fri, 11 Jun 2021 at 18:02, Martin Sebor wrote:
> >>      >>>> My objection is to making our policies and tools more
> >> restrictive
> >>      >>>> than they need to be.  We shouldn't expect everyone to study
> >> whole
> >>      >>>> manuals just to figure out how to successfully commit a
> >> change (or
> >>      >>>> learn how to format it just the right way).  It should be
> easy.
> >>      >>>
> >>      >>> I agree, to some extent. But consistency is also good. The
> >>     conventions
> >>      >>> for GNU ChangeLog formatting exist for a reason, and so do the
> >>      >>> conventions for good Git commit messages.
> >>      >>>
> >>      >>>> Setting this discussion aside for a moment and using a
> >> different
> >>      >>>> example, the commit hook rejects commit messages that don't
> >> start
> >>      >>>> ChangeLog entries with tabs.  It also rejects commit
> >> messages that
> >>      >>>> don't list all the same test files as those changed by the
> >> commit
> >>      >>>> (and probably some others as well).  That's in my view
> >> unnecessary
> >>      >>>> when the hook could just replace the leading spaces with
> >> tabs and
> >>      >>>> automatically mention all the tests.
> >>      >>>>
> >>      >>>> I see this proposal as heading in the same direction.
> >> Rather than
> >>      >>>> making the script fix things up if we get them wrong it would
> >>     reject
> >>      >>>> the commit, requiring the user to massage the ChangeLog by
> >>     hand into
> >>      >>>> an unnecessarily rigid format.
> >>      >>>
> >>      >>> You cannot "fix things up" in a server-side receive hook,
> >> because
> >>      >>> changing the commit message would alter the commit hash, which
> >>     would
> >>      >>> require the committer to do a rebase to proceed. That breaks
> the
> >>      >>> expected behaviour and workflow of a git repo.
> >>      >>>
> >>      >>> You can use the scripts on the client side to verify your
> commit
> >>      >>> message before pushing, so you don't have to be surprised
> >> when the
> >>      >>> server rejects it.
> >>      >>
> >>      >> That sounds like a killer argument.  Do we have shared
> >> client-side
> >>      >> scripts that could fix things up for us, or are we each on our
> >> own
> >>      >> to write them?
> >>      >
> >>      > I hope I got your view wrong.  If not: the "scripts fixing
> >>      > things up for us" direction is flawed (compared to the "scripts
> >>      > rejecting bad formats"), unless offered as a non-default option;
> >>      > please don't proceed.
> >>      >
> >>      > Why?  For one, there'll always be bugs in the scripting.
> >>      > Mitigate those situations: while wrongly rejecting a commit is
> >>      > bad, wrongly "fixing things up" is worse, as a general rule.
> >>      > Better avoid that.  (There's probably a popular "pattern name"
> >>      > for what I try to describe.)
> >>
> >>     The word that comes to mind is Technophobia.  Is it wise to trust
> >>     compilers to transform programs from their source form into
> >>     executables?  What if there are bugs in either?  What about the OS?
> >>     The whole computer, or the Internet?  Our cars?  Fortunately,
> there's
> >>     more to gain than to lose by trusting automation.  If there weren't
> >>     human progress would be stuck sometime in the 1700's.
> >>
> >>     But we're not talking about anything anywhere that sophisticated
> >>     here: a sed script to copy and paste a piece of text in
> >>     the description of a change from one place to another.  It's been
> >>     done a few times before with more important data than ChangeLogs.
> >>
> >>
> >> git gcc-commit-mklog already automates most of the process.  It could
> >> also automate adding [PRxxxxx] to the first line.  Is that what you're
> >> asking for?
> >
> > Like, say:
>
> I don't think this solves the problem Xionghu Luo was asking about:
>    https://gcc.gnu.org/pipermail/gcc/2021-June/236346.html


Indeed, their problem was not mentioning the PR in the testcase, which a
script isn't going to fix.

i.e., they did have a [PRnnnn] in the one line subject but not in
> their ChangeLog entries.  It also not clear if they used mklog.py
> at all.  IME, mklog.py already puts in a [PRnnnn] near the top of
> a patch if it finds in one of the tests.  Though it doesn't seem
> to put in the ChangeLog entries.  Odd.
>

It currently puts in

 PR comp/nnnnn

at the beginning of the ChangeLog entries; it used to put them in the
entries for each ChangeLog file, but that changed in r12-771.  My patch
also adds the [PRnnnn] to the subject line.

I was suggesting to make this (and the other things the commit
> hook rejects commit for) happen automatically by running a script
> at the same time as git commit.
>
> But to be clear, I'm not asking for anything for myself.  Although
> I use mklog.py I have my own script that does what I suggest that
> I could go back to.  I responded to this thread because I think
> these minute details could be automated for everyone's benefit.
> Before moving to Git we talked about doing much more, including
> automatically running a format/style checker on the patch and
> (IIRC) Jeff even wanted it to do some basic tweaks on its own
> (like replace spaces with tabs).
>

We could do various cleanup in the 'commit-msg' hook on the user side.  Or,
probably better, git gcc-verify could clean up some of the issues it finds.

Jason

Reply via email to