【问题标题】:Git hook to send email notification on repo changesGit hook 发送关于 repo 更改的电子邮件通知
【发布时间】:2010-10-07 19:57:24
【问题描述】:

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

【问题讨论】:

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

标签: git githooks


【解决方案1】:

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


这就是你在 2009 年的做法。

您可以在 $GITDIR/hooks 的 post-receive 挂钩中添加类似 this 的内容,或者使用源 (Available here) 的 contrib 目录中的脚本

【讨论】:

  • 如果我在我的钩子中引用该脚本,被引用的脚本必须驻留在上游主机上还是本地?
  • 正在执行钩子的主机,因此在 post-receive 的情况下,上游主机(而 post-commit 钩子需要您正在运行提交的主机上的脚本)。
  • 啊,不过你可以接受这个答案,你们都会得到更多的声望!
  • 让我感动的部分是设置收件人列表。我终于想通了,你需要使用 git config: git config hooks.mailinglist "person1@example.com, person2@example.com"
  • 值得注意的是,此答​​案中的链接不再处于积极开发中。请改用自述文件中提到的multimail
【解决方案2】:

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

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. 首次登录您的 Google 帐户
  2. 转到Google Groups,然后点击顶部的创建组
  3. 输入组名、组电子邮件地址(将复制/粘贴到 GitHub 服务挂钩->电子邮件地址),组描述
  4. 点击顶部的创建按钮后,您的新组应该是 现在创建
  5. 然后在左侧菜单中点击邀请成员并输入 在你队友的电子邮件地址中
  6. 然后点击发送邀请(当您的成员接受 邀请)他们现在正式成为该组的成员
  7. 在左侧的菜单中点击All Members并检查第4个 Delivery 列,每个团队成员都应该有选项 所有电子邮件
  8. 在那之后,我想感谢先生。克莱门特埃科菲和 请务必遵循他的指导方针@Clement Escoffier::Send Github commits to a Google Group,了解如何 完成它。 {谢谢克莱门特 :)}
  9. 如果链接不可用,这里是我的 gDocs 的另一个链接@ PDF version of Clements guide

【讨论】:

  • 这是一个 github 解决方案。问题中没有任何内容告诉我用户正在使用 github。看起来它是 github 上问题的完美答案。
  • 此电子邮件服务将在 2018 年 10 月之后停止。因此,此答案在此之后无效。 developer.github.com/changes/…
【解决方案3】:

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

Setting Up Git Commit Email Notification

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

【讨论】:

    【解决方案4】:

    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)
    

    【讨论】:

      【解决方案5】:

      设置 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 语法
      • 在此处显示差异的类似问题:stackoverflow.com/questions/804601/…
      【解决方案6】:

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

      http://pastie.textmate.org/695323

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

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              您可以使用预提交:

              #!/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
              

              【讨论】:

                【解决方案11】:

                在您的存储库下的 GitLab 中:

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

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

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

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

                更多详情: 点击Here

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-09-23
                  • 2017-05-06
                  相关资源
                  最近更新 更多