mercurial/commands.py
changeset 18689 12721a20ed30
parent 18688 79107fad06aa
child 18703 5bef0655f2e9
equal deleted inserted replaced
18688:79107fad06aa 18689:12721a20ed30
   454 
   454 
   455     # the backout should appear on the same branch
   455     # the backout should appear on the same branch
   456     wlock = repo.wlock()
   456     wlock = repo.wlock()
   457     try:
   457     try:
   458         branch = repo.dirstate.branch()
   458         branch = repo.dirstate.branch()
       
   459         bheads = repo.branchheads(branch)
   459         hg.clean(repo, node, show_stats=False)
   460         hg.clean(repo, node, show_stats=False)
   460         repo.dirstate.setbranch(branch)
   461         repo.dirstate.setbranch(branch)
   461         rctx = scmutil.revsingle(repo, hex(parent))
   462         rctx = scmutil.revsingle(repo, hex(parent))
   462         cmdutil.revert(ui, repo, rctx, repo.dirstate.parents())
   463         cmdutil.revert(ui, repo, rctx, repo.dirstate.parents())
   463         if not opts.get('merge') and op1 != node:
   464         if not opts.get('merge') and op1 != node:
   465                 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
   466                 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''))
   466                 return hg.update(repo, op1)
   467                 return hg.update(repo, op1)
   467             finally:
   468             finally:
   468                 ui.setconfig('ui', 'forcemerge', '')
   469                 ui.setconfig('ui', 'forcemerge', '')
   469 
   470 
       
   471         e = cmdutil.commiteditor
   470         if not opts['message'] and not opts['logfile']:
   472         if not opts['message'] and not opts['logfile']:
   471             # we don't translate commit messages
   473             # we don't translate commit messages
   472             opts['message'] = "Backed out changeset %s" % short(node)
   474             opts['message'] = "Backed out changeset %s" % short(node)
   473             opts['force_editor'] = True
   475             e = cmdutil.commitforceeditor
   474         commit(ui, repo, **opts)
   476 
       
   477         def commitfunc(ui, repo, message, match, opts):
       
   478             return repo.commit(message, opts.get('user'), opts.get('date'),
       
   479                                match, editor=e)
       
   480         newnode = cmdutil.commit(ui, repo, commitfunc, [], opts)
       
   481         cmdutil.commitstatus(repo, newnode, branch, bheads)
   475 
   482 
   476         def nice(node):
   483         def nice(node):
   477             return '%d:%s' % (repo.changelog.rev(node), short(node))
   484             return '%d:%s' % (repo.changelog.rev(node), short(node))
   478         ui.status(_('changeset %s backs out changeset %s\n') %
   485         ui.status(_('changeset %s backs out changeset %s\n') %
   479                   (nice(repo.changelog.tip()), nice(node)))
   486                   (nice(repo.changelog.tip()), nice(node)))