Задание набора файлов
Mercurial поддерживает функциональный язык для выбора набора
файлов.
Как и другие шаблоны имен файлов, этот шаблон обозначается префиксом
'set:'. Язык поддерживает несколько предикатов, которые объединяются
инфиксными операторами. Для группировки можно использовать скобки.
Идентификаторы, такие как имена файлов или шаблоны, должны заключаться
в одиночные или двойные кавычки, если они содержат символы не из набора
"[.*{}[]?/\_a-zA-Z0-9\x80-\xff]", или если они совпадают с одним
из предопределённых предикатов. Это относится также и к шаблонам имен
файлов, не являющихся glob'ами, и к аргументам предикатов.
В идентификаторах можно использовать специальные символы, экранируя их.
Например "\n" интерпретируется как перевод строки. Чтобы запретить
такую интерпретацию, поставьте перед строкой "r", например, "r'...'".
Поддерживается один префиксный оператор:
- "not x"
- Файлы, не входящие в x. Краткая форма: "! x".
Поддерживаемые инфиксные операторы:
- "x and y"
- Пересечение файлов из x и y. Краткая форма: "x & y".
- "x or y"
- Объединение файлов из x и y. Существуют две краткие формы: "x | y" and "x + y".
- "x - y"
- Файлы, входящие в x, но не в y.
Поддерживаются следующие предикаты:
- "added()"
- Файл, добавленный согласно статусу.
- "binary()"
- Файл, который рассматривается как бинарный (содержит символы NUL).
- "clean()"
- Файлы, не содержащие изменений согласно статусу.
- "copied()"
- Файл, записанный как копируемый.
- "deleted()"
- Файл, удаленный из рабочего каталога согласно статусу.
- "encoding(name)"
- Файл, который может быть корректно представлен в данной кодировке. Может быть бесполезным для кодировок, отличных от ASCII и UTF-8.
- "eol(стиль)"
- Файл содержит перводы строк в заданном стиле (dos, unix, mac). Двоичные файлы исключаются, файлы со смешанными переводами строк попадают под несколько стилей.
- "exec()"
- Файл, который помечен как исполняемый.
- "grep(regex)"
- Файл, содержащий заданное регулярное выражение.
- "hgignore()"
- Файл, подходящие под активный шаблон из .hgignore.
- "ignored()"
- Файл, игнорируемый согласно статусу. Эти файлы рассматриваются только если используется этот предикат.
- "modified()"
- Файл, измененный согласно статусу.
- "removed()"
- Файл, удаленный согласно статусу.
- "resolved()"
- Файл, конфликты в котором считаются разрешенными.
- "size(expression)"
- Размер файла совпадает с данным шаблоном. Например:
- 1k (файлы от 1024 до 2047 байт)
- < 20k (файлы меньше 20480 байт)
- >= .5MB (файлы не меньше 524288 байт)
- 4k - 1MB (файлы от 4096 байт до 1048576 байт)
- "subrepo([шаблон])"
- Подхранилища, чьи пути совпадают с данным шаблоном
- "symlink()"
- Файл, помеченный как символическая ссылка.
- "unknown()"
- Файл, неизвестный согласно статусу. Эти файлы рассматриваются только если используется этот предикат.
- "unresolved()"
- Файл, конфликты в котором считаются неразрешенными.
Примеры запросов:
- Показать статус файлов, считающихся бинарными, в рабочем каталоге:
hg status -A "set:binary()"
- Забыть файлы, которые записаны в .hgignore, но уже контролируются:
hg forget "set:hgignore() and not ignored()"
- Найти текстовые файлы, содержащие строку:
hg locate "set:grep(magic) and not binary()"
- Найти файлы С с нестандартной кодировкой:
hg locate "set:**.c and not encoding('UTF-8')"
- Вернуть (revert) копии больших бинарных файлов:
hg revert "set:copied() and binary() and size('>1M')"
- Удалить файлы, перечисленные в foo.lst и содержащие букву a или b:
hg remove "set: 'listfile:foo.lst' and (**a* or **b*)"
См. также "hg help patterns".