diff -r ed7b674824a3 -r 8dabcc889e33 mercurial/revset.py --- a/mercurial/revset.py Fri Jan 31 10:47:51 2014 -0800 +++ b/mercurial/revset.py Tue Feb 04 08:51:07 2014 -0800 @@ -857,10 +857,10 @@ hasset = True if not default: default = 'glob' - m = None - s = [] - for r in subset: - c = repo[r] + + def matches(x): + m = None + c = repo[x] if not m or (hasset and rev is None): ctx = c if rev is not None: @@ -869,9 +869,10 @@ exclude=exc, ctx=ctx, default=default) for f in c.files(): if m(f): - s.append(r) - break - return baseset(s) + return True + return False + + return lazyset(subset, matches) def hasfile(repo, subset, x): """``file(pattern)``