2012-09-03 12 views
12

Sono piuttosto preoccupato che il mio file hgignore possa escludere file importanti. Per esempio ho appena notato che escludevo tutti i file .exe che escludevano alcuni piccoli strumenti eseguibili che dovrebbero essere mantenuti con la fonte. È stato un semplice cambiamento includerli, ma mi fa preoccupare che le regole possano avere conseguenze non intenzionali.Come verificare quali file vengono ignorati a causa di .hgignore?

C'è un modo per visualizzare un elenco di tutti i file che non vengono monitorati a causa del file .hgignore? Solo così posso rivedere periodicamente l'elenco per verificare che sia soddisfatto.

risposta

21

Il comando hg status -i fa esattamente questo.

+0

mi ha battuto perché ero troppo impegnato a digitare gli altri caratteri per soddisfare i requisiti minimi dei caratteri :) _ "il corpo deve contenere 30 caratteri inseriti 28" _ –

+0

@BurhanKhalid: ho avuto anche questo problema ... lezione: "se in dubbio, sii verboso";) – Jon

+0

Io do sempre risposte usando comunque le opzioni -long. Meglio per l'insegnamento. :) –

5

Sì, è possibile. Se stai usando smth come TortoiseHg, puoi selezionare quali file vuoi vedere.

Ecco un esempio

enter image description here

12

@ Jon picchiarmi al punzone con la risposta giusta, ma vale la pena nulla che insieme a status -i, si trova:

  • hg status -m (solo modificato file)
  • hg status -a (solo i file che sono stati aggiunti)
  • hg status -r (solo i file che sono stati rimossi)
  • hg status -d (solo i file che sono stati cancellati)
  • hg status -u (tutti i file non monitorati)
  • hg status -c (file senza modifiche, vale a dire. "Pulito")
  • hg status -A (tutti i file, vale a dire, tutto ciò)
6

Se si vuole fare ispezione manuale sui nomi dei file, quindi utilizzare il flag -i/--ignored di stato:

$ hg status -i 
I ignored file.exe 

Se si desidera il nome del file da solo, utilizzare -n/--no-status per sopprimere il codice di stato I stampato davanti a ciascun nome file:

$ hg status -n -i 
ignored file.exe 

Se è necessario processo i file con xargs, quindi utilizzare la bandiera -0/--print0 inoltre:

$ hg status -n -0 | xargs -0 touch 

che si prenderà cura di gestire gli spazi in modo corretto - con l'utilizzo di -0, v'è un rischio che finirai per trattare ignored file.exe come due file: ignored e file.exe poiché le shell normalmente si dividono in spazi.

I comandi precedenti mostrano file non tracciati corrispondenti a .hgignore.Se si desidera risolvere il problema correlato alla ricerca di file rilevati corrispondenti a .hgignore, è necessario utilizzare uno fileset query. Che assomiglia a questo:

$ hg locate "set:hgignore()" 

È possibile utilizzare i set di file con tutti i comandi che operano su file, in modo da poter, ad esempio fare:

$ hg forget "set:hgignore()" 

per pianificare i file trovati per la rimozione (con copia a sinistra dietro nella tua copia di lavoro).

Problemi correlati