web-dev-qa-db-fra.com

Comment supprimer certains changesets d'un clone Mercurial spécifique?

J'ai un clone d'un dépôt central à la rév 2048. Je veux supprimer les 10 derniers changements sur mon dépôt local comme si j'étais de retour il y a deux semaines. Je suppose que je pourrais supprimer mon référentiel local et faire "hg clone -rev 2038" mais ce serait long (le clonage du dépôt prend plusieurs minutes). Existe-t-il un moyen de simplement "décompresser" certains ensembles de modifications?

Remarques:

  • Je n'essaie pas d'annuler les ensembles de modifications. Je retirerai finalement ces changesets du repo central.
  • Je n'essaye pas de mettre à jour le répertoire de travail vers une version antérieure; Je veux vraiment affecter le référentiel.
  • Je n'ai aucun jeu de modifications sortant ou modification en attente dans mon référentiel actuel et dans mon répertoire de travail.
50
Sylvain

Utilisez la commande strip:

hg strip -r 2039

Cette commande est fournie par StripExtension . Il est distribué dans le cadre de Mercurial 2.8 et versions ultérieures, mais vous devez d'abord l'activer en ajoutant les lignes suivantes à votre .hgrc ou Mercurial.ini:

[extensions]
strip =

Avant Mercurial 2.8, il faisait partie de la MqExtension .

Pour vous empêcher de détruire accidentellement l'historique, la commande générera un ensemble de sauvegarde dans .hg/strip-backup/ que vous pouvez hg unbundle à nouveau si désiré.

82
Wim Coenen

Le clonage de votre dépôt local doit être rapide. Je suppose que "plusieurs minutes" se réfèrent à un dépôt à distance?

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

19
Mark Tolonen

Pour supprimer un ensemble de modifications déjà validé et poussé, utilisez:

 hg backout -r (changeet number) 

Pour supprimer un ensemble de modifications qui a été validé mais non poussé, utilisez:

 hg strip -r (numéro de modification) 
12
Shweta

Pour les versions antérieures à Mercurial 2.8, le Strip faisait partie de MqExtension.
Si vous devez activer les anciennes extensions MQ, vous pouvez le faire en ajoutant ceci:

[extensions]

hgext.mq =

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

Les informations de Strip étaient auparavant ici mais maintenant elles peuvent être trouvées ici .

7
Ymagine First