Au travail, nous utilisons SVN, mais uniquement de nom. Nous ne branchons ni ne fusionnons. Nous gardons deux copies du référentiel, une servant de branche "tag" qui est copiée lorsque nous faisons un déploiement et conservée pour les corrections de bugs et immédiate "ceci doit être mis en ligne dès que possible". Nous devons nous rappeler de copier les modifications apportées dans une copie à l'autre copie (le "tronc"). Nous avons une douzaine de projets dans un seul dossier dans le référentiel, au lieu de les séparer. En bref, la seule chose pour laquelle nous utilisons SVN est de pouvoir valider. Tout le reste se fait manuellement.
J'ai évalué Mercurial; J'ai utilisé Git dans le passé (je suis le seul de l'équipe à avoir utilisé un DVCS) et je prends Mercurial rapidement. Je suis en train de débattre de l'introduction de Mercurial au reste de l'équipe comme une "meilleure façon" de faire les choses parce que la ramification est un jeu d'enfant, la fusion est beaucoup plus facile, et nous pouvons valider les choses localement au contenu de notre cœur et les pousser uniquement vers le centre branche quand ils sont prêts. Nous obtiendrions tous les avantages de SVN (et nous n'obtenons pas beaucoup d'avantages de toute façon puisque personne ne comprend vraiment SVN), plus pour les nouvelles fonctionnalités, nous n'avons pas besoin d'avoir des tonnes de fichiers non versionnés flottant, donc si nous devons revenir en arrière Nous sommes foutus. Le workflow semble un peu plus simple - nous devons juste nous rappeler que "Commit" est local et "Push" est comme le commit de SVN,
Est-ce une bonne approche à adopter? Gardez à l'esprit que l'équipe est très flexible et acceptera tout ce qui améliorera notre qualité de travail et facilitera la façon dont nous faisons les choses - le CIO m'a même demandé quand j'ai mentionné comment nous n'utilisions pas SVN à son potentiel " y a-t-il quelque chose de mieux que nous pouvons utiliser? " il est donc à bord avec elle aussi.
la source
I will probably not take DVCS very seriously until I end up on a large development team
Ou jusqu'à ce que vous vous retrouviez dans une équipe distribuée. Nous sommes une petite équipe (5 personnes) travaillant sur 3 sites (et parfois 5, quand nous n'avons pas envie de sortir du lit), et le passage de svn à hg était le bienvenu ...Réponses:
Oui.
Si vous remplacez "SVN" par "Perforce" dans votre OP, vous avez à peu près la situation dans laquelle je me suis retrouvé lorsque j'ai commencé mon travail actuel, même jusqu'à la copie à changement manuel. Deux ans plus tard, nous sommes sur Mercurial et tout le monde convient que cela a été un grand changement.
Nous avons la possibilité de créer des branches et de fusionner par cas de support , ce qui est incroyablement utile pour le contrôle qualité, et la possibilité de créer un nombre illimité de branches et de référentiels jetables à tout moment, que nous pouvons ensuite créer et vérifier dans notre serveur CI, puis déployer à un environnement de test cloud et vérifier la fonctionnalité. Cela a été extrêmement bénéfique en termes de tranquillité d'esprit: lorsque nous effectuons un déploiement en direct, nous sommes presque sûrs à 100% que cela fonctionnera (sans environnement / problèmes de base de données, qui sont évidemment hors de portée du VCS).
Fondamentalement, ce que nous avons gagné en passant au mercure est de respirer de l'espace. Nous n'avons plus à nous soucier du coût d'une agence ou des horribles sessions de fusion qui suivaient inévitablement, tout est beaucoup plus facile. Nous utilisons également FogBugz assez fortement, donc le lien avec Kiln (leur mercurial hébergé) est vraiment utile.
Le commentaire sur le site hginit est également clair , comme un aperçu d'un flux de travail de contrôle de version qui fonctionne réellement (en supposant que vous l'ajustiez pour le flux de travail QA particulier de votre entreprise).
Le seul défaut possible dans les contrôles de version en mouvement est que vous aurez besoin de quelqu'un qui est vraiment une force motrice derrière le changement, qui est heureux de lire sur le sujet et d'utiliser vraiment l'outillage au mieux de son potentiel, ce que vous semblez vouloir faire.
Je ne suis pas d'accord non plus avec les commentaires sur la taille de l'équipe et la répartition des équipes concernant l'utilisation de DCVS. Il s'agit vraiment de la distribution de CODE. Si vous avez plusieurs cycles de développement se déroulant en parallèle, soit des cas de support sur un système hérité, soit un tas de fonctionnalités ou même de nouveaux systèmes (ce que vous en pensez), vous bénéficierez de l'utilisation d'un DVCS.
la source
Un autre outil ne va probablement pas résoudre votre problème, je dirais que vous devriez lire cet article, je l'ai trouvé très utile:
http://thedailywtf.com/Articles/Source-Control-Done-Right.aspx
Je pense que le point principal de l'article est résumé ici, mais veuillez le lire:
la source
Non. La technologie résout rarement ce genre de problème.
Mercurial est plus complexe que Subversion (oui, la ramification et la fusion sont meilleures et peut-être plus faciles, mais le modèle de Subversion est beaucoup plus simple que celui de Mercurial). Si vous utilisez Subversion de manière aussi braindead, vous pourriez finir par utiliser Mercurial:
c) et d) sonnent comme les résultats les plus probables. Notez pourquoi vous pensez que vous vous retrouverez en a) ou b).
la source
Je ne peux pas parler du fonctionnement des grandes équipes, mais pour les petites équipes, beaucoup de ces gros problèmes SVN ne sont pas vraiment des problèmes SVN ... Ce sont des problèmes de développement. Si vous ne suivez pas les normes de développement modernes (le plus important est de faire une intégration continue), le versioning devient le gâchis exact que vous décrivez ... Avant de passer à un nouveau système, assurez-vous d'effectuer une véritable analyse des causes profondes de votre problème ...
la source
Non. Les outils ne remplacent pas la méthodologie.
Si vous n'utilisez pas Subversion comme SCM , vous ne pouvez pas utiliser Mercurial également (et cela se produira probablement)
la source
SVN peut faire ce que vous en avez besoin et il n'est pas nécessaire de changer de cheval à mi-parcours pour un gain douteux.
Quoi que vous fassiez, vous devrez surmonter un problème de confiance. Quelqu'un doit être en mesure de convaincre tout le monde de modifier son flux de travail. Ce n'est pas facile, même dans les meilleures circonstances, même si vous avez de la logique et des faits de votre côté. C'est l'une des choses les plus difficiles à faire dans une organisation. Si vous la bâcler ou si elle devient difficile, vous perdez confiance et il sera très difficile de regagner cette confiance.
Il y a deux ou trois choses que je sais que les gens ont essayées avec succès. Peut-être que l'un d'entre eux fonctionnera pour votre équipe:
Amenez un "coach" pour fournir une série d'ateliers pour l'équipe. Il devra probablement s'agir d'une personne externe (ironiquement, il est souvent plus facile pour de nombreuses équipes de faire confiance à un étranger que de faire confiance à quelqu'un de l'équipe). Il doit s'agir de quelqu'un qui connaît ses affaires de fond en comble et qui peut effectivement enseigner ces compétences à des personnes à tous les niveaux de compréhension et élaborer un plan pragmatique pour déployer le nouveau VCS (*) dans le flux de travail de l'équipe.
Démarrez un projet "skunk-works" pour tester et valider le nouveau VCS sur un petit projet parallèle. Choisissez quelques développeurs "alpha" qui sont prêts à essayer de nouvelles choses et ne craignez pas d'accumuler un tas d'expériences infructueuses. Lorsque le skunk-works est en mesure de démontrer des améliorations irréfutables CONCRETES dans le flux de travail, vous pouvez alors essayer de le déployer au reste de l'équipe et vous avez quelques évangélistes pour vous aider à le faire.
(*) par "nouveau VCS" je ne veux pas nécessairement dire mercurial ou git, il peut aussi être SVN (bien fait).
la source