Le besoin
Sur un repository subversion j'ai besoin de recevoir des mails avec le log et un diff des fichiers affectés.
La solution
Subversion est fourni avec plusieurs scripts prêts à l'emploi. Mon choix s'est porté sur le script Python mailer.py qui se trouve dans le répertoire subversion -1.0.4/tools/hook-scripts/mailer
J'ai appliqué ce que je pensais suffisant:
# copie de mailer.py et mailer.conf.example dans /chemin/vers/repository/conf
# recommer mailer.conf.example en mailer.conf. Edition du fichier pour mettre les bons paramètres
# aller dans /chemin/vers/repository/hooks
cp post-commit.tmpl post-commit
chmod u+x post-commit
# édition du script post-commit pour appeler
/chemin/vers/repository/conf/mailer.py "$REPOS" "$REV" /chemin/vers/repository/conf/mailer.conf
J'ai du lire la documentation de travers car l'envoi de mail ne fonctionnait pas. Après avoir cherché sur le net comment résoudre ce problème j'ai décidé d'aller sur IRC demander de l'aide (pour me rendre compte que la doc lue plus en détail aurait répondu à mes questions).
Le script mailer.py ne pouvait pas importer le module svn.fs est l'erreur obtenue en lanà§ant le script dans une console.
Au final la solution que j'ai appliqué est la suivante:
* pour faire fonctionner le script python il faut les liaisons (bindings) SWIG pour Python.
* grâce à mes questions sur IRC j'ai découvert que la faà§on d'installer SWIG pour subversion est décrite dans la documentation de subversion (forcément)
* ajout d'une variable dans le script post-commit contenant le chemin pour les modules Python
* légère modification de mailer.py pour lui indiquer l'emplacement de Python
* après ca le script mailer.py fonctionne très bien.
Voici les démarches:
# téléchargement de SWIG 1.3.21
<http://sourceforge.net/project/showfiles.php?group_id=1645>
#compilation de SWIG, décrite dans subversion-1.0.4/subversion/bindings/swig/INSTALL
./configure
make
make runtime
make install-runtime
make install
#retour dans le répertoire des sources de subversion
make swig-py
make install-swig-py
#variable d'environnement pour mailer.py a ajouter dans le "hook" post-commit
PYTHONPATH="/usr/local/lib/svn-python"
export PYTHONPATH
#apres une heure et beaucoup d'aide du channel IRC #svn
#édition du shebang de mailer.py en
#!/usr/local/bin/python2.3
Merci au channel IRC #svn sur freenode o๠j'ai reà§u une aide précieuse.