Что такое эквивалент git Mercurial revsets?

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

Например, вам может потребоваться указать патчи, которые еще не были объединены в ветвь default:

hg log -r "all() - ancestors('default')"

В качестве более сложного примера приведенная выше ссылка содержит пример перечисления наборов изменений между тегами с тегами 1.3 и тегом тегов 1.5, которые упоминают "ошибку" и влияют на файл в каталоге hgext:

hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"

Язык отсрочки довольно богат, что позволяет выбирать набор изменений на основе дат, имени пользователя, сообщения фиксации, наличия коммита в определенном удаленном месте и т.д.

Имеет ли git эквивалентный механизм для запросов к наборам изменений, либо в основной программе, либо в виде расширения?

Ответы

Ответ 1

Чтобы перечислить все коммиты, кроме основной ветки по умолчанию, как я предполагаю, первый пример:

git log --all --not master

Чтобы получить результат, несколько равный второму примеру:

git log 1.3...1.5 --grep="bug" -- hgext