Re: Getting diff in commit-msg hook?
On Feb 22, 2009, at 8:35 PM, Junio C Hamano wrote:
Show 22 quoted lines
> Gerd Knops <gerti-git@bitart.com> writes:
>
>> When I commit certain files, I would like to send a diff via email to
>> interested parties.
>>
>> So I added a commit-msg hook, which checks the list of files for
>> that commit.
>> That part works fine. However in the email I would like to include a
>> diff of the file(s) in question.
>>
>> Now when I run "git diff -- '$file'", I get no output, probably
>> because the
>> file is in some semi-committed state.
>>
>> So how can I obtain a diff for a file in a commit-msg hook?
>
> How are you getting the list of files for the commit in that commit-
> msg
> hook? I think you are doing something like
>
> "git diff --cached --name-only"
>
Actually I was parsing the comments from the proposed log message, but that was a bad idea as there are no comments when using "git commit -m msg". The above command works much better, thanks!
Show 10 quoted lines
> The new state you are committing is in the index, and "the diff for
> the
> commit" is "what is the difference between the state of the previous
> commit and the state of this commit records", so
>
> " git diff --cached"
>
> should give you what you want (and you do not need to do that per
> path.
>
I could swear I tried that... Anyhow, working as advertised. Thanks again!
Show 9 quoted lines
> Having said all that, I imagine you would realize that you do not
> want to
> do this inside any of the hooks triggered by "git commit", as you
> learn to
> work with git more. I suspect you would probably find a hook
> triggered
> when you push into another repository is more appropriate place for
> doing
> this kind of thing.
You are right, it would make more sense to have a hook on the remote (subversion) repository, but for various reasons it is much easier for me to add a hook on my end. Ideally I'd have a local hook for "git svn dcommit" that would let me get the list of committed files, filter for the ones I am interested in and email the diff. But I was not able to find such a hook.
Thanks for your help!
Gerd