Patchwork D3316: exchange: use command executor for getbundle

login
register
mail settings
Submitter phabricator
Date April 13, 2018, 7:15 p.m.
Message ID <differential-rev-PHID-DREV-tr76ezqgkkyqu4ea3uqh-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/30875/
State Superseded
Headers show

Comments

phabricator - April 13, 2018, 7:15 p.m.
indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  The code consuming the bundle has been moved to inside the
  context manager, as that is supposed to be part of the API.
  (Although it doesn't matter for version 1 peers.)

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/exchange.py

CHANGE DETAILS




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

Patch

diff --git a/mercurial/exchange.py b/mercurial/exchange.py
--- a/mercurial/exchange.py
+++ b/mercurial/exchange.py
@@ -1648,17 +1648,22 @@ 
             kwargs['obsmarkers'] = True
             pullop.stepsdone.add('obsmarkers')
     _pullbundle2extraprepare(pullop, kwargs)
-    bundle = pullop.remote.getbundle('pull', **pycompat.strkwargs(kwargs))
-    try:
-        op = bundle2.bundleoperation(pullop.repo, pullop.gettransaction,
-                                     source='pull')
-        op.modes['bookmarks'] = 'records'
-        bundle2.processbundle(pullop.repo, bundle, op=op)
-    except bundle2.AbortFromPart as exc:
-        pullop.repo.ui.status(_('remote: abort: %s\n') % exc)
-        raise error.Abort(_('pull failed on remote'), hint=exc.hint)
-    except error.BundleValueError as exc:
-        raise error.Abort(_('missing support for %s') % exc)
+
+    with pullop.remote.commandexecutor() as e:
+        args = dict(kwargs)
+        args['source'] = 'pull'
+        bundle = e.callcommand('getbundle', args).result()
+
+        try:
+            op = bundle2.bundleoperation(pullop.repo, pullop.gettransaction,
+                                         source='pull')
+            op.modes['bookmarks'] = 'records'
+            bundle2.processbundle(pullop.repo, bundle, op=op)
+        except bundle2.AbortFromPart as exc:
+            pullop.repo.ui.status(_('remote: abort: %s\n') % exc)
+            raise error.Abort(_('pull failed on remote'), hint=exc.hint)
+        except error.BundleValueError as exc:
+            raise error.Abort(_('missing support for %s') % exc)
 
     if pullop.fetch:
         pullop.cgresult = bundle2.combinechangegroupresults(op)