comparison mercurial/commands.py @ 16470:b2e1da5db6df stable

commands: add missing wlock to backout
author Idan Kamara <idankk86@gmail.com>
date Thu, 19 Apr 2012 17:59:23 +0300
parents 55982f62651f
children 85c7602e283a
comparison
equal deleted inserted replaced
16469:dd68c972d089 16470:b2e1da5db6df
447 if opts.get('parent'): 447 if opts.get('parent'):
448 raise util.Abort(_('cannot use --parent on non-merge changeset')) 448 raise util.Abort(_('cannot use --parent on non-merge changeset'))
449 parent = p1 449 parent = p1
450 450
451 # the backout should appear on the same branch 451 # the backout should appear on the same branch
452 branch = repo.dirstate.branch() 452 wlock = repo.wlock()
453 hg.clean(repo, node, show_stats=False) 453 try:
454 repo.dirstate.setbranch(branch) 454 branch = repo.dirstate.branch()
455 revert_opts = opts.copy() 455 hg.clean(repo, node, show_stats=False)
456 revert_opts['date'] = None 456 repo.dirstate.setbranch(branch)
457 revert_opts['all'] = True 457 revert_opts = opts.copy()
458 revert_opts['rev'] = hex(parent) 458 revert_opts['date'] = None
459 revert_opts['no_backup'] = None 459 revert_opts['all'] = True
460 revert(ui, repo, **revert_opts) 460 revert_opts['rev'] = hex(parent)
461 if not opts.get('merge') and op1 != node: 461 revert_opts['no_backup'] = None
462 try: 462 revert(ui, repo, **revert_opts)
463 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) 463 if not opts.get('merge') and op1 != node:
464 return hg.update(repo, op1) 464 try:
465 finally: 465 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
466 ui.setconfig('ui', 'forcemerge', '') 466 return hg.update(repo, op1)
467 467 finally:
468 commit_opts = opts.copy() 468 ui.setconfig('ui', 'forcemerge', '')
469 commit_opts['addremove'] = False 469
470 if not commit_opts['message'] and not commit_opts['logfile']: 470 commit_opts = opts.copy()
471 # we don't translate commit messages 471 commit_opts['addremove'] = False
472 commit_opts['message'] = "Backed out changeset %s" % short(node) 472 if not commit_opts['message'] and not commit_opts['logfile']:
473 commit_opts['force_editor'] = True 473 # we don't translate commit messages
474 commit(ui, repo, **commit_opts) 474 commit_opts['message'] = "Backed out changeset %s" % short(node)
475 def nice(node): 475 commit_opts['force_editor'] = True
476 return '%d:%s' % (repo.changelog.rev(node), short(node)) 476 commit(ui, repo, **commit_opts)
477 ui.status(_('changeset %s backs out changeset %s\n') % 477 def nice(node):
478 (nice(repo.changelog.tip()), nice(node))) 478 return '%d:%s' % (repo.changelog.rev(node), short(node))
479 if opts.get('merge') and op1 != node: 479 ui.status(_('changeset %s backs out changeset %s\n') %
480 hg.clean(repo, op1, show_stats=False) 480 (nice(repo.changelog.tip()), nice(node)))
481 ui.status(_('merging with changeset %s\n') 481 if opts.get('merge') and op1 != node:
482 % nice(repo.changelog.tip())) 482 hg.clean(repo, op1, show_stats=False)
483 try: 483 ui.status(_('merging with changeset %s\n')
484 ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) 484 % nice(repo.changelog.tip()))
485 return hg.merge(repo, hex(repo.changelog.tip())) 485 try:
486 finally: 486 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
487 ui.setconfig('ui', 'forcemerge', '') 487 return hg.merge(repo, hex(repo.changelog.tip()))
488 finally:
489 ui.setconfig('ui', 'forcemerge', '')
490 finally:
491 wlock.release()
488 return 0 492 return 0
489 493
490 @command('bisect', 494 @command('bisect',
491 [('r', 'reset', False, _('reset bisect state')), 495 [('r', 'reset', False, _('reset bisect state')),
492 ('g', 'good', False, _('mark changeset good')), 496 ('g', 'good', False, _('mark changeset good')),