2010-03-24 12 views
23

Soy nuevo en Mercurial y después de una limpieza de la carpeta de imágenes en mi proyecto, ¡tengo un montón de archivos que muestran! en el 'estado de hg'. Puedo escribir un 'hg forget' para cada uno, pero debe haber una manera más fácil.Cómo olvidar todos los archivos eliminados con Mercurial

Entonces, ¿cómo puedo decirle a mercurial que se olvide de todos los archivos eliminados (estado =!) En una carpeta?

+0

duplicado: http://stackoverflow.com/questions/2412239/how-to-do-mercurials-hg-remove-for- Todos los archivos que faltan – Cullub

+0

No es exactamente un duplicado, aunque resolver uno requiere la inclusión de archivos que no aparecen en 'ls'. Esa pregunta pregunta cómo marcar los archivos eliminados como hg eliminado. Esta es la forma de * anotar * todos los archivos eliminados hg. –

Respuesta

27

Si también estás bien con la adición de todos los archivos que existen y no son ignorados a continuación:

hg addremove 

sería una forma popular de hacer eso.

+2

Es cierto, agregar archivos sin seguimiento y marcar los archivos faltantes como se eliminó en un comando abreviado. +1 – VonC

+0

definitivamente la respuesta correcta aquí – Jason

+0

Esto también funciona para el recorrido recursivo de carpetas, donde -como se debe olvidar -I tiene que realizarse en el directorio de los archivos que se eliminarán. –

3

Usted puede tratar de:

hg forget -I '*' 

con el fin de incluir todos los archivos en su comando olvidar.

+3

tenga cuidado, eso no atrapará los archivos que comienzan con un punto en el directorio actual. –

+1

no hizo nada por mí: "abortar: no se especificó ningún archivo" – stian

+0

¿Necesitaría \ * \ * en lugar de * para ver más allá del directorio raíz? ('hg help patterns') –

9

Con el conjunto de archivos (Mercurial 1.9):

hg forget "set:deleted()" 

En general, en Linux o Mac:

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

O, si su shell se lo permite, si no hay demasiados archivos, y Si los nombres de los archivos no contienen espacios o caracteres especiales, entonces:

hg forget $(hg st -dn) 

I

1

Mediante el uso de la bandera -d para el estado, que muestra los archivos que faltan:

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

Ejecutar esta en la raíz de tu repositorio, y si está satisfecho con los resultados, retire la echo

Esto tiene la bonificación sobre la respuesta aceptada de no haciendo cualquier trabajo adicional, por ejemplo agregando un montón de archivos sin seguimiento.

+0

Me sale 'ningún archivo o directorio' para cada uno de los archivos, probablemente faltan. – Grzenio

0

más corta en lugar de

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

este

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 
Cuestiones relacionadas