Show More
@@ -531,6 +531,9 b' def rebase(ui, repo, **opts):' | |||
|
531 | 531 | for k, v in rbsrt.state.iteritems(): |
|
532 | 532 | if v > nullmerge: |
|
533 | 533 | nstate[repo[k].node()] = repo[v].node() |
|
534 | elif v == revprecursor: | |
|
535 | succ = obsoletenotrebased[k] | |
|
536 | nstate[repo[k].node()] = repo[succ].node() | |
|
534 | 537 | # XXX this is the same as dest.node() for the non-continue path -- |
|
535 | 538 | # this should probably be cleaned up |
|
536 | 539 | targetnode = repo[rbsrt.target].node() |
@@ -538,7 +541,9 b' def rebase(ui, repo, **opts):' | |||
|
538 | 541 | # restore original working directory |
|
539 | 542 | # (we do this before stripping) |
|
540 | 543 | newwd = rbsrt.state.get(rbsrt.originalwd, rbsrt.originalwd) |
|
541 |
if newwd |
|
|
544 | if newwd == revprecursor: | |
|
545 | newwd = obsoletenotrebased[rbsrt.originalwd] | |
|
546 | elif newwd < 0: | |
|
542 | 547 | # original directory is a parent of rebase set root or ignored |
|
543 | 548 | newwd = rbsrt.originalwd |
|
544 | 549 | if newwd not in [c.rev() for c in repo[None].parents()]: |
@@ -777,17 +782,6 b' def _checkobsrebase(repo, ui,' | |||
|
777 | 782 | "experimental.allowdivergence=True") |
|
778 | 783 | raise error.Abort(msg % (",".join(divhashes),), hint=h) |
|
779 | 784 | |
|
780 | # - plain prune (no successor) changesets are rebased | |
|
781 | # - split changesets are not rebased if at least one of the | |
|
782 | # changeset resulting from the split is an ancestor of dest | |
|
783 | rebaseset = rebasesetrevs - rebaseobsskipped | |
|
784 | if rebasesetrevs and not rebaseset: | |
|
785 | msg = _('all requested changesets have equivalents ' | |
|
786 | 'or were marked as obsolete') | |
|
787 | hint = _('to force the rebase, set the config ' | |
|
788 | 'experimental.rebaseskipobsolete to False') | |
|
789 | raise error.Abort(msg, hint=hint) | |
|
790 | ||
|
791 | 785 | def defineparents(repo, rev, target, state, targetancestors, |
|
792 | 786 | obsoletenotrebased): |
|
793 | 787 | 'Return the new parent relationship of the revision that will be rebased' |
@@ -709,9 +709,7 b' should display a friendly error message' | |||
|
709 | 709 | created new head |
|
710 | 710 | $ hg debugobsolete `hg log -r 11 -T '{node}\n'` --config experimental.evolution=all |
|
711 | 711 | $ hg rebase -r . -d 10 |
|
712 | abort: all requested changesets have equivalents or were marked as obsolete | |
|
713 | (to force the rebase, set the config experimental.rebaseskipobsolete to False) | |
|
714 | [255] | |
|
712 | note: not rebasing 11:f44da1f4954c "nonrelevant" (tip), it has no successor | |
|
715 | 713 | |
|
716 | 714 | If a rebase is going to create divergence, it should abort |
|
717 | 715 | |
@@ -916,3 +914,38 b' rebase source is obsoleted (issue5198)' | |||
|
916 | 914 | o 0:cd010b8cd998 A |
|
917 | 915 | |
|
918 | 916 | $ cd .. |
|
917 | ||
|
918 | Test that bookmark is moved and working dir is updated when all changesets have | |
|
919 | equivalents in destination | |
|
920 | $ hg init rbsrepo && cd rbsrepo | |
|
921 | $ echo "[experimental]" > .hg/hgrc | |
|
922 | $ echo "evolution=all" >> .hg/hgrc | |
|
923 | $ echo "rebaseskipobsolete=on" >> .hg/hgrc | |
|
924 | $ echo root > root && hg ci -Am root | |
|
925 | adding root | |
|
926 | $ echo a > a && hg ci -Am a | |
|
927 | adding a | |
|
928 | $ hg up 0 | |
|
929 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
|
930 | $ echo b > b && hg ci -Am b | |
|
931 | adding b | |
|
932 | created new head | |
|
933 | $ hg rebase -r 2 -d 1 | |
|
934 | rebasing 2:1e9a3c00cbe9 "b" (tip) | |
|
935 | $ hg log -r . # working dir is at rev 3 (successor of 2) | |
|
936 | 3:be1832deae9a b (no-eol) | |
|
937 | $ hg book -r 2 mybook --hidden # rev 2 has a bookmark on it now | |
|
938 | $ hg up 2 && hg log -r . # working dir is at rev 2 again | |
|
939 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
|
940 | 2:1e9a3c00cbe9 b (no-eol) | |
|
941 | $ hg rebase -r 2 -d 3 | |
|
942 | note: not rebasing 2:1e9a3c00cbe9 "b" (mybook), already in destination as 3:be1832deae9a "b" | |
|
943 | Check that working directory was updated to rev 3 although rev 2 was skipped | |
|
944 | during the rebase operation | |
|
945 | $ hg log -r . | |
|
946 | 3:be1832deae9a b (no-eol) | |
|
947 | ||
|
948 | Check that bookmark was moved to rev 3 although rev 2 was skipped | |
|
949 | during the rebase operation | |
|
950 | $ hg bookmarks | |
|
951 | mybook 3:be1832deae9a |
General Comments 0
You need to be logged in to leave comments.
Login now