2013-01-22 3 views
0

Je viens de commencer à utiliser le dépôt mercurial hg et je suis resté coincé dans une situation avec plusieurs têtes. Par le passé, j'ai également poussé mon code vers le référentiel, mais il manquait aussi du code actuel. Il me semble que chaque fois que quelqu'un d'autre pousse son code, mon compte de tête par défaut augmente de mon côté mais je ne vois pas un tel comportement sur quelqu'un d'autre. Quelqu'un peut-il aider à sortir comment puis-je me débarrasser de ces têtes et ne pas perdre mes poussées?Se débarrasser des Mercurials Plusieurs TÊTES

Remarque: j'utilise MAC OSX avec le plugin eclipse mercurial.

Répondre

3

Pour autant que je comprenne votre problème en ce moment, vous poussez vers un référentiel et il y a d'autres gars qui utilisent le même référentiel. Correct?

Pour moi, il semble que vous ne travailliez pas sur la dernière validation, donc plusieurs têtes sont créées sur votre branche actuelle. Notez d'ailleurs: il y a une différence entre les têtes et les branches dans Mercurial.

Je peux imaginer quelque chose comme cela vous arrive (en supposant que nous travaillons sur une seule branche):

Votre copie de travail:

1-2-3-4-5-6 (where number is revision) 

afin que vous vous engagez sur r6, par exemple deux commandes 7' et 8'.
maintenant votre copie de travail ressemble à ceci:

1-2-3-4-5-6-7'-8' 

Mais en attendant le dépôt partagé que vous êtes tous à pousser/tirer des regards comme celui-ci:

1-2-3-4-5-6-7-8-9-10 (so r10 is the 'latest' commit published) 

Maintenant, si vous êtes poussant au référentiel partagé, cela se produit:

  7'-8' 
     /
1-2-3-4-5-6-7-8-9-10 

et le tour est joué, il y a maintenant deux têtes différentes, appelé 8' et 10. Pour l'avenir, tirer le premier du référentiel partagé et mettre à jour le dernier commit vous évitera ce problème. Maintenant, comme votre question était de savoir comment résoudre les têtes multiples, il existe différentes options, la plus simple pour vous est de faire une simple fusion.

hg help merge 

Selon si les têtes ne sont que localement (un coup d'oeil à la phase de vos têtes/engage), vous avez plus (peut-être plus élégant) options, par exemple rebasing.

En général, this est une bonne ressource pour démarrer/approfondir avec Mercurial.

2

De bonnes informations générales ont été données mais je vais vous donner quelques informations spécifiques sur MercurialEclipse.

  • La clé pour comprendre Mercurial est le graphique historique. (Dans la vue du navigateur, faites un clic droit et sélectionnez Équipe -> Afficher l'historique). Notez la colonne de gauche qui est le graphique. Comparez le graphique après que vous commettiez avec la façon dont il était avant de commettre. Comparez également le graphique avant de tirer avec la façon dont il est après avoir tiré.
  • En validant mercurial un changeset ne signifie pas qu'il est visible pour les autres. En règle générale, pour corriger cette situation, vous devez fusionner toutes les têtes (Team -> Merge), puis appuyer sur la nouvelle tête unique.
  • Une fois que vous êtes de retour à une seule tête son flux de travail devrait
    • Avant de synchroniser vos changements
    • Faites un clic droit sur le projet -> Team -> Synchronisez
    • Dans la vue Synchronize faites un clic droit sur le nœud entrant et sélectionnez Pull and Update. Cela vous demandera alors de fusionner avec les changements entrants
    • Lorsque vous êtes prêt à pousser vos changements (vous devriez avoir une seule tête et rien dans les entrants) vous pouvez le faire dans la vue synchroniser en cliquant droit sur le nœud sortant. Pousser un changeset pousse tous les ancêtres.
Questions connexes