diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -1021,6 +1021,16 @@ def minrev(repo, subset, x): return baseset([m]) return baseset([]) +def _missingancestors(repo, subset, x): + # i18n: "_missingancestors" is a keyword + revs, bases = getargs(x, 2, 2, + _("_missingancestors requires two arguments")) + rs = baseset(repo) + revs = getset(repo, rs, revs) + bases = getset(repo, rs, bases) + missing = set(repo.changelog.findmissingrevs(bases, revs)) + return baseset([r for r in subset if r in missing]) + def modifies(repo, subset, x): """``modifies(pattern)`` Changesets modifying files matched by pattern. @@ -1602,6 +1612,7 @@ symbols = { "max": maxrev, "merge": merge, "min": minrev, + "_missingancestors": _missingancestors, "modifies": modifies, "obsolete": obsolete, "origin": origin, @@ -1671,6 +1682,7 @@ safesymbols = set([ "max", "merge", "min", + "_missingancestors", "modifies", "obsolete", "origin",