logo de l'article

Utiliser SubVersion - gestionnaire de versions

14/11/2007

Presentation


Subversion (svn) est un système de gestion de versions multiplateforme, permettant notamment de maintenir le développement d’un code source et sa documentation ou, au sens large, d’un projet collaboratif (logiciel, site Internet, documents, ect).


Il s’appuie sur le principe d’un dépôt unique et central qui garde en mémoire toutes les versions qui ont été validées (comitées) depuis les versions locales clientes. On peut ainsi revenir rapidement en arrière, ou déterminer les différences entre deux arborescences quelconques.


Subversion est distribué sous licence Apache et BSD, s’intalle sur le serveur avec Apache (les communications avec les clients se font la plupart du temps avec WebDav) et est souvent complété de Trac pour la gestion des sites Web.


Au niveau client, on peut facilement interfacer subversion avec les explorateurs de fichiers :

 KdeSVN (KDE - Linux)

 Nautilus-script-collection-svn (Gnome - Linux)

 TortoiseSVN (Windows)






Le tutorial suivant propose l’installation de la partie serveur et cliente SVN en locale sous Ubuntu 7.10 - Gnome.


Ce système me sert par exemple pour maintenir à jour un site générique déployé (et développé) à plusieurs endroits dans /var/www.


Serveur


Installer les paquets


sudo apt-get install subversion libapache2-svn 

Créer un projet dans le dépôt central (répertoire svn), attribuer les droits d’écriture apache et lancer le serveur


svnadmin create /chemin/svn/mon_projet



sudo chown -R www-data:www-data /chemin/svn/



svnserve -d -r /chemin/svn/

Configurer Apache pour l’accès Webdav au dépôt central


sudo gedit /etc/apache2/mods-available/dav_svn.conf

Ajouter :


<Location /svn>

DAV svn

SVNParentPath /chemin/svn

</Location>

Redémarrer apache :


sudo /etc/init.d/apache2 restart

Le dépôt (vide) doit être visible via l’interface web :

http://localhost/svn/mon_projet


Client


Au niveau du client, il suffit d’installer l’extension pour nautilus :


sudo apt-get install nautilus-script-collection-svn



nautilus-script-manager enable Subversion

accessible en navigation contextuelle (clic droit > script).


Premiere mise à jour


1. Monter sur le serveur le projet en version 1 avec un svn import en ligne de commande, car la commande n’est pas accessible dans nautilus :


svn import [CHEMIN] URL_DU_DEPOT


cd /chemin_local/mon_projet_v1

svn import http://localhost/svn/mon_projet

2. Descendre une copie locale du projet v1 dans l’emplacement de travail local avec checkout , accessible depuis nautilus : clic droit dans nautilus > Scripts > Subversion > More > Checkout


Entrer l’adresse du dépôt central, les fichiers sont copiés localement et un dossier caché .svn est créé dans le répertoire de travail.


Dans mon cas je répète l’opération sur chaque site concerné par le dépôt :

 /home/pvincent/Programmation/www/site1

 /home/pvincent/Programmation/www/site2

 /home/pvincent/Programmation/www/site3

 ...


Note : il n’y a pas de restriction à travailler avec plusieurs dépôts centraux sur la même machine qu’ils soient locaux ou distants étant donné que la configuration de mise à jour stockée dans .svn est propre à chaque répertoire de travail.


3. Travailler dans le(s) répertoire(s) de travail avec les commandes contextuelles add (ajout de dossiers ou de fichiers), delete (suppression de dossiers ou de fichiers), commit (envoi sur le serveur) dans la navigation de Nautilus


4. La version centrale du dépôt est maintenue et peut être mise à jour sur chaque répertoire de travail avec update, toujours dans Nautilus




Pour aller plus loin


 http://doc.ubuntu-fr.org/subversion

 http://www.toutprogrammer.com/artic...

 http://doc.alternc.org/admin/ch04.html


Note : le principe est le même lorsqu’on travaille à plusieurs sur un projet central, à la gestion des droits d’accès prêt.