Installation d’un serveur SVN sous Ubuntu

Date: 29/04/2009 | Catégories: Developpement,Open-source,Systeme | Tags: ,,,,

Le but de ce billet est de mettre en place un serveur de gestion de versions basée sur SVN+SSH.

On commence par installer le package subversion qui comprend à la fois le client et le serveur SVN.

# sudo svn update
# sudo apt-get install subversion

on créé un utilisateur et un groupe générique svn.

# sudo adduser svn
Adding user `svn' ...
Adding new group `svn' (1000) ...
Adding new user `svn' (1001) with group `svn' ...
Creating home directory `/home/svn' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for svn
Enter the new value, or press ENTER for the default
Full Name []: SVN
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/N] y

Pour des questions de sécurité, je vous conseille de désactiver le SHELL pour cet utilisateur:

# sudo vipw
svn:x:1001:1000:SVN,,,:/home/svn:/usr/sbin/nologin

Si vous souhaitez accéder à votre serveur SVN avec un compte unix bien précis, il faut ajouter le login de ce compte au groupe svn:

# sudo vigr
svn:x:1000:nicolargo

Puis on créé un répertoire ou seront stockées les sources de vos programmes.

# sudo mkdir /var/svn

Il faut ensuite demander à SVN de créer un répertoire SVN pour notre projet:

# sudo svnadmin create /var/svn/projet

Puis de changer les droits:

# sudo chown -R svn:svn /var/svn
# sudo chmod -R 775 /var/svn

Il ne reste plus qu'a tester votre serveur à partir d'une machine distante en "important" votre projet (dont les sources sont localisées dans le répertoire ~/projet pour illustrer ce billet).

Avant l'importation, on va créer la structure classique de SVN:

projet
- trunk
- branches
- tags

client# svn mkdir --parents  svn+ssh://nicolargo@monserveur/var/svn/projet/trunk -m ""
client# svn mkdir --parents  svn+ssh://nicolargo@monserveur/var/svn/projet/tags -m ""
client# svn mkdir --parents  svn+ssh://nicolargo@monserveur/var/svn/projet/branches -m ""

Puis on importe les sources:

client# cd ~/projet
client# svn import . svn+ssh://nicolargo@monserveur/var/svn/projet/trunk -m "Premiere importation"
nicolargo@monserveur's password:
...
Révision 0 propagée.

Il ne reste plus qu'a tester l'exportation des sources:

client# cd ~
client# mv projet projet.init
client# svn co svn+ssh://nicolargo@monserveur/var/svn/projet/trunk projet
...
Révision 0 extraite.

Pour aller plus loin dans l'utilisation de votre nouveau serveur SVN, je vous conseille le très bon article de Ulhume sur son non-blog...(remplacer juste http:// par svn+ssh://)

Partager ce billet