--- a/mercurial/context.py Wed Jan 15 16:46:20 2014 -0800
+++ b/mercurial/context.py Tue Jan 14 13:49:19 2014 -0800
@@ -410,6 +410,15 @@
# for dirstate.walk, files=['.'] means "walk the whole tree".
# follow that here, too
fset.discard('.')
+
+ # avoid the entire walk if we're only looking for specific files
+ if fset and not match.anypats():
+ if util.all([fn in self for fn in fset]):
+ for fn in sorted(fset):
+ if match(fn):
+ yield fn
+ raise StopIteration
+
for fn in self:
if fn in fset:
# specified pattern is the exact name