104

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

4

11 回答 11

94

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


这就是你在 2009 年的做法。

您可以在 $GITDIR/hooks 中的 post-receive 挂钩中添加类似的内容,或使用源代码的 contrib 目录中的脚本可在此处获得)

于 2009-02-16T05:49:11.717 回答
20

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

1) 在 github.com 上登录您的 gitHub帐户

2)在主选项卡中单击设置

3) 从主导航中选择Service Hooks

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

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

6)选中复选框从作者发送

7) 选中复选框激活

8) 点击更新设置

可选:您可以单击Test Hook进行测试,检查您的收件箱,您应该会收到电子邮件。

还有按照流程制作的图片:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

现在,对于总决赛,我得到了在我身边经过测试和批准的答案。

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

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

  1. 首先登录到您的谷歌帐户
  2. 转到Google Groups,然后在顶部单击Create Group
  3. 输入组名、组电子邮件地址(将复制/粘贴到 GitHub 服务挂钩->电子邮件地址)、组描述
  4. 在点击顶部的创建按钮之后,您的新组现在应该被创建
  5. 之后在左侧菜单中点击邀请成员并输入队友的电子邮件地址
  6. 之后点击发送邀请(当您的成员接受邀请时),他们现在正式成为该组的成员
  7. 在左侧的菜单中单击All Members并检查名为Delivery的第 4 列,每个团队成员都应该有选项 All Email
  8. 在那之后,我想感谢 Clement Escoffier 先生,请遵循他的指导方针@Clement Escoffier::Send Github 向 Google Group 提交关于如何完成它的承诺。{谢谢克莱门特:)}
  9. 如果此处的链接不可用,则为我的 gDocs @ PDF 版本的 Clements 指南的另一个链接
于 2013-04-25T19:58:52.467 回答
10

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

设置 Git 提交电子邮件通知

它基于安迪·帕金斯的剧本。我将其更改为使用 SMTP 发送电子邮件。当然也可以使用gmail的SMTP。

于 2010-05-28T05:43:33.203 回答
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)
于 2010-12-29T20:42:10.647 回答
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] "
于 2009-11-13T11:38:21.167 回答
1

我设法做到了这一点,但不得不选择使用 contrib 脚本,而不是 Alexandre Julliard 的其他(perl)脚本。它看起来更漂亮,更可配置,但是使用后缀我没有可以接受“-s”的邮件命令?这是我的方式:

http://pastie.textmate.org/695323

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

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

于 2009-11-12T20:04:40.670 回答
0

如果您使用 Windows,scm-notifier会很有帮助。

于 2012-10-09T13:01:10.063 回答
0

不完全是一个完整的答案,因为它是 Github 特定的,但如果你碰巧使用 Github,配置“服务挂钩”非常容易。
对于您希望监控的每个存储库,输入 Settings / Service Hooks。
有很多可用的集成,例如 Trac、Twitter、Amazon SNS、Jira、Asana、Bugzilla、FogBugz、IRC、Jabber、Pivo​​tal Tracker、Trello 和电子邮件……
只需选择电子邮件并使用群组电子邮件地址提供。
我们使用电子邮件通知来同步我们的开发人员。

于 2012-12-17T20:56:16.937 回答
0

如果您使用 GitLab,您可以为此使用“Email-on-push”项目服务,它可以在项目设置中的服务下找到。

于 2015-01-13T22:50:12.950 回答
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
于 2015-08-13T09:08:17.757 回答
0

在您的存储库下的GitLab中:

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

推送时打开一个新页面电子邮件

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

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

更多详情:点击这里

于 2020-06-10T11:55:36.917 回答