Что не так с моим файлом .hgignore? (ничего не игнорируется)

Содержимое моего файла .hgignore выглядит следующим образом, и НИЧЕГО не игнорируется:

^nbproject$
^.htaccess$
^my.conf$
/media/images/captcha/.*\.jpg$

Я попытался поместить файл в папку основного репозитория проекта и в рабочую директорию.

Что случилось? Пожалуйста помоги.


person emurad    schedule 07.12.2010    source источник
comment
@Alex: я удалил теги, связанные с git, поскольку они здесь не применимы.   -  person mechanical_meat    schedule 07.12.2010


Ответы (4)


Добавьте эту строку в начало файла:

syntax: regexp

Что касается того, куда должен идти файл .hgignore, на https://www.mercurial-scm.org/wiki/.hgignore

Файл .hgignore находится в рабочем каталоге рядом с папкой .hg.

person mechanical_meat    schedule 07.12.2010
comment
Он сказал, что основная папка репозитория проекта, под которой он подразумевает .hg. Он был прав во второй раз, что это должно быть в рабочем каталоге, который находится на уровне выше .hg. - person Ry4an Brase; 07.12.2010
comment
Спасибо, Ry4an. Я всегда размещаю .hgignore на том же уровне, что и каталог .hg. Я добавил ссылку на документацию. - person mechanical_meat; 07.12.2010
comment
Да, на том же уровне правильно. Он спросил в .hg, что не сработает. - person Ry4an Brase; 07.12.2010

Вам не нужно syntax:regexp — это значение по умолчанию.

Вам нужно поместить файл в каталог над папкой .hg, чтобы макет выглядел так:

--yourepo
|
+--- .hgignore
+--- .htaccess
+--- .hg

Вам также нужно избегать всех точек в путях к файлам. Попробуй это:

^nbproject$
^\.htaccess$
^my.conf$
/media/images/captcha/.*\.jpg$

Вам нужно убедиться, что вы еще не добавили и/или не зафиксировали файлы. Файл .hgignore не отменяет добавление, он только предотвращает добавление элементов с использованием подстановочных знаков и отображение игнорируемых (не добавленных) элементов в .hgstatus. Если вы уже добавили эти файлы, вам нужно hg forget их, прежде чем они будут проигнорированы.

Если ничего не работает, попробуйте это:

hg status --all

и опубликовать вывод.

person Ry4an Brase    schedule 07.12.2010
comment
+1 за очень полный ответ. Благодаря вашему сообщению я узнал, что используемый синтаксис по умолчанию - это регулярные выражения в стиле Python/Perl. -- selenic.com/mercurial/hgignore.5.html#syntax - person mechanical_meat; 07.12.2010
comment
+1, потому что спустя более 2 лет этот ответ снова оказался полезным :) - person LihO; 17.03.2013

Вам, вероятно, следует использовать более простой синтаксис glob для таких базовых игнорирования (с явной директивой syntax: glob). Кроме того, технически вы должны избегать «.», поскольку они являются специальными символами регулярных выражений, но вам повезло, поскольку «.» совпадает с любым символом, включая литерал '.'. Однако путаница, подобная этой, просто подчеркивает мою точку зрения об использовании более простого механизма glob.

person Binary Phile    schedule 07.12.2010

Также обратите внимание, что hg не может работать с файлом .hgignore, если он начинается с спецификации UTF-8. Поскольку это поведение Блокнота Windows по умолчанию, вам, возможно, придется следить за этим.

person Roger Lipscombe    schedule 24.11.2011
comment
Я собираюсь предположить, что именно поэтому у меня вылетел пользовательский файл игнорирования после того, как я вставил в него несколько строк кода из консоли Windows в Scite. Это просто потрясающе. - person Erik Reppen; 16.02.2013