2009-11-04 7 views
2

Je regarde le manuel mercurial, chapitre 6 "Travailler avec plusieurs branches". Dans cet article, l'auteur indique que si vous avez des versions/branches distinctes du même logiciel, cela a un sens d'une manière implicite et évidente d'héberger chaque branche du logiciel dans un référentiel séparé.Mercurial: Pourquoi voudriez-vous maintenir des branches/versions distinctes de logiciels dans des dépôts séparés clonés plutôt qu'avec des étiquettes?

Je sais que Mercurial prend en charge les balises (ce qui est la façon dont les branches sont effectuées dans la subversion AFAIK). Pourquoi utiliseriez-vous différents référentiels au lieu de tags pour la gestion de succursales?

+0

Je pense que vous avez mal compris le fait que les balises/branches ne sont pas faites en hg de la même manière que dans svn (ce n'est pas un nouveau répertoire). – tonfa

+0

@tonfa effectivement le livre hg recommande d'utiliser la méthode clone-per-branch. –

+0

En fait, SVN utilise des "branches" (qui ne sont en fait que des copies bon marché) pour faire des tags. –

Répondre

11

Les étiquettes de Mercurial sont et non comme les branches de Subversion. Dans Subversion, faire une branche crée une copie séparée du code (avec des liens durs au moins, je pense) alors que les balises dans Mercurial pointent juste vers un commit spécifique.

Il ya quelque temps, je wrote about les modèles de branchement de Mercurial (dont la ramification avec des clones est l'une des quatre options), peut-être que vous le trouveriez utile?

+0

Guide très intéressant, je ne savais pas sur les signets. –

6

Il existe des avantages à disposer de différents référentiels dans Mercurial, et des problèmes de gestion des branches.

Les branches signifient des têtes multiples, les graphes sont beaucoup plus compliqués alors, et même la représentation graphique peut ne pas être capable d'accommoder autant de chemins compliqués ... et je ne parle même pas du cerveau humain! D'autre part, avoir plusieurs référentiels signifie que chaque référentiel aura une structure beaucoup plus simple, facilitant ainsi le traumatisme cérébral dû au fait de devoir gérer plusieurs branches/fusions (ce que vous avez de toute façon, puisque deux développeurs travaillent à partir du même référentiel). changeset et avant se développent concurremment).

En outre, avec plusieurs référentiels, vous pouvez lire/éditer n'importe quel fichier sur un référentiel donné avec n'importe quel éditeur que vous utilisez (si vous maintenez le répertoire de travail à jour par rapport à la pointe).

Sur subversion, vous devez gérer plusieurs branches, il n'y a pas d'autre solution et vous devez utiliser des balises.

Sur Mercurial, les tags ne sont pas censés se déplacer (ils introduisent inutilement des changesets) et les branches sont traitées dans le commerce: vous avez toujours des branches. Cependant, puisque vous pouvez avoir plusieurs référentiels, une autre dimension vous est proposée. C'est ton choix si tu l'utilises ou non, ça m'a rendu la vie plus facile quand même.

+0

Je dois aller voir ça, mais je devrais partager la même confusion. Un tag ou une branche dans SVN est un fork maintenu dans le repository, je peux aller à ma machine "là-bas" et abattre exactement ce que je veux, si je crée un nouveau repository au lieu de le faire, cela devient beaucoup plus complexe. et * est-ce que je n'ai pas à garder les deux dépôts? Je peux voir qu'il y a des caractéristiques positives significatives avec DVCS mais il devrait également être évident qu'il y a des caractéristiques positives dans le fait d'avoir un référentiel central qui semble souvent ignoré par les convertisseurs DVCS. – Murph

+1

Vous ne pouvez vraiment pas comparer les balises et les branches en hg avec les balises et les branches dans svn, c'est * vraiment * différent! – tonfa

+0

J'aime votre réponse, merci. C'est comme la bonne réponse à la question sur Bazaar: "pourquoi Bazaar garde toujours chaque branche dans un répertoire séparé?" Parce que le cerveau humain est faible en traitant avec des têtes de zillion dans un repo. – bialix

Questions connexes