web-dev-qa-db-fra.com

Comment supprimer tous les fichiers non suivis de mon répertoire de travail dans Mercurial?

Est-il possible de supprimer tous les fichiers non suivis de mon répertoire de travail? Disons que j'ai ajouté un tas de fichiers à mon répertoire de travail, que je ne les ai pas ajoutés via 'hg add' et que je veux maintenant me débarrasser entièrement de ces nouveaux fichiers?

Je suis sous Windows, bien que j'utilise PowerShell. Une solution combinée est donc également possible ici.

198
Valentin

Ajoutez l’extension Mercurial appelée purge. Il est distribué par Mercurial.

Cette extension ajoute une commande "purge" à "hg" qui supprime les fichiers inconnus de Mercurial. c'est-à-dire des fichiers non suivis. Donc, votre commande serait,

hg purge

Il n'est pas activé par défaut, peut-être pour éviter de supprimer accidentellement les fichiers que vous avez oublié d'ajouter.

Pour installer cette extension, ajoutez-la à votre fichier de paramètres Mercurial (.hgrc sous Unix, Mercurial.ini sous Windows).

[extensions]
purge = 

Pour activer temporairement cette extension, vous pouvez utiliser

hg purge --config extensions.purge= 
272
simplyharsh

La bonne manière sans purge est:

hg st -un0 | xargs -0 rm
116
tonfa

Merci! Cela a fonctionné pour moi aussi dans Powershell:

hg st -un | rm
15

Essayez de suivre:

hg st -un | xargs rm
3
Alexei Tenitski
rm $(hg st -u)

... où -u signifie "non suivi", vous pouvez également choisir un autre état.

3
Alex

Cela devrait faire l'affaire:

hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf
2
Kristian

si vous ne voulez pas utiliser purge:

rm $(hg st | grep ^? | awk '{print $2}')
2
Lev

Vous pouvez utiliser

hg purge --all

supprimer tous les fichiers ignorés et non suivis

(vous devez d'abord installer l'extension de purge comme expliqué dans certaines réponses)

2
Alex L

En supposant que vous utilisez un système * nix, vous pouvez exécuter quelque chose comme ceci:

rm `hg st | awk '/\?/ {print $2}'`

à partir de la racine du référentiel Mercurial.

Je ne connais pas de commande Mercurial standard permettant d'atteindre le même objectif, mais je pense qu'il existe de nombreuses options en ligne de commande pour le faire. Je suis sûr qu'il existe de "meilleures" solutions et serais intéressé d'entendre d'autres suggestions.

Veuillez utiliser cette commande avec prudence car elle n'a pas été testée à fond.

0
Heinrich Filter