On Feb 22, 2009, at 8:35 PM, Junio C Hamano wrote:
Gerd Knops <gerti-git@xxxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html