diff -r d258486604f4 -r abb91b74f758 mercurial/revset.py --- a/mercurial/revset.py Tue Jan 28 16:19:30 2014 -0800 +++ b/mercurial/revset.py Wed Jan 29 09:04:03 2014 -0800 @@ -921,13 +921,13 @@ """ # i18n: "keyword" is a keyword kw = encoding.lower(getstring(x, _("keyword requires a string"))) - l = [] - for r in subset: + + def matches(r): c = repo[r] - if util.any(kw in encoding.lower(t) - for t in c.files() + [c.user(), c.description()]): - l.append(r) - return baseset(l) + return util.any(kw in encoding.lower(t) for t in c.files() + [c.user(), + c.description()]) + + return lazyset(subset, matches) def limit(repo, subset, x): """``limit(set, [n])``