##// 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 tr.addfilegenerator('phase', ('phaseroots',), self._write)
294 tr.addfilegenerator('phase', ('phaseroots',), self._write)
295 tr.hookargs['phases_moved'] = '1'
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 def advanceboundary(self, repo, tr, targetphase, nodes):
310 def advanceboundary(self, repo, tr, targetphase, nodes):
298 """Set all 'nodes' to phase 'targetphase'
311 """Set all 'nodes' to phase 'targetphase'
299
312
@@ -417,6 +430,16 b' def retractboundary(repo, tr, targetphas'
417 phcache.retractboundary(repo, tr, targetphase, nodes)
430 phcache.retractboundary(repo, tr, targetphase, nodes)
418 repo._phasecache.replace(phcache)
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 def listphases(repo):
443 def listphases(repo):
421 """List phases root for serialization over pushkey"""
444 """List phases root for serialization over pushkey"""
422 # Use ordered dictionary so behavior is deterministic.
445 # Use ordered dictionary so behavior is deterministic.
General Comments 0
You need to be logged in to leave comments. Login now