2010-03-31 5 views
7

J'ai un projet NetBeans et le référentiel Mercurial est dans la racine du projet. Je voudrais qu'il ignore tout sauf le contenu des dossiers "src" et "test", et .hgignore lui-même.Mercurial/.hgignore - Comment ignorer tout sauf le contenu d'un dossier?

Je ne suis pas familier avec les expressions régulières et je ne peux pas en trouver une qui puisse le faire.

Ceux que j'essayé:

(?! Src /.*)

(test /.*!)

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

Ceux-ci semblent ignorer tout, je n'arrive pas à comprendre pourquoi.

Tout conseil serait génial.

Répondre

7

Cela semble fonctionner:

syntax: regexp 

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

Ceci est fondamentalement votre dernière tentative, mais:

  • Il est enraciné au début de la chaîne avec ^ et
  • Il n'a pas d' exiger une barre oblique finale pour les noms de répertoire.

Le deuxième point est important puisque, comme the manual dit:

Par exemple, disons que nous avons un fichier non suivi, file.c, à a/b/file.c dans notre dépôt. Mercurial ignorera file.c si un motif dans .hgignore correspond à/b/file.c, a/b ou a.

Ainsi, votre modèle doit pas match de src.

+0

Ne pas oublier d'échapper le point. –

+0

Bonne prise; fixé cela. Merci! – legoscia

+0

Merci beaucoup, les gars! Cela a vraiment aidé, ça fonctionne comme un charme maintenant, et je vois où je me trompais. – Saiki

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

devrait fonctionner. Elle correspond à toute chaîne qui ne commence pas par le mot src ou test, ou est entièrement constituée de .hgignore.

Il utilise une ancre de délimitation de mots \b pour s'assurer que des fichiers tels que testtube.txt ou srcontrol.txt ne sont pas accidentellement appariés. Cependant, il va "raté" sur des fichiers comme src.txt où il y a une limite de mot autre qu'avant la barre oblique.

+0

Comment cela peut-il être modifié afin que seuls certains sous-répertoires ne soient pas ignorés? par exemple. app/design/frontend/rc –

Questions connexes