Subversion

Subversion jpp

Contrairement à mon habitude je n'ai pas installé Subversion dans une VM mais directement sur ma machine perso, celle dans laquelle je teste et/ou développe des "trucs".
Avec Debian c'est simple : 
apt-get install subversion subversion-tools 
Selon l'état de votre système cela peut vous proposer l'installation de logiciels complémentaires (librairies entre autres).

Tout ceci se passe normalement sans encombre. Se pose alors le problème de l'accès aux repository de subversion. Il existe diverses méthodes dont les principales sont Svnserve (du paquet subversion) et Apache (avec "libapache2-mod-svn" ). 
J'ai choisi le plus simple : svnserve, le seul problème rencontré est le manque de documentation sur le fonctionnement et le paramétrage de ce processus. 
J'ai eu beaucoup de mal à trouver un script de démarrage et des consignes de paramétrage des fichiers "authz,"passwd" et "svnserve.conf". 
Pour le script de démarrage je n'ai trouvé que des options longues, ligne de lancement garantie à + de 150 caractères. Finalement il y a aussi une option permettant d'utiliser un fichier de config dont la syntaxe ressemble à ces fichues options longues. 
J'ai créé un répertoire /etc/svn dans lequel j'ai installé des fichiers "modèles"

  • svnserve.conf
  • authz
  • passwd

Depuis que j'ai commencé cet article j'ai trouvé un article très complet dans le Hors-Série de LINUX Magazine sous-titré "Votre projet Open Source".

Je détaille un peu ce que j'avais fait avant de lire cet article :

Lorsque l'on crée les nouveaux projets : "svnadmin create mon_projet_a_moi" le répertoire "conf" contient les fichiers svnserve.conf, authz et passwd que l'on peut détruire, seuls ceux de /etc/svn sont en effet utilisés.

La syntaxe des fichiers de "/etc/svn" est simple et les exemples fournis sont clairs.

Il existe d'excellents outils graphiques pour se servir plus agréablement de subversion. J'ai utilisé pendant longtemps RapidSvn qui fonctionnait fort bien, mais, il y a un mais, le logiciel n'est pas suivi et ne fonctionne plus depuis au moins deux versions de Debian. J'utilise actuellement KdeSvn qui fonctionne très correctement et est assez facile à utiliser.

Note 2024 : j'utilise toujours Subversion car j'ai un historique conséquent que je n'ai pas envie de "traduire" par exemple en "git".

Svnserve : le script init

Svnserve : le script init jpp

#!/bin/bash
### BEGIN INIT INFO
# Provides:          svnserve        
# Required-Start:    networking $local_fs
# Required-Stop:     
# Default-Start:     3
# Default-Stop:      2 6
# Short-Description: Serveur SVN    
# Description:       Lancement su serveur SVN
### END INIT INFO
do_start()
{ echo 'Starting svnserve' start-stop-daemon --pidfile $PIDFILE --start --quiet --exec $DAEMON  -- $OPTIONS
ret=$?
ZZZ=$(ps -ef | grep $DAEMON'.*'$CONF | grep -v grep)
set -- $ZZZ PID=$2
echo $PID>$PIDFILE
return $ret }
do_stop()
{ echo 'Stopping svnserve' start-stop-daemon --pidfile "$PIDFILE" --stop --oknodo
ret=$?
if [ -f "$PIDFILE" ]
   then     
       rm -f $PIDFILE
fi
return $ret
}
# ==================================================
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/bin/svnserve
CONF=/etc/svn/svnserve.conf
PIDFILE=/run/svnserve.pid
ROOT=/RAIDHOME/SUBV OPTIONS=' -d --config-file='$CONF' --root='$ROOT
. /lib/lsb/init-functions
# set -x
case "$1" in
    start)        do_start   
                  ret=$?
                  ;;     
    stop)         do_stop
                  ret=$?

                  ;;     
    restart)      do_stop
                  ret=$?
                  if [ $ret -eq 0 ]
                     then
                        do_start
                        ret=$?  
                     else   
                        echo 'Can"t stop --> abort'
                  fi             
                  ;;
    *)            echo 'Action inconnue ('$1')'
                  ret=1
                 ;;
esac
exit $ret
 

Note 2024 : ce script est toujours en service.