51 votes

Comment supprimer des changesets d'un référentiel Mercurial?

J'ai un clone d'une centrale de pensions de titres à rev 2048. Je veux enlever les 10 dernières révisions sur mon repo local comme si j'étais de retour dans le temps, il y a deux semaines. Je suppose que je pourrais supprimer mon local repo et n' "hg clone -rev 2038" mais ce serait long (cloner le repo prend plusieurs minutes). Est-il un moyen de le "unpull" certaines révisions?

Notes:

  • Je ne suis pas en train de rejeter les révisions. Je vais finalement tirer de ces révisions à nouveau à partir de la centrale des pensions.
  • Je ne suis pas en train de mettre à jour le répertoire de travail à une version antérieure; je veux vraiment affecter le référentiel.
  • Je n'ai pas tous les ensembles de modifications, ou en attente de modifications dans mon repo et le répertoire de travail.

85voto

Wim Coenen Points 41940

L'utilisation de la bande de commande:

hg strip -r 2039

Cette commande est fournie par le StripExtension. Il est distribué dans le cadre de l'Mercurial 2.8 et, plus tard, mais vous ne devez l'activer en premier. Avant d'Mercurial 2,8, il faisait partie de la MqExtension.

Pour vous éviter de détruire accidentellement l'histoire, la commande va générer une sauvegarde bundle en .hg/strip-backup/ qui vous pouvez hg unbundle nouveau si vous le souhaitez.

19voto

Mark Tolonen Points 32702

Le clonage de votre dépôt local devrait être rapide. Je suppose que "plusieurs minutes" se réfère à un repo distant?

Vous pouvez utiliser hg clone <local repo> <new repo> -r <revision> pour ne cloner que jusqu'à une certaine révision.

12voto

stillLearning Points 114

Pour supprimer un changeset déjà utilisé et poussé, utilisez:

 hg backout -r (numéro de changement)

Pour supprimer un changeset validé mais non poussé, utilisez:

  hg strip -r (numéro de changement)

7voto

Ymagine First Points 181

Si vous devez activer les extensions MQ, vous pouvez le faire en ajoutant ceci:

 [extensions]

hgext.mq =
 

dans votre fichier ~ / .hgrc (ou mercurial.ini).

Les informations de bande devraient être ici, mais le serveur a maintenant un beau message "Erreur interne du serveur".

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