web-dev-qa-db-fra.com

Quelle est la différence entre HG Tag et HG Bookmark?

Quelle est la différence entre a tag et a Signet dans Mercurial? Je n'arrive pas à trouver une discussion sur la manière dont les deux diffèrent.

65
Jason S

Permet de considérer votre référentiel comme un " choisir votre propre aventure livres ", avec différents points de vue.

  • A tag est comme étant comme un tampon que l'éditeur met sur votre manuscrit pour dire "OK, nous gardons une trace de votre actuel travail, au cas où la merde arrive. "
  • A BRENSE NAMÉE serait un chapitre. Vous devez choisir à un point quel chapitre vous devrez écrire, et ils sont là pour rester. Certains vont fusionner, certains vont se terminer (désolé, vous êtes mort.)
  • A Signet est, eh bien, un signet. Il vous suit pendant que vous lisez (commettant) le livre. Cela vous aide à garder des morceaux de "ce que vous lisiez à cette époque", afin que vous puissiez les supprimer, les déplacer dans un "chapitre" différent. Lorsque vous partagez le livre (PUSH), vous ne partagez généralement pas vos favoris, sauf si vous le souhaitez explicitement. Donc, vous les utilisez habituellement sur branches anonymes parce que leur cycle de vie est plus court que les branches nommées.
33
gizmo

Il y a en fait cinq concepts à jouer avec:

  • mots clés
  • tags locaux
  • favoris
  • branches légères
  • nommé des branches

Les branches légères sont ce qui se passe si vous utilisez simplement mercurial. Vos fourches de l'histoire du référentiel et se confondent parfois lorsque vous changez de choses et vous déplacez autour de votre histoire.

Les quatre autres sont des moyens d'annotant des branches légères et des modifications qui les composent.

les branches et les étiquettes nommées sont des concepts mercuriaux uniquement dans lesquels les noms de branche et les balises sont réellement enregistrés dans le référentiel en rendant plus comme le référentiel. Ils auront tendance à se propager à d'autres référentiels d'une manière qui ne sont pas nécessairement évidentes.

les balises locales et les signets sont beaucoup plus comme ce que GIT appelle des balises et des succursales. Ce sont des métadonnées plutôt que d'être mélangées avec les objets versionnés. Donc, ils ne sont pas représentés dans le cadre de l'histoire du référentiel. Ils ont tendance à être locaux à votre référentiel et ne se propageront que si vous les propagez délibérément.

Au moins, je pense que c'est comme ça qu'ils travaillent tous. Après environ douze mois d'utilisation de Mercurial quotidien, je n'ai pas vraiment à prendre plaisir avec son (s) modèle (s). Si quelqu'un sait mieux que moi, n'hésitez pas à éditer cette réponse afin que ce soit correct.


Comment j'utilise réellement ces choses dans la pratique.

Je travaille sur un seul référentiel commun avec environ 20 autres personnes. Je fais de nombreuses expériences et succursales légères dans mon propre référentiel privé, qui ne sont jamais poussés à notre principal référentiel central. À l'occasion, une fois une expérience élaborée, je modifierai la ligne principale et appuyer une modification dans le référentiel central, à partir duquel elle trouvera son chemin vers la machine de tous les autres.

Je vais occasionnellement pousser quelques changements à un collègue s'ils sont l'une des personnes qui sont confortables avec la façon dont les œuvres mercuriales. Mais plusieurs personnes sont un peu effrayées et préfèrent si je les envoie diffèrent qu'ils peuvent appliquer avec un patch.

Pour des expériences, je m'attends à être courte vécue et privée, je laisse juste que des branches légères se produisent là où elles peuvent et se souviennent de ce qui se passe. Si je sens ma mémoire glisse sur un twig cela fait un peu, je le signet.

J'utilise des balises locales pour marquer des révisions que je pourrais aimer revenir un jour. Ils rendent les états antérieurs intéressants plus facilement à trouver.

Je ne faisais moi-même jamais des étiquettes non locales ou des branches nommées (sauf par accident, et je les détruisez si je le fais). Mais notre libération les gens font. Nos principales versions publiées ont toutes leurs propres branches nommées de la ligne principale et des versions mineures ont des étiquettes sur ces succursales. Cela garantit que ces branches et balises importantes semblent la même chose à tout le monde.

Encore une fois, je ne sais pas si c'est comme ça que l'on est censé utiliser Mercurial, mais il semble être un modèle qui fonctionne bien pour notre taille d'équipe.

Si trois ou quatre d'entre nous ont voulu collaborer sur une expérience, cela vaudrait probablement une succursale nommée, que nous partagerions probablement entre nous-mêmes mais qui ne poussent pas au Repo central. Je ne sais pas à quel point cela fonctionnerait bien!

24

Les signets sont utilisés lorsque vous voulez un Mnemonic (FOO_FEATURE) qui indique un identifiant de validation changeant lorsque votre travail progresse. Ils sont plus légers que les branches mercurielles régulières et quelque peu similaires à la manière dont les branches GIT fonctionnent.

Les tags pointent généralement vers des identifiants de validation fixes. Ils peuvent être réaffectés manuellement, mais cela est découragé.

23
Matthew Flaschen