Mercurial > hg
diff mercurial/localrepo.py @ 19096:0e4af72cbd7f stable
push: factorise phase movement in a simple closure
Having all phases movement centralised will help to handle special case when the
local repo can not be locked as describe in issue 3684.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Tue, 30 Apr 2013 10:51:25 +0200 |
parents | d5f968f7716f |
children | 3f5e75c22585 |
line wrap: on
line diff
--- a/mercurial/localrepo.py Mon Apr 29 15:58:15 2013 +0900 +++ b/mercurial/localrepo.py Tue Apr 30 10:51:25 2013 +0200 @@ -1762,6 +1762,9 @@ if not remote.canpush(): raise util.Abort(_("destination does not support push")) unfi = self.unfiltered() + def localphasemove(nodes, phase=phases.public): + """move <nodes> to <phase> in the local source repo""" + phases.advanceboundary(self, phase, nodes) # get local lock as we might write phase data locallock = self.lock() try: @@ -1883,17 +1886,17 @@ # on the remote. remotephases = {'publishing': 'True'} if not remotephases: # old server or public only repo - phases.advanceboundary(self, phases.public, cheads) + localphasemove(cheads) # don't push any phase data as there is nothing to push else: ana = phases.analyzeremotephases(self, cheads, remotephases) pheads, droots = ana ### Apply remote phase on local if remotephases.get('publishing', False): - phases.advanceboundary(self, phases.public, cheads) + localphasemove(cheads) else: # publish = False - phases.advanceboundary(self, phases.public, pheads) - phases.advanceboundary(self, phases.draft, cheads) + localphasemove(pheads) + localphasemove(cheads, phases.draft) ### Apply local phase on remote # Get the list of all revs draft on remote by public here.