[PATCH 3 of 6] dirstate: move initial dirs calculation to a top-level function

Bryan O'Sullivan bos at serpentine.com
Thu Mar 28 20:22:45 CDT 2013


# HG changeset patch
# User Bryan O'Sullivan <bryano at fb.com>
# Date 1364520157 25200
#      Thu Mar 28 18:22:37 2013 -0700
# Node ID 9479dece303d06808cce9e2e3d0a196511fe6ba8
# Parent  42348ed8d9a218eee27b40b48d368aed552c1452
dirstate: move initial dirs calculation to a top-level function

This refactoring prepares us for an upcoming rewrite in C.

diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -45,6 +45,13 @@ def _decdirs(dirs, path):
             return
         del dirs[base]
 
+def _calcdirs(m):
+    dirs = {}
+    for f, s in m.iteritems():
+        if s[0] != 'r':
+            _incdirs(dirs, f)
+    return dirs
+
 class dirstate(object):
 
     def __init__(self, opener, ui, root, validate):
@@ -113,11 +120,7 @@ class dirstate(object):
 
     @propertycache
     def _dirs(self):
-        dirs = {}
-        for f, s in self._map.iteritems():
-            if s[0] != 'r':
-                _incdirs(dirs, f)
-        return dirs
+        return _calcdirs(self._map)
 
     def iterdirs(self):
         return self._dirs.iterkeys()


More information about the Mercurial-devel mailing list