web-dev-qa-db-fra.com

Git hook pour envoyer une notification par email sur les changements de repo

Comment configurer le hook Git approprié pour envoyer un courrier électronique de synthèse chaque fois qu'un ensemble de modifications est envoyé au référentiel en amont?

99
Head

Une autre façon plus moderne de faire cela est avec git-multimail , comme suggéré par Accords ci-dessous.


Voici comment vous l'avez fait en 2009.

Vous pouvez ajouter quelque chose comme this à votre hook post-réception dans $ GITDIR/hooks, ou utiliser le script situé dans le répertoire contrib de la source (Disponible ici)

93
mwalling

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 Crochets de service

4) Parmi les crochets disponibles, choisissez Email

5) Remplissez votre adresse email dans le champ Adresse

6) Cochez la case Envoyer de l'auteur

7) Cochez la case active

8) Cliquez sur Paramètres de mise à jour

Facultatif: Vous pouvez cliquer sur Tester le crochet pour le tester, vérifiez dans votre boîte de réception que vous devriez recevoir un courrier électronique.

Il y a aussi des images faites selon le processus:

enter image description here

enter image description here

enter image description here

enter image description here

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 courrier électronique à TOUS les membres de l'équipe de développement, lorsque Crochets de service-> Email de gitHub n'autorise que 2 destinataires au maximum} .

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

  1. Commencez par vous connecter à votre compte google
  2. Allez à Google Groupes et en haut de page, cliquez sur Créer un groupe
  3. Tapez Nom du groupe, Adresse email du groupe (copier/coller dans le crochet de service GitHub-> Adresse email), Description du groupe
  4. Après cela, cliquez sur le bouton Créer en haut, votre nouveau groupe devrait être créé maintenant
  5. Ensuite, dans le menu situé à gauche, appuyez sur , invitez des membres et entrez les adresses électroniques de vos coéquipiers.
  6. Après cela, cliquez sur pour 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 vérifiez la 4ème colonne intitulée Livraison , chaque membre de l’équipe doit avoir l’option Tous les emails .
  8. Après cela, je voudrais créditer Mr. Clement Escoffier et suivez ses instructions @ Clement Escoffier :: Envoyer les commandes Github à un groupe Google pour le terminer. {Merci Clément :)}
  9. Si le lien devient indisponible, voici un autre lien vers mon gDocs @ version PDF du guide Clements
17
Matija

C’est ainsi que j’envoie une notification par courrier électronique aux utilisateurs chaque fois que l’une d’entre elles est envoyée au référentiel.

Configuration de la notification par email Git Commit

Il est basé sur les scripts d'Andy Parkins. Je le change en SMTP utilisé pour envoyer un email. Bien sûr, le SMTP de Gmail peut également être utilisé.

10
Eric

Robin Sommergit-notifier génère également de très beaux 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)
5
mavam

la mise en place de hooks.showrev ne fait aucune différence notable? : - /

Échantillon 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] "
4
HiQ CJ

J'ai réussi à le faire, mais j'ai dû choisir d'utiliser le script contrib, et non l'autre script (Perl) d'Alexandre Julliard. Cela semble plus sophistiqué et plus configurable, mais avec postfix, je n’avais aucune commande mail qui accepterait "-s"? Voici mon chemin:

http://pastie.textmate.org/69532

Ce serait bien de montrer quelques informations supplémentaires, comme le correctif complet, le lien gitweb et le graphique de validation, mais ce script ne peut faire que le premier - si je joue avec des hooks, semble-t-il.

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

1
HiQ CJ

Ce n’est pas vraiment une réponse complète car il est spécifique à Github, mais si vous utilisez Github, il est extrêmement facile de configurer des "crochets de service".
Pour chaque référentiel que vous souhaitez surveiller, entrez Paramètres/Crochets de service.
Il existe de nombreuses intégrations disponibles, telles que Trac, Twitter, Amazon SNS, Jira, Asana, Bugzilla, FogBugz, IRC, Jabber, Pivotal Tracker, Trello et Email ....
Il suffit de sélectionner un email et de l’alimenter avec une adresse email de groupe.
Nous utilisons les notifications par courrier électronique pour synchroniser nos développeurs.

0
Tal Weiss

Si vous utilisez GitLab, vous pouvez utiliser le service de projet 'Email-on-Push' à cet effet. Vous le trouverez sous Services dans les paramètres du projet.

0
Sytse Sijbrandij

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
0
tomaszbak

Si vous utilisez Windows, scm-notifier serait utile.

0
pocorall