nodemap: add a function to read the data from disk
This changeset is small and mostly an excuse to introduce an API function
reading the data from disk.
Differential Revision: https://phab.mercurial-scm.org/D7836
--- a/mercurial/debugcommands.py Wed Jan 15 15:47:21 2020 +0100
+++ b/mercurial/debugcommands.py Wed Jan 15 15:47:31 2020 +0100
@@ -2086,16 +2086,29 @@
@command(
b'debugnodemap',
- [(b'', b'dump', False, _(b'write persistent binary nodemap on stdin'))],
+ [
+ (
+ b'',
+ b'dump-new',
+ False,
+ _(b'write a (new) persistent binary nodemap on stdin'),
+ ),
+ (b'', b'dump-disk', False, _(b'dump on-disk data on stdin')),
+ ],
)
def debugnodemap(ui, repo, **opts):
"""write and inspect on disk nodemap
"""
- if opts['dump']:
+ if opts['dump_new']:
unfi = repo.unfiltered()
cl = unfi.changelog
data = nodemap.persistent_data(cl.index)
ui.write(data)
+ elif opts['dump_disk']:
+ unfi = repo.unfiltered()
+ cl = unfi.changelog
+ data = nodemap.persisted_data(cl)
+ ui.write(data)
@command(
--- a/mercurial/revlogutils/nodemap.py Wed Jan 15 15:47:21 2020 +0100
+++ b/mercurial/revlogutils/nodemap.py Wed Jan 15 15:47:31 2020 +0100
@@ -22,6 +22,13 @@
raise error.RevlogError(b'unknown node: %s' % x)
+def persisted_data(revlog):
+ """read the nodemap for a revlog from disk"""
+ if revlog.nodemap_file is None:
+ return None
+ return revlog.opener.tryread(revlog.nodemap_file)
+
+
def setup_persistent_nodemap(tr, revlog):
"""Install whatever is needed transaction side to persist a nodemap on disk
--- a/tests/test-completion.t Wed Jan 15 15:47:21 2020 +0100
+++ b/tests/test-completion.t Wed Jan 15 15:47:31 2020 +0100
@@ -291,7 +291,7 @@
debugmanifestfulltextcache: clear, add
debugmergestate:
debugnamecomplete:
- debugnodemap: dump
+ debugnodemap: dump-new, dump-disk
debugobsolete: flags, record-parents, rev, exclusive, index, delete, date, user, template
debugp1copies: rev
debugp2copies: rev
--- a/tests/test-persistent-nodemap.t Wed Jan 15 15:47:21 2020 +0100
+++ b/tests/test-persistent-nodemap.t Wed Jan 15 15:47:31 2020 +0100
@@ -10,9 +10,9 @@
> exp-persistent-nodemap=yes
> EOF
$ hg debugbuilddag .+5000
- $ hg debugnodemap --dump | f --sha256 --size
+ $ hg debugnodemap --dump-new | f --sha256 --size
size=122880, sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7
- $ f --sha256 --bytes=256 --hexdump --size < .hg/store/00changelog.n
+ $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
size=122880, sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7
0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
0010: ff ff ff ff ff ff ff ff ff ff fa c2 ff ff ff ff |................|