cachevfs: migration the tags fnode cache to 'cachevfs'

This will help sharing the cache between shares.
This commit is contained in:
Boris Feld 2017-07-15 23:30:25 +02:00
parent 439a5e0f6f
commit 822a3e705e

View File

@ -617,7 +617,7 @@ def _tag(repo, names, node, message, local, user, date, extra=None,
return tagnode return tagnode
_fnodescachefile = 'cache/hgtagsfnodes1' _fnodescachefile = 'hgtagsfnodes1'
_fnodesrecsize = 4 + 20 # changeset fragment + filenode _fnodesrecsize = 4 + 20 # changeset fragment + filenode
_fnodesmissingrec = '\xff' * 24 _fnodesmissingrec = '\xff' * 24
@ -651,7 +651,7 @@ class hgtagsfnodescache(object):
try: try:
data = repo.vfs.read(_fnodescachefile) data = repo.cachevfs.read(_fnodescachefile)
except (OSError, IOError): except (OSError, IOError):
data = "" data = ""
self._raw = bytearray(data) self._raw = bytearray(data)
@ -759,13 +759,12 @@ class hgtagsfnodescache(object):
try: try:
lock = repo.wlock(wait=False) lock = repo.wlock(wait=False)
except error.LockError: except error.LockError:
repo.ui.log('tagscache', repo.ui.log('tagscache', 'not writing .hg/cache/%s because '
'not writing .hg/%s because lock cannot be acquired\n' % 'lock cannot be acquired\n' % (_fnodescachefile))
(_fnodescachefile))
return return
try: try:
f = repo.vfs.open(_fnodescachefile, 'ab') f = repo.cachevfs.open(_fnodescachefile, 'ab')
try: try:
# if the file has been truncated # if the file has been truncated
actualoffset = f.tell() actualoffset = f.tell()
@ -775,7 +774,7 @@ class hgtagsfnodescache(object):
f.seek(self._dirtyoffset) f.seek(self._dirtyoffset)
f.truncate() f.truncate()
repo.ui.log('tagscache', repo.ui.log('tagscache',
'writing %d bytes to %s\n' % ( 'writing %d bytes to cache/%s\n' % (
len(data), _fnodescachefile)) len(data), _fnodescachefile))
f.write(data) f.write(data)
self._dirtyoffset = None self._dirtyoffset = None
@ -783,7 +782,7 @@ class hgtagsfnodescache(object):
f.close() f.close()
except (IOError, OSError) as inst: except (IOError, OSError) as inst:
repo.ui.log('tagscache', repo.ui.log('tagscache',
"couldn't write %s: %s\n" % ( "couldn't write cache/%s: %s\n" % (
_fnodescachefile, inst)) _fnodescachefile, inst))
finally: finally:
lock.release() lock.release()