Mettre en place un envoi de mail automatique à chaque push avec Git : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
Ligne 11 : Ligne 11 :
 
</pre>
 
</pre>
  
Puis créér un fichier <code>post-receive</code> contenant ceci :
+
Puis, dans le même répertoire, créér un fichier <code>post-receive</code> contenant ceci :
  
 
<pre>
 
<pre>
Ligne 17 : Ligne 17 :
  
 
exec python2 "$(dirname "$0")"/git_multimail.py
 
exec python2 "$(dirname "$0")"/git_multimail.py
 +
</pre>
 +
 +
Et rendre ce fichier exécutable :
 +
 +
<pre>
 +
chmod +x post-receive
 
</pre>
 
</pre>
  

Version du 16 juin 2015 à 09:05

Cette page explique comment mettre en place un envoi de mail automatique à chaque push avec Git. Une fois ces manipulations effectuées, à chaque fois que le dépôt recevra de nouvelles révisions via git push, un mail sera envoyé, typiquement à tous les coéquipiers, pour les prévenir du changement.

On suppose que le dépôt Git partagé se trouve dans /equipe/mes-projets/tp.git. Toute la configuration se fait sur le serveur, au niveau du dépôt partagé : c'est le serveur qui enverra les emails, il n'y a rien à configurer sur les clients (i.e. sur les machines sur lesquelles on a les clone et leurs espaces de travail).

Il faut d'abord récupérer le script git_multimail.py et faire en sorte qu'il soit appelé à chaque réception de push :

cd /equipe/mes-projets/tp.git
cd hooks/
curl https://raw.githubusercontent.com/git/git/master/contrib/hooks/multimail/git_multimail.py >git_multimail.py

Puis, dans le même répertoire, créér un fichier post-receive contenant ceci :

#!/bin/sh

exec python2 "$(dirname "$0")"/git_multimail.py

Et rendre ce fichier exécutable :

chmod +x post-receive

Il reste à configurer git-multimail. Depuis le dépôt (toujours sur le serveur), exécutez la commande :

git config multimailhook.mailingList 'moi.meme@ensimag.grenoble-inp.fr, mon.binome@ensimag.grenoble-inp.fr'

Cette commande modifie le fichier config, dans lequel Git stocke sa configuration. On peut aussi éditer le fichier directement, la portion concernant l'envoi de mail est la suivante (on peut bien sûr la modifier après coup pour changer la liste des destinataires) :

[multimailhook]
	mailingList = moi.meme@ensimag.imag.fr, mon.binome@ensimag.imag.fr

Et voilà, si tout c'est bien passé, le prochain git push vers ce dépôt enverra un email.

Version obsolete (post-receive-email)

AttentionCette version utilise le script post-receive-email, qui a été remplacé par git_multimail.py depuis


Il faut d'abord récupérer le script post-receive-email et faire en sorte qu'il soit appelé à chaque réception de push :

cd /equipe/mes-projets/tp.git
cd hooks/
mv post-receive.sample post-receive
chmod +x post-receive
wget 'https://raw.github.com/git/git/master/contrib/hooks/post-receive-email'

Puis éditer le fichier post-receive pour qu'il ressemble à ceci :

#!/bin/sh

. "$(dirname "$0")"/post-receive-email

(on peut bien sûr conserver les commentaires)

Il faut maintenant configurer deux choses : la description du projet (qui sera utilisée dans le sujet des mails envoyés), et la liste des adresses auxquelles envoyer les mails de notification.

cd /equipe/mes-projets/tp.git
echo 'Mon super projet' > description
git config hooks.mailingList 'moi.meme@ensimag.imag.fr, mon.binome@ensimag.imag.fr'

La dernière commande modifie le fichier config, dans lequel Git stocke sa configuration. On peut aussi éditer le fichier directement, la portion concernant l'envoi de mail est la suivante (on peut bien sûr la modifier après coup pour changer la liste des destinataires) :

[hooks]
	mailingList = moi.meme@ensimag.imag.fr, mon.binome@ensimag.imag.fr

Et voilà, si tout c'est bien passé, le prochain git push vers ce dépôt enverra un email.

Liens utiles