diff mercurial/localrepo.py @ 13391:d00bbff8600e

fncachestore: defer updating the fncache file to a single file open Defers updating the fncache file with newly added entries to the end of the transaction (on e.g. pull), doing a single open call on the fncache file, instead of opening and closing it each time a new entry is added to the store. Implemented by adding a new abstract write() function on store.basicstore and registering it as a release function on the store lock in localrepo.lock (compare with dirstate.write). store.fncachestore overrides write() from basicstore and calls a new write function on the fncache object, which writes all entries to the fncache file if it's dirty. store.fncache.add() now just marks itself as dirty if a new name is added.
author Adrian Buehlmann <adrian@cadifra.com>
date Fri, 28 Jan 2011 13:38:34 +0100
parents 327719a44b6a
children 14f3795a5ed7
line wrap: on
line diff
--- a/mercurial/localrepo.py	Fri Jan 28 13:34:07 2011 +0100
+++ b/mercurial/localrepo.py	Fri Jan 28 13:38:34 2011 +0100
@@ -781,8 +781,8 @@
             l.lock()
             return l
 
-        l = self._lock(self.sjoin("lock"), wait, None, self.invalidate,
-                       _('repository %s') % self.origroot)
+        l = self._lock(self.sjoin("lock"), wait, self.store.write,
+                       self.invalidate, _('repository %s') % self.origroot)
         self._lockref = weakref.ref(l)
         return l