我在Google上找到了一个Git的post-receive钩子,用于将所有提交发送到远程/共享存储库。
这个 post-receive钩子的问题在于它只提供了谁进行了提交,日志消息,日期,受影响的文件。我还想在电子邮件中看到受影响的文件生成的补丁,以了解对代码进行了哪些更改。 Subversion做得相当好。
有没有人有解决方案,可以通过传递给post-receive钩子的env-variable来实现此功能?或者更好的是,已经准备好的示例?
谢谢大家!
我在Google上找到了一个Git的post-receive钩子,用于将所有提交发送到远程/共享存储库。
这个 post-receive钩子的问题在于它只提供了谁进行了提交,日志消息,日期,受影响的文件。我还想在电子邮件中看到受影响的文件生成的补丁,以了解对代码进行了哪些更改。 Subversion做得相当好。
有没有人有解决方案,可以通过传递给post-receive钩子的env-variable来实现此功能?或者更好的是,已经准备好的示例?
谢谢大家!
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; echo”,然后您就可以全部设置完成了。http://github.com/brasse/post_receive_email.py
通过作者的博客文章发现:
http://copypasteprogrammer.blogspot.com/2010/03/git-post-receive-hook-in-python.html
echo ""
echo "Summary of changes:"
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev
这里要求 Git 返回 diff,但还要求其对其进行总结。移除 --stat 和 --summary 标记,你就能看到 diff。
git diff-tree --find-copies-harder $oldrev..$newrev
这里有另一种方法,可以显示从 $oldrev 到 $newrev 的所有修订版本,包括差异。
git --no-pager log --find-copies-harder $oldrev..$newrev