如何获得GitHub推送的电子邮件差异?

时间:2010-11-18 02:24:11

标签: git email diff github

当提交被推送到您的GitHub仓库时,有没有人想出一个获得电子邮件的好方法 - 包括更改文件差异?

(我知道他们有一个电子邮件服务挂钩 - 但不包括差异)

如果使用可在Gmail中查看的内嵌CSS对差异进行着色,则可获得巨额奖励积分。

4 个答案:

答案 0 :(得分:9)

我写了一个小小的WebHook,正好填补了这个空白:gitdub。它利用git-notifier每次提交发送一封电子邮件。

答案 1 :(得分:4)

你是对的,GitHub电子邮件服务钩子不包括差异:这是一个 feature request

J-16 SDIZ也是正确的,git-hook-update-notify-email只会在本地执行,而不是在GitHub端执行。

这并不意味着所说的脚本无法帮助:想法是

  • 在您身边设置一个裸仓库,克隆GitHub仓库
  • 设置该基础仓库的克隆
  • 有一个cron作业(或Windows任务)每10分钟获取一次GitHub仓库
  • 立即推送到本地非裸仓库

在本地非裸仓库中,您可以:

  • 使用预接收挂钩(as described in the Git book,可用于计算old-revnew-rev之间的差异)
  • 或使用上述git-hook-update-notify-email

在这两种情况下,这意味着在本地设置这种服务,这是不理想的。

答案 2 :(得分:2)

可能不是您的理想答案,但如果您在自己的服务器上设置gitolite,则可以设置git-commit-notifer,获取漂亮的彩色差异电子邮件,并拥有无限的git帐户,因为您拥有服务器。我这样做了,我从未回头。

没有服务器?您可以获得一个微型Amazon EC2实例,价格便宜(每月15美元)。我们有多达12个开发人员和10个git repos,它们在微型实例上运行良好。

答案 3 :(得分:2)

执行此操作的方法是添加一个通知挂钩脚本,该脚本将数据发布到您的系统,每次提交都已推送到github。

例如:有效载荷由每个应用的提交组成,每个提交都有一个id:

{
  :before     => before,

  :after      => after,

  :ref        => ref,

  :commits    => [{

    :id        => commit.id, <--- here
[...]

第二步是让你的脚本使用github API触发对github的调用,该github获取有效负载中包含的每个提交。响应包括每个文件的差异,然后您可以通过电子邮件发送给开发人员。

例如:http://developer.github.com/v3/repos/commits/#get-a-single-commit

GET /repos/:owner/:repo/commits/:sha

:sha是您获取代码的提交的ID,响应如下所示:

[...]

 "files": [

    {
      "filename": "file1.txt",
      "additions": 10,
      "deletions": 2,
      "changes": 12,
      "status": "modified",
      "raw_url": "https://github.com/octocat/Hello-World/raw/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "blob_url": "https://github.com/octocat/Hello-World/blob/7ca483543807a51b6079e54ac4cc392bc29ae284/file1.txt",
      "patch": "@@ -29,7 +29,7 @@\n....." <---- HERE
    } 
[...]

希望这会有所帮助。请询问您是否需要有关如何操作的更多详细信息。