2008-10-31 12 views
141

Estoy buscando una expresión para el archivo .hgignore, para ignorar todos los archivos debajo de una carpeta especificada.¿Cómo puedo ignorar todo en una carpeta en Mercurial

por ejemplo: Me gustaría hacer caso omiso de todos los archivos y carpetas debajo de bin

En realidad algún consejo sobre cómo se forman las expresiones sería grande

Respuesta

159

alternativa:

syntax: glob 
bin/** 
+0

esto es mucho más fácil, creo :) – Xian

+2

Parece que solo "bin" (sin comillas) funciona ... – PhiLho

+0

PhiLho, creo que también filtraría los archivos llamados bin –

2

No importa, lo tengo

syntax: regexp 
bin\\* 

expresiones sigue la sintaxis estándar de expresión regular de perl.

+2

De hecho, y su expresión significa "archivo o carpeta que termina con bin y seguido por 0 o más barras invertidas" ... por lo que funciona porque la barra invertida es anulado por el *, pero se aplica a cualquier cosa "bin" dentro. En Windows, hg reemplaza \ by/before matching. – PhiLho

8

Tanto de los que también se filtrará un directorio llamado cabin, que podría no ser lo que quieres. Si está filtrando a nivel superior, puede utilizar:

^/bin/ 

Para bin directorios por debajo de su raíz, se puede omitir el ^. No es necesario especificar la sintaxis, regexp es el valor predeterminado.

+3

Esto no ignorará nada. El símbolo de intercalación solo dice cosas en la raíz del repositorio, pero la barra diagonal inicial solo capta los directorios que no están en la raíz del repositorio. –

0

para ignorar los archivos .class

syntax: regexp 
?\.class 
+1

Sintaxis de expresiones regulares incorrecta ... – PhiLho

48

hice algunos experimentos y he encontrado que la sintaxis de expresiones regulares en Windows se aplica a la ruta que comienza con el repositorio actual, con barras invertidas transformados a cuchilladas.

Así que si su repositorio está en E: \ Dev por ejemplo, hg status aplicará los patrones contra foo/bar/file1.c y tal. Los anclajes se aplican a esta ruta.

Así:

  • Glob se aplica a los elementos de ruta y tiene sus raíces en partes de elemento
  • foo coincide con cualquier carpeta (o archivo) llamado foo (no a "foobar" ni "barfoo")
  • * foo * coincide con cualquier carpeta o archivo por "fu" en el nombre
  • foo/bar * coincide con todos los archivos en la carpeta "foo" a partir de "barra"


  • expresión regular entre mayúsculas y minúsculas, no anclado
  • Por supuesto, la barra invertida regex caracteres especiales como. (punto)
  • /matches \ path separator en Windows. \ no coincide con este separador ...
  • foo coincide con todos los archivos y carpetas con "foo" dentro de
  • foo/detecta sólo las carpetas que terminan en "foo"
  • /foo/coincide con la carpeta "foo" en algún lugar en el camino
  • /foo/bar/coincide con la "barra" carpeta en la carpeta "foo" en algún lugar en el camino
  • ^foo coincide archivo o carpeta a partir de foo en la raíz del repositorio
  • foo $ coincidencias archivo que termina en foo

Espero que esto ayude, encontré la página HGIGNORE(5) un poco sucinta.

+0

+1 eso es lo que llamo una buena respuesta, aplausos – NSGaga

+0

Tengo el patrón '' [Dd] ebug */'' en uso y lo extraño es que también filtra ** archivos * * como '' debug.txt '' –

0

sintaxis: glob bin/**

Esta solución se muestra anteriormente, sin embargo también me gustaría añadir que * y ** se manejan de forma diferente. ** es recursivo, * no lo es.

Ver Hg Patterns

Cuestiones relacionadas