Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlogutils/nodemap.py @ 44465:336ec75ed1ac
nodemap: warm the persistent nodemap on disk with debugupdatecache
When appropriate, the nodemap cache file will be created.
Differential Revision: https://phab.mercurial-scm.org/D8173
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 18 Feb 2020 19:11:13 +0100 |
parents | f7459da77f23 |
children | 6aee0647e026 |
line wrap: on
line diff
--- a/mercurial/revlogutils/nodemap.py Sat Feb 29 19:31:33 2020 +0100 +++ b/mercurial/revlogutils/nodemap.py Tue Feb 18 19:11:13 2020 +0100 @@ -73,10 +73,24 @@ callback_id = b"revlog-persistent-nodemap-%s" % revlog.nodemap_file if tr.hasfinalize(callback_id): return # no need to register again - tr.addfinalize(callback_id, lambda tr: _persist_nodemap(tr, revlog)) + tr.addfinalize( + callback_id, lambda tr: _persist_nodemap(tr.addpostclose, revlog) + ) -def _persist_nodemap(tr, revlog): +def update_persistent_nodemap(revlog): + """update the persistent nodemap right now + + To be used for updating the nodemap on disk outside of a normal transaction + setup (eg, `debugupdatecache`). + """ + cleanups = [] + _persist_nodemap((lambda x, y: cleanups.append(y)), revlog) + for c in cleanups: + c(None) + + +def _persist_nodemap(cleaner, revlog): """Write nodemap data on disk for a given revlog """ if getattr(revlog, 'filteredrevs', ()): @@ -163,7 +177,7 @@ realvfs.tryunlink(oldfile) callback_id = b"revlog-cleanup-nodemap-%s" % revlog.nodemap_file - tr.addpostclose(callback_id, cleanup) + cleaner(callback_id, cleanup) ### Nodemap docket file