push: move discovery in its own function
authorPierre-Yves David <pierre-yves.david@logilab.fr>
Thu, 30 Jan 2014 21:05:29 -0800
changeset 20466 233623d58c9a
parent 20465 170f71061069
child 20467 ef880ced6d07
push: move discovery in its own function Now that every necessary information is held in the `pushoperation` object, we can extract the discovery logic to it's own function. This changeset is pure code movement only.
mercurial/exchange.py
--- a/mercurial/exchange.py	Thu Jan 30 21:01:21 2014 -0800
+++ b/mercurial/exchange.py	Thu Jan 30 21:05:29 2014 -0800
@@ -78,7 +78,6 @@
 
     if not pushop.remote.canpush():
         raise util.Abort(_("destination does not support push"))
-    unfi = pushop.repo.unfiltered()
     # get local lock as we might write phase data
     locallock = None
     try:
@@ -100,17 +99,7 @@
         if not unbundle:
             lock = pushop.remote.lock()
         try:
-            # discovery
-            fci = discovery.findcommonincoming
-            commoninc = fci(unfi, pushop.remote, force=pushop.force)
-            common, inc, remoteheads = commoninc
-            fco = discovery.findcommonoutgoing
-            outgoing = fco(unfi, pushop.remote, onlyheads=pushop.revs,
-                           commoninc=commoninc, force=pushop.force)
-            pushop.outgoing = outgoing
-            pushop.remoteheads = remoteheads
-            pushop.incoming = inc
-
+            _pushdiscovery(pushop)
             if _pushcheckoutgoing(pushop):
                 _pushchangeset(pushop)
             _pushsyncphase(pushop)
@@ -125,6 +114,19 @@
     _pushbookmark(pushop)
     return pushop.ret
 
+def _pushdiscovery(pushop):
+    # discovery
+    unfi = pushop.repo.unfiltered()
+    fci = discovery.findcommonincoming
+    commoninc = fci(unfi, pushop.remote, force=pushop.force)
+    common, inc, remoteheads = commoninc
+    fco = discovery.findcommonoutgoing
+    outgoing = fco(unfi, pushop.remote, onlyheads=pushop.revs,
+                   commoninc=commoninc, force=pushop.force)
+    pushop.outgoing = outgoing
+    pushop.remoteheads = remoteheads
+    pushop.incoming = inc
+
 def _pushcheckoutgoing(pushop):
     outgoing = pushop.outgoing
     unfi = pushop.repo.unfiltered()