diff -r d82dd55024e7 -r b1ea90613af3 mercurial/revset.py --- a/mercurial/revset.py Fri Jan 18 16:03:37 2019 +0100 +++ b/mercurial/revset.py Fri Jan 18 14:21:47 2019 +0100 @@ -1765,6 +1765,20 @@ return baseset() return subset & baseset([l]) +@predicate('_rev(number)', safe=True) +def _rev(repo, subset, x): + # internal version of "rev(x)" that raise error if "x" is invalid + # i18n: "rev" is a keyword + l = getargs(x, 1, 1, _("rev requires one argument")) + try: + # i18n: "rev" is a keyword + l = int(getstring(l[0], _("rev requires a number"))) + except (TypeError, ValueError): + # i18n: "rev" is a keyword + raise error.ParseError(_("rev expects a number")) + repo.changelog.node(l) # check that the rev exists + return subset & baseset([l]) + @predicate('revset(set)', safe=True, takeorder=True) def revsetpredicate(repo, subset, x, order): """Strictly interpret the content as a revset.