2010-03-31 12 views
7

Tengo un proyecto NetBeans y el repositorio Mercurial está en la raíz del proyecto. Me gustaría ignorar todo, excepto el contenido de las carpetas "src" y "test", y .hgignorar por sí mismo.Mercurial/.hgignore - ¿Cómo ignoro todo excepto el contenido de una carpeta?

No estoy familiarizado con las expresiones regulares y no puedo encontrar una que lo haga.

Los que trataron:

(?!? Src /.*)

(prueba /.*?!)

((^ hgignore?!.)? ! src /. | test /. | .hgignore)

Estos parecen ignorar todo, no puedo entender por qué.

Cualquier consejo sería genial.

Respuesta

7

Esto parece funcionar:

syntax: regexp 

^(?!src|test|\.hgignore) 

Esto es, básicamente, su último intento, pero:

  • Está enraizada en el principio de la cadena con ^, y
  • no lo hace requiere una barra inclinada para los nombres de directorio.

El segundo punto es importante ya que, como the manual dice:

Por ejemplo, digamos que tenemos un archivo sin seguimiento, file.c, a/b/file.c dentro de nuestro repositorio. Mercurial ignorará file.c si algún patrón en .hgignore coincide con a/b/file.c, a/bo a.

Así que su patrón debe no partido src.

+0

No te olvides de escapar del punto. –

+0

Buena captura; arregló eso. ¡Gracias! – legoscia

+0

Muchas gracias, muchachos! Eso realmente ayudó, funciona como un encanto ahora, y veo dónde me estaba yendo mal. – Saiki

3
^(?!src\b|test\b|\.hgignore$).*$ 

debería funcionar. Coincide con cualquier cadena que no comience con la palabra src o test, o que conste exclusivamente de .hgignore.

Utiliza un delimitador de límite de palabra \b para garantizar que los archivos como testtube.txt o srcontrol.txt no coincidan accidentalmente. Sin embargo, "fallará" en archivos como src.txt donde hay un límite de palabra que no sea antes de la barra.

+0

¿Cómo se puede cambiar esto para que no se ignoren solo ciertos subdirectorios? p.ej. aplicación/diseño/frontend/rc –

Cuestiones relacionadas