diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t --- a/tests/test-rebase-conflicts.t +++ b/tests/test-rebase-conflicts.t @@ -429,3 +429,66 @@ |/ o 0:draft 'A' +Test to make sure that pruning while rebasing doesn't confuse rebase (issue6180) + $ cat >> $HGRCPATH < [experimental] + > evolution.createmarkers=True + > evolution.allowunstable=True + > [rebase] + > experimental.inmemory=1 + > EOF + +The test case below starts a rebase of 2 commits and runs into conflicts on +the first one. We then decide we don't want the changes from that commit, so +we revert the changes and also prune the original commit. +Now what we expect from `hg rebase --continue` is that it skip rebasing first +one (since it's pruned) but don't skip second one. + + $ hg init issue6180 + $ cd issue6180 + $ echo 0 > a + $ hg ci -Aqm 'add a' + $ echo 1 > a + $ hg ci -m 'edit a' + $ hg co -q 0 + $ echo 2 > a + $ hg ci -qm 'conflict in a' + $ echo 3 > b + $ hg ci -Aqm 'add b' + $ hg tglog + @ 3:draft 'add b' + | + o 2:draft 'conflict in a' + | + | o 1:draft 'edit a' + |/ + o 0:draft 'add a' + + $ hg rebase -d 1 + rebasing 2:06a50ac6b5ab "conflict in a" + merging a + hit merge conflicts; re-running rebase without in-memory merge + rebasing 2:06a50ac6b5ab "conflict in a" + merging a + warning: conflicts while merging a! (edit, then use 'hg resolve --mark') + unresolved conflicts (see hg resolve, then hg rebase --continue) + [1] + $ echo 1 > a + $ hg debugobsolete $(hg id -ir 2 --debug) + 1 new obsolescence markers + obsoleted 1 changesets + 1 new orphan changesets + $ hg resolve -m + (no more unresolved files) + continue: hg rebase --continue +XXX: it should have rebased revision 3 since it made changes unrelated to +destination, so no reason to say "its destination already has all its changes" + $ hg rebase -c + note: not rebasing 2:06a50ac6b5ab "conflict in a", it has no successor + rebasing 3:aea370672fd7 "add b" (tip) + note: not rebasing 3:aea370672fd7 "add b" (tip), its destination already has all its changes + $ hg tglog + @ 1:draft 'edit a' + | + o 0:draft 'add a' +