Subversion (SVN) est un logiciel libre de gestion de versions : c'est un programme permettant à plusieurs personnes de travailler sur des documents placés sur un serveur en commun, en gérant les modifications et sauvegardant l'historique du projet. Ces logiciels sont surtout utilisés pour la conception collaborative de logiciels, quand une équipe de plusieurs programmeurs (mais aussi artistes, etc.) a besoin de mettre son travail en commun et de suivre les modifications de tous les participants.
SVN (que nous dénommerons ainsi dans la suite de cette news) est un des logiciels majeurs dans ce secteur, et une nouvelle version majeure, la
1.5, est sortie il y a deux semaines.
Quelques connaissances dans le domaine…
L'histoire de SVN
Historiquement, le logiciel de gestion de versions utilisé par la plupart des projets libres est
CVS (Concurrent Versions System). Créé dans les années 80, il a rendu de bons et loyaux services à de nombreux projets, mais son âge commençait à se montrer. SVN, lancé en février 2000 par CollabNet, une entreprise californienne, s'est constitué comme un remplaçant de CVS de nouvelle génération, en essayant d'en reprendre les principes et d'assurer une certaine compatibilité, tout en résolvant certains défauts et apportant de nouvelles fonctionnalités.
Comment fonctionne un système de gestion de versions ?
Pour comprendre la raison du passage de CVS à SVN, il faut tout d'abord comprendre un peu mieux leur fonctionnement.
Tout d'abord, l'utilisation de SVN n'est possible que si toutes les personnes du projet installent un programme supplémentaire, appelé un
client SVN. Ce client se connectera au serveur commun et échangera des informations avec lui. Sous Windows, on peut par exemple utiliser le très connu
Tortoise SVN. Il vous permettra en quelques clics de gérer à distance votre projet.
Subversion remplit en fait toutes les fonctions de base pour permettre aux utilisateurs de gérer un projet à plusieurs. On peut par exemple citer les suivantes :
- Le checkout : c'est une des fonctions primordiales de SVN. Il va créer un dossier contenant les fichiers du projet, et conserve des informations supplémentaires telles que la version des fichiers, pour pouvoir ensuite mettre à jour le projet de manière très rapide. Ce checkout est nécessaire lorsque l'on commence à travailler sur un projet.
- Le commit : lorsque quelqu'un modifie un fichier du projet, la modification n'est en fait effectuée qu'en local, sur l'ordinateur du développeur. Pour la rendre publique et visible de tous, le développeur doit effectuer un commit qui enverra tous les nouveaux fichiers sur le serveur.
- L'update : c'est un peu l'opération inverse du commit : lorsqu'un commit a été réalisé, les autres développeurs doivent effectuer une update (mise à jour en français) pour récupérer les nouvelles versions de tous les fichiers.
Les logiciels comme Tortoise SVN simplifient grandement ces tâches. Sans eux, vous pourriez également passer par la ligne de commande pour réaliser ces fonctions (par le biais de
svn checkout,
svn commit ou
svn update, rien de compliqué de ce côté

). Le
tutoriel de Dalshim sur Subversion vous expliquera toutes ces subtilités plus en détail

.
Pour finir, signalons quand même qu'à la différence de systèmes de gestion de versions que l'on peut qualifier de
décentralisés, Subversion nécessite un serveur pour fonctionner correctement, et ne permet ainsi pas de développer sans connexion internet, même s'il est tout de même possible d'utiliser son propre ordinateur comme serveur.
L'interface de Tortoise SVN, un client Subversion très utilisé
Un changement donc justifié
SVN corrige en fait de nombreux problèmes présents dans CVS : par exemple, les
commit atomiques n'étaient pas supportés, ce qui obligeait ainsi à diviser un ensemble de
commits en plusieurs plus petits
commits et faisant ainsi perdre un temps précieux au développeur.
Une autre fonctionnalité manquante de CVS était la possibilité de renommer ou de déplacer des fichiers tout en gardant l'historique des modifications de ces fichiers. Ainsi, tout renommage d'un fichier impliquait la perte de son historique. SVN permet maintenant cela d'une manière très facile, avec la commande
svn mv [source] [destination] 
.
SVN ajoute aussi une gestion basique des droits sur les fichiers, permettant ainsi de contrôler qui peut modifier certains répertoires, via des groupes d'utilisateurs. Cela n'était pas possible avec CVS : une personne ayant accès en écriture au projet l'avait sur tous les fichiers du projet.
Les nouveautés de SVN 1.5
De nombreux bugs corrigés
Plus de 150 erreurs qui ont étés corrigées dans cette nouvelle mouture de Subversion. Cette correction massive de bugs permet une utilisation plus confortable de Subversion au quotidien : en effet, il est plutôt désagréable de voir son client SVN planter pendant un très long checkout

.
De nouvelles fonctionnalités
En plus de ces nombreux bugs corrigés, SVN 1.5 apporte de nombreuses nouveautés au niveau des fonctionnalités. On peut par exemple citer les suivantes :
- La gestion des copies et déplacements de fichiers ont été totalement revues et améliorées : en effet, lorsque une copie de fichier était effectuée sur le serveur via svn move puis svn commit, le comportement adopté par les précédentes versions de Subversion était le suivant : tout d'abord, on envoyait un tout nouveau fichier ayant le contenu de l'ancien fichier, puis on supprimait l'ancien fichier. Ce comportement était plus que lent avec de très gros fichiers (obligation de retélécharger le fichier en entier). Cela est maintenant remplacé dans SVN 1.5 par un déplacement direct du fichier sur l'ordinateur du développeur.
- SVN est beaucoup plus réactif lorsque l'on veut annuler une action en cours : il fallait parfois plus de 5 secondes dans les versions précédentes pour que SVN stoppe l'action en cours.
- Le programme a été intégralement optimisé et est ainsi plus rapide à l'exécution que dans les précédentes moutures.
- Le sparse checkout fait son apparition et permet ainsi de récupérer uniquement une partie du projet, et pas l'intégralité. Cela était laborieusement faisable avec les précédentes versions, mais peut maintenant être réalisé très rapidement.
- Le merge tracking permet de rendre compte de la fusion de deux branches du projet. Pour information, une branche est une version à part du projet qui permet de travailler localement sur le code, sans que les modifications affectent immédiatement les autres branches. On peut ainsi y faire des tests de nouvelles fonctionnalités expérimentales. Quand on veut intégrer ces fonctionnalités dans la branche principale (celle qui est distribuée aux utilisateurs), on réalise ce que l'on appelle une fusion de branches (ou merge en anglais), fusionnant deux branches en une seule. Avant, c'était réalisé via des déplacements de fichiers ou des patches, ce qui rendait l'opération très délicate. Cela est maintenant faisable automatiquement via la commande svn merge.
Du nouveau également du côté de Tortoise SVN
L'équipe de développement de Tortoise SVN a profité de la sortie de SVN 1.5 pour sortir leur nouvelle version de Tortoise SVN, la version 1.5.0.
Plusieurs améliorations sont au rendez-vous, dont notamment une révision de l'interface graphique permettant un plus grand confort de lecture, et l'utilisation de plusieurs nouvelles icônes s'affichant notamment sur les dossiers du projet.
Conclusion
Nous avons fait le tour des principales nouveautés de cette version de SVN, mais également de celles de la nouvelle version de Tortoise SVN. Pour plus d'informations, et pour une liste exhaustive des améliorations, je vous conseille de vous référer au
ChangeLog de SVN 1.5.
SVN 1.5 est téléchargeable depuis le
site officiel de Subversion :
En conclusion, Subversion 1.5 apporte de nombreuses nouveautés comblant les manques des précédentes versions, et corrigeant des bugs importants et gênants pour l'utilisateur. Des fonctionnalités comme le
merge tracking n'annoncent que du bon pour l'avenir de SVN et sur les prochaines versions à venir.
Merci à vincent1870 pour la relecture. 
47 Participations
Connectez-vous !
Connectez-vous !
Revenir à la liste des news