Mercurial > evolve
view tests/test-next-abort.t @ 6224:17ffdea0edbb stable
evolve: look for split successors of the correct ancestor (issue6648)
Consider two changesets, 1 and 2. 1 is split into two new changesets and 2 is
pruned. If we stand on 2 and call hg evolve, _singlesuccessor() will traverse
ancestors of wdp in search of a changeset with successors to update to (it will
be 1, which was split). In case of a split, select_split_successor() gets
control. The issue is this function didn't traverse ancestors, and instead
tried to look up successors of the original changeset (i.e. 2 in our case,
which was pruned).
We can make select_split_successor() aware of _singlesuccessor() logic by using
the changeset that actually has successors without traversing ancestors again.
It's done by storing that changeset in MultipleSuccessorsError exception.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 21 Apr 2022 22:19:27 +0400 |
parents | ed68f64f5d0f |
children | e6ae5af97683 889d21445ee9 |
line wrap: on
line source
Testing hg next with --abort flag and hg abort command handling an interrupted hg next $ . "$TESTDIR/testlib/common.sh" $ cat >> "$HGRCPATH" << EOF > [extensions] > evolve = > EOF $ hg init next-abort $ cd next-abort $ echo apple > a $ hg ci -qAm apple $ echo banana > b $ hg ci -qAm banana $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo blueberry > b $ hg ci -qAm 'apple and blueberry' --amend 1 new orphan changesets $ hg next move:[1] banana atop:[2] apple and blueberry merging b warning: conflicts while merging b! (edit, then use 'hg resolve --mark') unresolved merge conflicts (see 'hg help evolve.interrupted') [240] #testcases abortcommand abortflag #if abortflag $ hg next --abort next aborted working directory is now at 1c7f51cf0ef0 $ hg next --abort abort: no interrupted next to abort [255] $ hg evolve --abort abort: no interrupted evolve to abort [255] $ hg next --abort --move-bookmark abort: cannot specify both --abort and --move-bookmark [10] $ hg next --abort --merge abort: cannot specify both --abort and --merge [10] #else $ hg abort --dry-run evolve in progress, will be aborted $ hg abort evolve aborted working directory is now at 1c7f51cf0ef0 $ hg abort abort: no operation in progress [20] #endif $ cd ..