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!