Récemment dans mon nouvel emploi, mon ministère (nous construisons principalement des stocks de courses et des sites de course de chevaux et nous ne travaillons que sur le site Web au bureau.) envisage d'utiliser SVN ou Mercurial. Notre chef de projet dit qu'il favorise SVN (ne nous a pas donné ses raisons) mais nous aime choisir de choisir une mercurielle aussi et de nous demander à nos opinions (la décision finale réside toujours avec lui) P>
Étant donné que la plupart des articles en ligne sont sur expliquer pourquoi choisir mercurial sur SVN (ou quelque chose de similaire). Je voudrais demander le contraire. P>
Alors, quand et pourquoi choisirez-vous SVN sur Mercurial dans un nouveau projet malgré les nombreux avantages de Mercurial / Git sur SVN? P>
4 Réponses :
Lorsque les avantages du Mercurial ne sont pas des avantages, vous utiliserez ou s'appliquerez à votre situation. P>
Le problème de cette approche est que vous obtenez alors ces avantages très difficiles à l'avenir. Vous limitez-vous au tout début.
Subversion est un très bon système de contrôle de la version centralisée. Il est mature et bien soutenu par d'autres outils tels que TRAC. Son "One-Version-Per-Snapshot" est exceptionnel et une "branche" est simplement une "copie de la lumière". Vraiment, dans le contexte de la version héritée, le contrôle de la sémantique plus "fragile" (comme les numéros de version-parole et leurs propres idiosyncrasies), Subversion est remarquable. (Je l'ai utilisé depuis des années.) P>
Cela dit, je passe au mercurial. (Je considérerais git, mais mercurial est beaucoup plus mature sur les fenêtres à présent.) Tortoise-HG n'est pas aussi mature que Tortoise-Svn. Cependant, Mercurial et Git sont construits pour fusionner. Et c'est le problème fondamental des systèmes de contrôle de la version. P>
Avec Mercurial, chaque référentiel a tout. Les fantasmes sont simples. Un référentiel est lui-même un "sandbox", de sorte que vous n'avez pas besoin d'avoir le "Clairvoyance" de "tronc" et de "branches" et de faire une autre planification de pré-branche. En bref, les référentiels distribués correspond à la manière dont les équipes de développeurs fonctionnent, même si les développeurs sont centralisés dans une structure de commande (roulant dans une branche "Finale du coffre approuvé"). P>
Résumé: Subversion est un excellent modèle, mais très centralisé. Il est mature, avec des outils matures et une intégration mature avec d'autres outils (comme Trac). Mercurial (et Git) sont de meilleurs modèles, mais fournissent la même "version à une seule version-référentiel-instantané" comme subversion. Les outils (comme Tortucoise-hg) sont moins matures (l'intégration avec TRAC est plus de travail) et vous penserez légèrement différemment lorsque vous travaillez avec Mercurial (par exemple, des référentiels distribués synchronisés), ce qui présente des avantages, mais vous devriez vraiment faire Pensez au problème différemment (que vous avez fait avec subversion). P>
J'utilise tous les deux quotidiennement. Ils sont tous deux géniaux. Lorsque nous obtenons l'intégration mercurielle avec TRAC de manière plus mature, je me déplacerais complètement au mercurial. (La tortue moins mature-hg n'est pas aussi bonne que la tortue-svn, mais je peux vivre avec elle.) P>
La migration complète vers la mercuriale peut seulement prendre un certain temps (comme plus d'un an ou deux, car Trac offre une meilleure intégration mercuriale native). L'importation / exportation entre mercurial et subversion n'est pas terrible. Nous utilisons les deux dans notre base de code existante: le "coffre" central est la subversion et les changements locaux sont en mercuriat, avec l'enregistrement final à la subversion. Ça marche. P>
Si vous coupez à d'autres outils, vérifiez simplement son interface avec Subversion et Mercurial. Si toutes les choses sont égales, allez Mercurial. Sinon, vous ne pouvez pas vous tromper avec Subversion (nous utilisons Subversion spécifiquement en raison du soutien de TRAC), et c'est bien d'utiliser mercurial au-dessus de cela (nous le faisons). P>
Enfin, dans le contexte de la façon dont vous avez encadré votre question: p>
Alors quand et pourquoi choisirez-vous svn sur mercurial dans un nouveau projet malgré Les nombreux avantages de Mercurial / Git sur svn? p> blockQuote>
Je choisirais SVN sur Mercurial parce que: P>
- intégration avec d'autres outils (comme Trac) est plus mature et nous utilisons ces autres outils; li>
- interface utilitaire (comme Tortue-svn) est significativement plus mature que la frontière mercuriale (comme Tortoise-hg); li>
- subversion est conceptuellement un très modèle simple (par exemple, simple-version-instantané), et le le référentiel centralisé est comment les gens pense historiquement à la version contrôle (une pensée différente est requis pour le distribué Modèle git / mercurial) LI>
- nous avons un processus solide qui planifie "tronc" et "branches", et ne pas nécessite un support d'outil significatif à aider avec ces douloureux fusion de branches. li> ol>
Lorsque je suis obligé de passer par l'opinion populaire des collègues ou de la direction de Fiat. C'est le scénario le plus probable. P>
Il existe des situations spécifiques dans lesquelles je choisirais une subversion ou une perforce sur la mercurielle. Ceux-ci concernent des caractéristiques très spécifiques. Par exemple, la capacité de traiter des sous-répertoires aléatoires en tant que référentiels à leur droit peut être utile dans certaines situations. La capacité de Perforce à réorganiser la structure de répertoire à la caisse peut également être utile. Perforce fait également un excellent travail de gérer de grands objets binaires utilisés dans le développement de jeux et d'autres types de travaux médiatiques, ni mercurial ni git ne sont actuellement particulièrement bons à ces choses. P>
Mais en général, il n'y a pas d'autre raison pour laquelle je choisirais un système de contrôle de révision non distribué pour moi-même. Je les trouve énormément limitant et contraignant. J'ai été déçu de leur part depuis que j'ai appris quelle version de la version était. Il n'y a rien d'un point de vue de flux de travail pur qui peut être accompli avec un système de contrôle de révision centralisé qui ne peut pas être accompli avec une distribution. P>
Oui, c'est la seule raison pour laquelle j'utilise Svn au travail (au lieu de monotone, que j'utilise toujours quand j'ai le choix) ... et utiliser Svn est quelque chose que je le regrette à une fustion simple i> je dois faire , surtout quand je suis obligé de casser une version de travail avant de s'engager juste parce que ce n'était pas contre la tête.
Vous êtes le seul sur cette page pour mentionner les principales choses que SVN et Perforce peuvent faire lesquelles HG et Git ne peuvent pas. Ce sont les considérations réelle i> que quiconque choisit intelligemment les VC centraux devrait faire. Il n'y a pas d'autre raison défendable.
Un mot: tortuevn. Pour moi, Tortoiseisesvn est standard de tous les clients d'interface graphique pour tout VCS. Malgré les lacunes de SVN en Fron de DVC, TortoiseSVN utilise une brise SVN. Tortoisegit est plutôt bon et des modèles tortoisisvn, mais Tortoisehg n'est pas si génial. P>
Une autre raison est une aide géniale sysadmin. Les outils sont bien développés et mûrs lorsqu'il s'agit de SVN. Les git et hg sont encore à rattraper. P>
Vous pouvez aussi regarder ma réponse ici: Quel contrôle de version est le mieux adapté pour moi? p>
Aussi ce qui est une question très similaire: https://stackoverflow.com/questions/2693045/mercurial- vs-subversion p>
Tortoisehg a récemment publié la version 2.0.x et a été déployée dans plusieurs améliorations sur v1.x.x et plusieurs nouvelles fonctionnalités. Si vous réclamez une tortue comme une raison de ne pas utiliser HG, vous devriez le vérifier.
Le choix de toute technologie devrait être influencé par les autres technologies que vous souhaitez intégrer. Donc, si vous avez une tonne d'autres outils qui s'intègrent à la subversion mais pas mercurial, passez à la subversion.
@Nathan D. Ryan: Mais cela ne devrait pas être le seul critère. Si c'était le cas, aucune nouvelle technologie ne sera jamais prise de pied parce que les effets du réseau de l'ancienne technologie sont trop forts pour surmonter.
@Omnifarious: convenu. Je ne voulais pas dire que cela devrait être le seul critère, mais d'une perspective pratique, cela devrait être une considération. Personnellement, j'utilise Subversion pour les référentiels locaux de projets personnels et est passée à GIT pour tout le reste. La couche supplémentaire d'indirection impliquée dans le contrôle de la version distribuée le rend supérieur à la collaboration, à l'OMI.