Mercurial: La fusion entre les branches ... Backwards?
-
28-09-2019 - |
Question
La situation: Je suis nouveau à Mercurial. J'ai récemment l'installation et ont commencé à utiliser un référentiel dans un modèle recommandé me ( voir le diagramme de Rudi ci-dessous). Les choses vont bien, mais j'ai courir dans mon premier problème d'application pratique. Mercurial semble être orienté vers l'avant se confond / mixte et je voudrais sauvegarder. Je veux nettoyer notre défaut et la branche stable en commençant par la branche du fournisseur, re-faire nos changements et vérifier dans par défaut. Puis fusionner cela dans stable.
V1----V2-------------V3---------V4 Vendor
\ \ \ \
D1----D2---D3--D4-D5-D6-D7-D8---D9 default
\ \ \
S1----------S2---S3 stable
La question: Comment puis-je commencer par la branche du fournisseur comme parent, fusionner les modifications par défaut et les engage à la branche par défaut
Je pensais que ce qui suit le ferait, mais la mise à jour modifie le répertoire de travail.
hg update -C vendor
hg update default
hg merge
La solution
Il y a deux façons d'aller cela. Celui de droite et celui de expédient. Je vais faire la bonne première:
hg update default
hg --config ui.merge=internal:other merge vendor
qui met à jour votre parent par défaut et le répertoire de travail par défaut, puis se confond dans le contenu du fournisseur, mais le fait en utilisant un outil de fusion interne toujours prend l'autre option quand il y a une différence, de sorte que vous aurez défaut à la recherche comme fournisseur après la fusion (et commettez).
La façon sournoise est:
hg update -C vendor
hg debugsetparent default
hg commit
Où debugsetparent
est un outil électrique qui fait la partie de la mise à jour « changement parent » sans réellement mettre à jour les fichiers dans le répertoire de travail.
Autres conseils
Bien qu'il manque le cadre de cette question et ses réponses fournit, j'ai trouvé le .