2010-03-26 11 views
12

Trovo l'output di hg status troppo dettagliato per le directory non tracciate. Supponiamo che disponga di un repository vuoto gestito sia da git sia da hg. Quindi ci sarebbero due directory, .git e .hg.Impedire "stato hg" di mostrare tutto nelle directory non tracciate

L'uscita del git status è:

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

L'uscita del hg status è:

? .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 

C'è un modo per ridurre la sua produzione a qualcosa come la seguente riga?

? .git/ 

risposta

11

Si può solo aggiungere nel file di .hgignore

syntax:glob 
.git 
.gitattributes 
.gitignore 

Per ignorare .git del tutto, e altri file git-related.

Se l'obiettivo è quello di unico limite a una directory, è comunque possibile utilizzare .hgignore se si aggiunge un file nascosto in quella directory (dopo this answer):

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

Dato che Mercurial non tiene traccia delle directory a tutti, questo ignorerà tutti i file all'interno di .git tranne quello nascosto, visualizzando in modo efficace solo una riga nello stato.

Si avrebbe anche la possibilità -q/--quiet (a hg status), che nasconde i file non monitorate (sconosciuto e ignorato) se non esplicitamente richiesto con -u/--unknown o -i/--ignored.
Ma questo significa che .git non si visualizzerebbe nemmeno in quel caso.


Ma se l'obiettivo è quello di limitare in generale l'output di hg status solo alle directory e non il loro contenuto per i file non monitorate, allora credo che questo non è possibile:

  • git tiene traccia del contenuto dei file e poiché non viene aggiunto alcun contenuto, viene menzionata solo la directory superiore "senza contenuto aggiunto"
  • file di tracce mercurial (non directory), da cui l'elenco completo (dei file ).
+0

Questo non è il mio punto. Ho usato la directory '.git' solo come esempio. –

+0

@Wei: giusto, ho completato la risposta per rispecchiare la tua domanda effettiva – VonC

+0

Grazie. Upvoted. –

19

questo funziona per me:

hg status -q 

Opzione -q/--quiet nasconde file non monitorate (sconosciuto e ignorato) se non esplicitamente richiesto con -u/--unknown o -i/--ignored.

0

Capisco la domanda su come ridurre l'output: ho avuto necessità simili ma non volevo srotolare o ignorare i file.Se si utilizza * NIX, è cloud, l'uso grep, e si desidera solo per ridurre l'output come i vostri stati di domanda, ad esempio per sbarazzarsi di queste linee:

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

O per esempio non mostrare i file rimossi

hg status | grep -v "^R" 

In Windows PowerShell equivalente sarebbe:

hg status | Select-String -Pattern ("^[^R]") 
Problemi correlati