Ziirish's Home :: Blog

Ziirish's Pub

 
 

Parce que parfois c'est bien de pouvoir revenir en arrière (ah ce que j'aimerais pouvoir revenir sur certaines choses... POURQUOI J'AI PAS COMMIT BORDEL !!!), je vais vous présenter rapidement (parce que là, j'ai pas le temps, et j'ai pas que ça à foutre :D ) comment mettre en place un petit dépôt SVN.

SVN, ou Subversion est un logiciel de gestion de versions. Kikipédia vous en dira plus si vous êtes curieux. Mais pour faire simple, vous disposez d'un dépôt "centralisé" sur lequel se trouve votre application (enfin, les sources), vos documentations (en LaTeX pour faire sérieux), etc. À partir de ce dépôt, vous vous créez une copie de travail locale, sur laquelle vous pouvez faire votre petite tambouille, vos collègues/amis peuvent faire de même, et quand vous estimez que vos modifs sont stables, ou selon votre "politique", vous pouvez commiter vos modifs sur le dépôt.

Comme plusieurs personnes peuvent travailler en parallèle, il est possible que certains fichiers aient été modifiés entre votre dernier update et votre commit. Mais n'ayez crainte, SVN s'occupe de tout. S'il ne détecte pas de conflits, il est capable de merger tout seul, comme un grand. S'il y a un conflit, alors il vous demandera quoi faire. Avec un outil de ce genre, vous êtes donc capable de revenir à une version précédente (en cas de régression par exemple), et puis c'est super convi' pour bosser à plusieurs sur un projet.

Pour mon projet OpenSource, je l'utilise déjà depuis 1 an et demi, mais j'avais utilisé une forge qui me proposait un dépôt tout fait. Ce n'est qu'il y a quelques semaines que j'ai mis en place mon premier dépôt SVN tout seul, comme un grand, et puis un deuxième.

C'est super facile, alors je vais vous expliquer vite fait comment faire \o/

D'abord, je vous laisse installer SVN de la manière que vous préférez .

On va supposer que vous avez besoin d'un dépôt pour plusieurs utilisateurs (c'est quand même plus fun comme ça), du coup, on va se baser sur la gestion des autorisations UNIX.

On va donc faire un petit workaround :


% mv /usr/bin/svn /usr/bin/svn.ori
% cat >/usr/bin/svn<<EOF
#!/bin/sh
umask 002
/usr/bin/svn.orig "$@"
EOF
% mv /usr/bin/svnserve /usr/bin/svnserve.ori
% cat >/usr/bin/svnserve<<EOF
#!/bin/sh
umask 002
/usr/bin/svnserve.orig "$@"
EOF
% chmod +x /usr/bin/svn{,serve}

Ainsi, chaque fois qu'un fichier sera déposé par un utilisateur, il sera également accessible en écriture pour le groupe.

Lors de l'installation de subversion, vous avez du créer un utilisateur "svn" :


% grep svn /etc/passwd
svn:x:66:66:SVN Owner:/srv/svn:/bin/false

Avec ça, on est presque prêt. Il ne nous reste plus qu'à créer notre dépôt :


% mkdir /svnroot/projet1
% svnadmin create /svnroot/projet1

On va supposer que Bernard et Bianca vont travailler sur ce projet, on va donc créer un groupe du nom de notre projet, et y ajouter nos utilisateurs :


% addgroup projet1
% adduser bernard projet1
% adduser bianca projet1

On attribue également notre dépôt à notre groupe :


% chown -R svn:projet1 /svnroot/projet1

Maintenant on édite la configuration de notre dépôt.


% cat >/svnroot/projet1/conf/svnserve.conf<<EOF
[general]
anon-access = read
auth-access = write
password-db = passwd
EOF

Il ne nous reste plus qu'à démarrer notre serveur :


% svnserve -d

Désormais, on peut remplir notre dépôt avec la version initiale du projet. On va utiliser par exemple le svn over ssh :


bernard$ svn import /mon/projet svn+ssh://bernard@serveur/svnroot/projet1 -m "commentaire"

Bianca n'a plus qu'à récupérer une copie de travail :


bianca$ svn checkout svn+ssh://bianca@server/svnroot/projet1

Vous avez désormais les bases pour bien commencer avec SVN ;) Plus tard, nous verrons 2-3 trucs pour aller plus loin.