Quels sont les avantages de SVN par rapport à CVS?
mon entreprise utilise CVS comme norme de facto pour le contrôle à la source. 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 cherche est une bonne comparaison succincte des deux systèmes, en notant les avantages ou les inconvénients de chacun dans un environnement de développement Java/Eclipse.
12 réponses
CVS ne suit la modification que Fichier par fichier, tandis que SVN suit un commit entier sous la forme d'une nouvelle révision, ce qui signifie qu'il est plus facile de suivre l'histoire de votre projet. Ajoutons que tous les logiciels modernes de contrôle des sources utilisent le concept de révision, de sorte qu'il est beaucoup plus facile de migrer à partir de SVN qu'à partir de CVS.
il y a aussi le problème de la propagation atomique. Bien que je ne l'ai rencontré qu'une fois, il est possible que 2 personnes s'engageant ensemble dans CVS puissent entrer en conflit, perdre des données et mettre votre client dans un état incohérent. Lorsqu'ils sont détectés tôt, ces problèmes ne sont pas majeurs parce que vos données sont toujours là quelque part, mais cela peut être une douleur dans un environnement stressant.
et enfin, peu d'outils sont développés autour de CVS. Alors que les outils neufs et brillants comme Git ou Mercurial manquent encore d'outils, SVN dispose d'une base d'applications assez large sur n'importe quel système.
EDITION 2015 : Sérieusement, cette réponse est de 7 ans maintenant. Oublie SVN, va utiliser Git comme tout le monde!
l'Une des nombreuses comparaisons:
http://wiki.scummvm.org/index.php/CVS_vs_SVN
Maintenant, c'est très spécifique à ce projet, mais beaucoup de choses apllies en général.
Pro Subversion:
- prise en charge des renommages/mouvements versionnés (impossible avec CVS): Fingolfin, Ender
- supporte les répertoires nativement: c'est possible de les enlever, et ils sont suivis en versions: Fingolfin ,Ender
Les propriétés des fichiers- sont suivies en versions; plus de "exécutable bit" hell: Fingolfin
- le nombre total de révisions rend la vérification de versions et les tests de régression beaucoup plus faciles: Ender, Fingolfin
- Atomique s'engage à: Fingolfin
"1519120920 Intuitif" (répertoire) de ramification et de marquage: Fingolfin- (pré/post-validation, etc): SumthinWicked (je l'utilise pour Doxygen après commet des
- empêche la propagation accidentelle de fichiers conflictuels: Salty-horse, Fingolfin
- prise en charge de la commande personnalisée "diff": Fingolfin
- diffs Offline, et ils sont instantanés: sev
SVN a 3 principaux avantages par rapport à CVS
- c'est plus rapide
- supporte la version de fichiers binaires
- et ajoute commit transactionnel (tout ou rien)
Le Livre de Subversion contient une annexe qui détaille les différences importantes avec CVS, ce qui peut vous aider à prendre votre décision. Les deux approches sont plus ou moins la même idée mais SVN a été spécifiquement conçu pour corriger les défauts de longue date dans CVS donc, en théorie du moins, SVN sera toujours le meilleur choix.
j'appuie la suggestion de Git faite par Eridius, mais je l'étends aux autres DRC (Distributed Revision Control System) tels que Mercurial et bazaar .
ces produits sont assez récents et le niveau d'outillage et d'intégration avec eux semble faible à l'heure actuelle (basé sur ma recherche initiale). Je dirais qu'ils étaient les mieux adaptées pour les développeurs là-bas (et ici ;-)).
sur le d'autre part, qu'est-ce que ne fait pas CVS actuellement pour vous? D'après votre question initiale, vous n'en avez pas vraiment, "CVS craint à ça, qu'est-ce que je pourrais utiliser à la place?"
vous devez évaluer les coûts de toute migration potentielle par rapport aux avantages. Pour un projet existant, je pense qu'il serait difficile à justifier.
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.
comme quelqu'un qui est en train de passer entre CVS et SVN (au début nous avons changé tous nos projets avec cvs2svn, puis nous avons décidé que nous allions passer en utilisant svn uniquement sur de nouveaux projets), voici quelques-uns des problèmes que nous avons eus.
- la fusion et la ramification sont très différentes, et si vous vous ramifiez et fusionnez fréquemment, sauf si vous avez SVN 1.5 tournant sur votre serveur doivent savoir quand vous vous ramifiez (ce n'est pas très clair dans la tortue SVN dialogue.) Michael dit que la ramification et la fusion est intuitive, 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 passer votre SA à svn 1.5, comme installation par défaut 1.4.x.
- fusionner les conflits n'est pas aussi facile ou aussi clair (au moins pour moi et mes collègues) à TortoiseSVN qu'il l'est à TortoiseCVS. L'approche à trois volets nécessite de s'habituer et le WinMerge (mon outil de fusion préféré) ne fait pas une fusion à trois volets.
- attention: beaucoup de tutoriels en ligne et d'articles de magazines que j'ai lus évidemment ne se ramifient pas et ne fusionnent pas, vous devriez configurer votre dépôt principal comme https://svn.yoursvnserver.com/repos/YourProject/Trunk et branches sur https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX . Vous pouvez nettoyer si vous commencez vos repos au mauvais endroit, mais il conduit à la confusion.
Vous devriez jeter un oeil à Git au lieu de SVN. C'est un DVCS c'est ultra rapide et très puissant. Ce n'est pas aussi convivial que SVN, mais c'est l'amélioration à cet égard, et il n'est pas que difficile à apprendre.
CVS (Concurrent Versions System) et SVN (SubVersioN) sont deux systèmes de fichiers de contrôle de versions couramment utilisés par les équipes qui collaborent sur un seul projet. Ces systèmes permettent aux collaborateurs de suivre les changements apportés et de savoir qui est en train de développer et si une branche doit être appliquée au tronc principal ou non. 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 il introduit beaucoup d'améliorations pour répondre aux exigences de la plupart des gens.
, vous pouvez aussi choisir de migrer uniquement la dernière version du code à partir de CVS, SVN et congeler vos CVS actuel des pensions. cela permettra de rendre la migration plus facile et vous pouvez également créer votre héritage des rejets dans l'ancien CVS repo.
eh Bien, quelques choses que je sens rend svn génial.
- la combinaison SVN-Altassian crucible est une méthode de contrôle et de contrôle de la qualité nettement supérieure
- meilleure gestion des conflits et des fusions
- c'est évidemment plus rapide pour prendre des vérifications, effectuer des commits, etc.
- La livraison atomique problème - Il est possible que 2 personnes engageant ensemble dans le CVS peut entrer en conflit les uns des autres, perdre quelques données et mettre votre base de code dans un état incohérent
la Migration peut facilement être effectuée en quelques heures à l'aide de cvs2svn.