Mercurial > public > mercurial-scm > hg-stable
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 |