Игнорирование папок в Mercurial

Предостережение: я пробую все возможности, перечисленные здесь: Как я могу игнорировать все в папке в Mercurial.
Ни один не работает, как я надеюсь.

Я хочу игнорировать каждую вещь в папке test, Но не игнорировать srcProject\test\TestManager

я попробую

syntax: glob
test/**

И это игнорирует test а также srcProject\test\TestManager

С:

syntax: regexp
^/test/

Это то же самое.

Также с:

syntax: regexp
test\\*

У меня установлена ​​TortoiseHG 0.4rc2 с Mercurial-626cb86a6523+tortoisehg, Python-2.5.1, PyGTK-2.10.6, GTK-2.10.11 в Windows

4 ответа

Решение

Попробуйте это без косой черты после каретки в версии регулярного выражения.

^test/

Вот тест:

~$ mkdir hg-folder-ignore
~$ cd hg-folder-ignore
~/hg-folder-ignore$ echo '^test/' > .hgignore
~/hg-folder-ignore$ hg init
~/hg-folder-ignore$ mkdir test
~/hg-folder-ignore$ touch test/ignoreme
~/hg-folder-ignore$ mkdir -p srcProject/test/TestManager
~/hg-folder-ignore$ touch srcProject/test/TestManager/dont-ignore
~/hg-folder-ignore$ hg stat
? .hgignore
? srcProject/test/TestManager/dont-ignore

Обратите внимание, что ignoreme не отображается и не игнорируется.

Оба случая работали для меня (на Linux и Windows):

syntax: regexp
^backup/     #root folder
nbproject/   #any folder

или же

syntax: glob
./backup/*   #root folder
nbproject/*  #any folder

Однако это было до того, как я добавил ссылку на файл.hgignore в файл.hgrc в своем репо:

[ui]
ignore = .hg/.hgignore

Также стоит упомянуть, что Mercurial игнорирует файлы, которые в данный момент не отслеживаются, которые добавляются до того, как вы настроили их на их игнорирование. Так что, не откладывайте на статус hg, говоря, что некоторые поля M (модифицированные) или! (отсутствует) в папках, которые вы только что добавили в список игнорирования!

Вы можете использовать отрицательные предварительные и нулевые утверждения нулевой ширины, чтобы указать, что вы хотите игнорировать test только когда ему не предшествует srcProject и не сопровождается TestManager:

syntax: regexp
(?<!srcProject\\)test\\(?!TestManager)

Mercurial использует регулярные выражения Python, поэтому вы можете найти больше информации об утверждениях нулевой ширины в документации по Python: https://docs.python.org/library/re.html

Создайте файл.hgignore в корневой директории хранилища.

Теперь добавьте следующее содержимое в файл.

синтаксис: глобус

бен / **

*.DS_Store

Это удалит каталог bin и все файлы *.DS_Store из хранилища.

Другие вопросы по тегам