Comments
Patch
@@ -70,15 +70,15 @@ 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):
+def _writehiddencache(cachefile, cachekey, 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(cachekey)
cachefile.write(data)
def trywritehiddencache(repo, hideable, hidden):
"""write cache of hidden changesets to disk
@@ -86,10 +86,18 @@ def trywritehiddencache(repo, hideable,
The cache consists of a head of 22byte:
2 byte version number of the cache
20 byte sha1 to validate the cache
n*4 byte hidden revs
"""
+ tr = repo.currenttransaction()
+ if tr is not None:
+ cachekey = cachehash(repo, hideable)
+ def writecache(fh):
+ _writehiddencache(fh, cachekey, hidden)
+ tr.addfilegenerator('hiddencache', (cachefile,), writecache,
+ location='plain', cache=True)
+ return
wlock = fh = None
try:
try:
wlock = repo.wlock(wait=False)
# write cache to file