Синтаксис файлов игнорирования 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"
Регулярное выражение, синтаксис Python/Perl.
"glob"
Глоб (glob), как в командной оболочке (bash и т.п.).

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

Шаблоны в любом стиле не привязаны к одному корневому каталогу. Шаблон в стиле глоб вида "*.c" совпадет с любым файлом, оканчивающимся на ".c" в любом каталоге, так же как и шаблон в стиле регулярного выражения вида "\.c$". Чтобы задать шаблон в стиле regexp относительно корневого каталога, начните его с "^".

Примечание:

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

Пример

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

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