diff mercurial/exchange.py @ 26449:89b7a7883aee

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).
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 02 Oct 2015 23:04:52 -0700
parents e05fd574c922
children 362793295640
line wrap: on
line diff
--- 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)