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.