diff -r 0f1ef9e9e904 -r de2544933139 mercurial/exchange.py --- a/mercurial/exchange.py Thu Feb 06 15:56:25 2014 -0800 +++ b/mercurial/exchange.py Fri Jan 31 01:21:42 2014 -0800 @@ -395,6 +395,8 @@ self._trname = 'pull\n' + util.hidepassword(remote.url()) # hold the transaction once created self._tr = None + # heads of the set of changeset target by the pull + self.pulledsubset = None def gettransaction(self): """get appropriate pull transaction, creating it if needed""" @@ -469,20 +471,24 @@ # We pulled a specific subset # sync on this subset subset = pullop.heads + pullop.pulledsubset = subset # Get remote phases data from remote remotephases = pullop.remote.listkeys('phases') publishing = bool(remotephases.get('publishing', False)) if remotephases and not publishing: # remote is new and unpublishing - pheads, _dr = phases.analyzeremotephases(pullop.repo, subset, + pheads, _dr = phases.analyzeremotephases(pullop.repo, + pullop.pulledsubset, remotephases) phases.advanceboundary(pullop.repo, phases.public, pheads) - phases.advanceboundary(pullop.repo, phases.draft, subset) + phases.advanceboundary(pullop.repo, phases.draft, + pullop.pulledsubset) else: # Remote is old or publishing all common changesets # should be seen as public - phases.advanceboundary(pullop.repo, phases.public, subset) + phases.advanceboundary(pullop.repo, phases.public, + pullop.pulledsubset) _pullobsolete(pullop) pullop.closetransaction()