2010-10-25 6 views
27

Si nous nous sommes engagés plusieurs fois, par exemple, sur notre dépôt local, pour la révision 3000, 3001, 3002, 3003. Si nous poussons vers un repo distant, il poussera 3000 à 3003. Existe-t-il un moyen de pousser seulement 3000 et 3001?Pour Mercurial, pouvons-nous pousser certains changesets et ne pas en pousser certains?

+1

duplication possible de [Dans Mercurial, y a-t-il un moyen (en dehors de "Cherry picking") de pousser un changeset sans pousser aussi les changesets associés à une tête différente?] (Http://stackoverflow.com/questions/3979122/ in-mercurial-is-there-any-way-de-cherry-picking-to-push-a-changeset) –

Répondre

38

Oui, vous pouvez sélectionner une révision à pousser. hg push -r 3001 (tous les ancêtres de la révision choisie seront poussés, vous n'avez pas besoin de spécifier 3000.)

+0

super, merci, est allé et a vu les docs. il dit que si '-r' est utilisé, alors ce changeset et tous ses ancêtres seront poussés. donc il n'est probablement pas possible de simplement pousser 3002 et 3003 sans 3000 et 3001? –

+0

Vous avez raison. Vous ne pouvez pas envoyer 3002 sans envoyer 3001 aussi (à moins qu'ils aient déjà 3001, bien sûr). Vous pouvez envoyer un ensemble de modifications différent qui a le même changement mais un hachage et un parent différents (et est donc un ensemble de modifications totalement différent), mais cela signifie que vous finirez avec un travail en double dans vos repos. –

+2

En outre, si vous utilisez tortoise hg: après avoir cliqué sur "détecter les modifications sortantes", faites un clic droit sur la révision que vous voulez pousser et cliquez sur pousser-> pousser la branche sélectionnée – grinch

9

Si vous avez besoin de pousser certains sans changesets tous les ancêtres (solution décrite dans @Woolble's answer), une bonne option est d'utiliser Mercurial Extension de files d'attente (MQ).

https://www.mercurial-scm.org/wiki/MqExtension

Cela vous permettra de re-ordre et même combiner changesets afin que vous puissiez les pousser dans l'ordre que vous voulez. Il faut un peu de travail pour commencer, mais vous trouverez que cela en vaut la peine.

J'ai TortoiseHg rend le travail avec MQ assez simple.

7

Pour ceux qui utilisent l'interface utilisateur et comme des images:

  1. In TortoiseHg cliquez sur le bouton Detect outgoing changes to. enter image description here

  2. Cliquez avec le bouton droit de la souris sur la révision que vous voulez pousser.

  3. Choisissez Push -> Push to Here. enter image description here

Résultat: Vous pousserez que la version sélectionnée plutôt que tout. enter image description here

Espérons que cela vous fasse gagner du temps.

Questions connexes