La grotte du Grizzly
Sa vie, son oeuvre.

 Made in Delphi
 Voyager en VRML
 SubVersion et ViewCVS
 SQL Server Restore
 dtSearch tips
 Quelques liens
 Contact
Retour à Accueil / 

 SubVersion et ViewCVS 

Ce mini-tutoriel sans prétention reprend les principales étapes qui m'ont permis en ce mois de mars 2005 d'installer SubVersion, pour gérer les versions mes logiciels, et d'installer aussi ViewCVS, afin de pouvoir "naviguer" à travers mes référentiels d'une façon plus conviviale que celle proposée par défaut.

 Installer SubVersion

L'installation de SubVersion est simple... à condition d'avoir un Apache2 à disposition.

Installer Apache 2

Pour installer Apache2 avec le "minimum", vous devrez télécharger Apache2 sur le site officiel, puis le recompiler.

Pour télécharger la dernière version :

Pour l'installer (une fois le source téléchargé et décompressé) :

./configure --prefix=/usr/local/apache2 \
    --sysconfdir=/etc/apache2/conf --mandir=/usr/share/man \
    --enable-ssl --enable-rewrite --enable-so --enable-dav
make
make install

Installer SubVersion

Ensuite, pour installer SubVersion, c'est tout aussi simple... Vous téléchargez le source... et vous le recompilez.

Pour télécharger la dernière version :

Pour l'installer :

./configure --mandir=/usr/share --sysconfdir=/etc/subversion \
--with-apxs=/usr/local/apache2/bin/apxs --with-zlib
make
make install
make install-swig-py

Cette dernière ligne est importante afin de pouvoir faire fonctionner SubVersion avec ViewCVS. En effet, les librairies Python propres à SVN doivent être compilées et installées. Il y a d'ailleurs quelques dépendances avec SWIG que vous devrez peut-être réglées, selon votre distribution, par l'installation d'un RPM ou d'une compilation complémentaire.

A partir de là, tout fonctionne en théorie... à condition d'ajouter un site minimaliste dans la configuration d'Apache.

Créer un premier référentiel de test

Le terme repository semble difficile à traduire en français d'une façon totalement satisfaisante. J'ai lu "référentiel" ou aussi "dépôt"... J'ignore lequel des deux termes doit être préféré à l'autre.

mkdir /home/svn
svnadmin create /home/svn/test

Et comme ce répertoire devra pouvoir être lu et modifié via Apache, on en change les droits.

chown nobody.nobody /home/svn -R

Configurer un site Apache

Editez le fichier /etc/apache2/httpd.conf et ajouter les lignes suivantes à la fin du fichier :

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin votremail@votredomaine
    DocumentRoot /home/racinedusite/
    ServerName votredomaine
    ErrorLog logs/votredomaine-error_log
    CustomLog logs/votredomaine-access_log combined
    <Location /test>
        DAV svn
        SVNPath /home/svn/test
    </Location>
</VirtualHost>

Une fois Apache2 redémarré, vous pourrez accéder aux fichiers de votre dépôt avec votre navigateur en tapant simplement :

Bon, il est vide pour le moment, mais vous pouvez l'alimenter dès maintenant avec un client SVN et utilisant la même adresse.

Approfondir par quelques liens

Le site officiel :

Un client SubVersion :

Un tutorial simple et plus complet :

 Installer ViewCVS

L'installation de ViewCVS n'est pas forcément plus compliquée que SubVersion... Mais il y a quelques pièges.

Télécharger la bonne version de ViewCVS

En effet, la version officielle du jour (0.9.2) ne semble pas prendre en charge SubVersion... Aussi, il m'a fallu me tourner vers une version de développement. Je n'avais pas envie de m'enquiquiner à prendre le dernier CVS sur le site officiel, j'ai donc choisi de prendre ce que j'ai trouvé dans une tutoriel.

Le tutoriel en question :

La beta en question de ViewCVS :

Installer ViewCVS

C'est assez simple en fait, il suffit d'exécuter le fichier viewcvs-install.

Ensuite, vous réalisez les modifications minimales au fichier /usr/local/viewcvs-1.0-dev/viewcvs.conf. Pour les deux lignes suivantes, vous enlevez les commentaires et vous les modifiez en fonction de la position de votre dépôt. Pensez à mettre en commentaire les autres lignes, comme le tutoriel cité en référence l'explique.

root_parents = /home/svn : svn
default_root = test

Ca pourrait presque fonctionner... Mais il faut finir par la configuration d'Apache2... Encore.

Modifier la configuration d'Apache2

Apache2 doit être au courant de l'endroit où se trouvent les CGI de ViewCVS. Il suffit pour cela d'ajouter une ligne dans le "VirtualHost" définit précédemment.

ScriptAlias /viewcvs/ /usr/local/viewcvs-1.0-dev/www/cgi/

Et votre clause <VirtualHost> devient alors :

<VirtualHost *:80>
    ServerAdmin votremail@votredomaine
    DocumentRoot /home/racinedusite/
    ServerName votredomaine
    ErrorLog logs/votredomaine-error_log
    CustomLog logs/votredomaine-access_log combined
    ScriptAlias /viewcvs/ /usr/local/viewcvs-1.0-dev/www/cgi/ 
    <Location /test>
        DAV svn
        SVNPath /home/svn/test
    </Location>
</VirtualHost>

Vous redémarrez Apache2...

/usr/local/apache2/bin/apachectl restart

Et vous devriez presque voir quelque chose là :

En fait, vous devriez avoir une erreur expliquant que python ne trouve pas le module svn :

An Exception Has Occurred

Python Traceback

Traceback (most recent call last):
  File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 3194, 
in main request.run_viewcvs() File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 258,
in run_viewcvs import vclib.svn File "/usr/local/viewcvs-1.0-dev/lib/vclib/svn/__init__.py",
line 27, in ? from svn import fs, repos, core, delta ImportError: No module named svn

Pour arranger cela, il faut avoir compilé le module svn pour python... et avoir indiqué à Python de chercher ces modules là où ils se trouvent !

Ils se trouvent en théorie là : /usr/local/lib/svn-python/

Et comme ces deux répertoires doivent être accessibles à Python, il faut trouver une astuce... Soit en modifiant une variable d'environnement... soit en créant un lien symbolique dans le répertoire contenant tous les modules Python.

Sur mon serveur RH9.0 ça m'a demandé d'écrire cela :

cd /usr/lib/python2.2/site-packages
ln -s /usr/local/lib/svn-python/svn ./svn
ln -s /usr/local/lib/svn-python/libsvn ./libsvn

Et cette fois-ci, ça fonctionne enfin ! Enfin... En théorie ;-)

Quelques liens

Le site officiel de ViewCVS :

Le tutoriel qui m'a sorti d'affaire :


Dernière mise à jour : 22 Octobre 2009