Comments
Patch
@@ -70,10 +70,17 @@ def cachehash(repo, hideable):
h = util.sha1()
h.update(''.join(repo.heads()))
h.update(str(hash(frozenset(hideable))))
return h.digest()
+def _writehiddencache(cachefile, cachehash, hidden):
+ """write hidden data to a cache file"""
+ data = struct.pack('>%ii' % len(hidden), *sorted(hidden))
+ cachefile.write(struct.pack(">H", cacheversion))
+ cachefile.write(cachehash)
+ cachefile.write(data)
+
def trywritehiddencache(repo, hideable, hidden):
"""write cache of hidden changesets to disk
Will not write the cache if a wlock cannot be obtained lazily.
The cache consists of a head of 22byte:
@@ -85,16 +92,12 @@ def trywritehiddencache(repo, hideable,
try:
try:
wlock = repo.wlock(wait=False)
# write cache to file
newhash = cachehash(repo, hideable)
- sortedset = sorted(hidden)
- data = struct.pack('>%ii' % len(sortedset), *sortedset)
fh = repo.vfs.open(cachefile, 'w+b', atomictemp=True)
- fh.write(struct.pack(">H", cacheversion))
- fh.write(newhash)
- fh.write(data)
+ _writehiddencache(fh, newhash, hidden)
except (IOError, OSError):
repo.ui.debug('error writing hidden changesets cache')
except error.LockHeld:
repo.ui.debug('cannot obtain lock to write hidden changesets cache')
finally: