hgext/evolve.py
changeset 1567 536fdfa3c48b
parent 1566 25254b2f8116
child 1568 52c276d2ddb2
equal deleted inserted replaced
1566:25254b2f8116 1567:536fdfa3c48b
   951                 repo.dirstate.setbranch(orig.branch())
   951                 repo.dirstate.setbranch(orig.branch())
   952             r = merge.graft(repo, orig, orig.p1(), ['local', 'graft'])
   952             r = merge.graft(repo, orig, orig.p1(), ['local', 'graft'])
   953             if r[-1]:  #some conflict
   953             if r[-1]:  #some conflict
   954                 raise error.Abort(
   954                 raise error.Abort(
   955                         'unresolved merge conflicts (see hg help resolve)')
   955                         'unresolved merge conflicts (see hg help resolve)')
   956             if commitmsg is None:
   956             nodenew = _relocatecommit(repo, orig, commitmsg)
   957                 commitmsg = orig.description()
       
   958             extra = dict(orig.extra())
       
   959             if 'branch' in extra:
       
   960                 del extra['branch']
       
   961             extra['rebase_source'] = orig.hex()
       
   962 
       
   963             backup = repo.ui.backupconfig('phases', 'new-commit')
       
   964             try:
       
   965                 targetphase = max(orig.phase(), phases.draft)
       
   966                 repo.ui.setconfig('phases', 'new-commit', targetphase, 'rebase')
       
   967                 # Commit might fail if unresolved files exist
       
   968                 nodenew = repo.commit(text=commitmsg, user=orig.user(),
       
   969                                       date=orig.date(), extra=extra)
       
   970             finally:
       
   971                 repo.ui.restoreconfig(backup)
       
   972         except error.Abort as exc:
   957         except error.Abort as exc:
   973             repo.dirstate.beginparentchange()
   958             repo.dirstate.beginparentchange()
   974             repo.setparents(repo['.'].node(), nullid)
   959             repo.setparents(repo['.'].node(), nullid)
   975             writedirstate(repo.dirstate, tr)
   960             writedirstate(repo.dirstate, tr)
   976             # fix up dirstate for copies and renames
   961             # fix up dirstate for copies and renames
  3679             break
  3664             break
  3680     else:
  3665     else:
  3681         help.helptable.append((["evolution"], _("Safely Rewriting History"),
  3666         help.helptable.append((["evolution"], _("Safely Rewriting History"),
  3682                       _helploader))
  3667                       _helploader))
  3683         help.helptable.sort()
  3668         help.helptable.sort()
       
  3669 
       
  3670 def _relocatecommit(repo, orig, commitmsg):
       
  3671     if commitmsg is None:
       
  3672         commitmsg = orig.description()
       
  3673     extra = dict(orig.extra())
       
  3674     if 'branch' in extra:
       
  3675         del extra['branch']
       
  3676     extra['rebase_source'] = orig.hex()
       
  3677 
       
  3678     backup = repo.ui.backupconfig('phases', 'new-commit')
       
  3679     try:
       
  3680         targetphase = max(orig.phase(), phases.draft)
       
  3681         repo.ui.setconfig('phases', 'new-commit', targetphase, 'rebase')
       
  3682         # Commit might fail if unresolved files exist
       
  3683         nodenew = repo.commit(text=commitmsg, user=orig.user(),
       
  3684                               date=orig.date(), extra=extra)
       
  3685     finally:
       
  3686         repo.ui.restoreconfig(backup)
       
  3687     return nodenew