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

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

Когда Mercurial выполняет автоматическое сопоставление с шаблоном в Windows, она использует glob синтаксис. Вы также можете опустить префикс «glob:» в Windows, но более безопасно явно указать его.

Синтаксис re более могущественный. Он предполагает что вы указали регулярное выражение (regexps) как шаблон.

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

7.4.1. glob-шаблоны в стиле shell

Этот раздел посвящен краткому обзору видов шаблонов, которые вы можете использовать в glob шаблонах.

Символ «*» (звездочка) соотвествует любой строке в пределах одного каталога.

$ hg add 'glob:*.py' adding main.py

Шаблон «**» (две звездочки) соответствует любой строке включая подкаталоги. Это не стандартный шаблон Unix, но он используется в некоторых популярных интерпретаторах командной строки и очень полезен.

$ cd ..

$ hg status 'glob:**.py'

A examples/simple.py A src/main.py

?examples/performant.py

?setup.py

?src/watcher/watcher.py

Шаблон «?» соотвествует любому одиночному символу.

$ hg status 'glob:**.?'

? src/watcher/_watcher.c

Символ «[» открывает класс символов. Этот шаблон соотвествует любому одиночному символу в указанном классе. Класс оканчивается символом «]». Класс может содержать диапазоны в форме «a-f», которые раскрываются в «abcdef».

$ hg status 'glob:**[nr-t]'

?MANIFEST.in

?src/xyzzy.txt

Если первый символ после «[» в классе символов является «!», это инвертирует класс, делая его соотвествующим любому символу не из класса.

Символ «{» начинает группу подшаблонов, где вся группа соответствует если любой из шаблонов в ней совпадает. Символ «,» разделяет подшаблоны, а символ «}» закрывает группу.

$ hg status 'glob:*.{in,py}'

?MANIFEST.in

?setup.py

7.4.1.1. Внимание!

Не забывайте что если вы хотите соответствия в каком-либо каталоге вы не должны использовать «*<любой токен>», т.к. «*» работает только с одной директорией. Вместо него используйте «**» (две звездочки). Ниже пример иллюстрирующий различия.

$ hg status 'glob:*.py'

? setup.py

$ hg status 'glob:**.py'

A examples/simple.py A src/main.py

?examples/performant.py

?setup.py

77

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