mercurial/localrepo.py
branchstable
changeset 18520 751135cca13c
parent 18498 4d9f7dd2ac82
child 18644 3e92772d5383
child 18739 5b7175377bab
--- a/mercurial/localrepo.py	Thu Jan 31 19:13:13 2013 +0100
+++ b/mercurial/localrepo.py	Thu Jan 31 01:44:29 2013 +0100
@@ -1874,6 +1874,20 @@
                     cheads.extend(c.node() for c in revset)
                 # even when we don't push, exchanging phase data is useful
                 remotephases = remote.listkeys('phases')
+                if (self.ui.configbool('ui', '_usedassubrepo', False)
+                    and remotephases    # server supports phases
+                    and ret is None # nothing was pushed
+                    and remotephases.get('publishing', False)):
+                    # When:
+                    # - this is a subrepo push
+                    # - and remote support phase
+                    # - and no changeset was pushed
+                    # - and remote is publishing
+                    # We may be in issue 3871 case!
+                    # We drop the possible phase synchronisation done by
+                    # courtesy to publish changesets possibly locally draft
+                    # on the remote.
+                    remotephases = {'publishing': 'True'}
                 if not remotephases: # old server or public only repo
                     phases.advanceboundary(self, phases.public, cheads)
                     # don't push any phase data as there is nothing to push