Sintassi .hgignore per ignorare solo i file, non le directory?
Domanda
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:
Il mio .hgignore
file:
syntax: regexp
^[^\\/]+$
Quello che sto cercando di ottenere è aggiungere all'elenco ignore i file che si trovano nella radice del repository hg.
Ad esempio se ho così:
.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2
.hgignore
Voglio che myfile1 (2) e anotherfile1 (2) vengano ignorati (i nomi sono solo ai fini di questo esempio - non hanno una semplice regola che può essere inserita facilmente nel file hgignore)
C'è qualcosa che mi manca perché sono abbastanza sicuro che regexp sia buono (l'ho anche provato)? Idee?
C'è un modo più semplice per raggiungere questo obiettivo? [da aggiungere all'elenco ignora i file che si trovano nella radice del repository mercurial]
Soluzione
Ho inoltrato questa domanda in #mercurial
su irc.freenode.net e la risposta è stata che non è possibile distinguere tra file e directory & # 8212; la directory è abbinata senza la barra che stai cercando nella tua regexp.
Tuttavia, se puoi presumere che le tue directory non conterranno mai un punto completo .
, ma i tuoi file funzioneranno, allora qualcosa del genere sembra funzionare:
^[^/]*\..*$
L'ho provato in un repository come questo:
% hg status -ui ? a.txt ? bbb ? foo/x.txt ? foo/yyy
L'aggiunta del .hgignore
file dà:
% hg status -ui ? bbb ? foo/x.txt ? foo/yyy I .hgignore I a.txt
che indica che il file a.txt
viene ignorato correttamente nella directory principale, ma x.txt
nella sottodirectory foo
non lo è. Puoi anche vedere che un file chiamato solo bbb
nella directory principale non è non ignorato. Ma forse puoi aggiungere tu stesso tali file al bar.baz
file.
Se ti capita di avere una directory come <=> nella tua directory principale, questa directory e tutti i file all'interno verranno ignorati. Spero che questo aiuti un po '.
Altri suggerimenti
Ecco un trucco sporco:
Crea un file vuoto " .hidden " nella tua directory, quindi aggiungi a .hgignore:
^mydir/(?!\.hidden).+$
Questo ignorerà tutti i file nella directory tranne " .hidden " ;.