2008-11-21 7 views
31

Advertencia: Intento todas las posibilidades enumeradas aquí: How can I ignore everything under a folder in Mercurial.
Ninguno funciona como espero.haciendo caso omiso de las carpetas en mercurial

Quiero ignorar todo lo que está debajo de la carpeta test. Pero no haga caso de srcProject\test\TestManager

Trato

syntax: glob 
test/** 

e ignora test y srcProject\test\TestManager

Con:

syntax: regexp 
^/test/ 

Es lo mismo.

También con:

syntax: regexp 
test\\* 

tengo instalar TortoiseHG 0.4rc2 con Mercurial-626cb86a6523 + TortoiseHg, Python 2.5.1, 2.10.6-PyGTK, GTK-2.10.11 en Windows

Respuesta

44

intentar hacerlo sin la barra después de la intercalación en la versión expresión regular.

^test/ 

Aquí está una prueba:

~$ mkdir hg-folder-ignore 
~$ cd hg-folder-ignore 
~/hg-folder-ignore$ echo '^test/' > .hgignore 
~/hg-folder-ignore$ hg init 
~/hg-folder-ignore$ mkdir test 
~/hg-folder-ignore$ touch test/ignoreme 
~/hg-folder-ignore$ mkdir -p srcProject/test/TestManager 
~/hg-folder-ignore$ touch srcProject/test/TestManager/dont-ignore 
~/hg-folder-ignore$ hg stat 
? .hgignore 
? srcProject/test/TestManager/dont-ignore 

en cuenta que ignoreme no aparece y no te ignoran-es.

+0

@JaKXz sí, esto funciona en todas las versiones de Mercurial. Lo que tienes en tu '.hgignore' no apareció. Asegúrate de que tu archivo de ignorar se interprete como una expresión regular en lugar de como un comodín, y no cuentes con ignorar para ignorar los archivos que ya has 'hg agregar'. Ignorar solo afecta cómo se enumeran/tratan los archivos no agregados. –

+0

y col. La solución que encontré es utilizar esto: ' sintaxis: expresión regular^ SourceFolder \ bin ^ SourceFolder \ gen' y por un .classpath archivo llamado:'^ SourceFolder \ .classpath' – JaKXz

4

se puede utilizar de anchura cero de preanálisis negativa y mirar detrás afirmaciones para especificar que desea ignorar test sólo cuando no está precedido por srcProject y no seguida de TestManager:

syntax: regexp 
(?<!srcProject\\)test\\(?!TestManager) 

Mercurial usa expresiones regulares de Python, por lo que se puede encontrar más información sobre las afirmaciones de ancho cero en la documentación de Python: https://docs.python.org/library/re.html#regular-expression-syntax

+1

fresco técnica, pero totalmente exagerada en este caso –

+0

Mucho más complicado de lo que debe ser para resolver un problema simple. La solución de Ry4an logra lo mismo de una manera mucho más simple. –

3

En ambos casos se trabajó para mí (en Linux y Windows):

syntax: regexp 
^backup/  #root folder 
nbproject/ #any folder 

o

syntax: glob 
./backup/* #root folder 
nbproject/* #any folder 

Sin embargo, no fue antes de agregar un enlace a .hgignore archivo a archivo .hgrc en mi repo:

[ui] 
ignore = .hg/.hgignore 

también vale la pena mencionar que Mercurial ignora los archivos que no es actualmente rastreando, que son los que se agregaron antes de configurarlo para ignorarlos. Por lo tanto, no se deje intimidar por el estado de hg diciendo que algunos archivados son M (modificado) o! (falta) en las carpetas que acaba de agregar a la lista de ignorar!

+3

'.hgignore' está normalmente en el directorio raíz del repositorio, no debajo de '.hg'. –

0

Crear .hgignore archivo en el directorio raíz del repositorio

Ahora agregue el siguiente contenido en el archivo.

sintaxis: glob

bin/**

* .DS_Store

Esto eliminará el directorio bin y todos los archivos * .DS_Store desde el repositorio

Cuestiones relacionadas