-----Original Message----- >From: Jeff King <peff@xxxxxxxx> >Sent: Jul 15, 2017 12:05 PM >To: John J Foerch <jjfoerch@xxxxxxxxxxxxx> >Cc: git@xxxxxxxxxxxxxxx >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: > >> 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!