# HG changeset patch # User Sune Foldager # Date 1269619369 -3600 # Node ID 1e819576e9264bd749ed6cafcbbc52f51753f189 # Parent 01f097c4ae665a7c14af0aa7706cffa6dccfd4f6 push: refactor and optimize prepush diff -r 01f097c4ae66 -r 1e819576e926 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: