push: refactor and optimize prepush stable
authorSune Foldager <cryo@cyanite.org>
Fri, 26 Mar 2010 17:02:49 +0100
branchstable
changeset 10772 1e819576e926
parent 10771 01f097c4ae66
child 10773 bd36e5c0ccb1
child 10775 c52057614c72
child 10777 bdc3256a318e
push: refactor and optimize prepush
mercurial/localrepo.py
--- a/mercurial/localrepo.py	Fri Mar 26 17:02:36 2010 +0100
+++ b/mercurial/localrepo.py	Fri Mar 26 17:02:49 2010 +0100
@@ -1503,30 +1503,22 @@
         update, updated_heads = self.findoutgoing(remote, common, remote_heads)
         msng_cl, bases, heads = self.changelog.nodesbetween(update, revs)
 
-        def checkbranch(lheads, rheads, updatelb, branchname=None):
+        def checkbranch(lheads, rheads, branchname=None):
             '''
             check whether there are more local heads than remote heads on
             a specific branch.
 
             lheads: local branch heads
             rheads: remote branch heads
-            updatelb: outgoing local branch bases
             '''
 
             warn = 0
 
-            if not revs and len(lheads) > len(rheads):
+            if len(lheads) > len(rheads):
                 warn = 1
             else:
-                # add local heads involved in the push
-                updatelheads = [self.changelog.heads(x, lheads)
-                                for x in updatelb]
-                newheads = set(sum(updatelheads, [])) & set(lheads)
-
-                if not newheads:
-                    return True
-
                 # add heads we don't have or that are not involved in the push
+                newheads = set(lheads)
                 for r in rheads:
                     if r in self.changelog.nodemap:
                         desc = self.changelog.heads(r, heads)
@@ -1590,10 +1582,10 @@
                     for branch, lheads in localbrheads.iteritems():
                         if branch in remotebrheads:
                             rheads = remotebrheads[branch]
-                            if not checkbranch(lheads, rheads, update, branch):
+                            if not checkbranch(lheads, rheads, branch):
                                 return None, 0
                 else:
-                    if not checkbranch(heads, remote_heads, update):
+                    if not checkbranch(heads, remote_heads):
                         return None, 0
 
             if inc: