Git-Hook zum Senden einer E-Mail-Benachrichtigung bei Repo-Änderungen

101

Wie konfiguriere ich den entsprechenden Git-Hook zum Senden einer zusammenfassenden E-Mail, wenn eine Reihe von Änderungen in das Upstream-Repository übertragen wird?

Kopf
quelle
Für Versionsaktualisierungen (neues Label) für jedes Git-Repo können Sie git-notifier.com verwenden , um E-Mail-Benachrichtigungen (kostenlos) oder SMS-Benachrichtigungen (kostenpflichtig) zu senden
Scholtz

Antworten:

94

Eine andere, modernere Möglichkeit, dies zu tun, ist die Verwendung von Git-Multimail , wie von den folgenden Akkorden vorgeschlagen .


So haben Sie es 2009 gemacht.

Man könnte so etwas wie hinzufügen , diese zu Ihrem Post erhalten Haken in $ GITDIR / Haken, oder verwenden Sie das Skript im contrib - Verzeichnis der Quelle (hier)

mwalling
quelle
Wenn ich in meinen Hooks auf dieses Skript verweise, muss sich das Skript, auf das verwiesen wird, auf dem Upstream-Host oder lokal befinden?
Kopf
4
Der Host, der den Hook ausführt, also im Fall eines Post-Receive den Upstream-Host (während für einen Post-Commit-Hook das Skript auf dem Host benötigt wird, auf dem Sie das Commit ausführen).
Mwalling
2
Ahhh, aber Sie können die Antwort akzeptieren und Sie werden beide mehr Ruf bekommen!
Pat Notz
Der Teil, der mich dazu brachte, war das Festlegen der Empfängerliste. Ich habe endlich herausgefunden, dass Sie git config verwenden müssen: git config hooks.mailinglist "[email protected], [email protected]"
ewalk
4
Es ist erwähnenswert, dass der Link in dieser Antwort nicht mehr aktiv entwickelt wird. Verwenden Sie stattdessen Multimail , die in der Readme- Datei erwähnt wird.
Akkorde
19

Hier ist die einfachste Lösung, die ich gefunden habe:

1) Melden Sie sich bei Ihrem gitHub-Konto auf github.com an

2) Klicken Sie auf der Hauptregisterkarte auf Einstellungen

3) Wählen Sie in der Hauptnavigation Service Hooks

4) Wählen Sie unter Verfügbare Hooks die Option E-Mail

5) Geben Sie Ihre E-Mail-Adresse in das Feld Adresse ein

6) Aktivieren Sie das Kontrollkästchen Vom Autor senden

7) Aktivieren Sie das Kontrollkästchen Aktiv

8) Klicken Sie auf Einstellungen aktualisieren

Optional: Sie können zum Testen auf Test Hook klicken und Ihren Posteingang überprüfen, in dem Sie eine E-Mail erhalten sollen.

Es gibt auch Bilder, die nach dem Verfahren erstellt wurden:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Und jetzt für das große Finale habe ich die Antwort, die an meiner Seite getestet und genehmigt wird.

So senden Sie E-Mails an ALLE Mitglieder des Entwicklungsteams, wenn die Service Hooks von gitHub-> E-Mail höchstens 2 Empfänger zulassen} .

Die Antwort ist eine Kombination aus Service Hook-> Email @ GitHub && Google-Gruppen

  1. Melden Sie sich zuerst bei Ihrem Google-Konto an
  2. Gehen Sie zu Google Groups und klicken Sie oben auf Gruppe erstellen
  3. Geben Sie den Gruppennamen, die Gruppen-E-Mail-Adresse (kopiert / fügt sie in GitHub Service Hook-> E-Mail-Adresse ein) und die Gruppenbeschreibung ein
  4. Nachdem Sie oben auf die Schaltfläche Erstellen geklickt haben, sollte Ihre neue Gruppe jetzt erstellt werden
  5. Klicken Sie danach im Menü links auf Mitglieder einladen und geben Sie die E-Mail-Adressen Ihrer Teamkollegen ein
  6. Nachdem Sie auf Einladungen senden geklickt haben (wenn Ihre Mitglieder die Einladung annehmen), sind sie nun offiziell Mitglieder dieser Gruppe
  7. Klicken Sie im Menü links auf Alle Mitglieder und aktivieren Sie die vierte Spalte mit dem Namen Zustellung . Jedes Teammitglied sollte die Option Alle E-Mails haben .
  8. Danach möchte ich Herrn Clement Escoffier gutschreiben und bitte seine Richtlinien befolgen. @ Clement Escoffier :: Senden Sie Github-Commits an eine Google-Gruppe , um zu erfahren, wie dies abgeschlossen werden kann. {Danke Clement :)}
  9. Wenn der Link nicht mehr verfügbar ist, finden Sie hier einen weiteren Link zu meiner gDocs @ PDF-Version des Clements-Handbuchs
Matija
quelle
19
Dies ist eine Github-Lösung. Nichts in der Frage sagt mir, dass der Benutzer Github verwendet. Sieht so aus, als wäre es eine perfekte Antwort auf eine Frage zu Github.
Daramarak
3
Dieser E-Mail-Dienst wird nach Oktober 2018 eingestellt. Diese Antwort ist nach diesem Zeitpunkt nicht mehr gültig. developer.github.com/changes/…
Jeegar Patel
10

Auf diese Weise sende ich E-Mail-Benachrichtigungen an Benutzer, wenn jemand einen Push an das Repository sendet.

Einrichten der Git Commit-E-Mail-Benachrichtigung

Es basiert auf Andy Parkins 'Skripten. Ich ändere es auf SMTP, um E-Mails zu senden. Natürlich kann auch SMTP von Google Mail verwendet werden.

Eric
quelle
5

Robin Sommer ‚s git-Notifier erzeugt auch sehr schön Zusammenfassungen in folgendem Format:

Subject: [git/git-notifier] master: Adding www target to Makefile. (7dc1f95)

Repository : ssh://<removed>/git-notifier

On branch  : master

>---------------------------------------------------------------

commit 7dc1f95c97275618d5bde1aaf6760cd7ff6a6ef7
Author: Robin Sommer <[email protected]>
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)
Mavam
quelle
4

Das Setzen von hooks.showrev macht keinen unterscheidbaren Unterschied? : - /

Beispielkonf.:

# less users/cj.git/config 
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
[hooks]
        mailinglist = [email protected]
        showrev = "git show -C %s; echo"
        emailprefix = "[sabu gitosis server] "
HiQ CJ
quelle
Ah, es stellt sich heraus, dass die git.kernel.org-Version hooks.showrev respektiert, das Standard-Git-Installationsskript jedoch nicht! Einfach das Skript ersetzt, chmod a + x und dann funktioniert es! Ich muss die Showrev-Syntax noch verstehen
HiQ CJ
Ähnliche Probleme mit der Anzeige von Unterschieden hier: stackoverflow.com/questions/804601/…
HiQ CJ
1

Ich habe das geschafft, musste mich aber für das Contrib-Skript entscheiden, nicht für das andere (Perl-) Skript von Alexandre Julliard. Es scheint schicker und konfigurierbarer, aber mit Postfix hatte ich keinen Mail-Befehl, der "-s" akzeptieren würde? Hier ist mein Weg:

http://pastie.textmate.org/695323

Es wäre schön, weitere Informationen wie den vollständigen Patch, den Gitweb-Link und das Commit-Diagramm anzuzeigen, aber dieses Skript kann nur das erste ausführen - wenn ich mit hooks.showrev herumspiele, scheint es.

Wie auch immer, Prost und danke für die Vorschläge!

HiQ CJ
quelle
0

Nicht gerade eine vollständige Antwort, da es Github-spezifisch ist, aber wenn Sie Github verwenden, ist es extrem einfach, "Service Hooks" zu konfigurieren.
Geben Sie für jedes Repository, das Sie überwachen möchten, Einstellungen / Service Hooks ein.
Es gibt viele verfügbare Integrationen wie Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello und E-Mail. Wählen Sie
einfach E-Mail aus und geben Sie eine Gruppen-E-Mail-Adresse ein.
Wir verwenden die E-Mail-Benachrichtigungen, um unsere Entwickler zu synchronisieren.

Tal Weiss
quelle
0

Wenn Sie GitLab verwenden, können Sie hierfür den Projektdienst "Email-on-Push" verwenden. Dieser finden Sie unter "Dienste" in den Projekteinstellungen.

Sytse Sijbrandij
quelle
0

Sie können Pre-Commit verwenden:

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

Installieren:

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

Prüfung:

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

In GitLab unter Ihrem Repository:

  1. Klicken Sie auf Einstellung.
  2. Wenn die Einstellung dort erweitert wird, werden Integrationen angezeigt . Klick es an.

Dort öffnet sich eine neue Seite E-Mails auf Push

  1. Suchen Sie und wählen Sie Vom Committer senden .
  2. Geben Sie außerdem die Empfänger mit durch Kommas getrennten Zeichen im letzten Feld ein.

Es gibt auch eine Option zum Deaktivieren von Codedifferenzen, die möglicherweise vertrauliche Codedifferenzen im Benachrichtigungstext ausschließen. Es ist optional.

Für weitere Details: Klicken Sie hier

Anil Shrestha
quelle