Externalisation extensions SVN
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.
Votre avis
Nobody voted on this yet
|
|
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.
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.