2010-03-31 8 views
7

Ho un progetto NetBeans e il repository Mercurial si trova nella root del progetto. Mi piacerebbe che ignorasse tutto tranne il contenuto delle cartelle "src" e "test" e .hgignore stesso.Mercurial/.hgignore - Come faccio a ignorare tutto tranne il contenuto di una cartella?

Non ho familiarità con le espressioni regolari e non riesco a trovarne uno che lo faccia.

quelli che ho provato:

(?!? Src /.*)

(test /.*?!)

((^ hgignore?!.)? ! src /. | test /. | .hgignore)

Questi sembrano ignorare tutto, non riesco a capire perché.

Qualsiasi consiglio sarebbe fantastico.

risposta

7

Questo sembra funzionare:

syntax: regexp 

^(?!src|test|\.hgignore) 

Questo è fondamentalmente il tuo ultimo tentativo, ma:

  • E 'radicato all'inizio della stringa con ^ e
  • non lo fa richiede una barra finale per i nomi delle directory.

Il secondo punto è importante poiché, come dice the manual:

Per esempio, dire che abbiamo un file non monitorate, file.c, a/b/file.c all'interno del nostro repository. Mercurial ignorerà file.c se qualsiasi modello in .hgignore corrisponde a/b/file.c, a/b o a.

Così il vostro modello deve non partita src.

+0

Non dimenticare di sfuggire al punto. –

+0

Buona cattura; risolto quello. Grazie! – legoscia

+0

Grazie mille, ragazzi! Mi ha davvero aiutato, ora funziona come un incantesimo e vedo dove stavo sbagliando. – Saiki

3
^(?!src\b|test\b|\.hgignore$).*$ 

dovrebbe funzionare. Corrisponde a qualsiasi stringa che non inizia con la parola src o test oppure è composta interamente da .hgignore.

Utilizza un'ancora limite di parola \b per garantire che i file come testtube.txt o srcontrol.txt non corrispondano accidentalmente. Tuttavia, "misfire" su file come src.txt dove c'è un limite di parola diverso da prima della barra.

+0

Come può essere modificato in modo che solo alcune sottodirectory non vengano ignorate? per esempio. app/design/frontend/rc –

Problemi correlati