Git:收到邮件后挂钩,包括差异补丁?

时间:2009-04-29 22:42:45

标签: git

我在一些谷歌搜索后找到了Git的post-receive钩子,我用它来通过电子邮件将所有提交发送到远程/共享仓库。

这个post-receive hook的问题在于它只能提供提交者,日志消息,日期,文件受影响的人。我还希望看到受影响的文件在电子邮件中生成补丁,以查看对代码所做的更改。 Subversion做得相当不错。

有没有人有一个解决方案可能是一个env变量,可能会传递给post-receive hook做到这一点?或者甚至更好,一个已经煮熟的例子?

全部谢谢!

6 个答案:

答案 0 :(得分:21)

最近的Git版本应安装post-receive-email脚本。在其中,它说:

  

hooks.showrev

     

用于格式化电子邮件中每个修订版的shell命令     “%s”替换为提交ID。默认为“git rev-list -1     --pretty%s“,显示提交ID,作者,日期和日志     信息。要列出由空行分隔的完整修补程序,您     可以将其设置为“git show -C%s; echo”。

所以只需将hooks.showrev设置为“git show -C%s;使用电子邮件钩子在存储库中回显“你已经完成了设置。

答案 1 :(得分:2)

我在这里遇到过类似的问题:

Git hook to send email notification on repo changes

实际上有一些不同版本的post-receive-email脚本 - git.kernel.org上提供的那个可以通知和关注hooks.showrev,这是我没有的。

但是这个讨论很酷,谢谢,一定会关注它!上面链接的另一个脚本也有gitweb链接功能和东西,你们其他人在做什么呢?

答案 2 :(得分:1)

我暂时没有运行它,但(我相信)one I used to use已联机。我把以前用git发布的东西拿出去,并根据自己的喜好重新安排它。我很长时间没有尝试过类似的东西。

我有一些截图:

答案 3 :(得分:1)

见本节。

echo ""
echo "Summary of changes:"
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev

这里要求git用于diff,但是也要求它总结它。删除--stat和--summary标志,你会看到差异。

git diff-tree --find-copies-harder $oldrev..$newrev

这是另一种显示所有修订的方法,包括从$ oldrev到$ newrev的差异

git --no-pager log --find-copies-harder $oldrev..$newrev

答案 4 :(得分:1)

尽管这个问题已经有了一个公认的答案,但我认为这是我遇到过的更好的收件后邮件挂钩之一:

http://github.com/brasse/post_receive_email.py

通过作者的博客文章发现:

http://copypasteprogrammer.blogspot.com/2010/03/git-post-receive-hook-in-python.html

答案 5 :(得分:1)

如果你对颜色等感兴趣,你可以在这里找到另一个: https://github.com/nacho/email-hook