Re: [FEATURE] git-commit option to prepend filename to commit message

From: John J Foerch <hidden>
Date: 2017-07-15 16:22:02



-----Original Message-----
From: Jeff King <redacted>
Sent: Jul 15, 2017 12:05 PM
To: John J Foerch <redacted>
Cc: git@vger.kernel.org
Subject: Re: [FEATURE] git-commit option to prepend filename to commit message

On Sat, Jul 15, 2017 at 10:19:34AM -0400, John J Foerch wrote:
quoted
The feature would be a command line option for git commit that would
automatically prepend the "<filename>: " to the commit message.  The
different cases of its behavior could be:

 - commit affecting a single file, with commit message given by -m:

   : prepend "<filename>: " to the message given by -m

 - commit affecting a single file, with commit message from editor:

   : pre-fill commit message template with "<filename>: "

 - commit affecting multiple files:

   : use common base directory of all affected files for <filename>, behaviors as above for use with -m or editor.

Anybody think that this or something like it would be a good convenience?
Johannes already pointed you to the prepare-commit-msg hook, which I
think is the right solution. I wrote a rough sketch for fun (note that
you could write it in whatever language you like if the mix of
perl/shell isn't to your liking):

-- >8 --
#!/bin/sh

# only kick in for vanilla commit, or "-m"
case "$2" in
""|message) ;;
*) exit 0
esac

# common prefix of all changed files
prefix=$(
       git diff-index --name-only HEAD |
       perl -lne '
               if (!defined $prefix) {
                       $prefix = $_;
               } else {
                       chop $prefix while !/^\Q$prefix\E/;
               }
               END {
                       # trim trailing slash if present
                       $prefix =~ s{/$}{};
                       print $prefix
               }
       '
)

# now stick the prefix at the start of the message-in-progress
{
       printf '%s' "$prefix: "
       cat "$1"
} >"$1".tmp &&
mv "$1".tmp "$1"
Thank you for that!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help