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.
Petit ajout :
pour éviter d’avoir le « diff » des fichiers (ce qui peut être long), j’ai opté pour une méthode cracra mais rapide.
Ligne 539 du script perl, modifier :
my $diff_wanted = ($project->{show_diff} and $mode eq ‘commit’);
par
my $diff_wanted = 0;
Hop, plus de « diff » dans le corps du message. C’est pas terrible car le programme continue de calculer ce diff, mais bon…