D3291: hg: use command executor for wire protocol commands

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Fri Apr 13 18:09:57 EDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rHGce8828217369: hg: use command executor for wire protocol commands (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D3291?vs=8130&id=8176

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,9 @@
             raise error.Abort(_("remote branch lookup not supported"))
         revs.append(hashbranch)
         return revs, revs[0]
-    branchmap = peer.branchmap()
+
+    with peer.commandexecutor() as e:
+        branchmap = e.callcommand('branchmap', {}).result()
 
     def primary(branch):
         if branch == '.':
@@ -421,7 +423,15 @@
             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]
+
+        # TODO this is batchable.
+        remoterevs = []
+        for r in rev:
+            with srcpeer.commandexecutor() as e:
+                remoterevs.append(e.callcommand('lookup', {
+                    'key': r,
+                }).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 +577,11 @@
             # 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:
+                    rootnode = e.callcommand('lookup', {
+                        'key': '0',
+                    }).result()
+
                 if rootnode != node.nullid:
                     sharepath = os.path.join(sharepool, node.hex(rootnode))
                 else:
@@ -663,7 +677,16 @@
                     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]
+
+                # TODO this is batchable.
+                remoterevs = []
+                for rev in revs:
+                    with srcpeer.commandexecutor() as e:
+                        remoterevs.append(e.callcommand('lookup', {
+                            'key': rev,
+                        }).result())
+                revs = remoterevs
+
                 checkout = revs[0]
             else:
                 revs = None
@@ -705,7 +728,11 @@
 
             if update:
                 if update is not True:
-                    checkout = srcpeer.lookup(update)
+                    with srcpeer.commandexecutor() as e:
+                        checkout = e.callcommand('lookup', {
+                            'key': update,
+                        }).result()
+
                 uprev = None
                 status = None
                 if checkout is not None:



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


More information about the Mercurial-devel mailing list