Subversion, un système de gestion de versions
Je suis amené à utiliser Subversion depuis quelques temps, d’abord avec le projet KDE [fr], puis parce que je commence à contribuer à CyberCity 2034 [fr]. Subversion est un système de gestion des versions de fichiers, construit sur le principe client/serveur. Le principe est le suivant : les fichiers sont hébergés sur un dépôt (repository) du serveur. Chaque utilisateur récupère une copie de travail (working copy), qu’il est amené à modifier en local, sur son poste. Lorque son travail a avancé, il le soumet au dépôt, on dit qu’il le commite. Cela crée alors la version suivante (on parle de révision) du projet.
Le système a plusieurs intérêts : lorsque plusieurs développeurs travaillent en parallèle, ils sont avertis si les fichiers ont été modifiés lorsqu’ils tentent de commiter. Ils peuvent alors afficher les différences, voire fusionner les documents. D’autre part, toute révision des fichiers est gardée en mémoire. Si un commit génère une erreur, on peut revenir à la révision précédente… Très pratique sur des gros projets.
Subversion gère la pose de tags : lorsque le travail est arrivé à maturité, on peut décider de poser un tag sur la révision courante, afin d’enregistrer l’état du projet dans un dossier virtuel différent. Cela permet d’avoir constamment accès à une version précise, même si depuis, les fichiers du dépôt ont évolué. Les branches, c’est-à-dire l’évolution dans deux directions différentes d’un même projet, sont également prises en charge.
Subversion est un outil très puissant. De très nombreux projets de développement l’utilisent. Les utilisateurs peuvent souvent récupérer la dernière version d’un logiciel en se connectant anonyment au SVN du projet (ils sont en lecture seule).
En tant que développeur Web essentiellement, j’ai vu de nombreux avantages à utiliser Subversion :
- quand je travaillais en local, je devais mettre à jour via FTP à chaque avancement, ce qui prenait du temps et me faisait risquer d’écraser des fichiers évolués ;
- quand je travaillais à même le serveur, il m’est arrivé de perdre, sur une coupure de connexion, une partie d’un fichier, et donc de devoir fouiller dans les sauvegardes pour retrouver une vieille version du fichier ;
- Subversion intègre un système dérivé des triggers, les « hooks », qui déclenchent automatiquement des scripts à certains moments-clé (avant ou après commit par exemple). On peut ainsi les utiliser pour mettre à jour la version en ligne du site à des moments clé…
J’ai mis au point, à force de tester en local, une procédure pour installer un dépôt Subversion sur un serveur et mettre en place les accès à distance. Le tout se fait en une demi-heure, vous en saurez plus incessamment sous peu : en effet, la documentation abonde, mais je n’ai rien trouvé de synthétique correspondant parfaitement à ma situation. Je pense donc qu’il sera utile de faire un petit topo.
Thursday, April 24th, 2008