localrepo: move closure of lock release to class
authorYuya Nishihara <yuya@tcha.org>
Tue, 15 Sep 2015 21:00:28 +0900
changeset 26250 bc1f8a79b4e4
parent 26249 3166bcc0c538
child 26251 5c0f5db65c6b
localrepo: move closure of lock release to class It only captures "self", so it isn't necessary to be created dynamically.
mercurial/localrepo.py
--- 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