Subversion vs CVS

J’ai utilisé un peu SVN et CVS, mais il faudra en choisir un pour un nouveau projet que je vais commencer.

Est-ce que quelqu’un qui a utilisé les deux à la fois peut offrir des avantages et des inconvénients? Les meilleures ressources d’apprentissage seraient également appréciées.

Ce sera pour un petit projet, juste un ou deux développeurs à démarrer.

J’ai utilisé les deux. Il n’y a pas de comparaison vous voulez svn. La seule raison d’utiliser CVS est que vous entrez ou reprenez un système existant avec une gestion qui ne veut pas changer le statu quo. Si vous commencez un nouveau projet, il est pratiquement impossible de prétendre que CVS est meilleur que Subversion.

Si vous parcourez Google, vous devriez trouver de nombreuses comparaisons et des justifications pour utiliser Subversion sur CVS. Quelques avantages de Subversion sur CVS:

  • peut déplacer ou renommer des fichiers ou des répertoires proprement
  • commits atomiques
  • copie et twigment “bon marché”
  • les commits sont des changesets sur l’arbre entier (pas seulement les historiques sur des fichiers individuels)

Cela dit, je vous recommande également d’explorer certains des VCS dissortingbués tels que Bazaar, Mercurial et git. Personnellement, j’utilise git sur tous mes projets.

Subversion a des victoires substantielles sur CVS:

  1. bonnes options distantes http / https / svn vs pserver
  2. commits atomiques
  3. support d’outil omniprésent
  4. Renommer
  5. versioning des répertoires

Cependant, il a de graves lacunes. Le plus important est que les twigs et les tags ne sont pas des citoyens de première classe dans svn, ce ne sont que des répertoires qui adhèrent à une convention. En plus de perdre certains des avantages de la création et du balisage réels (mentionnés dans d’autres commentaires), le plus gros problème qu’elle crée est le fait qu’il est très facile de bousiller.

L’utilisation de la convention plutôt que de la configuration par Subversion signifie que vous devez réfléchir à la structure de vos référentiels à l’avance et vous assurer que tout le monde y adhère. Sinon, vous créez un monde de souffrance pour les générations futures, sans parler des outils qui vous permettront de prendre votre repository en pension.

La fusion et la duplication étaient presque inexistantes (bien pour) avant 1.5. 1.5 a pris des mesures pour remédier à ces deux problèmes, mais des améliorations sont encore possibles. La fusion dans la subversion est encore beaucoup plus difficile que nécessaire.

SVN sur CVS est presque une évidence. Cependant, vous seriez négligent de ne pas au moins considérer ce que les DVCS ont à offrir (Git, Hg, Bzr) ou si votre budget le permet, il existe des outils commerciaux avec une excellente réputation (Accurev, Perforce).

Subversion est probablement le bon choix, mais vous devez faire vos devoirs pour obtenir les meilleurs résultats. Commencez avec le livre rouge http://svnbook.red-bean.com/

Bien que je choisisse Subversion plutôt que CVS dans la plupart des cas, vous devriez savoir ce que vous manquez avec Subversion:

  • CVS considère les balises et les twigs comme différentes choses. Subversion ne le fait pas. Cela signifie que les outils tiers construits au-dessus de Subversion (par exemple, les IDE avec intégration du contrôle de source) ont un travail plus difficile en connaissant la différence. Vous devez généralement faire une configuration spéciale pour indiquer où se trouvent vos tags et vos twigs, et vous devez vous assurer que vos utilisateurs respectent une certaine disposition du système de fichiers.

  • Subversion ne peut pas regarder un fichier et vous dire à quel moment quelqu’un a créé une twig ou un tag. Des outils comme CVSGraph peuvent utiliser cette information pour dessiner une arborescence de l’historique d’un fichier. Pour faire cela avec Subversion, vous devez rechercher tous les répertoires de twig / tags et je n’ai vu aucun outil qui le fait bien.

  • CVS existe depuis plus longtemps et les outils tiers sont plus stables, selon mon expérience.

Appelez-moi à l’ancienne, mais j’ai beaucoup préféré le modèle de twigment / marquage sous CVS.

Dans CVS, les twigs et les tags sont des choses différentes. Une balise est une étiquette pour une révision. Ils sont super utiles pour les choses comme le marquage d’une balise PRODUCTION pour les fichiers à synchroniser avec votre serveur Web. Vous n’avez pas besoin de fusionner pour mettre à jour les fichiers PRODUCTION – vous déplacez simplement la balise.

Les twigs vivent dans le même «espace de noms» que le fichier principal – il est facile de retrouver tous les mods d’un fichier particulier.

En SVN, il n’existe pas de balise. Il n’y a que des twigs. Si vous voulez des balises, vous devez créer une twig et prétendre qu’elle est une balise. Les twigs sont essentiellement des copies de fichiers. La dernière fois que j’ai utilisé SVN pour les twigs / fusions, vous avez dû enregistrer la révision du fichier pré-ramifié si vous espériez jamais le fusionner (notez que je ne suis pas un expert SVN, donc cela peut avoir changé).

Cela étant dit, je pense que SVN est meilleur à tous égards et que vous ne devriez probablement pas démarrer un nouveau projet avec CVS.

Je suppose que vous allez avoir beaucoup de réponses à cela. Ils pourraient même tous être d’accord.

Entre ces deux choix, je pense qu’il ne fait aucun doute que vous devriez utiliser Subversion. Subversion a été conçu comme un “meilleur CVS” et, par conséquent, personne ne maintient plus activement CVS. Subversion a la capacité de renommer et de déplacer des fichiers sans perdre l’historique, de prendre en charge les validations atomiques, un format de référentiel plus robuste, des méthodes d’access plus modernes, une meilleure prise en charge d’outils tiers et la liste continue.

Subversion est comme un meilleur CVS. Il gère bien les fichiers et répertoires en mouvement. Il prend en charge les twigments, même s’il est inférieur aux VCS dissortingbués.

Vous pouvez également envisager d’utiliser un VCS dissortingbué tel que git, bazaar ou mercurial.

Edit: Voici un lien vers une question similaire

Généralement Subversion .. Cependant, vous devriez faire attention aux problèmes de ressources.

Lorsque je travaillais pour une société de jeux, nous avions quelques répertoires contenant des centaines de fichiers minuscules et d’autres répertoires contenant quelques centaines de fichiers. Lorsque nous sums passés de CVS à Subversion, la vitesse de vérification du repository a été réduite d’une heure à quatre ou cinq heures. La mise à jour était également beaucoup plus lente.

Cela est presque certainement dû à l’utilisation de http ou de ssh pour transmettre des données de fichiers, comparé au pserveur csv natif, mais comme il est si facile de configurer svn sur ssh ou webdav, les gens ont tendance à ne pas penser au protocole. Vous pouvez cependant utiliser un protocole svn natif et cela devrait atténuer le problème, nous ne l’avons pas testé chez mon ancienne entreprise.

Un autre problème souvent ignoré est l’espace de stockage, nous avons constaté que la subversion utilisait plusieurs fois plus de stockage local que CVS. Il me semble rappeler qu’il stocke une copie locale des données repo pour accélérer la diffusion, ce qui ne posera pas de gros problème à moins que vous ne stockiez plusieurs gigaoctets dans votre référentiel.

J’ai utilisé subversion pendant 3,5 ans, maintenant je suis passé à une autre société qui utilise CVS pour le contrôle des sources. Au début, il n’y a pas beaucoup de différences entre les deux, mais pour fusionner l’opération (ce qui est le plus important de mes préoccupations), je pourrais dire que CVS a fait un meilleur travail. Les concepts de twigs / balises dans SVN sont confus alors qu’ils sont très clairs dans CVS. la fusion aussi (dans mon cas, l’intégration d’une twig) est beaucoup plus facile dans CVS que dans SVN. La faiblesse de CVS est à ce jour dans mon idée que la validation atomique. sinon, ce serait un bon choix.