changeset 26466:3515db5aae05

streamclone: refactor canperformstreamclone to accept a pullop This isn't strictly necessary. But a lot of pull functionality accepts a pulloperation so extra state can be added easily. It also enables extensions to perform more powerful things.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sun, 04 Oct 2015 11:50:42 -0700
parents eda32ee9962f
children ff2c89239d49
files mercurial/streamclone.py
diffstat 1 files changed, 11 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/streamclone.py	Sun Oct 04 12:03:30 2015 -0700
+++ b/mercurial/streamclone.py	Sun Oct 04 11:50:42 2015 -0700
@@ -17,7 +17,7 @@
     util,
 )
 
-def canperformstreamclone(repo, remote, heads, streamrequested=None):
+def canperformstreamclone(pullop):
     """Whether it is possible to perform a streaming clone as part of pull.
 
     Returns a tuple of (supported, requirements). ``supported`` is True if
@@ -25,14 +25,19 @@
     a set of repo requirements from the remote, or ``None`` if stream clone
     isn't supported.
     """
+    repo = pullop.repo
+    remote = pullop.remote
+
     # Streaming clone only works on empty repositories.
     if len(repo):
         return False, None
 
     # Streaming clone only works if all data is being requested.
-    if heads:
+    if pullop.heads:
         return False, None
 
+    streamrequested = pullop.streamclonerequested
+
     # If we don't have a preference, let the server decide for us. This
     # likely only comes into play in LANs.
     if streamrequested is None:
@@ -75,16 +80,14 @@
     A legacy stream clone will not be performed if a bundle2 stream clone is
     supported.
     """
-    repo = pullop.repo
-    remote = pullop.remote
-
-    r = canperformstreamclone(repo, remote, pullop.heads,
-                              streamrequested=pullop.streamclonerequested)
-    supported, requirements = r
+    supported, requirements = canperformstreamclone(pullop)
 
     if not supported:
         return
 
+    repo = pullop.repo
+    remote = pullop.remote
+
     # Save remote branchmap. We will use it later to speed up branchcache
     # creation.
     rbranchmap = None