#mercurial
#mercurial
Вопрос:
Я не могу вспомнить случаи, когда предикат contains() полезен. Похоже, что предикаты file(), addes(), removes() и modifies() охватывают все запросы, связанные с файлом. Можете ли вы привести пример того, когда contains() полезен?
Ответ №1:
Contains просматривает содержимое, а не имена файлов:
"contains(pattern)"
Revision contains pattern.
по сравнению с:
"file(pattern)"
Changesets affecting files matched by pattern.
Итак, что-то вроде:
hg log -r 'contains("spam")'
покажет мне все наборы изменений, в которых добавлен или удален строковый спам. Обратите внимание, что аналогичная keyword
команда проверяет сообщение о фиксации, а не содержимое.
Комментарии:
1. Вы написали: «Contains просматривает содержимое, а не имена файлов»: должно быть, я делаю что-то неправильно, потому что это не то, с чем я здесь экспериментирую. Для меня он выводит что-то только тогда, когда я использую шаблон файла в качестве аргумента. Также в TortoiseHg этот предикат показан в категории «Шаблон файла». Мое понимание того, что делает contains(), заключается в том, что он выводит все ревизии, в которых репозиторий содержит файл, соответствующий заданному шаблону файла.
2. Hrm, я думал, что это аналог команды ‘hg grep’. Я посмотрю на это снова.