56 votes

Comment déplacer certains ensembles de modifications vers une nouvelle branche dans Mercurial

Je veux déplacer un changement d'ensemble d'un branchement à un autre. Fondamentalement, j'ai actuellement:

A -> B -> C -> D # branche par défaut

Et je veux:

A # branche par défaut
 \-> B -> C -> D # some_new_branch

Où some_new_branch n'existe pas encore. Je suis habitué à git, donc je suppose qu'il y a une manière "simple" que j'ai manquée dans Mercurial.

69voto

Mark Tolonen Points 32702

Une façon de procéder consiste à exporter un patch pour B, C, D ; mettre à jour vers A ; créer une branche ; appliquer le patch :

hg export -o patch B C D
hg update A
hg branch nomdelabranche
hg import patch

Pour supprimer B, C, D de la branche par défaut, utilisez la commande strip de l'extension mq.

11voto

crazyscot Points 6675

Cela ressemble un peu à une opération cherry-pick en git. L'Extension Transplant pourrait être ce que vous recherchez.

8voto

Kbii Points 95

Une alternative à la transplantation ou au patch, vous pourriez utiliser graft.

hg update A
hg branch branchname
hg graft -D "B:D"
hg strip B

Remarquez que modifier l'historique est une mauvaise pratique. Vous ne devriez supprimer que si vous n'avez pas encore poussé. Sinon, vous pourriez toujours annuler vos modifications.

7voto

techtonik Points 2945

Avec Mercurial Queue :

# marquer les révisions comme brouillons au cas où elles ont déjà été partagées
#hg phase --draft --force B:D
# convertir les changesets en commits de file d'attente de correctifs
# (les correctifs sont stockés dans .hg/patches)
hg qimport -r B:D
# retirer les changesets de la branche actuelle
hg qpop -a
# 
hg branch some_new_branch
# pousser les changesets vers la nouvelle branche
hg qpush -a
# et les transformer en commits
hg qfinish -a

Sans commentaires :

hg qimport -r B:D
hg qpop -a
hg branch some_new_branch
hg qpush -a
hg qfinish -a

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X