diff -r a2c08adbb86e -r 9a49feb408f3 mercurial/revset.py --- a/mercurial/revset.py Wed Feb 12 01:00:51 2014 +0100 +++ b/mercurial/revset.py Thu Jan 30 17:46:08 2014 -0800 @@ -1202,7 +1202,7 @@ # i18n: "public" is a keyword getargs(x, 0, 0, _("public takes no arguments")) pc = repo._phasecache - return baseset([r for r in subset if pc.phase(repo, r) == phases.public]) + return lazyset(subset, lambda r: pc.phase(repo, r) == phases.public) def remote(repo, subset, x): """``remote([id [,path]])``