Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgbook.pdf
Скачиваний:
50
Добавлен:
17.03.2015
Размер:
3.15 Mб
Скачать

Имена файлов и шаблоны совпадений

? src/watcher/watcher.py

7.4.2. Шаблоны регулярных выражений

Mercurial поддерживает теже регулярные выражения, что и язык программирования Python (используется движок regexp из Python-а). Синтаксис базируется на регулярных выражениях Perl, которые являются наиболее популярных диалектом (например он используется в Java).

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

в Mercurial.

Регулярные выражения применяются к полному пути файла, относительно корня репозитория. Другими словами, даже если вы уже в поддиректории foo и хотите работать с файлами в поддиректории вы должны начать паттерн

с «foo/».

Стоит отметить одну вещь: если вы знакомы с регулярными выражениями Perl - регулярные выражения Mercurial применяются с начала строки. Таким образом, regexp ищет совпадения с начала строки и не ищет совпадения гденибудь внутри строки. Для поиска везде в строке вы должны начинать ваше регулярное выражение с «.*».

7.5. Фильтрация файлов

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

-I, или --include, позволяет указать шаблон имен файлов, которые должны быть обработаны.

-X, или --exclude, дает возможность указать шаблон имен для исключения из обработки.

Вы можете указывать многократно и ту и другую опции в командной строке и смешивать их так, как вам нужно. Mercurial интерпретирует шаблоны используя glob синтаксис по умолчанию (но вы можете использовать синтаксис

regexp).

Вы можете считать опцию -I filter как «обрабатывать только те файлы, которые совпадают с этим фильтром».

$ hg status -I '*.in'

? MANIFEST.in

Опцию -X filter проще всего понять как «обрабатывать только те файлы, которые не попадают под фильтр».

$ hg status -X '**.py' src

?src/watcher/_watcher.c

?src/xyzzy.txt

7.6. Постоянное игнорирование ненужных файлов и директорий

Когда вы создаете новое хранилище, то вероятно что со временем оно будет расти содержать файлы, которые не должны управляется Mercurial, но вы же не хотите, чтобы они перечислялись при каждом запуске hg status. Например, файлы «сборки продукта», которые создаются как часть сборки, но которые не должны управляться системой контроля версий. Чаще всего файлы продуктов сборки, создаются программными инструментами, такими как компиляторы. В качестве другого примера, множество текстовых редакторов складывают в каталог блокировки файлов, временные рабочие файлы и файлы резервных копии, которые он также не имеет смысла в управлении.

Чтобы Mercurial постоянно игнорировал такие файлы, нужно создать файл с именем .hgignore в корневом каталоге вашего репозитория. Вы должны добавить его командой hg add, так чтобы он стал отслеживаемым вместе с остальным содержимым репозиторием, так как он вероятно будет полезным сотрудникам.

78

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]