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 |