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

2017-07-15 Thread John J Foerch



-Original Message-
>From: Jeff King <p...@peff.net>
>Sent: Jul 15, 2017 12:05 PM
>To: John J Foerch <jjfoe...@earthlink.net>
>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:
>
>> The feature would be a command line option for git commit that would
>> automatically prepend the ": " to the commit message.  The
>> different cases of its behavior could be:
>> 
>>  - commit affecting a single file, with commit message given by -m:
>> 
>>: prepend ": " to the message given by -m
>> 
>>  - commit affecting a single file, with commit message from editor:
>> 
>>: pre-fill commit message template with ": "
>> 
>>  - commit affecting multiple files:
>> 
>>: use common base directory of all affected files for , 
>> 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!


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

2017-07-15 Thread John J Foerch


Perfect, thank you Hannes!

-Original Message-
>From: Johannes Sixt <j...@kdbg.org>
>Sent: Jul 15, 2017 12:01 PM
>To: John J Foerch <jjfoe...@earthlink.net>
>Cc: git@vger.kernel.org
>Subject: Re: [FEATURE] git-commit option to prepend filename to commit message
>
>Am 15.07.2017 um 16:19 schrieb John J Foerch:
>> The feature would be a command line option for git commit that would
>> automatically prepend the ": " to the commit message.
>Write a prepare-commit-msg hook:
>
>https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg
>
>-- Hannes


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

2017-07-15 Thread Jeff King
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 ": " to the commit message.  The
> different cases of its behavior could be:
> 
>  - commit affecting a single file, with commit message given by -m:
> 
>: prepend ": " to the message given by -m
> 
>  - commit affecting a single file, with commit message from editor:
> 
>: pre-fill commit message template with ": "
> 
>  - commit affecting multiple files:
> 
>: use common base directory of all affected files for , 
> 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"


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

2017-07-15 Thread Johannes Sixt

Am 15.07.2017 um 16:19 schrieb John J Foerch:

The feature would be a command line option for git commit that would
automatically prepend the ": " to the commit message.

Write a prepare-commit-msg hook:

https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg

-- Hannes


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

2017-07-15 Thread John J Foerch
Hello,

I had an idea for a feature for git commit that I wanted to pass along and see 
if maybe others would also think this would be useful.

Very often, I make commits that affect a single file, and have simple commit 
messages of this form:

: 

The feature would be a command line option for git commit that would 
automatically prepend the ": " to the commit message.  The different 
cases of its behavior could be:

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

   : prepend ": " to the message given by -m

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

   : pre-fill commit message template with ": "

 - commit affecting multiple files:

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

Anybody think that this or something like it would be a good convenience?

Thank you,

John Foerch