Quels sont les avantages d’utiliser SVN sur CVS?

Mon entreprise utilise CVS comme standard de facto pour le contrôle des sources. Cependant, j’ai entendu beaucoup de gens dire que SVN est meilleur.

Je sais que SVN est plus récent, mais à part ça, je ne connais pas ses avantages.

Ce que je recherche, c’est une bonne comparaison succincte des deux systèmes, en notant tous les avantages ou inconvénients de chacun dans un environnement de développement Java / Eclipse.

CVS ne suit que les modifications sur une base fichier par fichier, tandis que SVN effectue un suivi complet des modifications en tant que nouvelle révision, ce qui signifie qu’il est plus facile de suivre l’historique de votre projet. Ajoutez le fait que tous les logiciels de contrôle de source modernes utilisent le concept de révision, il est donc beaucoup plus facile de migrer de SVN que de CVS.

Il y a aussi le problème de validation atomique. Bien que je ne l’aie rencontré qu’une seule fois, il est possible que 2 personnes engagées dans CVS puissent entrer en conflit, perdre certaines données et mettre votre client dans un état incohérent. Une fois détectés tôt, ces problèmes ne sont pas majeurs, car vos données sont toujours là quelque part, mais cela peut être pénible dans un environnement stressant.

Et enfin, peu d’outils sont développés autour de CVS. Alors que les nouveaux et shinys outils tels que Git ou Mercurial ne disposent pas encore d’outils, SVN dispose d’une base d’applications assez large sur tous les systèmes.

EDIT 2015 : Sérieusement, cette réponse a 7 ans maintenant. Oubliez SVN, allez utiliser Git comme tout le monde!

Une des nombreuses comparaisons:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

Maintenant, ceci est très spécifique à ce projet, mais beaucoup de choses s’appliquent en général.

Pro Subversion:

  • Prise en charge du renommage / déplacement avec version (impossible avec CVS): Fingolfin, Ender
  • Prise en charge des répertoires en mode natif: il est possible de les supprimer et ils sont versionnés: Fingolfin, Ender
  • Les propriétés du fichier sont versionnées; plus de “bit exécutable” en enfer: Fingolfin
  • Le numéro de révision global facilite grandement les tests de version et de régression: Ender, Fingolfin
  • Atomic commits: Fingolfin
  • Branchement et marquage intuitifs (par répertoire): Fingolfin
  • Scripts de hook plus faciles (avant / après validation, etc.): SumthinWicked (je l’utilise pour Doxygen après les commits)
  • Empêche la confection accidentelle de fichiers en conflit: Salty-horse, Fingolfin
  • Prise en charge de la commande ‘diff’ personnalisée: Fingolfin
  • Offline diffs, et ils sont instantanés: sev

SVN a 3 avantages principaux sur CVS

  • c’est plus rapide
  • prend en charge le contrôle de version des fichiers binarys
  • et ajoute un commit transactionnel (tout ou rien)

Le livre Subversion contient une annexe qui détaille les principales différences par rapport à CVS, ce qui peut vous aider à prendre votre décision. Les deux approches ont plus ou moins la même idée, mais SVN a été spécifiquement conçu pour corriger les failles de longue date de CVS. En théorie, SVN sera donc toujours le meilleur choix.

Une chose à ne pas négliger est l’écosystème. Je travaillais dans une boutique CVSNT et je trouvais de plus en plus d’outils open source supportés par défaut par SubVersion.

Je vais seconder la suggestion de Gidi par Eridius, mais je l’étendrais aux autres DRCS (Dissortingbuted Revision Control System) tels que Mercurial et bazaar .

Ces produits sont assez récents et le niveau d’outillage et d’intégration semble faible pour le moment (sur la base de mes recherches initiales). Je dirais qu’ils étaient les mieux adaptés aux développeurs de puissance (et ici ;-)).

D’autre part, qu’est ce que le CVS ne fait pas actuellement pour vous? De votre question initiale, vous n’en avez pas vraiment, “CVS est nul, qu’est-ce que je pourrais utiliser à la place?”

Vous devez peser les coûts de toute migration potentielle contre les avantages. Pour un projet existant, je pense que ce serait difficile à justifier.

btw: CVSNT supporte les commits atomiques

En tant que personne qui est en train de basculer entre CVS et SVN (initialement, nous avons changé tous nos projets avec cvs2svn et avons ensuite décidé que nous allions faire la transition en utilisant uniquement svn sur de nouveaux projets), voici quelques problèmes.

  • Les fusions et les twigments sont très différents, et si vous twigz et fusionnez fréquemment, sauf si SVN 1.5 est en cours d’exécution sur votre serveur, vous devez savoir quand vous twigz (ce n’est pas très clair dans les boîtes de dialog SVN Tortoise). Michael dit que le twigment et la fusion sont intuitifs, je dirais qu’après avoir utilisé CVS pendant 10 ans, ce n’est pas le cas.
  • Si vous utilisez le serveur SVN sous Linux, il peut être difficile de faire en sorte que votre SA passe à svn 1.5, car l’installation par défaut est 1.4.x.
  • La fusion des conflits n’est pas aussi facile ou aussi claire (du moins pour moi et mes collègues) dans TortoiseSVN que dans TortoiseCVS. L’approche à trois volets demande un certain temps d’adaptation et WinMerge (mon outil de fusion préféré) ne fait pas de fusion à trois volets.
  • Attention: de nombreux didacticiels en ligne et articles de magazines que j’ai lus ne font évidemment pas l’object d’une fusion ou d’une fusion . /svn.yoursvnserver.com/repos/YourProject/Branches/BranchX . Vous pouvez faire le ménage si vous commencez vos opérations de pension au mauvais endroit, mais cela crée de la confusion.

Vous devriez regarder Git au lieu de SVN. C’est un DVCS rapide et très puissant. Ce n’est pas aussi convivial que SVN, mais il s’améliore à cet égard et ce n’est pas si difficile à apprendre.

CVS (Concurrent Versions System) et SVN (SubVersioN) sont deux systèmes de fichiers de contrôle de version couramment utilisés par les équipes qui collaborent sur un seul projet. Ces systèmes permettent aux collaborateurs de garder une trace des modifications apscopes et de savoir qui est en train de développer et si une twig doit ou non être appliquée à la ligne principale. CVS est le plus ancien des deux et il a été l’outil de collaboration standard pour beaucoup de gens. SVN est beaucoup plus récent et apporte de nombreuses améliorations pour répondre aux demandes de la plupart des gens.

Vous pouvez également choisir de ne migrer que le dernier code de CVS vers SVN et de geler votre repository CVS actuel. Cela facilitera la migration et vous pourrez également créer vos anciennes versions dans l’ancien référentiel CVS.

Eh bien, quelques choses qui me semblent géniales.

  1. La combinaison SVN-Altassian Creuset est une méthode de contrôle et de contrôle qualité de loin supérieure
  2. Meilleure gestion des conflits et des fusions
  3. Il est évidemment plus rapide de passer à la caisse, d’effectuer des commits, etc.
  4. Le problème de validation atomique – Il est possible que 2 personnes engagées dans CVS puissent entrer en conflit, perdre certaines données et mettre votre base de code dans un état incohérent

La migration peut facilement se faire en quelques heures avec cvs2svn.