regex mercurial hgignore

regex - hgignore: ayuda ignorando todos los archivos pero ciertos



mercurial (2)

La respuesta de Michael es buena, pero otra opción es simplemente excluir:

foo/bar/**

y luego agregue manualmente los archivos .jar. Siempre puede agregar archivos que están excluidos por una regla de ignorar y anula el ignorar. Solo tienes que recordar agregar los frascos que crees en el futuro.

Necesito un archivo .hgdontignore :-) para incluir ciertos archivos y excluir todo lo demás en un directorio. Básicamente, quiero incluir solo los archivos .jar en un directorio particular y nada más. ¿Cómo puedo hacer esto? No soy tan hábil en la sintaxis de expresión regular. ¿O puedo hacerlo con sintaxis glob? (Prefiero eso para la legibilidad)

Solo como un ejemplo de ubicación, digamos que quiero excluir todos los archivos en foo/bar/ excepto para foo/bar/*.jar .


Para hacer esto, necesitarás usar esta expresión regular:

foo/bar/.+?/.(?!jar).+

Explicación

Le está diciendo qué ignorar, por lo que esta expresión busca cosas que no desea.

  1. Busca cualquier archivo cuyo nombre (incluido el directorio relativo) incluye (foo / bar /)
  2. A continuación, busque los caracteres que preceden a un punto (. +? /. == coinciden con uno o más caracteres de cualquier momento hasta que llegue al carácter de punto)
  3. A continuación, asegúrese de que no tiene el final "jar" (?! Jar) (Esto se llama una mirada negativa hacia adelante
  4. Finalmente agarras el final que tiene (. +)

Las expresiones regulares son fáciles de estropear, por lo que le sugiero encarecidamente que obtenga una herramienta como Regex Buddy para ayudarlo a construirlas. Desglosará una expresión regular en inglés sencillo, lo que realmente ayuda.

EDITAR

Hola Jason S , me atrapaste, echa de menos esos archivos.

Esta expresión regular corregida funcionará para cada ejemplo que enumeró:

foo/bar/(?!.*/.jar$).+

Encuentra:

  • foo / bar / baz.txt
  • foo / bar / baz
  • foo / bar / jar
  • foo / bar / baz.jar.txt
  • foo / bar / baz.jar.
  • foo / bar / baz.
  • foo / bar / baz.txt.

Pero no encuentra

  • foo / bar / baz.jar

Nueva explicación

Esto dice buscar archivos en "foo / bar /", luego no coinciden si hay cero o más caracteres seguidos por ".jar" y luego no hay más caracteres ($ significa el final de la línea), entonces, si eso no es así En este caso, haga coincidir los siguientes caracteres.