exchange: move stream clone logic into pull code path
authorGregory Szorc <gregory.szorc@gmail.com>
Fri, 02 Oct 2015 23:04:52 -0700
changeset 26449 89b7a7883aee
parent 26448 e05fd574c922
child 26450 1138e1d05207
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).
mercurial/exchange.py
mercurial/localrepo.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)
--- 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: