D3291: hg: use command executor for wire protocol commands

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Thu Apr 12 20:00:27 UTC 2018


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3291

AFFECTED FILES
  mercurial/hg.py

CHANGE DETAILS

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -81,7 +81,11 @@
             raise error.Abort(_("remote branch lookup not supported"))
         revs.append(hashbranch)
         return revs, revs[0]
-    branchmap = peer.branchmap()
+
+    with peer.commandexecutor() as e:
+        fbranchmap = e.callcommand('branchmap', {})
+
+    branchmap = fbranchmap.result()
 
     def primary(branch):
         if branch == '.':
@@ -421,7 +425,17 @@
             raise error.Abort(_("src repository does not support "
                                "revision lookup and so doesn't "
                                "support clone by revision"))
-        revs = [srcpeer.lookup(r) for r in rev]
+
+        remoterevs = []
+        for r in rev:
+            with srcpeer.commandexecutor() as e:
+                frev = e.callcommand('lookup', {
+                    'key': r,
+                })
+
+            remoterevs.append(frev.result())
+
+        revs = remoterevs
 
     # Obtain a lock before checking for or cloning the pooled repo otherwise
     # 2 clients may race creating or populating it.
@@ -567,7 +581,13 @@
             # raises RepoLookupError if revision 0 is filtered or otherwise
             # not available. If we fail to resolve, sharing is not enabled.
             try:
-                rootnode = srcpeer.lookup('0')
+                with srcpeer.commandexecutor() as e:
+                    frootnode = e.callcommand('lookup', {
+                        'key': '0',
+                    })
+
+                rootnode = frootnode.result()
+
                 if rootnode != node.nullid:
                     sharepath = os.path.join(sharepool, node.hex(rootnode))
                 else:
@@ -663,7 +683,17 @@
                     raise error.Abort(_("src repository does not support "
                                        "revision lookup and so doesn't "
                                        "support clone by revision"))
-                revs = [srcpeer.lookup(r) for r in revs]
+
+                remoterevs = []
+                for rev in revs:
+                    with srcpeer.commandexecutor() as e:
+                        frev = e.callcommand('lookup', {
+                            'key': rev,
+                        })
+
+                    remoterevs.append(frev.result())
+
+                revs = remoterevs
                 checkout = revs[0]
             else:
                 revs = None
@@ -705,7 +735,13 @@
 
             if update:
                 if update is not True:
-                    checkout = srcpeer.lookup(update)
+                    with srcpeer.commandexecutor() as e:
+                        fcheckout = e.callcommand('lookup', {
+                            'key': update,
+                        })
+
+                    checkout = fcheckout.result()
+
                 uprev = None
                 status = None
                 if checkout is not None:



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list