Git hook do wysyłania powiadomień e-mail o zmianach repozytorium


101

Jak skonfigurować odpowiedni punkt zaczepienia Git, aby wysyłał podsumowanie wiadomości e-mail za każdym razem, gdy zestaw zmian jest wysyłany do repozytorium głównego?


Aby zaktualizować wersję (nowa etykieta) dla dowolnego repozytorium git, możesz użyć git-notifier.com do wysyłania powiadomień e-mail (bezpłatnie) lub powiadomień SMS (płatnych)
Scholtz

Odpowiedzi:


94

Innym, nowocześniejszym sposobem na to jest użycie git-multimail , jak sugerują poniższe Chords .


Tak to zrobiłeś w 2009 roku.

Można dodać coś jak to do Twojego postu, otrzymasz hak w $ GITDIR / haczyki lub użyć skryptu w katalogu contrib źródła (dostępne tutaj)


Jeśli odwołuję się do tego skryptu w moich hookach, czy skrypt, do którego się odwołujemy, musi znajdować się na hoście nadrzędnym, czy lokalnie?
Head

4
Host, który wykonuje przechwytywanie, więc w przypadku odbioru po odbiorze, host nadrzędny (podczas gdy przechwytywanie po zatwierdzeniu wymagałoby skryptu na hoście, na którym uruchamiasz zatwierdzenie).
mwalling

2
Ahhh, ale możesz zaakceptować odpowiedź, a oboje zdobędziecie więcej reputacji!
Pat Notz

Część, która mnie złapała, to ustawienie listy odbiorców. W końcu doszedłem do wniosku, że musisz użyć konfiguracji git: git config hooks.mailinglist „osoba1@example.com, osoba2@example.com”
ewalk

4
Warto zauważyć, że link w tej odpowiedzi nie jest już aktywnie rozwijany. Zamiast tego użyj multimail , o którym mowa w pliku Readme.
Chords

19

Oto najprostsze rozwiązanie, jakie znalazłem:

1) Zaloguj się na swoje konto gitHub na github.com

2) W zakładce głównej kliknij Ustawienia

3) Z głównej nawigacji wybierz Service Hooks

4) Z dostępnych haków wybierz Email

5) Wpisz swój adres e-mail w polu Adres

6) Zaznacz pole wyboru Wyślij od autora

7) Zaznacz pole wyboru Aktywne

8) Kliknij Ustawienia aktualizacji

Opcjonalnie: Możesz kliknąć Test Hook do testowania, sprawdź swoją skrzynkę odbiorczą, do której powinieneś otrzymać e-mail.

Istnieją również obrazy wykonane zgodnie z procesem:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

A teraz, na wielki finał , mam odpowiedź, która została przetestowana i zatwierdzona po mojej stronie.

Jak wysłać wiadomość e-mail do WSZYSTKICH członków zespołu programistów, gdy haki serwisowe gitHub-> e-mail dopuszczają maksymalnie 2 odbiorców} .

Odpowiedzią jest połączenie Service Hook-> Email @ GitHub && Google Groups

  1. Najpierw zaloguj się na swoje konto Google
  2. Przejdź do Grup dyskusyjnych Google i u góry kliknij Utwórz grupę
  3. Wpisz nazwę grupy, adres e-mail grupy (skopiuje / wklei do GitHub Service Hook-> Email Address), Opis grupy
  4. Po tym naciśnij przycisk Utwórz u góry, twoja nowa grupa powinna zostać utworzona teraz
  5. Następnie w menu po lewej stronie naciśnij Zaproś członków i wpisz adresy e-mail kolegów z drużyny
  6. Następnie naciśnij Wyślij zaproszenia (gdy Twoi członkowie przyjmą zaproszenie) są teraz formalnie członkami tej grupy
  7. W menu po lewej stronie kliknij Wszyscy członkowie i zaznacz czwartą kolumnę o nazwie Dostawa , każdy członek zespołu powinien mieć opcję Wszystkie e-maile .
  8. Następnie chciałbym podziękować panu Clementowi Escoffierowi i postępować zgodnie z jego wytycznymi @ Clement Escoffier :: Wyślij Github zobowiązuje się do grupy Google, aby dowiedzieć się, jak to zakończyć. {Dziękuję Clement :)}
  9. Jeśli łącze stanie się niedostępne, jest to kolejne łącze do mojej wersji przewodnika Clements w gDocs @ PDF

19
To jest rozwiązanie na githubie. Nic w pytaniu nie mówi mi, że użytkownik korzysta z github. Wygląda jednak na to, że jest to doskonała odpowiedź na pytanie na githubie.
daramarak

3
Ta usługa e-mail zostanie wyłączona po październiku 2018 r. Więc ta odpowiedź nie jest ważna po tym momencie. developer.github.com/changes/…
Jeegar Patel,


5

Robin Sommera dydaktycznego git-zgłaszający generuje również bardzo ładne streszczenia w następującym formacie:

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

ustawienie hooks.showrev nie robi żadnej zauważalnej różnicy? : - /

Przykładowe konf:

# 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] "

Ach, okazuje się, że wersja git.kernel.org szanowała hooks.showrev, ale domyślny skrypt instalacyjny gita nie! Po prostu zastąpiłem skrypt, chmod a + x i już działa! Nadal jednak muszę zrozumieć składnię showrev
HiQ CJ

Podobne problemy z wyświetlaniem różnic tutaj: stackoverflow.com/questions/804601/…
HiQ CJ

1

Udało mi się to zrobić, ale musiałem zdecydować się na użycie skryptu Contrib, a nie innego skryptu (perl) autorstwa Alexandre Julliard. Wydaje się bardziej wyszukany i bardziej konfigurowalny, ale z postfixem nie miałem polecenia poczty, które zaakceptowałoby "-s"? Oto moja droga:

http://pastie.textmate.org/695323

Byłoby miło pokazać trochę więcej informacji, takich jak pełna łatka, link do gitweb i wykres zatwierdzeń, ale ten skrypt może zrobić tylko pierwszy - jeśli będę bawić się hooks.showrev, jak się wydaje.

W każdym razie okrzyki i dzięki za sugestie!



0

Nie jest to do końca pełna odpowiedź, ponieważ jest ona specyficzna dla Github, ale jeśli zdarzy ci się używać Githuba, niezwykle łatwo jest skonfigurować „Service hooki”.
Dla każdego repozytorium, które chcesz monitorować, wprowadź Ustawienia / Haki serwisowe.
Dostępnych jest wiele integracji, takich jak Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello i Email ...
Po prostu wybierz e-mail i podaj grupowy adres e-mail.
Używamy powiadomień e-mail do synchronizacji naszych programistów.


0

Jeśli korzystasz z GitLab, możesz w tym celu skorzystać z usługi projektu „Email-on-push”, którą można znaleźć w usługach w ustawieniach projektu.


0

Możesz użyć pre-commit:

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

Zainstalować:

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

Test:

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

0

W GitLab pod Twoim repozytorium:

  1. Kliknij opcję Ustawienia.
  2. Gdy ustawienie się rozwinie, zobaczysz Integracje . Kliknij na to.

Otwiera się nowa strona E-maile w trybie push

  1. Znajdź i wybierz Wyślij od osoby odpowiedzialnej .
  2. Wprowadź również Odbiorców, oddzielając je przecinkami w ostatnim polu.

Istnieje również opcja Wyłącz różnice w kodzie, które wykluczają potencjalnie wrażliwe różnice w kodzie w treści powiadomienia. Jest to opcjonalne.

Aby uzyskać więcej informacji: Kliknij tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.