comparison mercurial/commands.py @ 15906:aad565319fa3

phase: report phase movement When used in "set" mode, the phase command now display the number of changeset who changed phase.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Tue, 17 Jan 2012 20:43:41 +0100
parents afd459933d5f
children c654eac03452
comparison
equal deleted inserted replaced
15905:634d49a8b6db 15906:aad565319fa3
4235 4235
4236 Unless -f/--force is specified, :hg:`phase` won't move changeset from a 4236 Unless -f/--force is specified, :hg:`phase` won't move changeset from a
4237 lower phase to an higher phase. Phases are ordered as follows:: 4237 lower phase to an higher phase. Phases are ordered as follows::
4238 4238
4239 public < draft < secret 4239 public < draft < secret
4240
4241 Return 0 on success, 1 if no phases were changed.
4240 """ 4242 """
4241 # search for a unique phase argument 4243 # search for a unique phase argument
4242 targetphase = None 4244 targetphase = None
4243 for idx, name in enumerate(phases.phasenames): 4245 for idx, name in enumerate(phases.phasenames):
4244 if opts[name]: 4246 if opts[name]:
4251 revs.extend(opts['rev']) 4253 revs.extend(opts['rev'])
4252 if not revs: 4254 if not revs:
4253 raise util.Abort(_('no revisions specified!')) 4255 raise util.Abort(_('no revisions specified!'))
4254 4256
4255 lock = None 4257 lock = None
4258 ret = 0
4256 if targetphase is None: 4259 if targetphase is None:
4257 # display 4260 # display
4258 for ctx in repo.set('%lr', revs): 4261 for ctx in repo.set('%lr', revs):
4259 ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr())) 4262 ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr()))
4260 else: 4263 else:
4262 try: 4265 try:
4263 # set phase 4266 # set phase
4264 nodes = [ctx.node() for ctx in repo.set('%lr', revs)] 4267 nodes = [ctx.node() for ctx in repo.set('%lr', revs)]
4265 if not nodes: 4268 if not nodes:
4266 raise util.Abort(_('empty revision set')) 4269 raise util.Abort(_('empty revision set'))
4270 olddata = repo._phaserev[:]
4267 phases.advanceboundary(repo, targetphase, nodes) 4271 phases.advanceboundary(repo, targetphase, nodes)
4268 if opts['force']: 4272 if opts['force']:
4269 phases.retractboundary(repo, targetphase, nodes) 4273 phases.retractboundary(repo, targetphase, nodes)
4270 finally: 4274 finally:
4271 lock.release() 4275 lock.release()
4276 if olddata is not None:
4277 changes = 0
4278 newdata = repo._phaserev
4279 changes = sum(o != newdata[i] for i, o in enumerate(olddata))
4280 if changes:
4281 ui.note(_('phase change for %i changesets\n') % changes)
4282 else:
4283 ui.warn(_('no phases changed\n'))
4284 ret = 1
4285 return ret
4272 4286
4273 def postincoming(ui, repo, modheads, optupdate, checkout): 4287 def postincoming(ui, repo, modheads, optupdate, checkout):
4274 if modheads == 0: 4288 if modheads == 0:
4275 return 4289 return
4276 if optupdate: 4290 if optupdate: