Синтаксис файлов игнорирования Mercurial

Обзор

Mercurial использует файл с именем ".hgignore" из корневого каталога хранилища для управления поведением при обнаружении файлов, которые в настоящий момент не отслеживаются.

Описание

Рабочий каталог хранилища часто содержит файлы, которые не должны контролироваться Mercurial. Это, например, резервные копии, создаваемые редакторами, или результаты сборки, полученные при компиляции. Эти файлы могут быть игнорированы, если добавить их в файл ".hgignore" в корне рабочего каталога. Файл ".hgignore" должен быть создан вручную. Как правило его помещают под контроль версий, чтобы настройки могли передаваться между хранилищами с помощью push и pull.

Неотслеживаемый файл игнорируется, если его путь относительно корневого каталога хранилища или любая часть этого пути совпадает с любым шаблоном из файла ".hgignore".

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

Также возможно задать несколько таких файлов игнорирования глобально или для каждого пользователя в конфиге. Как это сделать - см. ключ "ignore" секции "[ui]" из 'hg help config'.

Чтобы управлять обработкой файлов, которые находятся под контролем Mercurial, многие команды поддерживают опции "-I" и "-X"; Подробнее см. 'hg help <команда>' и 'hg help patterns'.

Содержимое .hgignore не влияет на файлы, уже отслеживаемые Mercurial, даже если они перечислены в .hgignore. Неотслеживаемый файл X может быть явно добавлен с помощью 'hg add X', даже если X был бы исключен шаблоном из .hgignore.

Синтаксис

Файл игнорирования - это простой текстовый файл, содержащий список шаблонов, по одному на строку. Пустые строки пропускаются. Символ "#" начинает комментарий, а "\" обозначает управляющую последовательность (эскейп-символ, используется для экранирования).

Mercurial поддерживает несколько синтаксисов шаблонов. По умолчанию используются регулярные выражения в стиле Perl/Python.

Чтобы задать другой синтаксис, используйте строку вида:

syntax: ИМЯ

где "ИМЯ" одно из:

"regexp"
Regular expression, Python/Perl syntax.
"glob"
Shell-style glob.
"rootglob"
A variant of "glob" that is rooted (see below).

Выбранный синтаксис для всех последующих шаблонов, пока не будет встречена строка, включающая другой синтаксис.

Neither "glob" nor regexp patterns are rooted. A glob-syntax pattern of the form "*.c" will match a file ending in ".c" in any directory, and a regexp pattern of the form "\.c$" will do the same. To root a regexp pattern, start it with "^". To get the same effect with glob-syntax, you have to use "rootglob".

Subdirectories can have their own .hgignore settings by adding "subinclude:path/to/subdir/.hgignore" to the root ".hgignore". See 'hg help patterns' for details on "subinclude:" and "include:".

Примечание:

Шаблоны, заданные где угодно, кроме ".hgignore", привязаны к корневому каталогу. См. также 'hg help patterns'.

Пример

Пример файла игнорирования.

# использовать синтаксис glob.
syntax: glob
*.elc
*.pyc
*~
# switch to regexp syntax.
syntax: regexp
^\.pc/

Debugging

Use the "debugignore" command to see if and why a file is ignored, or to see the combined ignore pattern. See 'hg help debugignore' for details.