2010-03-31 2 views
7

У меня есть проект NetBeans, а репозиторий Mercurial находится в корне проекта. Я бы хотел, чтобы он игнорировал все, кроме содержимого папок «src» и «test», и самого .hgignore.Mercurial/.hgignore - Как игнорировать все, кроме содержимого папки?

Я не знаком с регулярными выражениями и не могу придумать тот, который сделает это.

Те, которые я пробовал:

(?!) SRC /.*

(тест /.*?!)

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

Кажется, что они игнорируют все, я не могу понять, почему.

Любые советы были бы замечательными.

ответ

7

Это похоже на работу:

syntax: regexp 

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

В основном это ваша последняя попытка, но:

  • Он коренится в начале строки с ^ и
  • Это не для имен каталогов требуется конечная косая черта.

Второй пункт очень важен, поскольку, как the manual говорит:

Например, скажем, у нас есть неотслеживаемый файл, file.c, в/б/file.c внутри репозитория. Mercurial будет игнорировать file.c, если любой шаблон в .hgignore соответствует a/b/file.c, a/b или a.

Так что ваш шаблон должен не матч src.

+0

Не забудьте избежать точки. –

+0

Хороший улов; исправлено это. Благодаря! – legoscia

+0

Большое спасибо, ребята! Это действительно помогло, теперь это работает как шарм, и я вижу, где я ошибся. – Saiki

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

должно работать. Он соответствует любой строке, которая не начинается со слова src или test, или состоит полностью из .hgignore.

Он использует привязку границы слова \b, чтобы гарантировать, что файлы, подобные testtube.txt или srcontrol.txt, случайно не совпадают. Тем не менее, он будет «пропускать» файлы, такие как src.txt, где есть граница слова, отличная от косой черты.

+0

Как это можно изменить так, чтобы только некоторые подкаталоги не игнорировались? например app/design/frontend/rc –

Смежные вопросы