comparison 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
comparison
equal deleted inserted replaced
13390:327719a44b6a 13391:d00bbff8600e
779 l = self._lockref and self._lockref() 779 l = self._lockref and self._lockref()
780 if l is not None and l.held: 780 if l is not None and l.held:
781 l.lock() 781 l.lock()
782 return l 782 return l
783 783
784 l = self._lock(self.sjoin("lock"), wait, None, self.invalidate, 784 l = self._lock(self.sjoin("lock"), wait, self.store.write,
785 _('repository %s') % self.origroot) 785 self.invalidate, _('repository %s') % self.origroot)
786 self._lockref = weakref.ref(l) 786 self._lockref = weakref.ref(l)
787 return l 787 return l
788 788
789 def wlock(self, wait=True): 789 def wlock(self, wait=True):
790 '''Lock the non-store parts of the repository (everything under 790 '''Lock the non-store parts of the repository (everything under