2010-11-06 5 views
1

S'il y a deux branches, et moi-même avons fait un travail sur la branche default, je pense que d'une façon de pousser à la branche foo de l'autre clone estAvec Mercurial, s'il y a deux clones locaux, pouvez-vous pousser d'une branche à une autre?

cd ~/development/clone2 
hg up default 
hg pull ~/developmet/clone1 
hg up foo 
hg merge default 

ou

cd ~/development/clone1 
hg up default 
hg push ~/developmet/clone2 
cd ~/development/clone2 
hg up foo 
hg merge default 

Ces 2 méthodes fonctionnent exactement la même chose? (on est une traction, on est une poussée).

Existe-t-il un moyen plus simple de pousser directement la branche default de clone1 vers la branche foo de clone2? Merci.

(j'utilise clone 1 pour voir tous les changements que je l'ai fait (sans voir personne change d'autre), et utiliser clone2 de fusionner et d'intégrer avec d'autres membres de l'équipe)

Répondre

0

Vous pouvez toujours pousser et tirer une seule révision et tout cela en utilisant les ancêtres:

hg push -r revision ~/development/clone1 

ou

hg pull -r revision ~/development/clone2 
+0

mais ce à propos des branches ... de branch1 à branch2 –

+1

pousser et tirer ne changera jamais la branche sur laquelle existe un changeset, rien ne le fera. La branche est une partie immuable d'un changeset dans mercurial. Vous pouvez obtenir le contenu/les effets de ce changement d'une branche à l'autre en utilisant 'merge', ce qui crée de nouveaux changesets. Il y a une bonne vue d'ensemble et une comparaison de clone-branchement vs branche-branche-branchee vs marque-branche-branche sur http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/ –

0

il n'y a aucun moyen de « pousser à une autre branche » parce que vous aurez toujours de fusionner les deux branches différentes manuellement

Les deux méthodes vous avez décrit le travail exactement le même, mais le premier est recommandé (Toujours faire le travail de fusion dans votre clone, pas le référentiel d'intégration ou quelqu'un clone d'autre)

est peut-être une omission intentionnelle mais les deux exemples que vous devez engager le résultat de la fusion et dans le premier exemple vous devez pousser le changeset de fusion Retour à clone2

Ainsi, dans ~/développement/clone1 faire:

hg up default 
hg pull -u ~/development/clone2 
hg up foo 
hg merge default 
hg ci -m 'merged default into foo' 
hg push ~/development/clone2 

Si vous faites cela beaucoup yo u peut envisager d'ajouter ces lignes à votre ~/développement/clone1/.hg/fichier hgrc

[paths] 
default = ~/development/clone2 

Cette façon, vous pouvez omettre le chemin du référentiel lorsque vous tirer et pousser à partir du référentiel d'intégration