Re: Getting diff in commit-msg hook?
- From
- Gerd Knops <gerti-git@bitart.com>
- Date
- Feb 23, 2009, 18:58 UTC
- Message-ID
- <D857B1FF-A49F-4158-852A-FCCB19FFD06C@bitart.com>
- In-Reply-To
- <7vhc2lx4mc.fsf@gitster.siamese.dyndns.org>
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