# HG changeset patch # User Pierre-Yves David # Date 1367311885 -7200 # Node ID 0e4af72cbd7f3e4bfd2d010458467b784dae6ffe # Parent 5cc71484ee9c9d370cc2a4cce205a8a59867096e 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. diff -r 5cc71484ee9c -r 0e4af72cbd7f mercurial/localrepo.py --- 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 to 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.