##// END OF EJS Templates
phases: add a 'registernew' method to set new phases...
Boris Feld -
r33453:f6b7617a default
parent child Browse files
Show More
@@ -294,6 +294,19 b' class phasecache(object):'
294 294 tr.addfilegenerator('phase', ('phaseroots',), self._write)
295 295 tr.hookargs['phases_moved'] = '1'
296 296
297 def registernew(self, repo, tr, targetphase, nodes):
298 repo = repo.unfiltered()
299 self._retractboundary(repo, tr, targetphase, nodes)
300 if tr is not None and 'phases' in tr.changes:
301 phasetracking = tr.changes['phases']
302 torev = repo.changelog.rev
303 phase = self.phase
304 for n in nodes:
305 rev = torev(n)
306 revphase = phase(repo, rev)
307 _trackphasechange(phasetracking, rev, None, revphase)
308 repo.invalidatevolatilesets()
309
297 310 def advanceboundary(self, repo, tr, targetphase, nodes):
298 311 """Set all 'nodes' to phase 'targetphase'
299 312
@@ -417,6 +430,16 b' def retractboundary(repo, tr, targetphas'
417 430 phcache.retractboundary(repo, tr, targetphase, nodes)
418 431 repo._phasecache.replace(phcache)
419 432
433 def registernew(repo, tr, targetphase, nodes):
434 """register a new revision and its phase
435
436 Code adding revisions to the repository should use this function to
437 set new changeset in their target phase (or higher).
438 """
439 phcache = repo._phasecache.copy()
440 phcache.registernew(repo, tr, targetphase, nodes)
441 repo._phasecache.replace(phcache)
442
420 443 def listphases(repo):
421 444 """List phases root for serialization over pushkey"""
422 445 # Use ordered dictionary so behavior is deterministic.
General Comments 0
You need to be logged in to leave comments. Login now