web-dev-qa-db-fra.com

Quelle est la différence entre rollback, backout et strip dans le plugin Mercurial Eclipse?

Quelle est la différence entre les éléments de menu rollback, backout et strip dans le plugin Mercurial Eclipse?

Puis-je supprimer la validation dans le référentiel local sans modifier les fichiers de mon espace de travail avec l'une de ces 3 commandes?

Ou existe-t-il une autre solution pour valider et pousser un correctif sur une autre partie du projet? Mon travail actuel n'est pas terminé et je ne peux pas le pousser. Mais je dois vérifier une solution rapide pour une autre partie du projet.

La seule solution que je vois est de créer un deuxième espace de travail. Mais cela me semble exagéré.

49
Horcrux7

Ces commandes viennent toutes de Mercurial lui-même, et il y a beaucoup de bons articles de comparaison/contraste pour eux. Cependant, les voici en bref:

  • rollback: annulation à un niveau. Annulera le dernier pull ou commit ( peut être dangereux )
  • backout: crée un nouveau commit qui est l'inverse d'un commit donné. L'effet net est une annulation, mais le changement reste dans votre historique.
  • strip: supprimez ( détruisez ) les modifications de l'historique. La suppression d'un ensemble de modifications supprime également tous ses enfants, il ne peut donc être utilisé que pour tronquer l'historique, pas pour supprimer une tranche.

Tous les trois sont très bien décrits ici: http://www.selenic.com/Mercurial/hg.1.html

Pour votre question 2, vous pouvez utiliser strip pour supprimer le commit le plus récent et cela ne vous modifiera pas.

Pour votre question 3, vous pouvez facilement apporter des modifications sur une autre partie de ce projet:

hg commit -m 'commit your half done work'
hg update OLDERCHANGESET # your working directory now is without the half-done-work
.. do that quickfix ...
hg commit -m 'quickfix'
hg Push tip # this pushes the tip revision (latest) and its ancestors, but the half-don't work isn't an ancestor so it doesn't get pushed
hg update HALFDONEWORK # you can find the right revision number using "hg heads"

C'est ce qu'on appelle une "branche anonyme" et c'est une façon très courante de travailler. Vous finissez par valider la fonctionnalité à moitié terminée, mais vous pouvez la reprendre plus tard et vous n'avez pas à la pousser.

Cela a une grande explication des branches anonymes: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-Mercurial/#branching-anonymously

62
Ry4an Brase