Git挂钩以发送关于仓库变更的电子邮件通知


101

每当将一组更改推送到上游存储库时,如何配置适当的Git挂钩以发送摘要电子邮件?


对于任何git repo的版本更新(新标签),您可以使用git-notifier.com发送电子邮件通知(免费)或SMS通知(付费)
Scholtz

Answers:


94

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


这就是您在2009年所做的。

你可以添加类似这样您在$ GITDIR /挂钩后收到钩,或源的contrib目录使用脚本(点击此处下载)


如果我在挂钩中引用了该脚本,那么引用的脚本是否必须驻留在上游主机或本地主机上?

4
执行钩子的主机,因此在接收后,是上游主机(而提交后的钩子则需要在运行提交的主机上使用脚本)。
mwalling

2
啊,但是您可以接受答案,而且两者都将赢得更多声誉!
2009年

让我着迷的部分是设置收件人列表。我终于弄清楚了您需要使用git config:git config hooks.mailinglist“ person1@example.com,person2@example.com”
ewalk

4
值得注意的是,此答​​案中的链接不再处于积极开发中。相反,请使用自述文件中提到的multimail
和弦,

19

这是我找到的最简单的解决方案:

1)登录到您的GitHub的帐户github.com

2)在主标签中,单击“ 设置”

3)从主导航中选择“ 服务挂钩”

4)从可用挂钩中选择电子邮件

5)在地址栏中填写您的电子邮件地址

6)选中作者发送复选框

7)选中活动复选框

8)点击更新设置

可选:您可以单击“ 测试挂钩”进行测试,检查您的收件箱中您应该收到电子邮件。

也有根据过程制作的图像:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

现在,对于总决赛,我的答案已经在我身边经过测试和认可。

当gitHub的Service Hooks-> Email仅允许最多两个收件人时,如何向所有开发团队成员发送电子邮件}

答案是Service Hook-> Email @ GitHub && Google组的组合

  1. 首次登录您的Google帐户
  2. 转到Google网上论坛,然后在顶部单击创建网上论坛
  3. 输入组名称,组电子邮件地址(将复制/粘贴到GitHub Service Hook->电子邮件地址中),组描述
  4. 点击顶部的“创建”按钮后,应该立即创建新组
  5. 之后,在左侧菜单中,单击“ 邀请成员”,然后输入队友的电子邮件地址
  6. 在点击发送邀请后(当您的成员接受邀请时),他们现在正式成为该组的成员
  7. 在左侧菜单中,单击“ 所有成员”,然后检查第四列,即“ 传递”,每个团队成员都应具有“ 所有电子邮件”选项 。
  8. 之后,我想向Clement Escoffier先生致敬,请遵循他的准则@ Clement Escoffier :: Send Github致力于如何完成该工作的Google小组。{感谢克莱门特:)}
  9. 如果该链接不可用,这是我的gDocs @ PDF版本的Clements指南的另一个链接

19
这是一个github解决方案。问题中没有任何内容告诉我用户正在使用github。看起来这是github上一个问题的完美答案。
daramarak

3
该电子邮件服务将在2018年10月之后终止。因此,此答案在此之后无效。 developer.github.com/changes/...
Jeegar帕特尔

10

这是我每次向存储库推送一次时向用户发送电子邮件通知的方式。

设置Git提交电子邮件通知

它基于Andy Parkins的脚本。我将其更改为使用SMTP发送电子邮件。当然,也可以使用gmail的SMTP。


5

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没有明显区别吗?:-/

范例conf:

# 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

类似的问题在这里展示来进行比较:stackoverflow.com/questions/804601/...
HiQ的CJ

1

我设法做到了,但是不得不选择使用contrib脚本,而不是Alexandre Julliard的其他(perl)脚本。似乎更奇妙,更可配置,但是使用postfix,我没有可以接受“ -s”的邮件命令?这是我的方式:

http://pastie.textmate.org/695323

最好显示一些更多信息,例如完整补丁,gitweb链接和提交图,但是此脚本只能执行第一个-如果我使用hooks.showrev,似乎。

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



0

因为它是特定于Github的,所以它并不是一个完整的答案,但是如果您碰巧使用Github,则配置“服务挂钩”非常容易。
对于您要监视的每个存储库,输入设置/服务挂钩。
有很多可用的集成,如Trac的,微博,SNS亚马逊,吉拉,嘉尚,Bugzilla的,FogBugz的,IRC,Jabber的,举足轻重的跟踪,Trello和电子邮件....的
只需选择电子邮件,并与一组电子邮件地址给它。
我们使用电子邮件通知来同步我们的开发人员。


0

如果您使用的是GitLab,则可以为此使用“按需发送电子邮件”项目服务,可以在项目设置的服务下找到它。


0

您可以使用预提交:

#!/usr/bin/env ruby

require 'mail'

Mail.defaults do
  delivery_method :smtp,
    address: 'smtp.gmail.com',
    port: 587,
    user_name: '...',
    password: '...',
    authentication: 'plain',
    enable_starttls_auto: true
end

changes=`git diff --cached --unified=0 Gemfile Bowerfile`

unless changes.empty?
  Mail.deliver do
    from     '...'
    to       '...'
    subject  '[PROJECT] Plese confirm team can use libraries'
    body     changes
  end
end

安装:

cd project
cp pre-commit .git/hooks
chmod +x .git/hooks/pre-commit
gem install mail

测试:

echo "# some change" >> Gemfile && git commit -m 'some change' Gemfile

0

在存储库下的GitLab中

  1. 单击设置。
  2. 当设置在那里扩展时,您将看到Integrations。点击它。

这里打开一个新的网页推送电子邮件

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

还有一个“ 禁用代码差异”选项,该选项可排除通知正文中可能敏感的代码差异。它是可选的。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.