【问题标题】:Git: post-receive email hook, including diff patches?Git:接收电子邮件后挂钩,包括差异补丁?
【发布时间】:2010-10-22 17:17:53
【问题描述】:

我在谷歌搜索后发现了一个用于 Git 的 post-receive 钩子,我使用该钩子将所有提交通过电子邮件发送到远程/共享 repo。

这个post-receive hook 的问题在于它只能提供提交者、日志消息、日期、受影响的文件。我还想在电子邮件中查看受影响的文件生成的补丁,以了解对代码进行了哪些更改。 Subversion 做得很好。

有没有人可以解决可能传递给执行此操作的 post-receive 挂钩的 env 变量?或者更好的是,一个已经熟透的例子?

谢谢大家!

【问题讨论】:

    标签: git


    【解决方案1】:

    我有一段时间没有运行它了,但是(我相信)one I used to use 在线。我拿了过去随 git 一起发布的东西,并根据自己的喜好重新安排了它。我很久没有尝试运行类似的东西了。

    我有一些它所做的截图:

    【讨论】:

    • 嗨达斯汀。您是否碰巧进行了使输出看起来与上面的屏幕截图相似的修改?
    • 我很确定这就是我第一句话中的要点链接。如果没有,那么没有。 :(
    • 很遗憾,并非所有人都可以查看您的屏幕截图。当我点击其中一个链接时,它会显示一个您需要登录 Evernote 的页面,而您的屏幕截图在那里不可见。
    【解决方案2】:

    请参阅本节。

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

    这里 git 被要求提供差异,但随后也被要求对其进行总结。删除 --stat 和 --summary 标志,您将看到差异。

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

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

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

    【讨论】:

    • 嗨罗宾。我尝试了上面的两个模块,但仍然没有得到差异输出。
    • 对了,我忘记了两个版本中的“-p”选项。
    【解决方案3】:

    最近的 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;使用电子邮件挂钩在存储库中回显“,一切就绪。

    【讨论】:

    • Bombe,我尝试在命令行上设置以下内容,但没有任何运气。 # git config --global hooks.showrev "git show -C %s; echo"
    • 没关系,你不能添加到--global,它必须只是git config,否则你的解决方案是正确的,谢谢!
    • 我在全局设置中设置所有必要的配置值没有问题。
    • 或者,配置更改前后的上下文行数:“git show -U20 -C %s; echo”,其中-U20指定例如前后二十行上下文每行差异。
    【解决方案4】:

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

    Git hook to send email notification on repo changes

    实际上有不同版本的 post-receive-email 脚本 - git.kernel.org 上提供的版本通知并尊重 hooks.showrev,而我没有。

    不过这个讨论很酷,谢谢,一定会看的!上面链接的另一个脚本也有 gitweb 链接功能和东西,你其他人是怎么做的?

    【讨论】:

      【解决方案5】:

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

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

      通过作者的博文发现:

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

      【讨论】:

        【解决方案6】:

        如果您对颜色等感兴趣,这里还有另一个: https://github.com/nacho/email-hook

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-28
          • 1970-01-01
          • 2015-04-29
          • 2016-01-30
          • 2013-06-25
          • 2013-04-06
          相关资源
          最近更新 更多