Git钩子发送电子邮件通知以便追踪仓库更改

106

我该如何配置适当的Git钩子,在将一组更改推送到上游仓库时发送摘要电子邮件?


对于任何 Git 仓库的版本更新(新标签),您可以使用 https://www.git-notifier.com 发送电子邮件通知(免费)或短信通知(付费)。 - Scholtz
11个回答

94

另一种更现代的方法是使用git-multimail,正如下面Chords所建议的那样。


这是2009年时的做法。

您可以在$GITDIR/hooks中添加类似此代码到您的post-receive hook中,或者使用源代码contrib目录中的脚本(在此处可用)


如果我在我的钩子中引用了那个脚本,那么被引用的脚本必须驻留在上游主机还是本地? - Head
4
执行钩子的主机,例如在 post-receive 钩子中需要向上游主机发送脚本(而 post-commit 钩子则需要在提交代码的主机上运行脚本)。 - mwalling
2
啊,但你可以接受答案,这样你们两个都会获得更多的声望! - Pat Notz
让我困扰的是设置收件人列表。最终我弄清楚了,你需要使用git config:git config hooks.mailinglist“person1@example.comperson2@example.com - ewalk
4
值得注意的是,本回答中提供的链接已不再进行主动开发。相反,请使用 multimail,该链接已在自述文件中提到。 - Chords
@Chords,“不再进行主动开发”是指它不能再被使用了吗? - Яois

19
以下是我找到的最简单的解决方案:
1)在github.com上登录您的gitHub帐户。
2)在主选项卡中点击设置
3)从主导航中选择服务挂钩
4)从可用的挂钩中选择电子邮件。
5)在地址字段中填写您的电子邮件地址。
6)选中从作者发送复选框。
7)选中激活复选框。
8)点击更新设置
可选:您可以点击测试挂钩进行测试,检查您的收件箱,您应该会收到电子邮件。
此外,还有根据过程制作的图像。

enter image description here

enter image description here

enter image description here

enter image description here

现在到了大结局,我有一个经过测试和批准的答案。

如何向所有开发团队成员发送电子邮件,当gitHub的服务钩子->电子邮件只允许最多2个收件人}

答案是GitHub的服务钩子->电子邮件@&& Google群组的组合。

  1. 首先登录您的 Google 帐户
  2. 转到 Google Groups,在顶部单击创建组
  3. 输入组名称、组电子邮件地址(将复制/粘贴到 GitHub 服务钩子->电子邮件地址),组描述
  4. 然后在顶部点击“创建”按钮,您的新组现在应该已经创建
  5. 之后,在左侧菜单中点击邀请成员,并输入您团队成员的电子邮件地址
  6. 之后,点击发送邀请(当您的成员接受邀请时),他们现在正式成为该组的成员
  7. 在左侧菜单中点击所有成员,并检查第四列传递方式,每个团队成员都应该有全部电子邮件选项。
  8. 之后,我想要表扬Mr. Clement Escoffier,并请遵循他在Clement Escoffier::将 Github 提交发送到 Google 组上的指南完成操作。{谢谢 Clement :)}
  9. 如果链接不可用,请在这里找到我的 gDocs 的另一个链接 @Clements guide 的 PDF 版本

21
这是一个 GitHub 的解决方案。问题中没有任何提示表明用户正在使用 GitHub。不过,这似乎是一个关于 GitHub 的完美答案。 - daramarak
4
此电子邮件服务将在2018年10月之后停止。因此,在此时间点之后,此答案将不再有效。https://developer.github.com/changes/2018-04-25-github-services-deprecation/ - Jeegar Patel

10

这是我发送邮件通知给用户的方式,每次有人向存储库推送代码时就会触发通知。

设置Git提交邮件通知

这基于Andy Parkins的脚本,但我修改了它,使用SMTP协议来发送邮件。当然,也可以使用gmail的SMTP服务。


6

Robin Sommergit-notifier还以以下格式生成非常好的摘要:

Subject: [git/git-notifier] master: Adding www target to Makefile. (7dc1f95)

Repository : ssh://<removed>/git-notifier

On branch  : master

>---------------------------------------------------------------

commit 7dc1f95c97275618d5bde1aaf6760cd7ff6a6ef7
Author: Robin Sommer <robin@icir.org>
Date:   Sun Dec 19 20:21:38 2010 -0800

    Adding www target to Makefile.

>---------------------------------------------------------------

 Makefile |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index e184c66..9c9951b 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,8 @@ VERSION   = 0.1

 DISTFILES = git-notifier README COPYING

+WWW = $(HOME)/www/git-notifier
+
 all:

 dist:
@@ -13,3 +15,7 @@ dist:
    cp $(DISTFILES) git-notifier-$(VERSION)
    tar czvf git-notifier-$(VERSION).tgz git-notifier-$(VERSION)
    rm -rf git-notifier-$(VERSION)
+
+www: dist
+   rst2html.py README >$(WWW)/index.html
+   cp git-notifier-$(VERSION).tgz $(WWW)

4

设置 hooks.showrev 没有明显的区别?:-/

示例配置:

# less users/cj.git/config 
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
[hooks]
        mailinglist = cj@yoga.ee
        showrev = "git show -C %s; echo"
        emailprefix = "[sabu gitosis server] "

啊,原来git.kernel.org版本尊重hooks.showrev,但默认的git安装脚本没有!只需替换脚本,chmod a+x,然后它就可以工作了!不过还需要理解showrev语法。 - HiQ CJ
类似的显示差异问题可以在这里找到:https://dev59.com/vXRA5IYBdhLWcg3w2xsI#1790161 - HiQ CJ

1

我成功地完成了这个任务,但不得不选择使用contrib脚本,而不是Alexandre Julliard的另一个(perl)脚本。后者看起来更高级和可配置,但在postfix中我没有能够接受“-s”参数的邮件命令。以下是我的解决方法:

http://pastie.textmate.org/695323

展示更多信息会很好,比如完整的补丁、gitweb链接和提交图表,但是这个脚本只能做到第一个——如果我玩弄hooks.showrev似乎可以实现。

无论如何,感谢您的建议!


0
如果您使用GitLab,您可以使用“推送时电子邮件”项目服务来实现此功能,该服务可以在项目设置中的服务下找到。

0
如果您使用Windows操作系统,scm-notifier将会非常有用。

0

这并不是一个完整的答案,因为它是针对Github特定的。但如果你恰好使用Github,那么配置“服务钩子”非常容易。
对于每个您想要监视的存储库,请输入设置/服务钩子。
有许多可用的集成,例如Trac、Twitter、Amazon SNS、Jira、Asana、Bugzilla、FogBugz、IRC、Jabber、Pivotal Tracker、Trello和电子邮件...
只需选择电子邮件并提供一个组电子邮件地址即可。
我们使用电子邮件通知来同步我们的开发人员。


0

在您的存储库下,在GitLab:

  1. 单击“设置”。
  2. 当设置展开时,您将看到集成。 点击它。

这里打开一个新页面推送邮件

  1. 找到并选择从提交者发送
  2. 此外,在最后一个字段中输入用逗号分隔的收件人

还有一个选项禁用代码差异,可以在通知正文中排除可能敏感的代码差异。 这是可选的。

有关更多详细信息: 单击此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接