2012-09-03 12 views
12

A menudo me preocupa que mi archivo hgignore pueda excluir archivos importantes. Por ejemplo, me acabo de dar cuenta de que estaba excluyendo todos los archivos .exe que excluían algunas pequeñas herramientas ejecutables que deberían mantenerse con la fuente. Fue un cambio simple incluirlos, pero me preocupa que las reglas puedan tener consecuencias inesperadas.¿Cómo verificar qué archivos se están ignorando debido a .hgignorar?

¿Hay alguna manera de ver una lista de todos los archivos que no se están siguiendo debido al archivo .hgignore? Solo para poder revisar periódicamente la lista y comprobar que estoy contento con ella.

Respuesta

21

El comando hg status -i hace exactamente eso.

+0

me golpeó porque estaba demasiado ocupado escribiendo los otros caracteres para cumplir con el requisito de carácter mínimo :) _ "cuerpo debe tener 30 caracteres ingresaste 28" _ –

+0

@BurhanKhalid: He tenido ese problema también ... lección: "si tiene dudas, sea prolijo";) – Jon

+0

Siempre doy respuestas usando las --long-options de todos modos. Mejor para enseñar :) –

5

Sí, es posible. Si está utilizando smth como TortoiseHg, puede seleccionar qué archivos desea ver.

He aquí una muestra

enter image description here

12

@ Jon me ganó de mano con la respuesta correcta, pero vale la pena nada que junto con status -i, se encuentra:

  • hg status -m (sólo se modificó archivos)
  • hg status -a (solo archivos que se han agregado)
  • hg status -r (sólo los archivos que se han eliminado)
  • hg status -d (sólo los archivos que se han eliminado)
  • hg status -u (todos los archivos que no son seguidos)
  • hg status -c (archivos sin cambios, es decir. "Limpiar")
  • hg status -A (todos los archivos, es decir, todo)
6

Si usted quiere hacer inspección manual en los nombres de archivo, a continuación, utilizar la bandera -i/--ignored al estado:

$ hg status -i 
I ignored file.exe 

Si desea los nombres de archivo solo, utilice -n/--no-status para suprimir el código de estado I impreso delante de cada nombre de archivo:

$ hg status -n -i 
ignored file.exe 

Si necesita proceso de los archivos con xargs, a continuación, utilizar la bandera -0/--print0 además:

$ hg status -n -0 | xargs -0 touch 

que se encargará de manejar correctamente los espacios - con el uso de -0, existe el riesgo que terminarás tratando ignored file.exe como dos archivos: ignored y file.exe ya que los proyectiles normalmente se dividen en espacios.

Los comandos anteriores le muestran archivos sin seguimiento que coinciden con .hgignore.Si desea resolver el problema relacionado de encontrar archivos rastreados que coinciden con .hgignore, entonces necesita utilizar un fileset query. Que tiene este aspecto:

$ hg locate "set:hgignore()" 

Puede utilizar conjuntos de archivos con todos los comandos que operan sobre archivos, por lo que puede por ejemplo hacer:

$ hg forget "set:hgignore()" 

para programar los archivos encontrados para la eliminación (con una copia izquierda detrás de tu copia de trabajo).

Cuestiones relacionadas