Git hook per inviare notifiche e-mail sulle modifiche al repo


101

Come si configura l'hook Git appropriato per inviare un'e-mail di riepilogo ogni volta che una serie di modifiche viene inviata al repository a monte?


Per l'aggiornamento della versione (nuova etichetta) per qualsiasi repository git puoi utilizzare git-notifier.com per inviare notifiche e-mail (gratuite) o notifiche SMS (a pagamento)
Scholtz

Risposte:


94

Un altro modo più moderno per farlo è con git-multimail , come suggerito da Chords di seguito.


Ecco come l'hai fatto nel 2009.

Si potrebbe aggiungere qualcosa di simile a questo al tuo post-ricezione gancio a $ GITDIR / ganci, o utilizzare lo script nella directory contrib della sorgente (disponibile qui)


Se faccio riferimento a quello script nei miei hook, lo script referenziato deve risiedere sull'host upstream o localmente?
Testa il

4
L'host che sta eseguendo l'hook, quindi nel caso di un post-ricezione, l'host upstream (mentre un hook post-commit avrebbe bisogno dello script sull'host su cui stai eseguendo il commit).
mwalling

2
Ahhh, ma puoi accettare la risposta e avrai entrambi più reputazione!
Pat Notz,

La parte che mi ha ottenuto è stata l'impostazione dell'elenco dei destinatari. Alla fine ho capito che devi usare git config: git config hooks.mailinglist "person1@example.com, person2@example.com"
ewalk

4
Vale la pena notare che il collegamento in questa risposta non è più in fase di sviluppo attivo. Utilizzare invece multimail , menzionato nel file readme.
Accordi

19

Ecco la soluzione più semplice che ho trovato:

1) Accedi al tuo account gitHub su github.com

2) Nella scheda principale fare clic su Impostazioni

3) Dalla navigazione principale scegli Service Hooks

4) Da Available Hooks scegli Email

5) Inserisci il tuo indirizzo email nel campo Indirizzo

6) Seleziona la casella di controllo Invia da Autore

7) Seleziona la casella di controllo Attivo

8) Fare clic su Aggiorna impostazioni

Facoltativo: puoi fare clic su Test Hook per il test, controlla la tua casella di posta, dovresti ricevere l'email.

Inoltre ci sono immagini realizzate secondo il processo:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

E ora per il gran finale ho al mio fianco la risposta testata e approvata.

Come inviare email a TUTTI i membri del team di sviluppo, quando il servizio Hooks-> Email di gitHub consente solo al massimo 2 destinatari} .

La risposta è una combinazione di Service Hook-> Email @ GitHub e & gruppi Google

  1. Primo accesso al tuo account Google
  2. Vai a Google Gruppi e in alto fai clic su Crea gruppo
  3. Digita il nome del gruppo, l'indirizzo email del gruppo (copierà / incollerà in GitHub Service Hook-> indirizzo email), la descrizione del gruppo
  4. Dopo aver premuto il pulsante Crea in alto, il tuo nuovo gruppo dovrebbe essere creato ora
  5. Dopodiché nel menu a sinistra premi Invita membri e digita gli indirizzi email dei tuoi compagni di squadra
  6. Dopo aver premuto Invia inviti (quando i tuoi membri accettano l'invito) ora sono formalmente membri di questo gruppo
  7. Nel menu a sinistra, fai clic su Tutti i membri e seleziona la quarta colonna chiamata Consegna , ogni membro del team dovrebbe avere l'opzione Tutte le email .
  8. Dopodiché vorrei ringraziare il Sig. Clement Escoffier e per favore segui le sue linee guida @ Clement Escoffier :: Send Github si impegna a un gruppo Google su come finirlo. {Grazie Clemente :)}
  9. Se il collegamento non è più disponibile, ecco un altro collegamento alla mia versione gDocs @ PDF della guida di Clements

19
Questa è una soluzione GitHub. Niente nella domanda mi dice che l'utente sta usando GitHub. Sembra però che sia una risposta perfetta per una domanda su GitHub.
daramarak

3
Questo servizio di posta elettronica verrà interrotto dopo ottobre 2018. Quindi questa risposta non è valida dopo quel punto. developer.github.com/changes/…
Jeegar Patel

10

Questo è il mio modo di inviare notifiche e-mail agli utenti ogni volta che qualcuno invia un push al repository.

Configurazione della notifica e-mail di Git Commit

È basato sugli script di Andy Parkins. Lo cambio in SMTP usato per inviare e-mail. Ovviamente è possibile utilizzare anche l'SMTP di Gmail.


5

Il git-notifier di Robin Sommer genera anche dei riassunti molto belli nel seguente formato:

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

l'impostazione di hooks.showrev non fa alcuna differenza distinguibile? : - /

Configurazione di esempio:

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

Ah, risulta che la versione git.kernel.org rispettava hooks.showrev, ma lo script di installazione git predefinito no! Ho appena sostituito lo script, chmod a + x e poi funziona! Tuttavia, è ancora necessario comprendere la sintassi di showrev
HiQ CJ

Problemi simili con la visualizzazione delle differenze qui: stackoverflow.com/questions/804601/…
HiQ CJ

1

Sono riuscito a farlo, ma ho dovuto optare per l'uso dello script contrib, non dell'altro script (perl) di Alexandre Julliard. Sembra più elaborato e più configurabile, ma con postfix non avevo alcun comando di posta che accettasse "-s"? Ecco la mia strada:

http://pastie.textmate.org/695323

Sarebbe bello mostrare qualche informazione in più, come la patch completa, il collegamento gitweb e anche il grafico di commit, ma questo script può fare solo il primo - se gioco con hooks.showrev sembra.

Comunque, grazie e grazie per i suggerimenti!



0

Non esattamente una risposta completa poiché è specifico di Github, ma se ti capita di utilizzare Github è estremamente facile configurare "Service Hooks".
Per ogni repository che desideri monitorare, inserisci Impostazioni / Hook di servizio.
Ci sono molte integrazioni disponibili, come Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello ed e-mail ....
Seleziona semplicemente l'e-mail e alimentala con un indirizzo e-mail di gruppo.
Usiamo le notifiche e-mail per sincronizzare i nostri sviluppatori.


0

Se utilizzi GitLab, puoi utilizzare il servizio di progetto "Email-on-push" per questo, che può essere trovato sotto servizi nelle impostazioni del progetto.


0

Puoi usare il 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

Installare:

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

In GitLab nel tuo repository:

  1. Fare clic su Impostazioni.
  2. Quando l'impostazione si espande, vedrai Integrazioni . Cliccaci sopra.

Si apre una nuova pagina Email su push

  1. Individua e seleziona Invia dal committer .
  2. Inoltre, inserisci i destinatari separati da virgole nell'ultimo campo.

Inoltre è disponibile un'opzione per Disabilita differenze di codice che escludono eventuali differenze di codice sensibili nell'organismo di notifica. È opzionale.

Per maggiori dettagli: clicca qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.