Mercurial > hg
changeset 39161:858a12846f4f
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
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 16 Aug 2018 19:47:30 +0000 |
parents | 0e46b92b37b1 |
children | 9539553f6d17 |
files | mercurial/debugcommands.py mercurial/setdiscovery.py |
diffstat | 2 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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