all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jim Porter <jporterbugs@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: acm@muc.de, emacs-devel@gnu.org
Subject: Re: Mistakes in commit log messages
Date: Tue, 11 Apr 2023 12:27:40 -0700	[thread overview]
Message-ID: <eb74be24-eb1d-cbc9-6909-9634b88a7028@gmail.com> (raw)
In-Reply-To: <834jpm9s1g.fsf@gnu.org>

On 4/11/2023 11:45 AM, Eli Zaretskii wrote:
>> Date: Tue, 11 Apr 2023 11:31:55 -0700
>> Cc: emacs-devel@gnu.org
>> From: Jim Porter <jporterbugs@gmail.com>
>>
>> Finally, I think it would make sense to have this be a purely advisory
>> warning for now so that we could check it into the Emacs tree soon-ish.
> 
> How will this help, given that some people use Magit to commit and
> some use VC, not the Git commands from the shell?  Are we sure the
> warnings will be seen, let alone acted upon?

I don't know. If VC and Magit don't show messages from Git hooks, they 
probably should. Those messages are there for a reason, after all. 
However, warnings that only some users see would hopefully still help us 
get feedback on whether the validation works properly.

Some miscellaneous thoughts on this:

One issue with the current implementation (mentioned elsewhere in this 
thread) is that it doesn't work for deleting a file from the repo. 
Fixing this in the commit-msg hook is tricky. We can get the list of 
changed files via "git diff --name-only" (and then we could compare our 
commit message against that list), but there's a problem: I don't know 
of a good way to detect when the user is amending a commit[1]. For a 
normal commit, you'd get the changed files via something like "git diff 
--staged --name-only", but for an amended commit, you'd want to add 
"HEAD^" to that command.

Another option might be to do this as a pre-push hook. By then, the 
commits are finalized, so we can more easily compare the commit message 
and its diff. This is also nice because when the commit-msg hook errors 
out, it throws away the commit message; quite annoying if you just made 
a small typo! However, it does mean that committers would need to be 
comfortable with amending their commit messages if they hit this error.

(We could also check this in a post-commit hook so that committers are 
alerted *before* they try to push, but post-commit hooks can't abort the 
commit: it's already done! Maybe we could have a post-commit hook that 
warns the committer, and a pre-push hook that actually errors out.)

[1] The only way I've seen to do this is to look at the arguments from 
the parent (Git) process that called the hook: 
<https://stackoverflow.com/questions/19387073/how-to-detect-commit-amend-by-pre-commit-hook>. 
I'm not sure how reliably that works, especially on platforms like 
MS-Windows...



  reply	other threads:[~2023-04-11 19:27 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <835ya5m4p0.fsf@gnu.org>
     [not found] ` <ZDPkykCsW3i30UR9@ACM>
     [not found]   ` <83v8i4arzt.fsf@gnu.org>
     [not found]     ` <CANh=_JF0CEPDsWZSuyy9ymByma2LxcypP90O3-LQ+KhoJ8cqvg@mail.gmail.com>
     [not found]       ` <CANh=_JEO4-E79dPCLc3cRLi7=ftAzc+H1FC46eck1vJN3TD3Sg@mail.gmail.com>
2023-04-11  6:02         ` Mistakes in commit log messages Eli Zaretskii
2023-04-11 14:01           ` Alan Mackenzie
2023-04-11 14:57             ` Eli Zaretskii
2023-04-11 17:20               ` Alan Mackenzie
2023-04-11 18:00                 ` Eli Zaretskii
2023-04-11 18:31             ` Jim Porter
2023-04-11 18:45               ` Eli Zaretskii
2023-04-11 19:27                 ` Jim Porter [this message]
2023-04-11 19:36                   ` Eli Zaretskii
2023-04-12  0:20                     ` Jim Porter
2023-04-13  6:18                       ` Jim Porter
2023-04-13  6:49                         ` Eli Zaretskii
2023-04-13  7:47                           ` Robert Pluim
2023-04-15  3:41                           ` Jim Porter
2023-04-15  5:45                             ` Jim Porter
2023-04-15  7:15                               ` Eli Zaretskii
2023-04-15 10:44                                 ` Alan Mackenzie
2023-04-15 11:00                                   ` Eli Zaretskii
2023-04-21 22:16                                   ` Filipp Gunbin
2023-04-15 20:54                               ` Jim Porter
2023-04-15 21:23                                 ` Jim Porter
2023-04-16  5:43                                   ` Eli Zaretskii
2023-04-16 20:06                                     ` Jim Porter
2023-04-16 20:19                                       ` Michael Albinus
2023-04-17  2:22                                       ` Eli Zaretskii
2023-04-17  7:28                                         ` Michael Albinus
2023-04-21  4:59                                 ` Jim Porter
2023-04-15  7:08                             ` Eli Zaretskii
2023-04-12  9:41                     ` Alan Mackenzie
2023-04-12 10:14                       ` Eli Zaretskii
2023-04-12  9:32               ` Alan Mackenzie

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=eb74be24-eb1d-cbc9-6909-9634b88a7028@gmail.com \
    --to=jporterbugs@gmail.com \
    --cc=acm@muc.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.