Subversion remplace CVS pour PhpWebGallery
Par Pierrick, dimanche 11 décembre 2005 à 23:48 / categorie: Développement / tags: développement, opensource, PhpWebGallery, travail / #55 / rss
Il était temps ! Avec une simplicitié étonnante, le convertisseur de dépôt CVS vers dépôt Subversion a permis de faire la transition. Grand merci aux administrateurs de Gna! qui ont encore fait preuve d'une rapidité exemplaire, je suis vraiment ravi d'utiliser leurs services.
Mais pourquoi vouloir quitter CVS au fait ? En tant qu'administrateur/expert CVS dans ma boîte depuis 2 ans 1/2 maintenant, j'ai très vite été confronté aux limites de cet outil. Voici une liste non exhaustive.
Pas de notions de patch. CVS gère les fichiers d'un projet, il n'a pas de notion de patch, ie pas de notion d'unité pour un commit donné. Les versions sont fichier par fichier, si je commite 10 fichiers simultanément, cela revient à faire 10 commits. Autrement dit, il est difficile a posteriori de retrouver les modifications des fichiers correspondant à une correction. La solution de contournement consiste à abuser des tags.
Impossible de renommer un fichier sans en perdre l'historique : dans CVS, mieux vaut ne pas avoir besoin de renommer un fichier. 2 solutions : la propre consiste à supprimer le fichier de CVS par "cvs remove fichier1", puis à rajouter le fichier renommer "cvs add fichier1bis". On perd tout l'historique :-/. Solution "moins propre" : renommer le fichier directement dans le dépôt. On garde tout l'historique, mais cela pose un problème philosophique : le snapshot d'un module sur une date donné ne doit pas changer quelque soit la date de la fabrication du snapshot.
Répertoires non versionnés. Lorsqu'on rajoute un répertoire sur une branche, le répertoire devient présent sur toutes les branches (illogique).
Notion de branche ajoutée a posteriori. Clairement, lorsqu'on utilise CVS, on se rend compte que la notion de branche ne faisait pas parti des objectifs de départ. Je ne peux pas croire que CVS ait été conçu en prenant en compte les branches. Sous CVS, une branche est un tag spécial, une fusion est un update déguisé. L'absence de numéros de version propre à l'intégralité du dépôt oblige à poser de très nombreux tags sur l'ensemble de la distribution. Bref, à chaque fois que je fusionne les corrections d'une branche sur une autre, j'ai la désagréable impression de bidouiller. A mon travail, nous avons environ une vingtaine de branches en parallele et ça commence à devenir le bordel.
Evidemment, Subversion répond à toutes ces problématique. Il n'y a pas de secret : à l'origine, ce sont des experts CVS qui ont conçu, 15 plus tard, Subversion. L'objectif de Subversion est clair : être dans la lignée de CVS, sans les limites de CVS. Subversion a ses limites, mais elles sont plutôt liées aux choix des développeurs entre un mode centralisé et distribué.
Aujourd'hui reporter une correction entre la branche 1.5 et le tronc commun, c'est que du bonheur. Prochaine étape : migrer le référentiel CVS de ma boîte, mais c'est une autre échelle de grandeur que PhpWebGallery :-)
Commentaires
1. Le lundi 12 décembre 2005 à 08:15, par Nicolas
2. Le mercredi 21 décembre 2005 à 21:45, par tlegras
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.