リポジトリの変更時にメール通知を送信するためのGitフック


101

一連の変更がアップストリームリポジトリにプッシュされるたびに概要の電子メールを送信するように、適切なGitフックを構成するにはどうすればよいですか?


gitリポジトリのバージョンアップデート(新しいラベル)については、git-notifier.comを使用して、電子メール通知(無料)またはSMS通知(有料)を送信できます
Scholtz

回答:


94

これを行うもう1つのより現代的な方法は、以下のChordsによって提案されているように、git-multimailを使用することです。


これが2009年のやり方です。

このようなものを$ GITDIR / hooksのポスト受信フックに追加するか、ソースのcontribディレクトリにあるスクリプトを使用できます(ここから入手できます)


フックでそのスクリプトを参照する場合、参照されるスクリプトは上流ホストまたはローカルに存在する必要がありますか?
ヘッド

4
フックを実行しているホスト。受信後の場合、上流のホスト(コミット後のフックでは、コミットを実行しているホストでスクリプトが必要になります)。
mwalling 2009

2
ああ、でもあなたは答えを受け入れることができ、あなたはどちらもより高い評価を得ます!
Pat Notz、

私を取得した部分は、受信者リストを設定することでした。私は最終的にgit configを使用する必要があることを理解しました:git config hooks.mailinglist "person1@example.com、person2@example.com"
ewalk

4
この回答のリンクは現在活発に開発されていないことに注意してください。代わりに、readmeに記載されているmultimailを使用してください
コード

19

これが私が見つけた最も簡単な解決策です:

1)上のgithubのアカウントにログインしgithub.comに

2)メインタブで[ 設定 ]をクリックします

3)メインナビゲーションから[ サービスフック]を選択します

4)利用可能なフックからメールを選択します

5)住所フィールドにメールアドレスを入力します

6)[ 著者から送信]チェックボックスオンにします

7)チェックボックスを有効にします

8)[ 設定の更新]をクリックします

オプション:テストフックをクリックしてテストし、受信するメールを受信トレイで確認できます。

また、プロセスに従って作成された画像もあります。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

そして今、グランドファイナルでは、私の側でテストされ、承認された答えがあります。

すべての開発チームのメンバーに電子メールを送信する方法を、GitHubでのサービスHooks->はメール}高々 2人の受信者を可能にするとき

答えは、Service Hook-> Email @ GitHub && Googleグループの組み合わせです。

  1. 最初にGoogleアカウントにログインします
  2. Googleグループに移動し、上部にある[ グループの作成 ]をクリックします
  3. グループ名、グループのメールアドレス(GitHubサービスフック->メールアドレスにコピー/貼り付けします)、グループの説明を入力します
  4. 上部の[作成]ボタンをクリックすると、新しいグループが作成されます。
  5. その後、左側のメニューで[ メンバー招待 ]をクリックして、チームメイトのメールアドレスを入力します
  6. その後、[ 招待状を送信]をクリックすると(メンバーが招待を受け入れると)、彼らは正式にこのグループのメンバーになります
  7. 左側のメニューで[ すべてのメンバー ]をクリックし、4列目の[ 配信 ]をオンにします。すべてのチームメンバーが[ すべてのメール ]オプションを持つ必要があります 。
  8. その後、クレメント・エスコフィエ氏の功績をたたえたいと思います。クレメント・エスコフィエのガイドラインに従ってください。{ありがとうクレメント:)}
  9. リンクが利用できなくなった場合は、私のgDocs @ PDFバージョンのClementsガイドへの別のリンクです。

19
これはgithubソリューションです。質問の中で、ユーザーがgithubを使用していることはわかりません。githubでの質問には完璧な答えのようです。
daramarak 2014年

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

私はなんとかこれを行うことができましたが、Alexandre Julliardによる他の(perl)スクリプトではなく、contribスクリプトの使用を選択する必要がありました。洗練されていて設定しやすいようですが、postfixを使用すると、「-s」を受け入れるメールコマンドがありませんでした。これが私のやり方です:

http://pastie.textmate.org/695323

完全なパッチ、gitwebリンク、コミットグラフなど、さらに多くの情報を表示することもできますが、このスクリプトは最初にしか実行できません。

とにかく、乾杯と提案をありがとう!



0

Github固有なので、完全な答えではありませんが、Githubを使用する場合、「サービスフック」の設定は非常に簡単です。
監視するリポジトリごとに、「設定/サービスフック」と入力します。
Trac、Twitter、Amazon SNS、Jira、Asana、Bugzilla、FogBugz、IRC、Jabber、Pivo​​tal Tracker、Trello、Email ...など、利用可能な統合機能はたくさんあります。Eメールを
選択し、グループのEメールアドレスでフィードするだけです。
電子メール通知を使用して開発者を同期しています。


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. 設定が展開されると、統合が表示されます。クリックして。

新しいページが存在開きプッシュでメールを

  1. [ コミッターから送信]を見つけて選択します。
  2. また、最後のフィールドにある受信者をカンマで区切って入力します。

また、Disable code diffsのオプションがあり、通知本文の機密性の高いコード差分を除外します。オプションです。

詳細については:クリックしてここに

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.