Nous avons maintenant une branche "stiging", où "staging" semble être un ajustement sémantique bien meilleur. Quelle est la bonne stratégie pour gérer cela?
205
Mettez à jour la stiging
branche et créez-en une nouvelle. Fermez ensuite l'ancienne branche.
En résumé:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
. Par exemple:hg branch --force v3
. Cela se traduira par unehg update v3
mise à jour vers la nouvellev3
branche, comme vous le vouliez.stiging
avant de vous bifurquer, vous n'obtenez pas une "extrémité lâche"Pour les futurs lecteurs: Avec l'
rebase
extension, vous pouvez créer une nouvelle branche avec le même parent questiging
et y déplacer tout l'historique de la branche, comme ceci:Cela suppose qu'il
stiging
n'a qu'un seul parent. Bien sûr, vous pouvez simplement utiliser des numéros de révision explicites à la place.Note 1: Si la branche
stiging
comprend des fusions avec d' autres branches, je pense que cela va les préserver, aussi longtemps questaging
etstiging
avoir le même parent. Mais je reverrais certainement.Remarque 2: puisque cela modifie l'historique, l'ancienne branche ne disparaîtra pas simplement des référentiels clonés (voir la
rebase
documentation). À moins que tout le monde ne puisse cloner à nouveau, cela pourrait ne pas être une solution très pratique pour un grand groupe.Note3 / Edit (gracieuseté de @JasonRCoombs): Maintenant que les phases sont standard dans mercurial,
rebase
refusera de modifier les changesets qui ont déjà été poussés. Soit le tromper en changeant la phase en brouillon (avechg phases
), soit laisser l'ancienne branche rester où elle est, et juste faire une copie correctement nommée (par exemple, avec `hg rebase --keep ').la source
hg convert
place.--keep
à la commande rebase, qui copiera au lieu de déplacer les modifications.abort: can't rebase immutable changeset 11b1e2b7dc4f
. Notez que j'ai greffé des changesets d'une autre branche dans celle-ci. En plus de cela, il est divisé et fusionné gratuitement..
pour votre--dest
valeur et le rebase prendra automatiquement le nouveau nom de la branche.Si vous avez des ensembles de modifications, vous devrez utiliser l' extension convert avec une branche pour la renommer. Tout le monde devra alors cloner le nouveau référentiel ou retirer l'ancienne branche.
la source
Créez une nouvelle branche appelée "mise en scène" et oubliez l'autre ...
la source
Cela modifie l'historique et n'est destiné qu'aux utilisateurs avancés de Mercurial. Ne faites pas cela si vous ne savez pas ce que cela signifie.
Si le stigeage est local uniquement, vous pouvez le remplacer par un staging avec une combinaison de greffe et de bande . Commencez par mettre à jour l'ensemble de modifications de l'ancêtre où la stigmatisation avait divergé. Créez la branche intermédiaire et greffez chaque validation de la stigmatisation à la mise en scène. La mise en scène devrait maintenant être une copie de la stigmatisation. Enfin, détruisez les stigmates en supprimant son premier commit.
la source
hg graft {first changeset in stiging}..{stiging head}