##// END OF EJS Templates
streamclone: teach canperformstreamclone to be bundle2 aware...
Gregory Szorc -
r26467:ff2c8923 default
parent child Browse files
Show More
@@ -17,9 +17,13 b' from . import ('
17 17 util,
18 18 )
19 19
20 def canperformstreamclone(pullop):
20 def canperformstreamclone(pullop, bailifbundle2supported=False):
21 21 """Whether it is possible to perform a streaming clone as part of pull.
22 22
23 ``bailifbundle2supported`` will cause the function to return False if
24 bundle2 stream clones are supported. It should only be called by the
25 legacy stream clone code path.
26
23 27 Returns a tuple of (supported, requirements). ``supported`` is True if
24 28 streaming clone is supported and False otherwise. ``requirements`` is
25 29 a set of repo requirements from the remote, or ``None`` if stream clone
@@ -28,6 +32,21 b' def canperformstreamclone(pullop):'
28 32 repo = pullop.repo
29 33 remote = pullop.remote
30 34
35 bundle2supported = False
36 if pullop.canusebundle2:
37 if 'v1' in pullop.remotebundle2caps.get('stream', []):
38 bundle2supported = True
39 # else
40 # Server doesn't support bundle2 stream clone or doesn't support
41 # the versions we support. Fall back and possibly allow legacy.
42
43 # Ensures legacy code path uses available bundle2.
44 if bailifbundle2supported and bundle2supported:
45 return False, None
46 # Ensures bundle2 doesn't try to do a stream clone if it isn't supported.
47 #elif not bailifbundle2supported and not bundle2supported:
48 # return False, None
49
31 50 # Streaming clone only works on empty repositories.
32 51 if len(repo):
33 52 return False, None
General Comments 0
You need to be logged in to leave comments. Login now