changeset 26250:bc1f8a79b4e4

localrepo: move closure of lock release to class It only captures "self", so it isn't necessary to be created dynamically.
author Yuya Nishihara <yuya@tcha.org>
date Tue, 15 Sep 2015 21:00:28 +0900
parents 3166bcc0c538
children 5c0f5db65c6b
files mercurial/localrepo.py
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/localrepo.py	Wed Sep 16 22:30:36 2015 +0800
+++ b/mercurial/localrepo.py	Tue Sep 15 21:00:28 2015 +0900
@@ -1198,6 +1198,13 @@
         self.invalidate()
         self.invalidatedirstate()
 
+    def _refreshfilecachestats(self):
+        """Reload stats of cached files so that they are flagged as valid"""
+        for k, ce in self._filecache.items():
+            if k == 'dirstate' or k not in self.__dict__:
+                continue
+            ce.refresh()
+
     def _lock(self, vfs, lockname, wait, releasefn, acquirefn, desc):
         try:
             l = lockmod.lock(vfs, lockname, 0, releasefn, desc=desc)
@@ -1240,13 +1247,7 @@
             l.lock()
             return l
 
-        def unlock():
-            for k, ce in self._filecache.items():
-                if k == 'dirstate' or k not in self.__dict__:
-                    continue
-                ce.refresh()
-
-        l = self._lock(self.svfs, "lock", wait, unlock,
+        l = self._lock(self.svfs, "lock", wait, self._refreshfilecachestats,
                        self.invalidate, _('repository %s') % self.origroot)
         self._lockref = weakref.ref(l)
         return l