Posted by florian | Posted in Logiciels Libres | Posted on 12-03-2009
Étiquettes : Drupal, hooks, php, svn
((/public/news/drupal_logo.png|drupal_logo.png|L|Drupal PHP hooks Subversion SVN)) Tout développeur ([PHP|http://www.php.net] ou pas) normalement constitué –a recours– devrait recourir à l’utilisation de [Subversion|http://subversion.tigris.org] pour gérer les versions de ses applications, faciliter le travail en équipe ou encore mettre en oeuvre des processus de déploiements automatisés. Or, quel développeur n’a jamais publié un code contenant une erreur de syntaxe ?%%% Quel développeur n’a jamais fait un commit « barbare », sans aucun commentaire ?%%% Quel développeur n’aurait pas aimé être prévenu d’un commit pour éviter un conflit SVN ?
Je lorgnais depuis quelques temps déjà sur les « hooks » fournis par [Subversion|http://subversion.tigris.org], qui permettent de faire toutes sortes de choses sur certains événements. Je souhaitais notamment : – sur le hook « pre-commit », c’est-à-dire avant d’accepter le commit du développeur : vérifier la syntaxe du code envoyé et s’assurer que le développeur a laissé un commentaire – sur le hook « post-commit », c’est-à-dire une fois que le commit est passé : envoyer un email pour annoncer la nouvelle révision J’ai créé deux petits scripts en Bash qui permettent de faire cela. Ces scripts sont prévus pour vérifier le code [PHP|http://www.php.net] (via « php -l ») des fichiers se terminant par « .inc », « .php » et « .module » (pour le framework [Drupal|http://www.drupal.org]) mais rien ne vous empêche d’adapter cela pour vos langages (Ruby, Python …). Le tarball est téléchargeable ici : [svn_hooks_php_drupal.tar.gz|http://florian.cathala.org/files/svn_hooks_php_drupal.tar.gz]. Pour l’utiliser, il suffit de le détarrer dans le dossier « hooks » de votre repository SVN, ce qui vous ajoutera 3 fichiers : config, pre-commit et post-commit. Pensez également à faire un « chmod +x » sur ces fichiers pour qu’ils puissent être exécutés. Ensuite, vous n’avez qu’à modifier le fichier « config » si les développements du repository SVN sont en PHP et que vous n’envisagez pas d’ajouter des fonctionnalités supplémentaires : ># Project name%%% >#PROJECT= »My Project »%%% >PROJECT=$(basename $1)%%% >%%% ># Check empty comment%%% >CHECK_EMPTY_COMMENT=1%%% >%%% ># Email notification%%% >EMAIL_NOTIFICATION=1%%% >EMAIL_DEST= »developer1@example.com developer2@example.com »%%% >EMAIL_FROM= »noreply@example.com »%%% >EMAIL_SUBJECT= »New revision %REV% for \ »$PROJECT\ » »%%% >%%% ># Binaries path%%% >SVNLOOK=/usr/bin/svnlook%%% >PHP=/usr/bin/php%%% >MAIL=/usr/bin/mail%%% Déjà, plusieurs suggestions m’ont été adressées pour ajouter quelques fonctionnalités supplémentaires. Par exemple : * ajout du diff du commit dans le mail de notification de révision, * notification via un flux temps réel (IRC, Jabber …), * support de plusieurs langages (Python, Ruby …) pour la vérification de syntaxe, * mapping liste d’extensions de fichiers <-> commande de vérification de syntaxe Si vous avez d’autres idées, n’hésitez pas à m’en faire part ou mieux, à modifier mes scripts et à les partager ! A vos commits.