J'essaie de faire une fusion compliquée dans un référentiel HG compliqué. Je ne suis pas content de «l'ancêtre commun le plus récent» que Mercurial choisit d'utiliser comme "base" pour effectuer la fusion. P>
J'aimerais spécifier une commission spécifique de mon propre choix d'utiliser comme base. P>
est-ce possible, et si oui, comment? P>
3 Réponses :
Vous ne pouvez pas le faire. Parce que la nouvelle ancêtre partagée Si vous voulez effectuer de la fusion et que vous ne voulez pas de repenser (parce que votre montrage de la base de la logique / moi / des hypothèses et une solution de solution), vous pouvez aller cloner-rebase-fusion-export-export-Import Patch route p>
Il peut y avoir plusieurs ancêtres partagés candidats qui sont "tout aussi bien", mais différents. Voir man.he.net/man1/git-merge-base
@Lucaseijer - 1. Nous avons dit de Mercurial, pas de git 2. Ils ne sont pas b> "tout aussi bien", car le plus récent ancêtre est "plus fin" i>
Quelle est votre raison de savoir que le dernier est toujours i> le meilleur. Imo, il n'y a aucun moyen de savoir que. (Bien que généralement le plus récent est le meilleur). La liaison Git illustre simplement une situation où il n'y a pas de "meilleur", une situation qui peut se produire dans le Mercurial.
1. Mercurial n'a pas de mectopus-fusion 2. Deux divergés de nœuds i> doivent avoir un parent commun (où la séparation n'est toujours pas arrivée) 3. Le dernier parent est le meilleur, car il ne contient pas de morceaux excessives < / i>, des données fusionnantes non pertinentes
base est simplement utilisé comme une autre entrée dans votre outil de fusion. Si vous désactivez Premerge code> dans votre configuration de la fusion (Premierge fait les "choix évidents" pour vous quand il n'y a pas de conflit) et appelez votre outil de fusion fournissant manuellement des copies des 3 révisions que vous souhaitez comme locale, à distance et Base, vous pouvez obtenir ce que vous voulez dans votre outil de fusion. Seul le parent de gauche et des parents droits sont effectivement enregistrés dans la fusion. P>
Oui, je pourrais aller la voie totalement manuelle et pour chaque mergeconflict, copier manuellement la pâte de la base que je veux. Je regarde cependant de plus de 20 conflits de fusion et je dois être capable de trouver quelque chose automatique.
fusion.preferancestor code>. Mercurial vous en dira quand cela a du sens. Avec l'exemple ci-dessous, vous verriez:
a
b
c
b
C'est un wow! Fonctionne parfaitement. Merci beaucoup. En fait, je ne comprends pas pourquoi cette fonctionnalité n'est pas incluse dans Mercurial. Dans la plupart des cas, on n'en aura plus besoin, mais dans les cas où il est nécessaire, il peut économiser des heures de conflits résolvant, ou même empêcher une fusion automatique incorrecte. Je viens de rencontrer de tels problèmes après des changements inexacts dans le repo.