[PATCH 04 of 14] streamclone: rework canperformstreamclone

Boris Feld boris.feld at octobus.net
Thu Jan 18 06:21:30 EST 2018


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1516232727 -3600
#      Thu Jan 18 00:45:27 2018 +0100
# Node ID f7aec5d2c713529e6a3b5042afd0075cb2299122
# Parent  b67de9629f6845041c84b9c1d868ba91c0850d79
# EXP-Topic b2-stream
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r f7aec5d2c713
streamclone: rework canperformstreamclone

There is code about bundle2 laying around in `canperformstreamclone` but not
put to any uses. As we discovered with the previous patch, streambundle 'v1'
won't work on bundle2 because they are readline based. So we jump to 'v2' as
the first expected supported version.

diff --git a/mercurial/streamclone.py b/mercurial/streamclone.py
--- a/mercurial/streamclone.py
+++ b/mercurial/streamclone.py
@@ -18,12 +18,11 @@ from . import (
     util,
 )
 
-def canperformstreamclone(pullop, bailifbundle2supported=False):
+def canperformstreamclone(pullop, bundle2=False):
     """Whether it is possible to perform a streaming clone as part of pull.
 
-    ``bailifbundle2supported`` will cause the function to return False if
-    bundle2 stream clones are supported. It should only be called by the
-    legacy stream clone code path.
+    ``bundle2`` will cause the function to consider stream clone through
+    bundle2 and only through bundle2.
 
     Returns a tuple of (supported, requirements). ``supported`` is True if
     streaming clone is supported and False otherwise. ``requirements`` is
@@ -35,18 +34,18 @@ def canperformstreamclone(pullop, bailif
 
     bundle2supported = False
     if pullop.canusebundle2:
-        if 'v1' in pullop.remotebundle2caps.get('stream', []):
+        if 'v2' in pullop.remotebundle2caps.get('stream', []):
             bundle2supported = True
         # else
             # Server doesn't support bundle2 stream clone or doesn't support
             # the versions we support. Fall back and possibly allow legacy.
 
     # Ensures legacy code path uses available bundle2.
-    if bailifbundle2supported and bundle2supported:
+    if bundle2supported and not bundle2:
         return False, None
     # Ensures bundle2 doesn't try to do a stream clone if it isn't supported.
-    #elif not bailifbundle2supported and not bundle2supported:
-    #    return False, None
+    elif bundle2 and not bundle2supported:
+        return False, None
 
     # Streaming clone only works on empty repositories.
     if len(repo):


More information about the Mercurial-devel mailing list