2009-06-26 10 views
11

Tengo un problema que no puedo entender. Estoy usando TortoiseHg (versión 0.7.5) en Windows pero en Linux tengo el mismo problema. Aquí está:.hgignore sintaxis por ignorar solo archivos, no directorios?

Mi .hgignore archivo:

syntax: regexp 
^[^\\/]+$ 

Lo que estoy tratando de lograr es añadir a la lista de ignorados los archivos que están en la raíz del repositorio de Hg.

Por ejemplo, si tengo la siguiente manera:

.hg 
+mydir1 
+mydir2 
-myfile1 
-myfile2 
-anotherfile1 
-anotherfile2 
.hgignore 

quiero myfile1 (2) y anotherfile1 (2) para ser ignorados (nombres son sólo para el propósito de este ejemplo - que no tienen una regla simple que se puede poner fácilmente en el archivo hgignore)

¿Hay algo que me falta porque estoy bastante seguro de que la expresión regular es buena (incluso la probé)? Ideas?

¿Hay una forma más simple de lograr esto? [para agregar a la lista de ignorar archivos que están en la raíz del repositorio de mercurial]

Respuesta

11

He transmitido esta pregunta en #mercurial en irc.freenode.net y la respuesta fue que no se puede distinguir entre archivos y directorios - el directorio es emparejado sin la barra que está buscando en su expresión regular.

Sin embargo, si se puede asumir que los directorios no contendrán un servicio completo, dejar de ., pero sus archivos, entonces algo como esto parece que funciona:

 
^[^/]*\..*$ 

he comprobado en un repositorio como esto :

 
% hg status -ui 
? a.txt 
? bbb 
? foo/x.txt 
? foo/yyy 

Añadiendo el archivo .hgignore da:

 
% hg status -ui 
? bbb 
? foo/x.txt 
? foo/yyy 
I .hgignore 
I a.txt 

que indica que el archivo a.txt se ignora correctamente en su directorio raíz, pero x.txt en el subdirectorio foo no lo está. También puede ver que un archivo llamado simplemente bbb en el directorio raíz es no ignorado. Pero tal vez pueda agregar esos archivos usted mismo al archivo .hgignore.

Si tiene un directorio como bar.baz en su directorio raíz, este directorio y todos sus archivos serán ignorados. Espero que esto ayude un poco.

+0

Muchas gracias, confirma mis creencias. – INS

+0

También podría hacerlo para un subdirectorio e ignorar los archivos php como: 'wpblog/[^ /] * \. Php $' – DynamicDan

7

Aquí es un truco sucio:

Crear un archivo vacío ".hidden" en su directorio, que añadir a .hgignore:

^mydir/(?!\.hidden).+$ 

Esto ignorará todos los archivos en el directorio, salvo". oculto".

Cuestiones relacionadas