2010-03-24 6 views
23

Je suis nouveau à Mercurial et après un nettoyage du dossier de l'image dans mon projet, j'ai une tonne de fichiers montrant avec! dans le 'statut hg'. Je peux taper 'hg forget' pour chacun, mais il doit y avoir un moyen plus simple. Comment puis-je dire à mercurial d'oublier tous les fichiers supprimés (status =!) Dans un dossier?Comment faire pour oublier tous les fichiers supprimés avec Mercurial

+0

double: http://stackoverflow.com/questions/2412239/how-to-do-mercurials-hg-remove-for- all-missing-files – Cullub

+0

Pas exactement un doublon, bien que la résolution de l'un ou l'autre nécessite la liste des fichiers qui n'apparaissent pas dans 'ls'. Cette question demande comment marquer les fichiers supprimés lorsque hg est supprimé. Celui-ci est comment * un * marquer tous les fichiers hg enlevés. –

Répondre

27

Si vous êtes également d'accord avec l'ajout des fichiers qui existent et ne sont pas ignorés alors:

hg addremove 

serait une façon populaire de le faire.

+2

True, ajoutant des fichiers non suivis et marquant les fichiers manquants comme supprimés dans une commande abrégée. +1 – VonC

+0

certainement la bonne réponse ici – Jason

+0

Cela fonctionne aussi pour la traversée de dossiers récursifs, où -l'oublier -I doit être effectué dans le répertoire des fichiers à supprimer. –

3

Vous pouvez essayer:

hg forget -I '*' 

afin d'inclure tous les fichiers de votre commande oublier.

+3

faites attention, cela n'attrapera pas les fichiers commençant par un point dans le répertoire courant. –

+1

n'a rien fait pour moi: "abandon: aucun fichier spécifié" – stian

+0

Auriez-vous besoin de \ * \ * au lieu de * pour regarder au-delà du répertoire racine? ('hg help patterns') –

9

Avec fileset (Mercurial 1.9):

hg forget "set:deleted()" 

En général, sous Linux ou Mac:

hg status -dn | while read file ; do hg forget "$file" ; done 

Ou, si votre shell le permet, s'il n'y a pas trop de fichiers, et si les fichiers ne contiennent pas d'espaces ou des caractères spéciaux, puis:

hg forget $(hg st -dn) 

Je

1

En utilisant le drapeau -d pour le statut, qui affiche les fichiers manquants:

for file in $(hg status -d | cut -d " " -f 2); do echo hg forget $file; done

Exécuter ce dans la racine de votre pension, et si vous êtes satisfait des résultats, enlever le echo

Cela a le bonus sur la réponse acceptée de pas faire des travaux supplémentaires, par exemple ajouter un tas de fichiers non suivis.

+0

Je ne reçois aucun fichier ou répertoire de ce type pour chacun des fichiers, ils sont probablement manquants. – Grzenio

0

plus court au lieu de

for file in $(hg status -d | cut -d " " -f 2); do echo hg forget $file; done 

cette

hg status -d | cut -d " " -f 2 | xargs echo hg forget # test case 
hg status -d | cut -d " " -f 2 | xargs hg forget # real work 
Questions connexes