dirstate.walk: remove subrepo and .hg from results before step 3
authorSiddharth Agarwal <sid0@fb.com>
Mon, 25 Mar 2013 14:12:39 -0700
changeset 18812 1c40526da52a
parent 18811 0377352eb7d3
child 18813 d780c472463c
dirstate.walk: remove subrepo and .hg from results before step 3 An upcoming patch will speed dirstate.walk up by not querying the results dict when it is empty. This ensures it is in some common cases. This should be safe because subrepos and .hg aren't part of the dirstate.
mercurial/dirstate.py
--- a/mercurial/dirstate.py	Mon Mar 25 12:12:41 2013 -0500
+++ b/mercurial/dirstate.py	Mon Mar 25 14:12:39 2013 -0700
@@ -698,6 +698,10 @@
                     elif nf in dmap and matchfn(nf):
                         results[nf] = None
 
+        for s in subrepos:
+            del results[s]
+        del results['.hg']
+
         # step 3: report unseen items in the dmap hash
         if not skipstep3 and not exact:
             visit = sorted([f for f in dmap if f not in results and matchfn(f)])
@@ -725,9 +729,6 @@
                 nf = iter(visit).next
                 for st in util.statfiles([join(i) for i in visit]):
                     results[nf()] = st
-        for s in subrepos:
-            del results[s]
-        del results['.hg']
         return results
 
     def status(self, match, subrepos, ignored, clean, unknown):