2010-09-30 17 views
5

Je viens de basculer de SVN où après quelques changements au tronc je fusionnerais une gamme de révisions (de ma dernière fusion du tronc à la branhc - HEAD) dans une branche. Je veux faire la même chose avec Mercurial en utilisant TortoiseHG mais je n'arrive pas à comprendre comment. J'ai juste commis deux changesets au tronc, maintenant j'ai besoin de la branche pour intégrer ces changements. Merci d'avance!Mercurial/TortoiseHG Fusionner le tronc de lignes en branche

Répondre

7

En hg (ou n'importe quel DVCS) vous pouvez fusionner n'importe quel changeset avec n'importe quel autre changeset (sauf les ancêtres). Si vous ouvrez le journal du référentiel à partir de TortoiseHG (Afficher le journal des modifications depuis le menu contextuel de l'explorateur ou hgtk log depuis la ligne de commande), vous pouvez mettre à jour n'importe quel ensemble de modifications, puis sélectionner "fusionner avec".

Dans votre cas spécifique, vous devez effectuer la mise à jour vers la tête de votre branche, puis fusionner avec la tête du coffre.

+0

Mon cas n'était pas aussi simple que cela en raison de la conversion SVN, mais pour l'avenir c'est l'approche exacte que je vais prendre. – Chris

+0

@Chris: souhaitez-vous partager les détails de votre configuration? Quel genre de structure de branchement avez-vous? –

+0

J'essayais de fusionner mon tronc dans ma branche mais comme mon dépôt était créé à partir d'un repo SVN utilisant HG CONVERT, HG ne savait pas que j'avais incorporé des modifications du tronc en cours de route. J'ai effectué la fusion du tronc à la branche en choisissant de garder tous mes changements de la branche. Je me suis engagé. Cela a permis à HG de reconnaître que ma malle avait été fusionnée à la branche. Puis j'ai effectué les nouveaux changements sur le tronc, commis, et maintenant quand j'ai fusionné HG savait que ces nouveaux changements étaient les seuls qui devaient être fusionnés. Maintenant, HG sait exactement ce qu'il y a dans mon dépôt. – Chris

2

C'est ce que je fais habituellement:

hg up trunk #assuming trunk is your main branch 
hg merge -r myawesomebranch 
#party 
22

J'ai écrit un guide sur working with branches in Mercurial. Il se résume à ceci:

$ hg update mybranch # unless you are already at the tip of the branch 
$ hg merge default # merge in latest changes from "trunk" 
$ hg commit -m 'Merge with default' 

Quand mybranch est fait, vous fermez et fusionner en défaut:

$ hg commit --close-branch -m 'Ready for merge' 
$ hg update default 
$ hg merge mybranch 
$ hg commit -m 'Integrated mybranch' 

La chose cool Mercurial est que vous utilisez les mêmes commandes quelle que soit la direction vous fusionnez. Le système de suivi de fusion de Subversion nécessite que vous ajoutiez des drapeaux de ligne de commande spéciaux lorsque vous fusionnez dans une direction, mais pas dans l'autre (je ne me souviens plus de la direction sans le regarder dans le manuel).

+0

Pouvez-vous fournir un lien mis à jour vers le guide? Celui dans ce commentaire est cassé. –

+0

Bien sûr, j'ai corrigé le lien! –