Serveur Debian - versionning de fichiers
Par Seza le mardi 4 septembre 2007, 21:22 - Serveur Debian - Lien permanent
CHAPITRE 9 : Subversion
Subversion ou autrement dit SVN est un outil bien agréable et utile pour les développeurs ou toutes personnes souhaitant versionnés des fichiers.
SVN, pour rappel, remplace avantageusement CVS - sûrement le logiciel le plus connu -. Je ne présenterais pas comment on utilise SVN car si vous êtes intéressé et que vous êtes là vous avez déjà trouvez sûrement beaucoup de tutoriaux concernant se sujet.
Passons à l'installation :
ALBAN@bebeserv:~$ sudo -i Password: bebevserv:~# apt-get update [...] bebevserv:~# apt-get upgrade [...] apt-get install subversion subversion-tools [...]
C'est presque terminé ! Il nous faut créer un repository :
bebeserv:~# cd /var bebeserv:/var# mkdir svn bebeserv:/var# cd svn
Voilà ici sera donc entreposé nos projet. Créons-en un pour l'exemple :
bebeserv:/var/svn# svnadmin --fs-type fsfs create mon_projet
Rien de plus simple.
Maintenant créons un modèle à importer de base dans notre projet avec les clasiques dossier « trunk »
, « branches »}} et « tags »
.
bebeserv:/var/svn# mkdir bases bebeserv:/var/svn# cd bases bebeserv:/var/svn# mkdir trunk branches tags bebeserv:/var/svn# cd .. bebeserv:/var/svn# svn import -m "Import des dossiers commum" /var/svn/bases/ file:///var/svn/mon_projet
Voilà nous avons un dossier « bases »
qui nous resservira sûrement plus tard et las commande « svnadmin »
avait créer un répertoire avec tout ce dont SVN à besoin pour fonctionner et entreposé les fichiers. D'ailleurs nous allons faire un tour dans la configuration de ce projet pour voir rapidement comment sont géré les utilisateurs :
bebeserv:/var/svn# cd mon_projet/conf
Paramétrons d'abord le comportement du serveur SVN associé à ce projet :
bebeserv:/var/svn/mon_projet/conf# nano svnserve.conf
[general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = Subversion bebeserv.bebenet.local repository
Voilà rien n'est autorisé pour les utilisateur anonyme (même pas la lecture) et les utilisateur authentifié auront le droit d'écrire dans le projet au mieux.
Pourquoi au mieux car l'on peut préciser les droits d'accès utilisateurs par utilisateurs (ou par groupe d'utilisateur) grâce au fichier « passwd »
et « authz »
.
Passwd pour créer les utilisateurs :
bebeserv:/var/svn/mon_projet/conf# nano passwd
[users] user = password user2 = password_2 user3 = password_3
Enregistrez ainsi simplement votre fichier d'utilisateur.
Authz pour préciser les droits des utilisateurs :
bebeserv:/var/svn/mon_projet/conf# nano authz
[groups] les_autres = user2, user3 [mon_projet:/] user = rw @les_autres = r [mon_projet:/trunk/dir/section_modifiable] @les_autres = rw
Voilà un petit exemple assez concis. Tout d'abord « user2 »
et « user3 »
sont mis dans un groupe « les_autres »
. Pour la racine de notre projet le groupe à le droit unique de lecture. Pour le dossier « trunk/dir/section_modifiable »
le groupe aura le droit d'écrire.
L'utilisateur « user »
quand à lui à le droit d'écriture partout.
Voilà c'est fini pour la configuration. Il vous reste à démarrer le serveur SVN. Pour ceci j'ai encore fait un petit script :
bebeserv:/var/svn/mon_projet/conf#cd /etc/init.d bebeserv:/etc/init.d# nano svn
Entrez ceci :
#! /bin/sh set -e case "$1" in start) echo -n "Starting svnserve" svnserve -d -r /var/svn echo "." ;; stop) echo -n "Terminating svnserve" pid=`ps -C svnserve -o pid=` kill -HUP $pid echo "." ;; restart) echo -n "Terminating svnserve" pid=`ps -C svnserve -o pid=` kill -HUP $pid echo "." echo -n "Starting svnserve" svnserve -d -r /var/svn echo "." ;; *) echo "Usage: /etc/init.d/svn {start|stop|restart}" exit 1 esac exit 0
UPDATE : Un grand merci pour la contribution de " le père Léon " qui m'a permi de mettre à jour le script de démarrage, en ajoutant le cas STOP. (le RESTART en découle forcément)
A l'heure actuel je n'est pas trouver comment arrêter proprement le serveur.
Mettez les bons droits d'accès et faîtes un « update-rc.d »
pour lancer ce script au démarrage du serveur.
bebeserv:/etc/init.d# chmod 755 svn bebeserv:/etc/init.d# update-rc.d svn start 98 2 3 4 5 .
Démarrez finalement le serveur pour finir cette session :
bebeserv:/etc/init.d# /etc/init.d/svn start
N'oubliez pas votre firewall :
bebeserv:/etc/init.d# nano /etc/network/iptables
iptables -t filter -A INPUT -i eth0 -p tcp --dport 3690 -d $MYIP -j ACCEPT iptables -t filter -A OUTPUT -i eth0 -p tcp --dport 3690 -s $MYIP -j ACCEPT
bebeserv:/etc/init.d# /etc/init.d/iptables-conf restart
C'est fini =) A très bientôt !
bebeserv:/etc/init.d# exit logout ALBAN@bebeserv:~$
Commentaires
Pas mal ce guide, merci :)
Je préfère largement les systèmes de gestion de versions décentralisés (Mercurial ♥) aux centralisés (dont Subversion est le meilleur, je reconnais), mais les scripts sont des bons modèles.
Cordialement