From patchwork Tue Feb 11 21:32:56 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [6,of,7,(push,is,done; ,12,more,to,go,for,pull)] push: move `commonheads` into the push object From: Pierre-Yves David X-Patchwork-Id: 3587 Message-Id: <1f749657b1e39fdb9b3c.1392154376@marginatus.alto.octopoid.net> To: mercurial-devel@selenic.com Cc: pierre-yves.david@ens-lyon.org Date: Tue, 11 Feb 2014 13:32:56 -0800 # HG changeset patch # User Pierre-Yves David # Date 1391152603 28800 # Thu Jan 30 23:16:43 2014 -0800 # Node ID 1f749657b1e39fdb9b3c5a6fa91ce80eccbb1e11 # Parent b1f6e0ea25feccb4b2ce5c3c72b58b91a5d85928 push: move `commonheads` into the push object The phase synchronisation start by computing the new set of common head between local and remote and then do the phase synchronisation on this set. This new common set logic will eventually be used by the obsolescence markers exchange. So we are going to split the long phase synchronisation in two. diff --git a/mercurial/exchange.py b/mercurial/exchange.py --- a/mercurial/exchange.py +++ b/mercurial/exchange.py @@ -46,10 +46,12 @@ class pushoperation(object): self.outgoing = None # all remote heads before the push self.remoteheads = None # testable as a boolean indicating if any nodes are missing locally. self.incoming = None + # set of all heads common after changeset bundle push + self.commonheads = None def push(repo, remote, force=False, revs=None, newbranch=False): '''Push outgoing changesets (limited by revs) from a local repository to remote. Return an integer: - None means nothing to push @@ -236,10 +238,11 @@ def _pushsyncphase(pushop): # * commonheads parents on missing revset = unfi.set('%ln and parents(roots(%ln))', pushop.outgoing.commonheads, pushop.outgoing.missing) cheads.extend(c.node() for c in revset) + pushop.commonheads = cheads # even when we don't push, exchanging phase data is useful remotephases = pushop.remote.listkeys('phases') if (pushop.ui.configbool('ui', '_usedassubrepo', False) and remotephases # server supports phases and pushop.ret is None # nothing was pushed