mercurial/context.py
changeset 20292 8dc254198a8f
parent 20236 d0097d5818f9
child 20400 f0137d994c83
--- 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