[PATCH 1 of 2] localrepo: move closure of lock release to class

Yuya Nishihara yuya at tcha.org
Tue Sep 15 13:55:03 UTC 2015


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1442318428 -32400
#      Tue Sep 15 21:00:28 2015 +0900
# Node ID 02d72254dc69b88c60c59234e447572ae63ed41e
# Parent  7df5d476087392e217699a41c11fbe8cd48713b2
localrepo: move closure of lock release to class

It only captures "self", so it isn't necessary to be created dynamically.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1198,6 +1198,13 @@ class localrepository(object):
         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 @@ class localrepository(object):
             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


More information about the Mercurial-devel mailing list