# HG changeset patch # User Gregory Szorc # Date 1443852292 25200 # Node ID 89b7a7883aeed1bb7f0a595052e0022e61811934 # Parent e05fd574c922ba1c48e1aaf10cd68dc5de725263 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). diff -r e05fd574c922 -r 89b7a7883aee mercurial/exchange.py --- a/mercurial/exchange.py Fri Oct 02 22:16:34 2015 -0700 +++ b/mercurial/exchange.py Fri Oct 02 23:04:52 2015 -0700 @@ -11,6 +11,7 @@ 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 @@ 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) diff -r e05fd574c922 -r 89b7a7883aee mercurial/localrepo.py --- a/mercurial/localrepo.py Fri Oct 02 22:16:34 2015 -0700 +++ b/mercurial/localrepo.py Fri Oct 02 23:04:52 2015 -0700 @@ -19,7 +19,6 @@ import weakref, errno, os, time, inspect, random import branchmap, pathutil import namespaces -import streamclone propertycache = util.propertycache filecache = scmutil.filecache @@ -1794,8 +1793,6 @@ 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: