Subversion est un système de contrôle des versions OpenSource distribué sous une licence compatible Apache/BSD. Cet outil en développement depuis plus de 3 ans propose un grand nombre de nouveautés par rapport à son aîné vieillissant qu'est CVS. Pour CVS, il est temps de passer la main comme a pu le faire RCS en son temps.

Pour les Debianeux et les Fedoriens qui veulent pas se prendre la tête :

aptitude install subversion subversion-tools libapache2-svn
yum install subversion mod_dav_svn

Téléchargement :

Rendez vous ici

cd /opt/sources
wget http://subversion.tigris.org/downloads/subversion-1.5.5.tar.bz2
mkdir /opt/svn155
cd /opt
ln -s svn155 svn
cd -
tar -xvzf subversion-1.5.5.tar.gz
cd subersion-1.5.5

Pré requis :

Un serveur apache2 fonctionnel avec mod-dav.

Compilation apache2 pour subersion :

./configure --prefix=/opt/httpd-svn --enable-module=most --enable-shared=max --enable-rewrite --enable-unique-id --enable-dav --enable-ssl --with-ssl
make
make install

Compilation subversion :

Script d’aide de détection de dépendances :

./autogen.sh
./configure --prefix=/opt/svn --with-apxs --with-apxs=/opt/httpd-svn/bin/apxs --with-ssl --with-ssl=/opt/openssl098h –-with-neon=/usr/bin/neon-config 
make
make install

Ligne de compile fonctionnant aussi avec la version 1.5.5 Les binaires 1.5.X sont retro-compatible 1.4.6 mais il faut redémarrer apache.

Bien penser à rajouter ceci dans le /etc/profile :

Ce qui nous permettra d'avoir les commandes svn n'importe ou sur votre serveur.

pathmunge  /opt/svn/bin

Mise à jour d'un serveur svn :

Compiler la version supérieur copier les nouveaux binaries à la place des anciens binaires relancé l’apache2 servant pour votre svn (stop/start)

Et faire ceci :

svnadmin upgrade /chemin/du/depot1
svnadmin upgrade /chemin/du/depot2

Commande : svnadmin upgrade existe à partir de la version : 1.5.0

Autre manière pour une mise à jour : dump de tous les dépôts, installation de la nouvelle version de subversion, et réimportation des dépôts.

Pour récupérer un dépôt en local (sur le serveur svn) :

svn co file:///svn/test/

Sauvegarde de dépôt :

svnadmin dump /svn/test > dump.test

Bug rencontré :

svn --help
svn: Problème de version de module RA pour 'dav': 1.4.6 trouvé, 1.4.2 attendu
si vous rencontrez ce message en console c’est qu’un paquet redhat de subversion est installé et entre en conflit avec votre subversion 

Solution :

rpm –qa | grep subversion
rpm –e subersion-redhat

En faite c'est un conflit avec un subversion installé avec votre gestionnaire de paquet.

Voir les modules spécifiques à subversion :

svn --version

svn, version 1.5.3 (r33570)
    compilé Oct 20 2008, 14:32:17

Copyright (C) 2000-2008 CollabNet.
Subversion est un logiciel libre, cf http://subversion.tigris.org/
Il inclut du logiciel développé par CollabNet (http://www.Collab.Net/).

Les modules d'accès à un dépôt (RA) suivants sont disponibles :

* ra_svn : Module d'accès à un dépôt avec le protocole réseau propre de svn.
  - avec authentification Cyrus SASL
  - gère le schéma d'URL 'svn'
* ra_local : Module d'accès à un dépôt sur un disque local.
  - gère le schéma d'URL 'file'

Ici deux modules , ra_svn et ra_local il manque ra_dav voila pourquoi on ne peut pas faire un checkout (co) en local sur le serveur svn en tapant :

svn co http://localhost/test 

Trouver tous les dépôts présent sur un serveur svn :

Bien se mettre à la racine du serveur.

cd /
find -name post-commit*
./svn/test/hooks/post-commit.tmpl

Vérifier l’intégrité d’un dépôt :

svnadmin verify /svn/test
* Révision 0 vérifiée.
* Révision 1 vérifiée.
* Révision 2 vérifiée.
* Révision 3 vérifiée.
* Révision 4 vérifiée.
* Révision 5 vérifiée.

En cas d’erreur sur un dépôt :

svnadmin recover --wait /svn/test

Rétablir une sauvegarde de dépôt :

svnadmin load /svn/test2 < dump.test

Attention pour cela il faut que /svn/test2 soit un dépôt (vide) : svnadmin create /svn/test2 (à faire avant le load)

aller plus loin : http://www.toutprogrammer.com/wiki/Installation_et_utilisation_de_base_de_Subversion