2011-10-17 6 views
5

Tengo un repositorio de Mercurial con varios subrepos. ¿Existe la posibilidad de definir solo un .hgignore-File general (por ejemplo, para ignorar los archivos de objeto) tanto en el repositorio principal como, opcionalmente, en uno especializado en los repositorios?Haga .hgignore en un repositorio de Mercurial disponible para todos los subrepos?

No hay suficiente información en el manual. Especificar un archivo .hgignore con

[ui] 
ignore = .hgignore 

en .hgrc en mi directorio de inicio tampoco funciona.

¿Alguna idea?

Respuesta

3

Un archivo .hgignore en cada subrepo serviría como el especializado para ese subrepo. A continuación, puede utilizar el principal de recompra de .hgignore como el principal inclusión dentro de hgrc el expediente de cada subrepo:

[ui] 
ignore.main = \absolute\path\to\mainrepo\.hgignore 

La razón por la que hace ignore = .hgignore no funcionó para usted en su mundial .hgrc (y no en repo hgrc) es que tener simplemente .hgignore es una ruta de archivo relativa y su resolución a una ruta absoluta depende del directorio de trabajo actual utilizado al invocar hg. Ejemplos:

  • Si estás en \repos\main\ e invocar hg st, se buscarán \repos\main\.hgignore. Lo mismo si invoca hg st -R nested, porque el directorio de trabajo actual sigue siendo el mismo.
  • Pero si estuviera en \repos\main\nested\ y luego invocara hg st, la configuración estaría ahora en \repos\main\nested\.hgignore.

Si desea especificar un mundial .hgignore que se encuentra en su directorio personal, que tendría que especificar con un camino que no es pariente (o por lo menos mucho menos relativa):

[ui] 
ignore = ~\.hgignore 
+0

I' No estoy seguro acerca de su primer punto de bala allí. Si invoca 'hg st -R anidado', se usará' \ repos \ main \ nested \ .hgignore', ya que ese es el archivo '.hgignore' en el directorio de trabajo del repositorio' anidado' - eso puede ser lo que significa, pero no se lee de esa manera. – icabod

+0

@icabod: No tengo una máquina * nix para probar, pero así es como se comporta Windows. Si tengo diferentes archivos 'extra.hgignore' en' main' y 'anidado' y pon' ignore = extra.hgignore' en 'anidado \ .hg \ hgrc', haciendo' hg st' y 'hg st -R anidados' ambos extraen de 'main \ extra.hgignore'. Solo si 'cd' para' anidado ', en cambio, tomará 'anidado \ extra.hgignore'. (Para mi prueba, utilicé 4 archivos en 'main' y' anidado', con 4 extensiones diferentes distribuidas entre los archivos de ignorar). –

+0

Ah, creo que perdí una parte de su respuesta cuando lo estaba probando. Mi error :) – icabod

Cuestiones relacionadas