Externalisation extensions SVN

De EjnTricks

Cet article présente la mise en place d'une externalisation des scripts d'extension de SVN, dans le cadre d'une installation sous Ubuntu.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote

Study icon.png Analyse

SVN permet d'exécuter des scripts durant les différentes phases des actions, avant / après commit par exemple. Pour cela, il existe un répertoire hooks dans les dépôts, dont le contenu par défaut est le suivant.

-rw-rwSr-- 1 www-data subversion 2000 2010-09-17 21:59 post-commit.tmpl
-rw-rwSr-- 1 www-data subversion 1663 2010-09-17 21:59 post-lock.tmpl
-rw-rwSr-- 1 www-data subversion 2322 2010-09-17 21:59 post-revprop-change.tmpl
-rw-rwSr-- 1 www-data subversion 1592 2010-09-17 21:59 post-unlock.tmpl
-rw-rwSr-- 1 www-data subversion 3488 2010-09-17 21:59 pre-commit.tmpl
-rw-rwSr-- 1 www-data subversion 2410 2010-09-17 21:59 pre-lock.tmpl
-rw-rwSr-- 1 www-data subversion 2796 2010-09-17 21:59 pre-revprop-change.tmpl
-rw-rwSr-- 1 www-data subversion 2100 2010-09-17 21:59 pre-unlock.tmpl
-rw-rwSr-- 1 www-data subversion 2830 2010-09-17 21:59 start-commit.tmpl

Afin qu'un script soit pris en compte, il faut respecter le nom du fichier. Celui-ci correspond aux modèles disponibles sans l'extension, soit post-commit par exemple. Et le script doit être exécutable.

Dans le cas d'une installation pour de multiples dépôts, la mise en place de scripts communs peut être utile pour la maintenance. Il est courant de vouloir forcer l'écriture d'un commentaire lors de la mise à disposition des sources.


Command-icon.png Mise en place

L'object est donc de mettre en place une externalisation des scripts, qui pourront être ensuite référencés dans les dépôts. La structure mise en place représente la hierarchy standard d'un dépôt. Dans le cadre de cette installation, l'instance et les dépôts sont placés dans le répertoire /var/opt/svn. Le répertoire commun est donc créé sous /var/opt/svn/common.

#sudo mkdir -p /var/opt/svn/common/hooks
#sudo chown -R www-data:subversion /var/opt/svn/common
#sudo chmod -R 750 /var/opt/svn/common

Ainsi, le répertoire /var/opt/svn/common/hooks sera utilisé afin de stocker les scripts communs. Après une implémentation de script avant et après, enrichissement de ViewVC par exemple commit, le contenu est le suivant.

#sudo ll /var/opt/svn/common/hooks/
total 20
drwxr-s--- 2 www-data subversion 4096 déc.   9 10:25 ./
drwxr-s--- 3 www-data subversion 4096 déc.   5 12:03 ../
-rwxr-x--- 1 www-data subversion   93 déc.   9 10:25 post-commit*
-rwxr-x--- 1 www-data subversion 4396 janv. 22  2012 pre-commit*

Pour une instance de test, nommée study, les liens sont mis en places.

#ll /var/opt/svn/study/hooks/
total 44
drwxr-s--- 2 www-data subversion 4096 déc.   9 09:56 ./
drwxr-s--- 7 www-data subversion 4096 avril 15  2012 ../
lrwxrwxrwx 1 www-data subversion   37 déc.   9 09:56 post-commit -> /var/opt/svn/common/hooks/post-commit*
-rw-r----- 1 www-data subversion 2022 avril 15  2012 post-commit.tmpl
-rw-r----- 1 www-data subversion 1663 avril 15  2012 post-lock.tmpl
-rw-r----- 1 www-data subversion 2344 avril 15  2012 post-revprop-change.tmpl
-rw-r----- 1 www-data subversion 1592 avril 15  2012 post-unlock.tmpl
lrwxrwxrwx 1 www-data subversion   36 déc.   9 09:56 pre-commit -> /var/opt/svn/common/hooks/pre-commit*
-rw-r----- 1 www-data subversion 3510 avril 15  2012 pre-commit.tmpl
-rw-r----- 1 www-data subversion 2410 avril 15  2012 pre-lock.tmpl
-rw-r----- 1 www-data subversion 2818 avril 15  2012 pre-revprop-change.tmpl
-rw-r----- 1 www-data subversion 2100 avril 15  2012 pre-unlock.tmpl
-rw-r----- 1 www-data subversion 2852 avril 15  2012 start-commit.tmpl

A noter, les modèles sont conservés.