我在一些谷歌搜索后找到了Git的post-receive钩子,我用它来通过电子邮件将所有提交发送到远程/共享仓库。
这个post-receive hook的问题在于它只能提供提交者,日志消息,日期,文件受影响的人。我还希望看到受影响的文件在电子邮件中生成补丁,以查看对代码所做的更改。 Subversion做得相当不错。
有没有人有一个解决方案可能是一个env变量,可能会传递给post-receive hook做到这一点?或者甚至更好,一个已经煮熟的例子?
全部谢谢!
答案 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