mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
localrepo: add hook point to invalidate everything on each command-server run
MQ extension will wrap this function to invalidate its state. repo.invalidate cannot be wrapped for this purpose because qpush obtains repo.lock in the middle of the operation, triggering repo.invalidate. Also, it seems wrong to obtain lock earlier because mq data is non-store parts.
This commit is contained in:
parent
b41bd8b777
commit
cb7c7a6489
@ -188,8 +188,7 @@ class server(object):
|
||||
repoui = self.repoui.__class__(self.repoui)
|
||||
repoui.copy = copiedui.copy # redo copy protection
|
||||
self.repo.ui = self.repo.dirstate._ui = repoui
|
||||
self.repo.invalidate()
|
||||
self.repo.invalidatedirstate()
|
||||
self.repo.invalidateall()
|
||||
|
||||
req = dispatch.request(args[:], copiedui, self.repo, self.cin,
|
||||
self.cout, self.cerr)
|
||||
|
@ -993,6 +993,13 @@ class localrepository(object):
|
||||
pass
|
||||
self.invalidatecaches()
|
||||
|
||||
def invalidateall(self):
|
||||
'''Fully invalidates both store and non-store parts, causing the
|
||||
subsequent operation to reread any outside changes.'''
|
||||
# extension should hook this to invalidate its caches
|
||||
self.invalidate()
|
||||
self.invalidatedirstate()
|
||||
|
||||
def _lock(self, vfs, lockname, wait, releasefn, acquirefn, desc):
|
||||
try:
|
||||
l = lockmod.lock(vfs, lockname, 0, releasefn, desc=desc)
|
||||
|
Loading…
Reference in New Issue
Block a user