Le choix d'un outil de gestion de configuration à la fois puissant et facile à mettre en oeuvre a longtemps un problème. D'un côté CVS, efficace mais limité, ou Microsoft Visual Source Safe, simple à mettre en oeuvre mais très incomplet, de l'autre l'artillerie lourde comme Continuus CM, qui nécessitent un projet à part entière pour la mise en place.
Heureusement, la communauté Open Source n'est pas restée inactive et a enfin abouti à une version finalisée d'un nouvel outil : SubVersion, disponible à l'adresse : http://subversion.tigris.org/. En plus des fonctionnalités de base de gestion de version supportées par CVS, SubVersion permet un accès par le web ou simplement par l'explorateur Windows, grâce à l'utilisation de Webdav. Un autre avantage conséquent par rapport à CVS ou VSS est la gestion des versions des répertoires. Ainsi il est possible de revenir à une version antérieure d'un projet quelles que soient les modifications apportées à l'arborescence.
Le présent article a pour objectif de décrire la mise en place d'un référentiel SubVersion sur Windows, en utilisant Apache.
Même s'il est possible d'utiliser Subversion en accès direct par le système de fichier, ou avec le serveur autonome, le système prend toute sa dimension en mode intégration avec Apache.
Pour installer Apache, il faut :
- Télécharger la dernière version d'Apache 2 pour Windows sur http://httpd.apache.org. Il s'agit du fichier msi.
- Lancer l'installation, spécifier le nom de domaine DNS, le nom du serveur et l'adresse mail de l'administrateur.
- Choisir une installation
typical
et spécifier le répertoire d'installation
Attention : le répertoire demandé est un préfixe, l'installation se fera dans un sous-répertoireApache2
- Finaliser l'installation.
Le serveur doit être accessible à l'adresse :
http://localhost
.
Télécharger la version installable de SubVersion depuis http://subversion.tigris.org/project_packages.html . L'installation est très simple, seul le répertoire d'installation est demandé.
Avant de configurer Apache, il est nécessaire de créer le
référentiel SubVersion. Cette création peut être effectuée par
la commande
svnadmin
:
svnadmin create d:/svnrepository
ou par le menu TortoiseSVN décrit plus loin.
Configuration Apache avec Subversion
Copier le fichier
mod_dav_svn.so
dans le répertoire
modules
d'Apache. Il s'agit du plugin permettant d'ajouter le support
SubVersion aux fonctions DAV natives d'Apache.
Il reste à activer dans Apache les modules SubVersion et
indiquer l'emplacement du référentiel dans le fichier de configuration
httpd.conf
.
L'activation des modules est effectuée par la commande
LoadModule
. Localiser et décommenter l'appel
au module DAV et ajouter l'activation du module SubVersion :
LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so
Le chemin d'accès web du référentiel doit être indiqué
par une entrée Location
:
<Location /svnrepository> DAV svn SVNPath d:/svnrepository SVNIndexXSLT "/svnindex.xsl" SVNAutoversioning on </Location>
SVNPath
indique le chemin local du référentiel
créé précédemment.
SVNIndexXSLT
permet de modifier
le rendu du contenu dans le cas du parcours avec un simple
navigateur. Un page xsl d'exemple, ainsi que la feuille
de style associée se trouvent dans le répertoire tools/xslt
des sources de SubVersion. Les archives contenant les sources sont
disponibles dans le répertoire Source tarballs
à l'adresse
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260
Pour un premier test, il suffit de
recopier ces fichiers dans le répertoire htdocs d'Apache, ce qui
correspond à la configuration ci-dessus.
Activer le SVNAutoversioning
permet
de supporter les clients WebDAV basiques ne reconnaissant pas
la norme deltaV (RFC 3253).
Il est nécessaire de redémarrer Apache pour que les changements soient pris en compte. Comme l'installation de SubVersion modifie le PATH système, il est même nécessaire de redémarrer la machine pour pouvoir redémarrer Apache en tant que service.
Il est possible de gérer les utilisateurs directement dans SubVersion. Cependant, étant dans un environnement Windows, il est plus facile de s'appuyer sur l'infrastructure d'authentification existante.
Le module mod_auth_sspi
permet de résoudre ce
problème. Il est disponible à l'adresse :
http://tortoisesvn.tigris.org/mod_auth_sspi.zip.
L'installation de ce module passe par les étapes suivantes :
- Décompresser l'archive et copier le fichier
mod_auth_sspi.so
dans le répertoiremodules
d'Apache - Ajouter la ligne :
LoadModule sspi_auth_module modules/mod_auth_sspi.so
avant la ligne :LoadModule auth_module modules/mod_auth.so
- Pour activer ce nouveau type d'authentification, ajouter
les lignes suivantes à la rubrique
Location
SSPIAuth On SSPIAuthoritative On SSPIDomain <domaincontroller> SSPIOfferBasic On Require valid-user
Laisser <domaincontroller> s'il n'y a pas de contrôleur de domaine, sinon remplacer par le nom du serveur PDC.
L'installation du serveur est terminée. Il faut maintenant choisir un client pour accéder à Subversion.
L'accès à SubVersion est basé sur WebDAV, qui est une extension d'HTTP, il est donc possible d'accéder au référentiel avec un simple navigateur :
Cependant, cet accès ne permet pas d'écrire dans le référentiel
Les versions récentes de Windows supportent nativement WebDAV, il est donc possible d'accéder au référentiel en créant un Favori réseau :
Cette solution permet de manipuler le contenu du référentiel, mais ne permet pas d'accéder aux fonctionnalités avancées (historique des versions, obtenir une version antérieure, ...)
La solution la plus complète et la plus ergonomique pour accéder à un référentiel SubVersion depuis Windows est TortoiseSVN, disponible à l'adresse : http://tortoisesvn.tigris.org/
Ce logiciel se présente sous la forme d'un menu contextuel dans l'explorateur Windows. Il permet de créer un référentiel, de construire un espace de travail local, ainsi que de gérer toutes les autres interactions (mise à jour, différentiel, livraison, ...).
Intégration à l'environnement de développement
Il est aussi évidemment possible d'appeler SubVersion directement depuis l'environnement de développement. Il existe des plugins pour IntelliJ IDEA, Eclipse, et n'importe quel autre IDE supportant SCC (via subway : http://nidaros.homedns.org/subway/).