# HG changeset patch # User Gregory Szorc # Date 2015-10-04 18:50:42 # Node ID 3515db5aae05abb273b837bc5f670e97de785cb2 # Parent eda32ee9962f4fe434e016f6839c749f37cd4fb9 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 @@ -17,7 +17,7 @@ from . import ( 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 @@ def canperformstreamclone(repo, remote, 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 @@ 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