Tonfa est droit. Ce que vous décrivez n'est pas le 'fusion' (ou 'poussant' ou 'tirant'); c'est un "écrémage". Une poussée ou une traction déplace toutes les révisions d'un repo à un autre qui ne sont pas déjà dans ce repo. Un "fusionner" prend deux "têtes" et les fusionne à une nouvelle révision qui est la combinaison des deux.
Si vous avez vraiment besoin pour aller de G-dessus, mais ne peut pas respecter ayant D,E,F il devrait vous hg à l'exportation "G de pensions de Un, et puis" hg à l'importation " repo A. La Transplantation d'extension est un wrapper autour de l'exportation/importation avec quelques subtilités pour aider à éviter de déplacer le même ensemble de modifications sur plusieurs périodes.
Cependant, l'inconvénient à l'utilisation de l'importation/exportation, la greffe, et de l'écrémage en général, c'est que vous ne pouvez pas vraiment aller plus G sans ses ancêtres, parce que dans la Mercurial, un ensemble de modifications du nom est sa "hashid" qui comprend les hashids de ses parents. Parents différents (G nouveau parent serait C et non F) désigne un autre hashid, il n'est donc pas G plus -- c'est le travail de G, mais une nouvelle révision par son nom.
Se déplaçant sur G comme quelque chose de nouveau, nous allons l'appeler G' (Gee premier), n'est pas une grosse affaire, pour certaines utilisations, mais pour d'autres c'est un gros pain pita. Lorsque bientôt repo B est une nouvelle révision, H, et que vous voulez le déplacer sur son parent sera de changement de G à G', qui ont des tables de hachage. Cela signifie que H va se déplacer sur comme H' -- 100 ensembles de modifications en bas de la ligne et vous aurez des différentes hashids pour tout parce que vous ne pouvait pas supporter d'avoir D,E,F dans repo A.
Les choses vont devenir encore plus hors de contrôle si/lorsque vous souhaitez déplacer le contenu de Pensions de Un dans des Pensions de B (l'opposé de la direction de votre déplacement antérieur). Si vous essayez de faire un simple "hg push" de A à B, vous obtiendrez G' (et H' et par la suite descendants) qui seront les doublons de la révision que vous avez déjà dans des Pensions de B.
Quelles sont vos options?
-
N'avez pas de soins. Vos données sont toujours là tu viens de finir avec identiques avec des noms différents et plus de travail sur l'avenir des échanges entre les deux titres. Ce n'est pas mal, c'est juste un peu maladroit peut-être, et certaines personnes ne se soucient pas.
-
Déplacez tous D,E et F au cours des Pensions de A. vous pouvez Vous déplacer toutes les révisions plus si ils sont inoffensifs et d'éviter tous les tracas. Si elles ne sont pas si inoffensifs que vous pouvez les déplacer et ensuite faire un hg sauvegarde " pour annuler les effets de la D,E et F dans une nouvelle révision H.
-
Donnez G mieux la filiation pour commencer. C'est-à-dire pour me parler de cela parce que c'est trop tard pour aller dans cette voie (sans édition de l'histoire). Ce que vous devriez avoir fait avant de travailler sur l'ensemble de modifications G a été de
hg update C
. Si G ne dépendent pas ou exiger des révisions D,E, et F, alors il ne devrait pas être de leur enfant.
Si, au lieu de vous mettre à jour à C d'abord, vous aurez un graphique comme ceci:
A - B - C - D - E - F
\
G
ensuite, l'ensemble de la réponse à cette question serait juste hg push -r G ../repoA
et G pourrait se déplacer plus proprement, tout en conservant son même hashid, et D, E et F ne serait pas aller avec elle.
Mise à JOUR:
Comme l'a souligné dans les commentaires. Avec moderne Mercuriels l' hg graft
de commande est le moyen idéal pour le faire.