Hook Git pour envoyer une notification par e-mail sur les modifications du dépôt

101

Comment configurer le hook Git approprié pour envoyer un e-mail récapitulatif chaque fois qu'un ensemble de modifications est envoyé vers le référentiel en amont?

Tête
la source
Pour la mise à jour de la version (nouvelle étiquette) pour tout dépôt git, vous pouvez utiliser git-notifier.com pour envoyer des notifications par e-mail (gratuit) ou des notifications par SMS (payant)
Scholtz

Réponses:

94

Une autre façon plus moderne de le faire est d' utiliser git-multimail , comme suggéré par Chords ci-dessous.


C'est ainsi que vous l'avez fait en 2009.

Vous pouvez ajouter quelque chose comme ça à votre hook post-receive dans $ GITDIR / hooks, ou utiliser le script dans le répertoire contrib de la source (disponible ici)

murmure
la source
Si je référence ce script dans mes hooks, le script référencé doit-il résider sur l'hôte en amont ou localement?
Tête
4
L'hôte qui exécute le hook, donc dans le cas d'une post-réception, l'hôte en amont (alors qu'un hook post-commit aurait besoin du script sur l'hôte sur lequel vous exécutez le commit).
mwalling le
2
Ahhh, mais vous pouvez accepter la réponse et vous aurez tous les deux plus de réputation!
Pat Notz
La partie qui m'a permis de définir la liste des destinataires. J'ai finalement compris que vous deviez utiliser git config: git config hooks.mailinglist "[email protected], [email protected]"
ewalk
4
Il convient de noter que le lien dans cette réponse n'est plus en développement actif. Au lieu de cela, utilisez multimail , qui est mentionné dans le fichier readme.
Accords du
19

Voici la solution la plus simple que j'ai trouvée:

1) Connectez-vous à votre compte gitHub sur github.com

2) Dans l'onglet principal, cliquez sur Paramètres

3) Dans la navigation principale, choisissez Service Hooks

4) Parmi les crochets disponibles, choisissez Email

5) Remplissez votre adresse e-mail dans le champ Adresse

6) Cochez la case Envoyer de l'auteur

7) Cochez la case Actif

8) Cliquez sur Paramètres de mise à jour

Facultatif: vous pouvez cliquer sur Test Hook pour tester, vérifiez votre boîte de réception, vous devriez recevoir un e-mail.

Il y a aussi des images faites selon le processus:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

Et maintenant pour la grande finale j'ai la réponse qui est testée et approuvée à mes côtés.

Comment envoyer un e-mail à TOUS les membres de l'équipe de développement, lorsque Service Hooks-> Email de gitHub ne permet qu'au maximum 2 destinataires} .

La réponse est une combinaison de Service Hook-> Email @ GitHub && Google groups

  1. Connectez-vous d'abord à votre compte Google
  2. Allez dans Google Groupes et en haut, cliquez sur Créer un groupe
  3. Tapez le nom du groupe, l'adresse e-mail du groupe (copiera / collera dans GitHub Service Hook-> Adresse e-mail), la description du groupe
  4. Après avoir cliqué sur le bouton Créer en haut, votre nouveau groupe devrait être créé maintenant
  5. Ensuite, dans le menu de gauche, cliquez sur Inviter des membres et saisissez les adresses e-mail de vos coéquipiers
  6. Après cela, cliquez sur Envoyer des invitations (lorsque vos membres acceptent l'invitation), ils sont désormais officiellement membres de ce groupe
  7. Dans le menu de gauche, cliquez sur Tous les membres et cochez la 4e colonne intitulée Livraison , chaque membre de l'équipe devrait avoir l'option Tous les e-mails .
  8. Après cela, je voudrais remercier M. Clement Escoffier et s'il vous plaît suivez ses directives @ Clement Escoffier :: Envoyer Github s'engage à un groupe Google sur la façon de le terminer. {Merci Clement :)}
  9. Si le lien devient indisponible, voici un autre lien vers ma version gDocs @ PDF du guide Clements
Matija
la source
19
Ceci est une solution github. Rien dans la question ne m'indique que l'utilisateur utilise github. On dirait que c'est une réponse parfaite à une question sur github.
daramarak
3
Ce service de messagerie va cesser après octobre 2018. Cette réponse n'est donc plus valide après ce point. developer.github.com/changes/…
Jeegar Patel
10

C'est ma façon d'envoyer une notification par e-mail aux utilisateurs chaque fois que quelqu'un pousse vers le référentiel.

Configurer la notification par e-mail Git Commit

Il est basé sur les scripts d'Andy Parkins. Je le change en SMTP utilisé pour envoyer des e-mails. Bien entendu, le SMTP de gmail peut également être utilisé.

Eric
la source
5

Robin Sommer de » git-notificateur génère également très agréable résumés dans le format suivant:

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
la source
4

réglage hooks.showrev ne fait aucune différence notable? : - /

Exemple de conf:

# 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
la source
Ah, il s'avère que la version de git.kernel.org respectait hooks.showrev, mais pas le script d'installation de git par défaut! Juste remplacé le script, chmod a + x et puis ça marche! Encore faut-il comprendre la syntaxe de showrev
HiQ CJ
Problèmes similaires avec l'affichage des différences ici: stackoverflow.com/questions/804601/...
HiQ CJ
1

J'ai réussi à le faire, mais j'ai dû opter pour le script contrib, pas l'autre script (perl) d'Alexandre Julliard. Cela semble plus sophistiqué et plus configurable, mais avec postfix je n'avais pas de commande mail qui accepterait "-s"? Voici ma façon:

http://pastie.textmate.org/695323

Ce serait bien d'afficher plus d'informations, comme le patch complet, le lien gitweb et le graphe de validation, mais ce script ne peut faire que le premier - si je joue avec hooks.showrev, semble-t-il.

Quoi qu'il en soit, bravo et merci pour les suggestions!

HiQ CJ
la source
0

Ce n'est pas exactement une réponse complète car elle est spécifique à Github, mais si vous utilisez Github, il est extrêmement facile de configurer des "Service Hooks".
Pour chaque référentiel que vous souhaitez surveiller, entrez Paramètres / Service Hooks.
Il existe de nombreuses intégrations disponibles, telles que Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello et Email ....
Sélectionnez simplement l'email et alimentez-le avec une adresse e-mail de groupe.
Nous utilisons les notifications par e-mail pour synchroniser nos développeurs.

Tal Weiss
la source
0

Si vous utilisez GitLab, vous pouvez utiliser le service de projet 'Email-on-push' pour cela, il se trouve sous services dans les paramètres du projet.

Sytse Sijbrandij
la source
0

Vous pouvez utiliser le pré-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

Installer:

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

Tester:

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

Dans GitLab sous votre référentiel:

  1. Cliquez sur Paramètres.
  2. Lorsque le paramètre se développe, vous verrez des intégrations . Clique dessus.

Il ouvre une nouvelle page Emails sur push

  1. Recherchez et sélectionnez Envoyer depuis le commetteur .
  2. Entrez également les destinataires séparés par des virgules situés dans le dernier champ.

Il existe également une option pour désactiver les différences de code qui excluent les différences de code éventuellement sensibles dans le corps de la notification. C'est facultatif.

Pour plus de détails: cliquez ici

anil shrestha
la source