2010-03-26 14 views
12

Me parece demasiado prolijo el resultado de hg status para directorios no rastreados. Supongamos que tengo un repositorio vacío administrado por git y hg. Entonces habría dos directorios, .git y .hg.Impedir que "hg status" muestre todo en directorios no rastreados

La salida de git status es:

# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# .hg/ 

La salida de hg status es:

? .git/HEAD 
? .git/config 
? .git/description 
? .git/hooks/applypatch-msg.sample 
? .git/hooks/commit-msg.sample 
? .git/hooks/post-commit.sample 
? .git/hooks/post-receive.sample 
? .git/hooks/post-update.sample 
? .git/hooks/pre-applypatch.sample 
? .git/hooks/pre-commit.sample 
? .git/hooks/pre-rebase.sample 
? .git/hooks/prepare-commit-msg.sample 
? .git/hooks/update.sample 
? .git/info/exclude 

¿Hay una manera de reducir su producción a algo parecido a la siguiente línea?

? .git/ 

Respuesta

11

Usted puede añadir en su archivo .hgignore

syntax:glob 
.git 
.gitattributes 
.gitignore 

Ignorar .git por completo, y otros archivos relacionados con git.

Si el objetivo es limitar solamente a un directorio, aún puede utilizar .hgignore si se agrega un archivo oculto en ese directorio (después this answer):

syntax:regexp 
^.git/(?!\.hidden).+$ 

Desde Mercurial no hacen un seguimiento directorios en absoluto, que ignorará todos los archivos dentro de .git, excepto el oculto, que muestra efectivamente solo una línea en el estado.

También tendría la opción -q/--quiet (a hg status), que oculta los archivos sin seguimiento (desconocidos e ignorados) salvo que se solicite explícitamente -u/--unknown o -i/--ignored.
Pero eso significa que .git ni siquiera aparecería en ese caso.


Pero si el objetivo es limitar en general la salida del estado de Hg a sólo los directorios y no su contenido para archivos sin seguimiento, entonces creo que esto no es posible:

  • git rastrear el contenido de los archivos y dado que no se agrega contenido, solo menciona que el directorio superior "no tiene contenido agregado"
  • mercurial rastrea archivos (no directorios), de ahí la lista completa (de archivos).
+0

Eso no es mi punto. Usé el directorio '.git' solo como un ejemplo. –

+0

@Wei: bien, he completado mi respuesta para reflejar su pregunta real – VonC

+0

Gracias. Upvoted. –

19

Esto funciona para mí:

hg status -q 

Opción -q/--quiet esconde archivos sin seguimiento (desconocidos e ignorados) salvo que se solicite explícitamente -u/o --unknown-i/--ignored.

0

Entiendo que la pregunta es acerca de cómo reducir la salida: tuve una necesidad similar pero no quería desvincular ni ignorar los archivos.Si está utilizando * NIX, se nubla el uso grep, y lo que desea para reducir la salida como sus estados de interrogación, por ejemplo, para deshacerse de estas líneas:

hg status | grep -v "^\?\s\.git" 

O, por ejemplo, no mostrar los archivos eliminados

hg status | grep -v "^R" 

En Windows PowerShell un equivalente sería:

hg status | Select-String -Pattern ("^[^R]") 
Cuestiones relacionadas