setdiscovery: don't use dagutil for node -> rev conversion
The node -> rev conversion is possible using standard storage APIs
and doesn't need to involve the dagutil module.
Differential Revision: https://phab.mercurial-scm.org/D4306
--- a/mercurial/debugcommands.py Thu Aug 16 19:40:46 2018 +0000
+++ b/mercurial/debugcommands.py Thu Aug 16 19:47:30 2018 +0000
@@ -794,7 +794,7 @@
cl = repo.changelog
clnode = cl.node
dag = dagutil.revlogdag(cl)
- all = dag.ancestorset(dag.internalizeall(common))
+ all = dag.ancestorset(cl.rev(n) for n in common)
common = {clnode(r) for r in dag.headsetofconnecteds(all)}
else:
nodes = None
--- a/mercurial/setdiscovery.py Thu Aug 16 19:40:46 2018 +0000
+++ b/mercurial/setdiscovery.py Thu Aug 16 19:47:30 2018 +0000
@@ -143,11 +143,11 @@
roundtrips = 0
cl = local.changelog
clnode = cl.node
+ clrev = cl.rev
localsubset = None
if ancestorsof is not None:
- rev = local.changelog.rev
- localsubset = [rev(n) for n in ancestorsof]
+ localsubset = [clrev(n) for n in ancestorsof]
dag = dagutil.revlogdag(cl, localsubset=localsubset)
# early exit if we know all the specified remote heads already
@@ -175,7 +175,17 @@
# compatibility reasons)
ui.status(_("searching for changes\n"))
- srvheads = dag.internalizeall(srvheadhashes, filterunknown=True)
+ srvheads = []
+ for node in srvheadhashes:
+ if node == nullid:
+ continue
+
+ try:
+ srvheads.append(clrev(node))
+ # Catches unknown and filtered nodes.
+ except error.LookupError:
+ continue
+
if len(srvheads) == len(srvheadhashes):
ui.debug("all remote heads known locally\n")
return srvheadhashes, False, srvheadhashes