From: Gerd Knops Date: Mon, 23 Feb 2009 18:58:59 GMT Subject: Re: Getting diff in commit-msg hook? Message-ID: In-Reply-To: <7vhc2lx4mc.fsf@gitster.siamese.dyndns.org> On Feb 22, 2009, at 8:35 PM, Junio C Hamano wrote: > Gerd Knops 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! > 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! > 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