[PATCH 3 of 5 modernize-streamclone V2] streamclone: refactor canperformstreamclone to accept a pullop
Gregory Szorc
gregory.szorc at gmail.com
Sun Oct 4 20:46:35 CDT 2015
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1443984642 25200
# Sun Oct 04 11:50:42 2015 -0700
# Node ID abab88d826b9b38360897f99679ad67eaa22e7c9
# Parent 5c46c64689c1c8dc202d408c7f5028a7fbc7ddb4
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.
diff --git a/mercurial/streamclone.py b/mercurial/streamclone.py
--- a/mercurial/streamclone.py
+++ b/mercurial/streamclone.py
@@ -16,24 +16,29 @@ from . import (
store,
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
streaming clone is supported and False otherwise. ``requirements`` is
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:
# The server can advertise whether to prefer streaming clone.
@@ -74,18 +79,16 @@ def maybeperformlegacystreamclone(pullop
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
if remote.capable('branchmap'):
More information about the Mercurial-devel
mailing list