public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jason Merrill <jason@redhat.com>
To: Martin Sebor <msebor@gmail.com>
Cc: Hans-Peter Nilsson <hp@bitrange.com>,
	Jakub Jelinek <jakub@redhat.com>,
	gcc Mailing List <gcc@gcc.gnu.org>,
	Jonathan Wakely <jwakely@redhat.com>
Subject: Re: git gcc-commit-mklog doesn't extract PR number to ChangeLog
Date: Wed, 16 Jun 2021 20:40:15 -0400	[thread overview]
Message-ID: <013d6727-4008-b4b5-b793-c782a5ba8e10@redhat.com> (raw)
In-Reply-To: <71b4a023-efb2-6c6a-9ced-93cce7c96540@gmail.com>

On 6/16/21 8:17 PM, Martin Sebor wrote:
> On 6/16/21 5:45 PM, Jason Merrill wrote:
>> On Wed, Jun 16, 2021 at 5:46 PM Martin Sebor <msebor@gmail.com 
>> <mailto:msebor@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>
>>      >> <mailto: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.
> 
> To say I'm not good at Python would be an understatement but I hacked
> up the attached patch that:
> 
> 1) extracts PR numbers from test names,
> 2) gets the component for each PR from Bugzilla,

That seems useful for testcases like the OP's that put the PR number in 
the filename rather than a comment.  Maybe submit it as a patch?

> 3) adds the PR component/nnnnn to each ChangeLog

This would be reverting the r12-771 change, which seems both unrelated 
and undesirable.

> Running the hacked up script with -p on the patch for PR 100085 prints
> the following:
> 
> Resolves:
> PR 100085/target - Bad code for union transfer from __float128 to vector 
> types

You have the number and component switched.

>> 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.
> 
> I'm not familiar with these.  Where should I look for them to learn
> how to do this?

We currently have no commit-msg hook; see git help hooks for a 
description, or .git/hooks/commit-msg.sample for an example hook.

git gcc-verify is an alias to run 
contrib/gcc-changelog/git_check_commit.py , which is the same checker 
that runs on the server.  I don't know how hard it would be to adjust it 
to have a fixup mode as well, for when it is run from git gcc-verify.

Jason


  reply	other threads:[~2021-06-17  0:40 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4c1114a7-2377-99e4-d451-1a086857e991@linux.ibm.com>
2021-06-10  5:22 ` Xionghu Luo
2021-06-10  6:17   ` Martin Liška
2021-06-10  6:25     ` Xionghu Luo
2021-06-10  8:07       ` Martin Liška
2021-06-10  6:35     ` Tobias Burnus
2021-06-10  8:07       ` Martin Liška
2021-06-10  9:44         ` Jonathan Wakely
2021-06-10 10:01           ` Jonathan Wakely
2021-06-10 10:08             ` Jakub Jelinek
2021-06-10 10:40               ` Jonathan Wakely
2021-06-10 14:55                 ` Martin Sebor
2021-06-10 15:54                   ` Tobias Burnus
2021-06-10 16:05                     ` Jonathan Wakely
2021-06-10 15:56                   ` Jonathan Wakely
2021-06-10 17:06                     ` Martin Sebor
2021-06-10 17:20                       ` Martin Sebor
2021-06-10 17:30                         ` Jakub Jelinek
2021-06-10 18:55                           ` Martin Sebor
2021-06-10 19:09                             ` Jakub Jelinek
2021-06-10 21:16                               ` Martin Sebor
2021-06-10 21:28                                 ` Jakub Jelinek
2021-06-10 21:56                                   ` Martin Sebor
2021-06-11  9:13                                 ` Jonathan Wakely
2021-06-11 17:02                                   ` Martin Sebor
2021-06-11 17:05                                     ` Jakub Jelinek
2021-06-11 17:32                                     ` Jonathan Wakely
2021-06-11 18:01                                       ` Martin Sebor
2021-06-11 18:14                                         ` Jonathan Wakely
2021-06-16  0:56                                         ` Hans-Peter Nilsson
2021-06-16  2:03                                           ` Martin Sebor
2021-06-16  3:42                                             ` Jason Merrill
2021-06-16 14:31                                               ` Martin Sebor
2021-06-16 20:49                                               ` Jason Merrill
2021-06-16 21:45                                                 ` Martin Sebor
2021-06-16 23:45                                                   ` Jason Merrill
2021-06-17  0:17                                                     ` Martin Sebor
2021-06-17  0:40                                                       ` Jason Merrill [this message]
2021-06-17  1:01                                                         ` Martin Sebor
2021-06-17  1:46                                                           ` Jason Merrill
2021-06-17 10:18                                                           ` Jonathan Wakely
2021-06-17 14:55                                                             ` Martin Sebor
2021-06-17 15:11                                                               ` Michael Matz
2021-06-17 15:33                                                                 ` Martin Sebor
2021-06-17 16:31                                                                   ` Jakub Jelinek
2021-06-17 16:32                                                                   ` Jonathan Wakely
2021-06-17 18:00                                                                     ` Martin Sebor
2021-06-17 10:08                                                         ` Richard Earnshaw
2021-06-17 17:12                                                           ` Joseph Myers
2021-06-17 17:21                                                             ` Jason Merrill
2021-06-17 17:21                                                             ` Jakub Jelinek
2021-06-18  9:32                                                               ` Richard Earnshaw
2021-06-18 11:05                                                                 ` [Patch] contrib/mklog.py: Improve PR handling (was: git gcc-commit-mklog doesn't extract PR number to ChangeLog) Tobias Burnus
2021-06-18 11:10                                                                   ` Jonathan Wakely
2021-06-18 11:24                                                                     ` Jakub Jelinek
2021-06-18 11:25                                                                     ` Tobias Burnus
2021-06-18 11:40                                                                       ` Jonathan Wakely
2021-06-21  7:28                                                                         ` Martin Liška
2021-06-18 16:40                                                                       ` [Patch] contrib/mklog.py: Improve PR handling Martin Sebor
2021-06-18 14:41                                                                   ` [Patch] contrib/mklog.py: Improve PR handling (was: git gcc-commit-mklog doesn't extract PR number to ChangeLog) Jason Merrill
2021-06-18 16:47                                                                     ` [Patch] contrib/mklog.py: Improve PR handling Martin Sebor
2021-06-18 16:59                                                                       ` Iain Sandoe
2021-06-21  6:42                                                                     ` [Patch] contrib/mklog.py: Improve PR handling (was: git gcc-commit-mklog doesn't extract PR number to ChangeLog) Tobias Burnus
2021-06-21  7:26                                                                       ` Martin Liška
2021-06-21  8:02                                                                         ` Iain Sandoe
2021-06-21  7:54                                                       ` [Patch, v2] contrib/mklog.py: Improve PR handling (was: " Tobias Burnus
2021-06-21  8:09                                                         ` Martin Liška
2021-06-21  8:37                                                           ` Tobias Burnus
2021-06-21 12:53                                                             ` Martin Liška
2021-06-21 13:26                                                               ` Tobias Burnus
2021-06-22  7:30                                                                 ` [RFC][PATCH] contrib: add git-commit-mklog wrapper Martin Liška
2021-06-22  8:23                                                                   ` Tobias Burnus
2021-06-22  8:31                                                                     ` Martin Liška
2021-06-22 18:40                                                                   ` Jason Merrill
2021-06-23  7:40                                                                     ` Martin Liška
2021-06-16 13:46                                             ` git gcc-commit-mklog doesn't extract PR number to ChangeLog Jonathan Wakely
2021-06-16 17:44                                             ` Hans-Peter Nilsson
2021-06-11  9:08                       ` Jonathan Wakely
2021-06-11  9:35                         ` Jonathan Wakely
2021-06-11 15:43                           ` Joseph Myers
2021-06-11 17:02                             ` Jonathan Wakely
2021-06-10 11:51         ` [Patch] contrig/gcc-changelog: Check that PR in subject in in changelog (was:: git gcc-commit-mklog doesn't extract PR number to ChangeLog) Tobias Burnus
2021-06-10 11:54           ` [Patch] contrig/gcc-changelog: Check that PR in subject in in changelog Florian Weimer
2021-06-10 12:45           ` Jonathan Wakely
2021-06-10  9:41   ` git gcc-commit-mklog doesn't extract PR number to ChangeLog Jonathan Wakely

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=013d6727-4008-b4b5-b793-c782a5ba8e10@redhat.com \
    --to=jason@redhat.com \
    --cc=gcc@gcc.gnu.org \
    --cc=hp@bitrange.com \
    --cc=jakub@redhat.com \
    --cc=jwakely@redhat.com \
    --cc=msebor@gmail.com \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).