D7846: nodemap: all check that revision and nodes match in the nodemap
Closed by commit rHGd58206b70199: nodemap: all check that revision and nodes match in the nodemap (authored by marmoute). This revision was automatically updated to reflect the committed changes. This revision was not accepted when it landed; it landed in state "Needs Review". REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7846?vs=19894&id=20114 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7846/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -356,6 +356,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -371,3 +384,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0:1])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D7846: nodemap: all check that revision and nodes match in the nodemap
marmoute added a comment. marmoute updated this revision to Diff 19894. rebase to latest default REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7846?vs=19835&id=19894 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7846/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -356,6 +356,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -371,3 +384,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0:1])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D7846: nodemap: all check that revision and nodes match in the nodemap
marmoute added a comment. marmoute updated this revision to Diff 19835. small doc update on .#s[1] REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7846?vs=19791&id=19835 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7846/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -359,6 +359,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -374,3 +387,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0:1])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D7846: nodemap: all check that revision and nodes match in the nodemap
marmoute updated this revision to Diff 19791. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7846?vs=19762&id=19791 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7846/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -358,6 +358,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -373,3 +386,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0:1])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D7846: nodemap: all check that revision and nodes match in the nodemap
marmoute updated this revision to Diff 19762. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7846?vs=19300&id=19762 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7846/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -357,6 +357,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -372,3 +385,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D7846: nodemap: all check that revision and nodes match in the nodemap
marmoute updated this revision to Diff 19300. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D7846?vs=19183&id=19300 CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D7846/new/ REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -360,6 +360,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -375,3 +388,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D7846: nodemap: all check that revision and nodes match in the nodemap
marmoute created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY More check is always useful. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D7846 AFFECTED FILES mercurial/revlogutils/nodemap.py CHANGE DETAILS diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py +++ b/mercurial/revlogutils/nodemap.py @@ -359,6 +359,19 @@ ret = 1 else: all_revs.remove(r) +nm_rev = _find_node(root, nodemod.hex(index[r][7])) +if nm_rev is None: +msg = b" revision node does not match any entries: %d\n" % r +ui.write_err(msg) +ret = 1 +elif nm_rev != r: +msg = ( +b" revision node does not match the expected revision: " +b"%d != %d\n" % (r, nm_rev) +) +ui.write_err(msg) +ret = 1 + if all_revs: for r in sorted(all_revs): msg = b" extra revision in nodemap: %d\n" % r @@ -374,3 +387,11 @@ if v is None or isinstance(v, Block): continue yield v + + +def _find_node(block, node): +"""find the revision associated with a given node""" +entry = block.get(_to_int(node[0])) +if isinstance(entry, dict): +return _find_node(entry, node[1:]) +return entry To: marmoute, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel