exchange: move stream clone logic into pull code path

Stream clones are a special case of clones. Clones are a special case of
pull. Most of the logic for deciding what to do at pull time is in
exchange.py. It makes sense for the stream clone determination to live
there as well.

This patch moves the calling of the stream clone code into pull(). The
checks in streamclone.canperformstreamclone() ensure that we don't
perform a stream clone unless it is possible.

A future patch will convert maybeperformstreamclone() to accept a
pullop to make it consistent with everything else in pull(). It will
also grow some functionality (in case you doubted the necessity of a 4
line function).
This commit is contained in:
Gregory Szorc 2015-10-02 23:04:52 -07:00
parent 7d658837f3
commit 13e503977f
2 changed files with 4 additions and 3 deletions

View File

@ -11,6 +11,7 @@ import errno, urllib
import util, scmutil, changegroup, base85, error
import discovery, phases, obsolete, bookmarks as bookmod, bundle2, pushkey
import lock as lockmod
import streamclone
import tags
def readbundle(ui, fh, fname, vfs=None):
@ -963,6 +964,9 @@ def pull(repo, remote, heads=None, force=False, bookmarks=(), opargs=None,
lock = pullop.repo.lock()
try:
pullop.trmanager = transactionmanager(repo, 'pull', remote.url())
streamclone.maybeperformstreamclone(pullop.repo, pullop.remote,
pullop.heads,
pullop.streamclonerequested)
_pulldiscovery(pullop)
if _canusebundle2(pullop):
_pullbundle2(pullop)

View File

@ -19,7 +19,6 @@ from lock import release
import weakref, errno, os, time, inspect, random
import branchmap, pathutil
import namespaces
import streamclone
propertycache = util.propertycache
filecache = scmutil.filecache
@ -1794,8 +1793,6 @@ class localrepository(object):
keyword arguments:
heads: list of revs to clone (forces use of pull)
stream: use streaming clone if possible'''
streamclone.maybeperformstreamclone(self, remote, heads, stream)
# internal config: ui.quietbookmarkmove
quiet = self.ui.backupconfig('ui', 'quietbookmarkmove')
try: