Envoyer un mail après un commit sur un repository SVN
Voici la manip à faire, sauce Debian, où tout est prévu, tout est packagé
Contexte
Je suppose que vous avez un SVN qui tourne. Vous voulez qu’à chaque “commit”, un mail soit envoyé à une personne (ou une liste de personnes), contenant tout ce qu’on peut en attendre : message, fichiers impactés etc.
Sur Internet, tout le monde y va de son script en perl, ruby, bash etc. Debian propose un truc tout fait. J’aime bien
Le principe est le suivant : l’outil SVN a déjà tout prévu. Il y a des “hooks” (grappin = bout de code appelable à un instant donné d’une commande SVN) qu’il suffit d’activer. Un tout petit peu de paramétrage et ça roule.
Installez le script-qui-va-bien
Le paquet subversion-tools
vous apporte tout un tas de scripts pré-machés (voir /usr/share/subversion/hook-scripts
), notamment un pour envoyer un mail bien propre.
Activez le “hook”
Il y a un modèle dans /votre/repo/svn/hooks/
, nommé post-commit.tmpl
. Copiez-le en post-commit
, avec les bonnes permissions (idéalement via cp post-commit.tmpl post-commit
).
Editez-le, lisez le baratin et enfin adaptez la dernière ligne indiquant quelle adresse mail est destinatrice (je considère que le serveur hébergeant SVN est capable d’envoyer des mails).
Exemple :
svnsrv:/svn/monrepo/hooks# tail post-commit # the Subversion repository at # http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and # http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ REPOS="$1" REV="$2" /usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" mon.adresse@mail.com
Si votre serveur est capable d’envoyer des mails, vous n’avez rien à faire de plus, sinon, il faudra jouer avec la définition des variables $sendmail et $smtp_server (l’une ou l’autre, lisez les commentaires) dans le script /usr/share/subversion/hook-scripts/commit-email.pl
.
Enfin, si vous voulez, la ligne de commande accepte plusieurs destinataires (au moins 2, je n’ai pas testé plus ni lu le code pour savoir).
Testez
Normalement, c’est tout. Faire un commit quelconque et voyez le résultat.
J’utilise TortoiseSVN comme client, sous Windows ; ça marche nickel. Si vous vous plantez dans la configuration, Tortoise vous remonte l’erreur indiquant par exemple que le script /usr/share/subversion/hook-scripts/commit-email.pl
est KO.