Je souhaite choisir un système de contrôle de version pour mon entreprise. Jusqu'à présent, je sais que j'ai Git, Subversion et Mercurial.
Ces jours-ci, je vois que Git est le plus utilisé, donc je me demande: y aurait-il une raison spécifique pour continuer à utiliser Subversion, ou devrais-je aller directement à Git?
version-control
git
svn
user1179459
la source
la source
Réponses:
SVN n'est pas mort du tout. Il est encore très largement utilisé et ne va pas bientôt. SVN est beaucoup plus simple à utiliser que le contrôle de version distribué, surtout si vous n'exécutez pas réellement un projet distribué qui nécessite un contrôle de version distribué.
Si vous n'avez qu'un seul référentiel central (c'est tout ce dont votre entreprise aura besoin s'ils sont encore assez petits pour s'en sortir sans contrôle de source jusqu'à présent), il est beaucoup plus simple d'utiliser SVN pour interagir avec lui. Par exemple, avec SVN, vous pouvez extraire les modifications du référentiel ou y valider vos modifications locales, en une seule opération, tandis que HG et Git nécessitent deux ou trois étapes pour effectuer le travail équivalent.
Et avec les révisions récentes, SVN a résolu un grand nombre de problèmes de performances qui faisaient que les gens préféraient HG et Git. C'est beaucoup plus rapide maintenant qu'il y a quelques années, et à ce stade, il n'y a vraiment aucune bonne raison de considérer HG ou Git pour votre projet, sauf si vous avez réellement besoin des fonctionnalités avancées du contrôle de version distribué.
la source
L'outillage client n'a pas encore été mentionné. Vous pouvez certainement tout faire avec un script de ligne de commande, mais l'intégration de l'interface graphique peut être un véritable gain de productivité.
Nous travaillons principalement avec Visual Studio; l'intégration dans l'IDE est nettement meilleure avec SVN qu'avec Git en ce moment. Cela pourrait changer à l'avenir, mais je peserais certainement cela dans votre décision tout autant que les fonctions de contrôle de version.
Comme tout le reste, un système de contrôle de version n'est pas un objectif en soi, juste un outil pour vous emmener où vous allez. Choisissez celui qui vous y mènera le plus rapidement en fonction de votre situation.
la source
Je suis fan de Git. Récemment, j'ai dû admettre que l'un des inconvénients de Git est qu'il identifie les versions avec des hachages contrairement aux numéros de version de svn. Le numéro de version peut être plus facilement transmis par téléphone ou quelque chose comme ça.
Et c'est le seul pro que j'imagine. Si vous voulez vraiment compter sur cette fonctionnalité, vous pouvez l’avoir dans un VCS Bazaar distribué et / ou centralisé . Dans Git, il existe des balises qui peuvent servir à cette fin.
Quoi qu'il en soit, je ne pouvais tout simplement pas imaginer développer sans changement de branche rapide et stockage. Ces deux fonctionnalités à elles seules ont battu SVN, où, pour autant que je me souvienne, la même tâche nécessitait de créer et d'extraire un arbre entier dans des répertoires séparés pour atteindre le même objectif.
Ces soi-disant «fonctionnalités avancées du contrôle de version distribué» viennent avec le temps, et vous n'avez pas à les apprendre au tout début. N'ayez pas peur d'eux. Ils sont là pour vous aider, pas pour vous gêner. Et il n'y a aucun problème à mettre en place un référentiel central pour un DVCS.
la source
Avec SVN, vous pouvez facilement extraire des parties d'un référentiel jusqu'au niveau du dossier, tandis qu'avec git, vous obtenez l'ensemble du référentiel, y compris tout l'historique.
Selon la situation, cela peut présenter certains avantages pour SVN
(cela présente également de gros inconvénients tels que les ordures ".svn" cachées tout au long de votre arborescence de dossiers).
la source
"Si vous avez une tâche qui peut être effectuée en six heures, il est préférable d'écrire un outil qui le fait en 20 minutes, même lorsque la création de l'outil prend six heures?"
Le contrôle de version distribuée est une bête différente à affronter. Cela nécessite un apprentissage substantiel pour chaque développeur. Si vous avez le tampon pour accueillir le processus d'apprentissage pour chaque développeur, vous devez passer à un bon système de contrôle de version distribué. Une fois la phase d'apprentissage terminée, le contrôle de version distribué est bien meilleur que le contrôle de version centralisé.
Le contrôle de version distribué semble être une éventualité. Il est là pour rester très longtemps, il vaut mieux s'y adapter tôt que tard. Je me souviens de la même discussion lorsque SVN était nouveau et que les gens étaient habitués à CVS, de nombreux arguments ont été avancés pour ne pas utiliser SVN, mais finalement SVN est devenu le système de contrôle de version le plus populaire.
Si l'entreprise est bien établie avec beaucoup de code source dans le système de contrôle de version existant, le passage à un nouveau système est une tâche importante, mais si l'entreprise est petite ou en démarrage, le passage à un nouveau contrôle de version est très facile. Mais si vous vous en tenez à un contrôle de version plus ancien (dans une nouvelle configuration), vous rencontrerez un goulot d'étranglement quelque part à l'avenir où vous devrez éventuellement planifier une migration de contrôle de version de toute façon.
J'ai vu beaucoup de commentaires pro SVN, mais tous ont tendance à être de la nature "SVN n'est pas mauvais" plutôt que "SVN est meilleur". Je vous recommande donc fortement de choisir un contrôle de version distribué (tel que Git) pour votre projet.
EDIT Avantages de GIT sur SVN
Aucun serveur dédié requisEn fait, les deux peuvent être utilisés sans serveur.Quelqu'un a mentionné l'outillage (pour Visual Studio) comme une raison de s'en tenir à SVN. http://gitscc.codeplex.com/ fournit la prise en charge GIT pour Visual Studio.
la source
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.
Je suis totalement en désaccord avec cela. Il peut avoir des avantages perçus dans certaines circonstances, mais quelque chose d'aussi simple que le numéro de version dans svn étant lisible par l'homme est un avantage massif dans de nombreuses organisations.En dehors de la prise en charge des outils dans les IDE (que je n'utilise pas) - pas vraiment, non. Bien sûr, SVN est peut-être plus familier, mais c'est à peu près la seule raison, et j'ai trouvé Hg et Git très faciles (et très rapides) à apprendre.
Oui, il y a tous ces guides complexes qui décrivent comment Git est trivial une fois que vous comprenez que les branches ne sont que des endofoncteurs homéomorphes cartographiant les sous-variétés d'un espace de Hilbert. 1
Je ne comprends pas ça. Mais tu sais quoi? Ça n'a pas d'importance. Vous n'avez pas besoin de connaître tout cela pour utiliser Git.
Pour la plupart, Git et Hg sont faciles à utiliser et ils ont des avantages définitifs sur SVN. L'éléphant dans la pièce est bien sûr ramifié: les branches fonctionnent juste en Git et Hg. En revanche, dans SVN, ils sont au mieux douloureux et au pire cassés (fusion de plusieurs têtes).
Bien sûr, vous pouvez toujours utiliser SVN. Vous pouvez également toujours utiliser Windows XP. Cependant, la majorité des utilisateurs qui ont essayé les deux conviennent que l'une des alternatives est largement supérieure.
1 Oui, je comprends que c'est une blague. Je pense.
la source