Mercurial > public > mercurial-scm > hg
diff mercurial/discovery.py @ 15485:fa47291b3f1f
phases: mark content pushed as public in local repo on push
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Fri, 11 Nov 2011 00:21:17 +0100 |
parents | 7fa471248185 |
children | 646759147717 |
line wrap: on
line diff
--- a/mercurial/discovery.py Fri Nov 11 00:19:00 2011 +0100 +++ b/mercurial/discovery.py Fri Nov 11 00:21:17 2011 +0100 @@ -67,14 +67,18 @@ on circumstances: If we are not going to push anything, return a tuple (None, - outgoing) where outgoing is 0 if there are no outgoing + outgoing, common) where outgoing is 0 if there are no outgoing changesets and 1 if there are, but we refuse to push them - (e.g. would create new remote heads). + (e.g. would create new remote heads). The third element "common" + is the list of heads of the common set between local and remote. - Otherwise, return a tuple (changegroup, remoteheads), where - changegroup is a readable file-like object whose read() returns - successive changegroup chunks ready to be sent over the wire and - remoteheads is the list of remote heads.''' + Otherwise, return a tuple (changegroup, remoteheads, futureheads), + where changegroup is a readable file-like object whose read() + returns successive changegroup chunks ready to be sent over the + wire, remoteheads is the list of remote heads and futureheads is + the list of heads of the common set between local and remote to + be after push completion. + ''' commoninc = findcommonincoming(repo, remote, force=force) common, revs = findcommonoutgoing(repo, remote, onlyheads=revs, commoninc=commoninc, force=force) @@ -85,7 +89,7 @@ if not outg: repo.ui.status(_("no changes found\n")) - return None, 1 + return None, 1, common if not force and remoteheads != [nullid]: if remote.capable('branchmap'): @@ -189,4 +193,10 @@ cg = repo._changegroup(outg, 'push') else: cg = repo.getbundle('push', heads=revs, common=common) - return cg, remoteheads + # no need to compute outg ancestor. All node in outg have either: + # - parents in outg + # - parents in common + # - nullid parent + rset = repo.set('heads(%ln + %ln)', common, outg) + futureheads = [ctx.node() for ctx in rset] + return cg, remoteheads, futureheads