comparison mercurial/commands.py @ 22050:56ccd95b49c6

phase: wrap `hg phases` phase movement in a transaction Phases are not yet inside the transaction, but we need to prepare for it. So we wrap the phase movement inside a transaction.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 06 Aug 2014 00:50:53 -0700
parents 0aa2cb965f4c
children 616a455b02ca
comparison
equal deleted inserted replaced
22049:86c5318b8e5b 22050:56ccd95b49c6
4572 # display 4572 # display
4573 for r in revs: 4573 for r in revs:
4574 ctx = repo[r] 4574 ctx = repo[r]
4575 ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr())) 4575 ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr()))
4576 else: 4576 else:
4577 tr = None
4577 lock = repo.lock() 4578 lock = repo.lock()
4578 try: 4579 try:
4580 tr = repo.transaction("phase")
4579 # set phase 4581 # set phase
4580 if not revs: 4582 if not revs:
4581 raise util.Abort(_('empty revision set')) 4583 raise util.Abort(_('empty revision set'))
4582 nodes = [repo[r].node() for r in revs] 4584 nodes = [repo[r].node() for r in revs]
4583 olddata = repo._phasecache.getphaserevs(repo)[:] 4585 olddata = repo._phasecache.getphaserevs(repo)[:]
4584 phases.advanceboundary(repo, targetphase, nodes) 4586 phases.advanceboundary(repo, targetphase, nodes)
4585 if opts['force']: 4587 if opts['force']:
4586 phases.retractboundary(repo, targetphase, nodes) 4588 phases.retractboundary(repo, targetphase, nodes)
4589 tr.close()
4587 finally: 4590 finally:
4591 if tr is not None:
4592 tr.release()
4588 lock.release() 4593 lock.release()
4589 # moving revision from public to draft may hide them 4594 # moving revision from public to draft may hide them
4590 # We have to check result on an unfiltered repository 4595 # We have to check result on an unfiltered repository
4591 unfi = repo.unfiltered() 4596 unfi = repo.unfiltered()
4592 newdata = repo._phasecache.getphaserevs(unfi) 4597 newdata = repo._phasecache.getphaserevs(unfi)