如何配置适当的 Git 挂钩,以便在将一组更改推送到上游存储库时发送摘要电子邮件?
11 回答
另一种更现代的方法是使用git-multimail,如下面的Chords建议的那样。
这就是你在 2009 年的做法。
您可以在 $GITDIR/hooks 中的 post-receive 挂钩中添加类似的内容,或使用源代码的 contrib 目录中的脚本(可在此处获得)
这是我找到的最简单的解决方案:
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的组合
- 首先登录到您的谷歌帐户
- 转到Google Groups,然后在顶部单击Create Group
- 输入组名、组电子邮件地址(将复制/粘贴到 GitHub 服务挂钩->电子邮件地址)、组描述
- 在点击顶部的创建按钮之后,您的新组现在应该被创建
- 之后在左侧菜单中点击邀请成员并输入队友的电子邮件地址
- 之后点击发送邀请(当您的成员接受邀请时),他们现在正式成为该组的成员
- 在左侧的菜单中单击All Members并检查名为Delivery的第 4 列,每个团队成员都应该有选项 All Email。
- 在那之后,我想感谢 Clement Escoffier 先生,请遵循他的指导方针@Clement Escoffier::Send Github 向 Google Group 提交关于如何完成它的承诺。{谢谢克莱门特:)}
- 如果此处的链接不可用,则为我的 gDocs @ PDF 版本的 Clements 指南的另一个链接
Robin Sommer的git-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)
设置 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] "
我设法做到了这一点,但不得不选择使用 contrib 脚本,而不是 Alexandre Julliard 的其他(perl)脚本。它看起来更漂亮,更可配置,但是使用后缀我没有可以接受“-s”的邮件命令?这是我的方式:
http://pastie.textmate.org/695323
显示更多信息会很好,比如完整的补丁、gitweb 链接和提交图,但是这个脚本只能做第一个 - 如果我玩 hooks.showrev 似乎。
无论如何,欢呼并感谢您的建议!
如果您使用 Windows,scm-notifier会很有帮助。
不完全是一个完整的答案,因为它是 Github 特定的,但如果你碰巧使用 Github,配置“服务挂钩”非常容易。
对于您希望监控的每个存储库,输入 Settings / Service Hooks。
有很多可用的集成,例如 Trac、Twitter、Amazon SNS、Jira、Asana、Bugzilla、FogBugz、IRC、Jabber、Pivotal Tracker、Trello 和电子邮件……
只需选择电子邮件并使用群组电子邮件地址提供。
我们使用电子邮件通知来同步我们的开发人员。
如果您使用 GitLab,您可以为此使用“Email-on-push”项目服务,它可以在项目设置中的服务下找到。
您可以使用预提交:
#!/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
在您的存储库下的GitLab中:
- 点击设置。
- 当设置在那里展开时,您将看到Integrations。点击它。
推送时打开一个新页面电子邮件
- 找到并选择从提交者发送。
- 此外,在最后一个字段中输入以逗号分隔的收件人。
还有一个禁用代码差异的选项,它排除了通知正文中可能敏感的代码差异。它是可选的。
更多详情:点击这里