diff -r a306837f8c87 -r fb72eec7efd8 mercurial/revset.py --- a/mercurial/revset.py Mon Aug 27 09:37:49 2012 -0700 +++ b/mercurial/revset.py Tue Aug 28 20:52:04 2012 +0200 @@ -12,6 +12,7 @@ import match as matchmod from i18n import _ import encoding +import obsolete as obsmod def _revancestors(repo, revs, followfirst): """Like revlog.ancestors(), but supports followfirst.""" @@ -621,8 +622,8 @@ """ # i18n: "extinct" is a keyword getargs(x, 0, 0, _("extinct takes no arguments")) - extinctset = set(repo.revs('(obsolete()::) - (::(not obsolete()))')) - return [r for r in subset if r in extinctset] + extincts = obsmod.getobscache(repo, 'extinct') + return [r for r in subset if r in extincts] def extra(repo, subset, x): """``extra(label, [value])`` @@ -959,7 +960,8 @@ Mutable changeset with a newer version.""" # i18n: "obsolete" is a keyword getargs(x, 0, 0, _("obsolete takes no arguments")) - return [r for r in subset if repo[r].obsolete()] + obsoletes = obsmod.getobscache(repo, 'obsolete') + return [r for r in subset if r in obsoletes] def origin(repo, subset, x): """``origin([set])`` @@ -1437,8 +1439,8 @@ """ # i18n: "unstable" is a keyword getargs(x, 0, 0, _("unstable takes no arguments")) - unstableset = set(repo.revs('(obsolete()::) - obsolete()')) - return [r for r in subset if r in unstableset] + unstables = obsmod.getobscache(repo, 'unstable') + return [r for r in subset if r in unstables] def user(repo, subset, x):