Mettre en place un (ou +) dépôt SVN

Introduction

La présentation de SVN par Wikipédia est très bien faite.

Sachez que TortoiseSVN est un très bon client pour Windows, pour Linux, il s'agit de subversion. Ici, nous parlerons que de la mise en place du serveur Linux, qui sera accessible par le protocole svn: (donc pas besoin de SSH, ni de Apache).

Installation

Attention, attachez vos ceintures, ca va être très dur !

sudo apt-get install subversion

Configuration

Premier dépôt

Une fois votre premier dépôt créé (cf plus bas), éditez en premier lieu le fichier /var/svn/premier_depot/conf/svnserve.conf. Les commentaires sont assez explicites. Perso, je mets:

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = Mon premier depot SVN

passwd ressemble vaguement à ceci

[users]
moi = mon_mdp
lui = son_mdp

et authz ressemble à ça

[/]
moi = rw
lui = r
* =

Lancement du serveur

svnserve -d -r /var/svn/premier_depot

Cependant, si vous souhaitez que cette commande soit automatiquement lancée au démarrage, créez un fichier /etc/init.d/svnserve qui contient (en modifiant la ligne OPTIONS) :

#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/svnserve
NAME=svnserve
DESC="le serveur SVN"
test -x $DAEMON || exit 0
OPTIONS="-d -r /var/svn/premier_depot"
. /etc/default/rcS
start() {
       echo "Démarre $DESC... "
       if ! start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- $OPTIONS > /dev/null 2>&1; then
               status=$?
               echo $status
               return $status
       fi
       return 0
}
case "$1" in
 start)
       start
       ;;
 stop)
       echo "Arrête $DESC: "
       start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
       echo $?
       ;;
 restart|force-reload)
       $0 stop
       sleep 1
       start
       ;;
 *)
       N=/etc/init.d/$NAME
       echo "Usage: $N {start|stop|restart|force-reload}" >&2
       exit 1
       ;;
esac
exit 0

Plusieurs projets

Avec svnserve, si vous voulez héberger plusieurs projets sur une machine, il y a 2 possibilités.

Un seul dépôt

Soit vous n'utilisez qu'un seul dépôt (/var/svn_unique par exemple). Alors, utilisez l'arborescence des répertoires pour séparer les projets (/var/svn_unique/projet1, /var/svn_unique/projet2, …). Les fichiers de configuration se situent dans /var/svn_unique/conf. Le fichier authz pourra ressembler à :

[/]
administrateur = rw
* =
 
[/projet1]
user1 = rw
user2 = r
* =
 
[/projet2]
user2 = rw
user3 = rw
* = r

L'intérêt est qu'il n'y a qu'un seul groupe de fichiers à gérer ; l'inconvénient est que si un commit est proposé pour un projet, le numéro de révision est incrémenté pour tous les projets.

Plusieurs dépôts

Ou alors vous pouvez séparer vos projets sur différents dépôts (/var/svn_mult/projet1, /var/svn_mult/projet2, …). Les fichiers de configuration se situent dans chacun des répertoires (/var/svn_mult/projet1/conf, /var/svn_mult/projet2/conf, ..) et ces fichiers sont tous indépendants. Pour lancer le serveur, faites toujours svnserve -d -r /var/svn_mult : cela détectera la présence de plusieurs dépôts.

L'intérêt est la complète indépendance des dépôts, avec l'inconvénient de la multiplicité des fichiers de configuration. Je préfère cependant largement cette seconde solution.

Notes

Ajout d'un nouveau dépôt

sudo svnadmin create /var/svn/nouveau

A moins que vous ne gériez plusieurs projets en les séparant par l'arborescence, vous devrez configurer /var/svn/nouveau/conf/svnserve.conf (et passwd et authz si besoin). Enfin

svn import -m "Import initial" repertoire/local svn://localhost/nouveau

pour remplir ce dépôt. Il n'y a pas besoin de rédemarrer le serveur.

Sauvegarde

Ne pas copier le répertoire /var/svn/nouveau (ca peut faire de la merde si qqun est en train de faire un commit par exemple). Préférez la commande du genre

svnadmin dump /var/svn/nouveau/ > /var/backups/nouveau.20070325

Du côté client

Pour importer le projet sur un ordinateur client, faites

svn checkout svn://nom_du_serveur/depot1 repertoire/client

Attention, cela ne crée pas de répertoire depot1 dans repertoire/client : il vaut donc mieux utiliser comme répertoire d'import repertoire/client/depot1. Les principales commandes sont ensuite svn : commit, diff, log et update.

linux/svn.txt · Dernière modification: 2009/08/03 20:25 (édition externe)
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki