2009-06-26 27 views
11

Ho un problema che non riesco a capire. Sto usando TortoiseHg (versione 0.7.5) su Windows ma su Linux ho lo stesso problema. Eccolo:sintassi .hgignore per ignorare solo i file, non le directory?

mio .hgignore di file:

syntax: regexp 
^[^\\/]+$ 

Quello che sto cercando di realizzare è quello di aggiungere alla lista da ignorare i file che sono nella radice del repository hg.

Per esempio se ho come questo:

.hg 
+mydir1 
+mydir2 
-myfile1 
-myfile2 
-anotherfile1 
-anotherfile2 
.hgignore 

voglio myfile1 (2) e anotherfile1 (2) per essere ignorato (i nomi sono solo per lo scopo di questo esempio - non hanno un semplice regola che può essere inserita facilmente nel file hgignore)

C'è qualcosa che mi manca perché sono abbastanza sicuro che regexp è buono (l'ho anche testato)? Idee?

C'è un modo più semplice per raggiungere questo obiettivo? [da aggiungere ai file della lista ignora che si trovano nella root del repository mercurial]

risposta

11

Ho inoltrato questa domanda in #mercurial su irc.freenode.net e la risposta è stata che non è possibile distinguere tra file e directory - la directory è abbinato senza la barra che stai cercando nel tuo regexp.

Tuttavia, se si può supporre che le directory non potrà mai contenere un pieno-stop ., ma i tuoi file verranno, quindi qualcosa di simile sembra funzionare:

 
^[^/]*\..*$ 

ho provato in un repository come questo :

 
% hg status -ui 
? a.txt 
? bbb 
? foo/x.txt 
? foo/yyy 

Aggiungendo il file .hgignore dà:

 
% hg status -ui 
? bbb 
? foo/x.txt 
? foo/yyy 
I .hgignore 
I a.txt 

che indica che il file a.txt viene correttamente ignorato nella directory principale, ma non lo è x.txt nella sottodirectory foo. È inoltre possibile vedere che un file denominato solo bbb nella directory principale è non ignorato. Ma forse puoi aggiungere tu stesso questi file al file .hgignore.

Se si dispone di una directory come bar.baz nella directory principale, questa directory e tutti i file all'interno verranno ignorati. Spero che questo aiuti un po '.

+0

Grazie mille, conferma le mie convinzioni. – INS

+0

Si potrebbe anche farlo per una sottodirectory e ignorare i file php come: 'wpblog/[^ /] * \. Php $' – DynamicDan

7

Ecco un trucco sporco:

Creare un file vuoto ".hidden" nella directory, che aggiungere alla .hgignore:

^mydir/(?!\.hidden).+$ 

Questo ignorerà tutti i file nella directory tranne". nascosto".

Problemi correlati