Je suis nouveau sur Mercurial et j'essaie de faire quelque chose de très simple mais je ne sais pas comment. J'ai créé une branche pour faire de l'expérimentation sans déranger la branche principale.
trunk A -- B -- C
\
experiment D -- E -- F
J'aime la façon dont l'expérience s'est déroulée et je veux la fusionner avec le tronc et obtenir
trunk A -- B -- C -- D -- E -- F
Cependant, comme rien n'a été changé dans la branche "tronc", la fusion indique qu'il n'y a rien à fusionner, ce qui est assez juste. Je dois juste terminer une branche appelée "tronc". Comment puis je faire ça?
La fusion dans Mercurial fonctionne toujours de la manière suivante:
Par exemple, dans votre cas, vous feriez:
hg update trunk
hg merge experiment
Il y a certaines choses à considérer lors du choix de la branche à mettre à jour et à partir de laquelle fusionner, et cela a à voir avec les signets et les noms de branche.
Prenez d'abord les noms des succursales. Si vous effectuez d'abord une mise à jour vers la branche de tronc, puis fusionnez avec l'expérience, l'ensemble de modifications de fusion sera sur la branche de tronc.
Cependant, si vous effectuez une mise à jour vers la branche d'expérience, fusionnez avec le tronc, le jeu de modifications de fusion se trouvera sur la branche d'expérience.
Ceci est important à considérer lorsque vous réfléchissez à la raison pour laquelle vous fusionnez. Fusionnez-vous l'expérience dans le tronc ou mettez-vous à jour l'expérience avec d'autres modifications survenues sur le tronc?.
En ce qui concerne les signets, avec les nouvelles versions de Mercurial, les signets font partie intégrante, et si vous mettez à jour un signet, dites comme ceci:
hg update moving-target
puis validez, ce signet suivra votre validation, c.-à-d. il ira de l'avant.
En conséquence, si vous avez un signet appelé Moving-Target sur la tête de la branche de tronc et que vous mettez à jour ce signet, l'ensemble de modifications de fusion, lorsque vous le validez, déplacera ce signet vers l'avant.
Une fois que vous avez créé une branche, vous ne pouvez pas obtenir exactement une seule branche par défaut (à quelques exceptions près, voir ci-dessous). Cependant, vous devriez pouvoir fusionner experiment
en default
et obtenir la même chose.
Si vous commencez par ceci:
et effectuez ceci:
hg update trunk
hg merge experiment
vous devriez vous retrouver avec ceci:
Autres options:
En utilisant rebase ou file d'attente de correctifs vous pouvez réellement déplacer les ensembles de modifications sur la branche experiment
sur default
. Cela supprimerait essentiellement la branche nommée experiment
et créerait quelques autres ensembles de modifications default
. Cependant, vous ne pouvez pas le faire si vous avez déjà partagé les ensembles de modifications de la première image ci-dessus avec un autre utilisateur.