Académique Documents
Professionnel Documents
Culture Documents
Cet article prsente l'installation d'un serveur Subversion sur une distribution
Linux Debian ainsi que les bases de gestion d'un projet sur ce mme serveur.
Il prsentera ensuite une application Web, USVN, qui propose une interface
simple de gestion des dpt Subversion.
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
-2-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Subversion est un VCS, Version Control System, ou logiciel de gestion de version. C'est un logiciel qui permet
plusieurs dveloppeurs de travailler sur un mme projet, voir sur un mme fichier simultanment.
Il est responsable de la gestion des accs concurrents, ou plus exactement des modifications concurrentes sur un
mme fichier. De plus si les modifications ne sont pas conflictuelles, Subversion assure la fusion de celles-ci afin
d'avoir au final une version du projet qui comprend toutes les modifications.
Dans les cas o les modifications portent sur les mme lignes, Subversion aura besoin d'une intervention d'un
utilisateur afin de rsoudre manuellement ces conflits.
Pourquoi Subversion ?
Subversion a t dvelopp dans le but de remplacer terme CVS en comblant quelques lacunes inrantes ce
dernier :
Atomicit
Gestion du renommage / dplacement
Gestion des rvisions
Gestion des accs
Atomicit
Dans CVS les modifications envoyes par un dvelopppeur taient intgres dans le dpt une par une ds leur
rception. Si pour une raison ou l'autre, l'envoi de ces modifications tait intrrompu ( problme rseau, plantage du
systme d'exploitation du cot client, ... ), les modifications dj reues taient t intgres.
Dans ce cas prcis, le dpt est dans un tat incohrent, et le projet n'est plus forcment compilable.
Afin d'viter cela, Subversion intgre les modifications uniquement lorsque toutes celles-ci ont t reues
intgralement et qu'aucun problme n'est survenu.
Le cas chant, aucune modification n'aura t intgre, et le dveloppeur devra faire une autre tentative, aprs
rsolution des problmes ventuels.
Ce systme d'intgration est comparable au systme de transactions des bases de donnes commit/rollback.
Une autre faiblesse de CVS est la gestion, ou plus exactement l'absence de gestion, du renommage/dplacement
des fichiers. En effet, CVS peroit ces actions commme la suppression du fichier source, et la cration du fichier
destination. Ce qui a pour consquence que l'historique du fichier original n'est pas li au nouveau fichier.
-3-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Dans Subversion, si un fichier est dplac ou renomm l'aide de la commande svn move, l'historique reste associ
au fichier destination, ce qui permet de voir toutes ses modifications depuis le dbut.
Attention, si le dplacement n'est pas fait avec la commande svn, l'historique sera perdu
de la mme manire que dans CVS.
Un autre avantage de Subversion est sa gestion des rpertoires. Pour chaque rvision, une liste des fichiers contenus
dans un rpertoire est gard.
Cela a pour avantage de pouvoir comparer le contenu d'un rpertoire par rapport une ancienne version rapidement.
Rvisions
La notion des rvisions entre Subversion et CVS est diffrente. Dans ce dernier une rvision tait associe un
fichier en particulier.
Cela peut paratre logique, mais cela pose un problme : Comment rcuprer une copie du dpt un moment donn
? Un fichier pouvant tre la rvision 3, tandis qu'un autre la rvision 10, et un plus rcent la rvision 1.
Dans Subversion, la notion de version est applique sur l'ensemble du dpt. Ds qu'une modification est apporte
un fichier dans le dpt, c'est l'ensemble des donnes qui passe au numro de rvision suivant.
Il est ds lors plus simple de retrouver l'tat d'un dpt un moment donne, en gardant une trace de la rvision
ce moment l.
Comme il sera dmontr plus loin dans cet article, la gestion des accs peut tre trs fine, spcialement lorsque
Subversion est li Apache.
Il est ds lors possible de spcifier diffrents accs par utilisateur, par groupe, et ce, pour chaque fichier/rpertoire
dans le dpt, et non pas un accs global celui-ci.
-4-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Installation
Cette commande installe le client Subversion, diffrentes commandes de gestion de dpt ainsi qu'un excutable
serveur.
Dans le cadre de cet article, le rpertoire de base des dpts sera /var/subversion/depot/
Ds lors, il est dj possible de travailler sur celui-ci localement ( sur la mme machine que le dpt lui mme ).
L'accs distance ncessitant un peu de configuration, cela sera expliqu par aprs.
Check out
La premire tape dans l'utilisation de Subversion est de rcuprer une copie locale du dpt :
svn co file:///var/subversion/depot/nomdemonprojet
Si tout c'est bien droul, un rpertoire nomdemonprojet a du tre cr dans le rpertoire courant.
Ce rpertoire doit contenir les fichiers de la dernire rvision disponible sur le dpt.
Ajout de fichiers/rpertoires
-5-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Dans ce rpertoire, vous tes libre de travailler normalement : cration de rpertoire, ajout de fichier.
nomdemonprojet
+ src
+ java
+ com
+ developpez
+ hikage
+ TestMain.java
+ Application.java
+ webapp
+ WEB-INF
+ web.xml
Il est ensuite ncessaire d'informer Subversion que ces fichiers doivent tre pris en compte lors de la prochaine
publication des modifications sur le dpt :
La dernire commande n'a fait que mettre une "tiquette" sur des fichiers, mais ceux-ci n'ont pas encore t envoy
vers le dpt.
-6-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Le paramtre -m "Mon Message" spcifie un message qui sera associ la publication ( et donc la nouvelle
rvision ).
Il est courant d'expliquer comme message le but des modifications ralises : ajout d'une fonctionalit, correction
d'un bug, ...
Intgration, le retour
Imaginons maintenant que du code a t ajout dans le fichier TestMain.java ( qui tait jusqu'ici un simple fichier vide
), et que lors de la publication des modifications, le rsultat affiche :
Le message informe que le fichier du dpt est plus rcent ( une rvision suprieure ) que celle disponible en locale.
La mise jour a t effectue mais un conflit ( le C cot du nom du fichier ) est apparu.
Lors d'un conflit, Subversion cre trois nouveaux fichiers dans le rpertoire, ici TestMain.java.mine ( qui est une copie
de la version modifie localement ), TestMain.java.r1 ( qui est la version locale avant modification, c'est dire celle
rcupere lors du check out ou de la dernire mise jour ), et TestMain.java.r3 qui est la dernire version sur le
serveur.
Le fichier TestMain.java quand lui possde des informations sur les diffrences entre chaque fichiers.
Il est donc ncessaire de raliser la fusion manuellement, en gardant les bonnes lignes.
Dans le cas de la ligne de commande, la fusion doit tre rellement faite la main.
Lors de l'utilisation de client graphique, il est frquent d'avoir une fentre qui affiche les
diffrences entre les fichiers et propose une interface simple pour raliser la fusion.
Une fois la fusion effectue, il faut dire Subversion que le problme t rsolu :
En plus de supprimer l'tiquette 'Conflit' ( qui empche le fichier d'tre envoy sur le dpt ), cette commande
supprime les trois fichiers temporaires cits plus haut.
-7-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Le cas du "conflit" est le seul qui ncessite l'intervention manuelle. Lors d'une mise jour de la copie locale ( svn
update ), les informations possibles associes au fichier peuvent tre :
Voila qui finit la prsentation des commandes de base de Subversion. Il en existe beaucoup d'autre afin de crer
des patchs entre version ( svn diff ), annuler des modifications locales ( svn revert ), et bien d'autres encore qui
ncessiteraient un article part afin d'tre prsent correctement.
Utilisation en rseau
Jusqu'ici le serveur tait accessible uniquement en local et son utilit est donc restreinte.
Pour mettre disposition les dpts des clients distants, il existe diffrents moyens possdant chacun leurs
avantages et leurs inconvnients.
SVNServe
La premire mthode est d'utiliser SVNServe, un dmon fourni dans le package Subversion. Celui-ci peut tre
configur en serveur Standalone ou via InetD.
L'inconvnient est qu'il coute sur un port propre ( qui est bien sur configurable ), et qu'il risque donc d'tre bloqu
par des pare-feux.
SSH
Il est aussi possible d'accder au dpt via un tunnel SSH. Cela ncessite bien sr un serveur SSH install sur la
machine qui hberge le dpt, mais c'est souvent le cas sur des machines Linux.
-8-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Du ct du client, il est ncessaire que celui-ci gre ce type d'accs. Parmi ceux-ci, citons Tortoise SVN,
SmartSVN ou encore Subclipse
Module apache
La dernire mthode, et la plus intressante, est d'utiliser un module Apache pour Subversion.
Le principal intrt par rapport l'accs via SvnServe ou SSH est que le port HTTP est trs rarement filtr par les
pare-feux, et donc est accessible de partout.
De plus l'authentification tant effectue via les modules d'Apache, les moyens d'authentification de celui-ci ( fichier
d'utilisateur, annuaire LDAP, base de donnes ) sont disponibles.
Comme il a t dit au dbut de cet article, l'intgration Apache / Subversion fourni un dispositif de gestion des droits
d'accs plus fine.
Installation
La premire chose faire est d'installer Apache si ce n'est pas encore le cas :
Configuration
Une fois le module install, il faut configurer Apache afin d'intgrer le dpt.
Pour ce faire, nous allons configurer Apache afin que l'URL de type http://monserveur/svn fournisse un accs au
dpt.
Tout d'abord, il faut informer Apache qu'il doit prendre en compte le module SVN :
a2enmod dav_svn
-9-
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
<Location /svn>
DAV svn
Require valid-user
SVNParentPath /var/subversion/depot/
AuthType Basic
AuthName "Mon dpt"
AuthUserFile /var/subversion/conf/htpasswd
AuthzSVNAccessFile /var/subversion/conf/access
</Location>
Ligne Description
Location /svn Spcifie que le dpt sera accessible via
http://ip/svn Ou ip reprsente l'adresse ip du
serveur
DAV svn Active la gestion SVN sur ce rpertoire
Require valid-user Ncessite un utilisateur valide afin d'accder
ce rpertoire
SVNParentPath Configure le chemin vers le rpertoire parent
des dpts
AuthType Spcifie le type d'authentification
AuthName Spcifie le nom qui sera affich dans la boite
de demande de mot de passe
AuthUserFile Spcifie le fichier des utilisateurs
AuthzSVNAccessFile Spcifie le fichier de gestion des accs
Cela fait, l'tape suivante est de crer le fichier /var/subversion/conf/htpasswd qui contiendra les utilisateurs et leurs
mots de passe.
hikage reprsente le nom de l'utilisateur, et son mot de passe sera demand par la commande.
Le paramtre -c spcifie qu'il est ncessaire de cre le fichier. L'ajout des prochains utilisateurs se fera donc via
la commande :
Une fois les utilisateurs crs, il reste encore configurer leurs accs. Cela est ralise dans le fichier
/var/subversion/conf/access .
[groups]
developpez = hikage, utilisateur2
- 10 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
[nomdemonprojet:/]
@developpez = rw
* = r
[projetprivehikage:/]
hikage = rw
* = r
[projetprivehikage:/documentation/utilisateur]
auteurdoc = rw
La section [groups], comme son nom le laisse sous entendre, permet de dfinir des groupes. Ici un seul groupe
( developpez ), dont les membres sont hikage et utilisateur2, est cr
La deuxime section ( [nomdemonprojet:/] ) dfinit les accs globaux au projet nomdeprojet. Ici le groupe
dveloppezcom ( @developpezcom ) possde un droit en lecture/criture, tandis que tout les autres ( reprsent
par * ) ont un accs en lecture seule.
La troisime section dfinit les accs globaux un deuxime projet ( projetprivehikage ), accessible en criture
uniquement par hikage mais lisible par tous.
Remarquez que le fichier de configuration des droits d'accs peut tre commun plusieurs
projets.
La dernire section redfinit les droits d'accs au rpertoire documentation/utilisateur du projet projetprivehikage.
Celui-ci sera accessible en criture par auteurdoc.
Relancement du serveur
Ces tapes ralises, il est ncessaire de relancer Apache afin qu'il prenne ces changements en compte :
/etc/init.d/apache2 restart
- 11 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Prsentation d'USVN
Si cela reste trs utile, la console n'est pas forcment apprcie par tout le monde. De plus, afin de grer les dpts
il est ncessaire d'avoir un compte administrateur, ou quivalent.
Pour rsoudre cela, un projet de fin d'tudes de l'Epitech viens nous aider : USVN.
Celui-ci fournit une interface Web en PHP afin de prendre en charge la gestion de plusieurs dpts.
Installation
Prrequis
Afin d'utiliser USVN, il faut s'assurer d'avoir toutes les dpendances requises :
Apache 2
PHP5
SQlite
mod_dav_svn
mod_rewrite
subversion
mod_authz_svn
Afin de poursuivre l'installation, l'archive de USVN doit tre rcupre sur le site, et dcompresse dans un rpertoire
accessible Apache :
wget est un outil en ligne de commande permettant de rcuprer des fichiers distants. S'il
n'est pas encore install : aptitude install wget.
- 12 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Cela fait, il est ncessaire de s'assurer que la configuration pour ce site est correcte. Pour ce faire, ajoutez les lignes
suivantes dans le fichier /etc/apache2/sites-available/defaut ( ou dans le fichier de votre nom de domaine ):
<Directory /var/www/usvn>
AllowOverride all all
</Directory>
Ecrans d'installations
La suite de l'installation est ralise directement par l'interface fournie par USVN :
Installation - Accueil
Le deuxime cran permet le choix de la langue, et l'heure ou j'cris cet article les langues suivantes sont gres :
Franais
Anglais
Espagnol
Chinois
- 13 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Installation - Licence
L'cran suivant est la configuration du nom du site, du chemin o seront stocks les dpts ainsi que les fichiers de
configuration, et l'URL d'accs SVN.
La seule contrainte dans les chemins est qu'ils soient accessibles en lecture/criture par Apache ( utilisateur
www-data sous Debian Etch ).
Dans le cadre de cet article, les options par dfaut sont utilises.
- 14 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Dans cet article, partant du fait que MySql n'est pas forcment installe, c'est SQLite qui est choisi.
SQLite est un moteur SQL particulier. Contrairement des SGBD comme Mysql ou
Postgres, SQLite ne fonctionne pas sur un mode client/serveur.
Le moteur est directement intgr dans le programme qui l'utilise, et les donnes sont
stockes dans un fichier unique.
Il reste cependant trs performant mais n'est pas prvu pour permettre de nombreux accs
concurrents.
- 15 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Installation - Fin
L'installation est presque finie, il reste mettre le texte de configuration fourni dans le fichier de configuration de
Apache ( /etc/apache2/sites-available/defaut par exemple ).
/etc/init.d/apache2 reload
Utilisation
- 16 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Une fois l'ajout effectu, il est possible de voir un rsum des informations le concernant.
- 17 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Il est possible d'ajouter des utilisateurs via l'onglet Administration. Dans cet article deux utilisateurs sont ajouts :
hikage et anonyme.
- 18 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Une fois les utilisateurs ajouts, il est possible de donner un accs au groupe anonyme pour le projet developpezcom :
Via l'cran de rsum d'un projet, il est possible de grer les droits d'accs celui-ci.
Dans cet cran, le fait de cliquer sur Appliquer des droits sur / fait apparatre un popup permettant de spcifier les
accs par groupe.
De plus cet cran permet de naviguer dans les rpertoires, et de spcifier des droits individuels sur chaque
fichiers/rpertoires.
Une demonstration Flash plus complte de la gestion d'un projet avec USVN est disponible
ici
Il est intressant de savoir qu'il est possible de dlguer une partie de la gestion d'un projet un utilisateur.
Pour cela, dans l'cran de rsum du projet, il est ncessaire d'ajouter un utilisateur comme Administrateur.
- 19 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
Cependant, il n'a pas le droit de crer/supprimer des utilisateurs, de crer/supprimer des groupes ou de
crer/supprimer des projets, cette responsabilit reste l'administrateur gnral.
- 20 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
IV - Conclusion
Remerciements
Je tiens remercier Etanne d'avoir pris le temps de corriger cet article, ainsi que gege2061 et l'quipe de USVN
pour l'aide prcieuse qu'ils ont apports.
Ressources
F.A.Q. SCM
- 21 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/
Installation de Subversion sous Debian par Gildas Cuisinier (Hikage) (Blog)
- 22 -
Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par
quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://hikage.developpez.com/