2010-03-31 9 views
7

Ich habe ein NetBeans-Projekt und das Mercurial-Repository befindet sich im Projektstamm. Ich möchte, dass alles außer den Inhalten der Ordner "src" und "test" und .hgignore selbst ignoriert wird.Mercurial/.hgignore - Wie ignoriere ich alles außer dem Inhalt eines Ordners?

Ich bin nicht vertraut mit regulären Ausdrücken und kann nicht mit einer, der das tun wird.

Diejenigen, die ich versucht:

(?! Src /.*)

(Test /.*?!)

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

Diese scheinen alles zu ignorieren, ich kann nicht herausfinden, warum.

Jeder Rat wäre toll.

Antwort

7

Dies scheint zu funktionieren:

syntax: regexp 

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

Diese im Grunde Ihr letzter Versuch ist, aber:

  • , am Anfang des Strings mit ^ und
  • Es ist nicht verwurzelt ist erfordern einen abschließenden Schrägstrich für die Verzeichnisnamen.

Der zweite Punkt ist wichtig, da, wie the manual sagt:

Zum Beispiel, sagen wir haben eine untracked Datei, file.c, bei a/b/file.c in unserem Repository. Mercurial wird Datei.c ignorieren, wenn irgendein Muster in .hgignore mit a/b/file.c, a/b oder a übereinstimmt.

So Ihr Muster muss nicht Spiel src.

+0

Vergessen Sie nicht, den Punkt zu entkommen. –

+0

Guter Fang; repariere das. Vielen Dank! – legoscia

+0

Vielen Dank, Leute! Das hat wirklich geholfen, es funktioniert jetzt wie ein Zauber, und ich sehe, wo ich falsch liege. – Saiki

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

sollte funktionieren. Es entspricht einer beliebigen Zeichenfolge, die nicht mit dem Wort src oder test beginnt, oder besteht vollständig aus .hgignore.

Es verwendet einen Wortgrenzenanker \b, um sicherzustellen, dass Dateien wie testtube.txt oder srcontrol.txt nicht versehentlich übereinstimmen. Es wird jedoch bei Dateien wie src.txt, in denen es eine andere Wortgrenze als vor dem Schrägstrich gibt, fehlgeleitet.

+0

Wie kann dies geändert werden, so dass nur bestimmte Unterverzeichnisse nicht ignoriert werden? z.B. app/design/frontend/rc –

Verwandte Themen