Table des matières
Présentation de SVN
SVN est utile pour gérer un développer à plusieurs personnes ou simplement pour gérer un projet depuis plusieurs ordinateurs.
Si par exemple vous disposez d'un Mac et d'un Linux et que vous développez en C++ un projet fonctionnant sous les deux environnements, vous aurez à aller sans arrêt sur l'un et l'autre de vos ordinateurs et récupérer la dernière version puis sauvegarder la version modifiée.
Dans les deux cas, ceci se fait à l'aide d'un serveur SVN. Nous allons voir comment l'installer
SVN gère donc :
- les accès concurrents
- l'évolution des versions
- la distribution des sources
Installation partie client
Conventions
- svn.serveur.com : le nom du serveur
- /usr/svn : l'emplacement du svn
- projet : le nom du projet
Les noms en gras doivent être changés en fonction de vos besoins
Par votre installeur c'est souvent le nom de subversion qui doit être donné pour installer votre client svn
Les commandes clients
Accès sans mot de passe
Pour récupérer les informations depuis un dépôt faire :
Si vous modifiez des sources et voulez en faire bénéficier la communauté des développeurs faire
Pour récupérer la dernière version faire
Pour récupérer une version ancienne
Accès avec mot de passe
idenditique mais pour se connecter utiliser la commande
svn --username login --password mot de passe co http://svn.serveur.com/projet/trunk
Pour ajouter un fichier dans le dépôt faire
Résolution de conflit
Pour résoudre un conflit, il faut savoir que le fichier comprenant le conflit se voit accompagné de plusieurs autres fichier dans son répertoire (s'il s'appelle toto) :
- toto.r23 : ce fichier est le fichier valide de la dernière version
- toto.r24 : ce fichier est le fichier du dépot
- toto.mine ( sauf si toto est binaire)
toto est le fichier utilisé localement, il n'est plus en phase avec le dépot.
- Si on es sût que le toto local est le bon il suffit de détruire toto.r23 toto.r24 et toto et de faire un svn commit
- Si le fichier valide est le fichier toto.r23 on copie ce fichier dans toto et on détruit les fichiers r23 et r24
- Si le fichier valide est toto.r24 on le recopie en toto et on détruit les toto munis d'autres extension.
Installation d'un serveur SVN
Installation en mode svn uniquement
- Instaler subversion-tools
- faire
svnadmin create projet
dans le répertoire svn/projet/conf aller modifier le fichier
password pour mettre votre mot de passe
dans le fichier svnserve.conf
décommenter
anon-access = read
auth-access = write
et
password-db = passwd
- Puis sur le client dans le répertoire des sources (en ayant pris soin de faire make clean pour supprimer tous les fichiers non source) faire
svn co svn://serveur/projet .
Cette commande rapatriera les fichiers nécessaires à svn
puis faire
svn add *
svn commit
Installer le serveur avec visualisation apache
- Installer Apache2, subversion, libapache2-svn et subversion-tools
au moyen de votre installateur de paquetages
- Dans le fichier /etc/apache2/site-enabled mettre
<VirtualHost *:80>
ServerName private.ignu.fr
ServerAlias gillesmaire
DocumentRoot /usr/svnprivate
ServerAdmin gilles.maire à ignu.fr
CustomLog "/var/log/apache2/svn_access.log" combined
ErrorLog "/var/log/apache2/svn_error.log"
<Location /webooti>
DAV svn
SVNPath /usr/svnprivate/webooti
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/htpasswd/webooti
Require valid-user
</Location>
</VirtualHost>
En accès protégé par mot de passe
Mettre
- AllowOverride All
- retirer les ligne LimitExcept /limiExcept mais garder la ligne Require valid-user
Création d'un dépot sur le serveur
En général on créé un répertoire temporaire contenant le projet :
cd /tmp/
mkdir projet
mkdir projet/tags
mkdir projet/branches
mkdir projet/trunk
copier tous vos fichiers dans trunk
Par exemple si vos sources sont dans toto.tgz faire un
cd projet/trunk
tar zxvf toto.tgz
Ensuite on créé et importe ce répertoire dans le dépot
mkdir --p /usr/svn/
svnadmin create /usr/svn/projet
svn import /tmp/projet file:///usr/svn/projet -m "initial import"
Depuis le serveur, on peut vérifier la liste des fichiers par
svn list file:///usr/svnprivate/webooti/trunk
A distance, on peut vérifier l'accès webdav en tapant dans un navigateur :
http:://svn.serveur/projet/trunk