Синтаксис .hgignore для игнорирования только файлов, а не каталогов? - PullRequest
11 голосов
/ 26 июня 2009

У меня есть проблема, которую я не могу понять. Я использую TortoiseHg (версия 0.7.5) в Windows, но в Linux у меня та же проблема. Вот оно:

Мой .hgignore файл:

syntax: regexp
^[^\\/]+$

То, чего я пытаюсь добиться, - это добавить в список игнорирования файлы, которые находятся в корне репозитория hg.

Например, если у меня так:

.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2 
.hgignore

Я хочу, чтобы myfile1 (2) и anotherfile1 (2) игнорировались (имена приведены только для целей этого примера - у них нет простого правила, которое можно легко вставить в файл hgignore)

Есть ли что-то, чего я упускаю, потому что я почти уверен, что регулярное выражение хорошо (я даже проверял это)? Идеи?

Есть ли более простой способ добиться этого? [добавить в список игнорируемых файлов, которые находятся в корне ртутного хранилища]

Ответы [ 2 ]

11 голосов
/ 30 июня 2009

Я передал этот вопрос в #mercurial на irc.freenode.net, и я ответил, что вы не можете различить файлы и каталоги - каталог сопоставляется без слеша, который вы ищете в своем регулярном выражении.

Однако, если вы можете предположить, что ваши каталоги никогда не будут содержать точку останова ., а ваши файлы будут, то, похоже, сработает что-то вроде этого:

^[^/]*\..*$

Я проверил это в репозитории, как это:

% hg status -ui
? a.txt
? bbb
? foo/x.txt
? foo/yyy

Добавление файла .hgignore дает:

% hg status -ui
? bbb
? foo/x.txt
? foo/yyy
I .hgignore
I a.txt

, означающий, что файл a.txt правильно игнорируется в корневом каталоге, а x.txt в подкаталоге foo - нет. Вы также можете видеть, что файл с именем bbb в корневом каталоге не игнорируется. Но, возможно, вы можете сами добавить такие файлы в файл .hgignore.

Если в вашем корневом каталоге есть каталог, например bar.baz, то этот каталог и все файлы в нем будут игнорироваться. Надеюсь, это немного поможет.

7 голосов
/ 16 ноября 2009

Вот подвох:

Создайте пустой файл ".hidden" в вашем каталоге, чем добавьте в .hgignore:

^mydir/(?!\.hidden).+$

При этом будут игнорироваться все файлы в каталоге, кроме ".hidden".

...