L’essor de Subversion (The Rise of Subversion)

March 6th, 2006 par Franck Arnulfo

Sourceforge, à ma connaissance le plus grand hébergeur de logiciel libre vient d’ajouter Subversion, le gestionnaire de versions (open source bien sûr) à sa liste de services offert (en plus de CVS).
C’est l’occasion de faire un point sur ce gestionnaire de versions.
Le but avoué de Subversion est de remplacer CVS en reprenant ses fonctionnalités mais en repartant de zéro pour pallier à ses défauts de naissance, CVS n’étant pas destiné à l’origine à devenir ce standard qu’il est devenu.
A noter que c’est justement des anciens de CVS qui participent à Subversion dont Karl Fogel, auteur entre autre de Open Source Development with CVS et de Version Control with Subversion. Il travaille à temps plein sur Subversion sponsorisé par CollabNet qui fournit les ressources nécessaires au site Tigris.org qui héberge Subversion mais aussi d’autres projets open source tel que Scarab (un bug tracker), TortoiseSVN (un client SVN windows), Subclipse (un plugin Eclipse pour Subversion ), ArgoUML (un éditeur UML), etc…

Parmi les nouvelles fonctionnalités de Subversion voici celles qui me semblent importantes:

  • le commit atomique : un ensemble de changement (changeset) est appliqué en une seule fois ou pas du tout, au contraire de cvs qui fonctionne fichier par fichier (bon il faut avouer que l’on s’en sortait bien quand même sans cela),
  • l’archivage du renommage de fichier et de répertoires : c’est un des gros plus par rapport à CVS qui ne permet pas cela et qui oblige à manipuler *à la main* le repository pour déplacer/renommer un fichier sans perdre son historique,
  • la simplification du concept des branches : les branches ne sont plus dans une dimension spéciale mais existent bien sous forme de vrai répertoire distincts.

Pour une liste exhaustive je vous renvoie au site principal de Subversion ainsi qu’au livre en ligne gratuit.

Concernant l’installation, le serveur Subversion est disponible pour un grand nombre de plateforme dont bien sûr Linux, Windows, Mac OSX.
Les clients Subversions dont TortoiseSVN sont bien présents ainsi que les plugins pour les deux principaux IDE Java:

L’aspect migration à partir de CVS est bien prévu avec un script de migration cvs2svn.

Donc Subversion est:

  • techniquement mieux que CVS
  • disponible presque partout
  • bien intégré aux IDEs via des plugins

Mais tout cela est-il suffisant pour changer ou pour partir sur Subversion pour un nouveau projet ?

Pas de réponse affirmative mais plutôt quelques éléments à considérer :

  • Subversion 1.0.0 est sorti le 23 février 2004, la version actuelle est la 1.3.0, une preuve de continuité
  • Sourceforge, le plus gros hébergeur de logiciel open source (113 000 projets) est pratiquement le dernier à passer à Subversion, tous les java.net, javaforge, BerliOS, supportant Subversion depuis longtemps, ce que l’on peut traduire comme cela : si Sourceforge le fait, vu sa taille, c’est clairement le signe d’une tendance forte et durable
  • de très gros projets open source sont passés à Subversion:
    • KDE, l’environnement graphique trés populaire sur Linux : près de 4,5 millions lignes de codes
    • GCC, le compilateur GNU gérant le C,C++, Ada, Objective C et même Java, ayant aussi plusieurs millions de lignes de codes

Je n’ai parlé ici que de Subversion mais il existe bien sûr d’autres gestionnaires de sources (Arch, Darcs, …) ayant des fonctionnalités plus évolués (repositories distribués: pas de serveur centralisés, …) et donc peut-être aussi plus compliqué à mettre en place.
Pour l’anecdote on peut noter que les sources du noyau Linux sont gérés par Git, un outil dévelopé par Linus Torvalds lui-même suite au changement de license de BitKeeper, un gestionnaire de source propriétaire développé pratiquement pour les besoins de Linus et qui dans un premier temps était utilisable gratuitement pour des projets open sources.
Mais Git n’est pas vraiment un gestionnaire de source… Je n’irais pas plus loin n’ayant toujours pas bien compris comment cet outil fonctionnait.

Voilà ce n’était pas un article technique sur Subversion (d’autres le font beaucoup mieux que moi cf les liens plus bas) mais plutôt un point sur l’origine et l’état d’adoption de Subversion dans le monde de l’Open Source. Ce qui peut vous convaincre (ou votre chef ;-) ) de l’intérêt durable de Subversion.

Sources:

4 Responses to “L’essor de Subversion (The Rise of Subversion)”

  1. Eric Says:

    Il y a un autre _énorme_ point en faveur de subversion : la connexion client/server se fait par http (donc beaucoup moins de problème de firewall/proxy, etc.), et la partie sécurisée est disponible avec http+ssh!

    En ce qui concerne Netbeans, il y a une version générique de la partie cliente de subversion qui est disponible depuis plus d’un an, et à l’heure actuelle une intégration équivalente à CVS est en cours de développement.

    Pour l’outils de migration CVS => Subversion, sachez que la migration peut se heurter à certains problèmes sur les tags et les branches (CVS étant -malheureusement- plus souple que Subversion).

    Je vous signale aussi que 2 outils pur java existe pour CVS et SVN : SmartCVS et SmartSVN sur http://www.smartcvs.com (l’auteur a participé au développement de CVS pour Netbeans)

    Zut le blog de Laurent est down…

  2. Simon Says:

    Un autre point qui met définitivement KO ses concurrents : subversion sait gérer, de manière optionnelle, le verrouillage de fichiers.

    En effet par défaut subversion fonctionne comme CVS en mode “Update-Modify-Merge-Commit” (ou “Optimistic locking”). Un fichier peut être modifié simultanément par plusieurs utilisateurs. C’est lors du merge que l’on peut rencontrer des conflits qu’il faut alors corriger manuellement. Ce mode s’avère parfaitement adapté au développement collaboratif sur des fichiers texte (java, …). Il nécessite un certain effort de communication dans l’équipe et un commit fréquent des sources (bons points donc). Par contre il ne convient pas :
    - pour les fichiers binaires (images, word)
    - pour les décideurs informatiques adeptes du mode “Lock-Modify-Unlock” (VSS, ClearCase) et accros aux prestations onéreuses des consultants Microsoft ou IBM ;-) Par expérience je suis sûr que l’on passe + de temps à verrouiller chaque fichier qu’à résoudre les rares conflits de merge.

    Heureusement subversion sait gérer depuis la version 1.2 ce mode lock (commande svn needs-lock je crois). Histoire de mettre tout le monde d’accord et d’asseoir sa position de leader…

    Sinon petite remarque amusante sur clearcase : il faut payer (cher je crois) pour avoir l’option de visualisation des status de fichiers !!! Sans ça impossible de savoir à l’avance si un fichier est verrouillé ou non. Pratique…

  3. Freddy Mallet Says:

    Pour ce qui est du commit atomique, en fait à l’usage quand on travaille sur une activité (bug, improvement, feature ) et qu’on souhaite commiter le tout de manière atomique on a tout de même assez régulièrement (sauf pour les bugs) des modifications, des créations et des suppressions de fichiers.

    La question à l’ami Franck est donc la suivante:

    Est-ce que la notion de commit atomique englobe l’ajout et la suppression de fichier ?

  4. Franck’n Friends weblog » Blog Archive » Les nouveaux systèmes de gestion de version Says:

    […] En complément de l’article concernant Subversion, je vous conseille de voir la présentation de Stéphane Bortzmeyer lors des Journées Réseaux 2005 qui fait un point sur les nouveaux systèmes de gestions de version (Version Control System VCS) dont Subversion mais surtout qui présente le futur selon lui : les systèmes de gestion de version distribués. […]

Leave a Reply

You must be logged in to post a comment.