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://)