mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 15:57:43 +03:00
phases: extract the intermediate set of affected revs
When advancing phases, we compute the new roots for the phases above. During this process, we need to compute all the revisions that change phases (to the new target phases). Extract these revisions into a separate variable. This will be useful to record the phase changes in the transaction.
This commit is contained in:
parent
7dd5b39982
commit
e0ae9be376
@ -283,6 +283,10 @@ class phasecache(object):
|
||||
tr.hookargs['phases_moved'] = '1'
|
||||
|
||||
def advanceboundary(self, repo, tr, targetphase, nodes):
|
||||
"""Set all 'nodes' to phase 'targetphase'
|
||||
|
||||
Nodes with a phase lower than 'targetphase' are not affected.
|
||||
"""
|
||||
# Be careful to preserve shallow-copied values: do not update
|
||||
# phaseroots values, replace them.
|
||||
|
||||
@ -294,9 +298,12 @@ class phasecache(object):
|
||||
if self.phase(repo, repo[n].rev()) >= phase]
|
||||
if not nodes:
|
||||
break # no roots to move anymore
|
||||
|
||||
olds = self.phaseroots[phase]
|
||||
affected = repo.revs('%ln::%ln', olds, nodes)
|
||||
|
||||
roots = set(ctx.node() for ctx in repo.set(
|
||||
'roots((%ln::) - (%ln::%ln))', olds, olds, nodes))
|
||||
'roots((%ln::) - %ld)', olds, affected))
|
||||
if olds != roots:
|
||||
self._updateroots(phase, roots, tr)
|
||||
# some roots may need to be declared for lower phases
|
||||
|
Loading…
Reference in New Issue
Block a user