33 votes

Comment fonctionne la voie 3 de fusion dans Mercurial/Fusionner le travail?

Je travaille sur un projet où j'ai un commit qui a introduit une fonction avec des problèmes majeurs qui n'ont pas découvert tout de suite. Maintenant, je veux supprimer complètement cette révision, tout en conservant le travail à la suite de ça, mais je vais avoir un moment difficile de l'emballage de ma tête autour de ce 3 voie de fusion. Voici un graphique simplifié de mon projet.

o révision: 134:7f81764aa03a
| tag: conseil
| parent: 128:451d8a19edea
| résumé: Soutenu de l'ensemble de modifications 451d8a19edea
|
| @ révision: 133:5eefa40e2a29
| | résumé: (Changer j'ai besoin de garder le garder)
| |
*snip 3 s'engage*
| o de l'ensemble de modifications: 129:5f6182a97d40
|/ résumé: (Changer j'ai besoin de garder le garder)
|
o révision: 128:451d8a19edea
| résumé: (Changement, qui a introduit un problème majeur)
|
o révision: 127:4f26dc55455d
| résumé: (résumé n'a pas d'importance pour cette question)

Si je comprends bien, r127 et r134 sont exactement les mêmes. Quand j' hg up -C -r 133 , puis exécutez hg merge, Meld apparaît avec trois formes de l'un de mes fichiers: local, de base, et d'autres. local semble être r133 mais je vais avoir un moment difficile de l'emballage de ma tête autour de ce qui "de base" et les "autres" signifie.

35voto

Matthew Manela Points 9610

Locale est r133

Autres est r134

La Base est r128 (l'ancêtre commun aux deux r133 et r 134)

Lorsque vous effectuez une 3 voie de fusion, il compare tous les trois ensemble pour vous aider à décider quoi prendre et à partir d'où. En voyant ce changement est dans l'autre de révision et de ce que l'ancêtre commun regardé comme vous êtes en mesure de faire beaucoup plus de décision éclairée sur ce qu'il faut garder et ce qu'il faut changer.

11voto

The Surrican Points 12882

hmm votre questino est vraiment déroutant, mais voici quelques informations qui peuvent vous aider.

  • quelle est la base?

la base est la version non modifiée de la révision que vous avez actuellement sorti et a travaillé sur. où éventuellement d'autres modifications ont initiés (vous pouvez avoir des révisions entre vos currentl locale et de la base!). son juste où est le plus proche de révision où aucun autre fourche a détournés de la suite (même mère) (dans votre cas, r128)

  • qu'est-ce que la tête?

la tête est la dernière révision dans le contrôle de version. si vous travaillez seul sur une seule copie, il sera probablement de base. mais un collègue pu modifier le même fichier et vérifié dans versino de contrôle, puis la tête est plus tard que votre base.

  • ce qui est local?

locale est votre version modifiée (dans votre cas r133)

  • qu'est-ce que d'autres?

autre est la certains de la fourche/direction générale qui a également votre base en tant que parent (dans votre cas, r134)

  • comment 3-way merge travail?

3 chemin de fusion de travaux (au moins dans meld) hirachically. généralement de gauche à droite comme ceci:

local de base > > autres / tête

local/base est principalement trivial car sa juste ce que vous avez modifié

ensuite, vous pouvez fusionner vos modifications dans la tête de la révision ou de l'un de vos collègue ou quoi que ce soit.

il peut y avoir plusieurs autres/tête de révisions, mais alors ce n'est pas votre travail de fusion et donc plus de 3 façon de comparer ne fait pas de sens.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X