Mercurial has a domain-specific language called revsets that allows users to specify sets of revisions.
For example, you might want to list patches that haven't yet been merged into the branch default
:
hg log -r "all() - ancestors('default')"
As a more complex example, the link above gives the example of listing changesets between the revision tagged 1.3
and the revision tagged 1.5
which mention "bug" and affect a file in the directory hgext
:
hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"
The revset language is quite rich, allowing selection of changesets based on dates, username, commit message, whether the commit exists at a particular remote location, and so on.
Does git have an equivalent mechanism for querying changesets, either in the core program or available as an extension?