2010-09-16 6 views
1

J'ai rencontré un problème dans mon flux de travail Mercurial lors de l'expérimentation de l'implémentation d'une certaine fonctionnalité. J'essayais trois approches différentes pour implémenter la fonctionnalité en validant chaque mise à jour suivie de la mise à jour du jeu de modifications précédent - donc je me retrouve avec trois branches différentes. Une fois que j'ai choisi l'une des branches comme implémentation "correcte" de l'entité, je souhaite supprimer les autres branches afin de ne pas avoir plusieurs têtes. Comment est-ce que je fais ceci d'une manière simple? J'ai fini par fusionner les trois branches, ce qui était inutile parce que je voulais seulement le code d'une branche.Flux de travail d'expérimentation Mercurial

Répondre

2

En plus de hg strip du mq extension, vous pouvez simplement utiliser le standard clone command:

$ hg clone -r the-good-head . ../pruned 

pour obtenir un clone dans ../pruned qui ne contient que la bonne tête (et tous ses ancêtres). C'est la façon sûre et intégrée d'élaguer les choses dans Mercurial et elle a l'avantage que vous avez toujours les deux dépôts intacts après la commande. Donc, si vous faites une erreur, supprimez simplement le clone ../pruned.

2

qui suit ferme une branche

hg commit --close-branch 

Il ne sera pas affiché dans

hg branches or hg heads 
+0

Il apparaît toujours dans les têtes hg. En fait, je n'ai pas créé une branche, juste une hydre à 3 têtes! – Tarski

+0

Cela fonctionne pour moi. Avez-vous l'option par défaut '-c'' 'hg heads'? –

+0

Il y a aussi un bug dans Mercurial 1.3.1, cela fonctionne bien sur les dernières versions de Mercurial (têtes hg). – pyfunc

1

Activer l'extension mq intégré et exécuter hg strip. La réponse de pyfunc conserve les branches fermées dans l'historique des révisions, ce que je ferais en réalité à moins que vos branches indésirables ne soient énormes.