Prenons un exemple simple: je travaille sur la branche par défaut, j'ai des changesets validés localement, et j'en ai extrait quelques autres du dépôt principal. Je travaille depuis quelques jours dans mon référentiel local isolé, il y a donc pas mal de changements à fusionner avant de pouvoir ramener mes résultats en master.Est-ce que fusionner la direction importe dans Mercurial?
default ---o-o-o-o-o-o-o-o-o-o-o (pulled stuff)
\
o----o------------o (my stuff)
Je peux faire deux choses maintenant.
Option 1:
hg pull
hg merge
Résultat # 1:
default ---o-o-o-o-o-o-o-o-o-o-o
\ \
o----o------------o-O
Option # 2:
hg pull
hg update
hg merge
Résultat # 2:
default ---o-o-o-o-o-o-o-o-o-o-o-O
\ /
o----o------------o
Ces deux résultats me semblent isomorphes, mais en pratique, il semble que l'option n ° 2 entraîne de plus petits changements (car il applique seulement mes quelques changements à la ligne principale au lieu d'appliquer tous les changements à ma ligne principale).
Ma question est: est-ce important? Devrais-je m'occuper de la direction de mes fusions? Suis-je économiser de l'espace si je fais cela? (Faire hg log --patch --rev tip
après la fusion le suggère.)
Ceci est particulièrement important si vous utilisez [Hg-Git] (http://hg-git.github.com/), car il suit la position des branches Git virtuelles. en utilisant des signets. Si vous fusionnez dans le mauvais sens, le signet de la branche Git ne bougera pas et vous n'aurez rien à pousser. –
La fusion de 200 en 195 n'est pas garantie pour déplacer le signet vers 201. Si vous mettez 'hg update my-stuff; hg merge 200' il le fera, mais si vous faites 'hg update 195; hg merge 200' ce ne sera pas. La mise à jour par nom de signet le rend * actif *. –