Mercurial > evolve
view tests/test-evolve-issue5881.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 | 1cbafebe874b |
children |
line wrap: on
line source
Test for issue 5881 present at https://bz.mercurial-scm.org/show_bug.cgi?id=5881 =============================================================================== which is about that if the working copy parent is obsolete then evolve update to its successor revision and stop; it doesn't continue to evolve remaining revisions those were suppossed to evovle. Setup ===== $ . $TESTDIR/testlib/common.sh $ cat >> $HGRCPATH <<EOF > [phases] > publish = False > [extensions] > evolve = > EOF $ hg init issue5881 $ cd issue5881 Prepare the directory by creating an orphan and update to its obsolete parent: $ for ch in a b c; do echo $ch > $ch; hg ci -Am "added "$ch; done; adding a adding b adding c $ hg up 1 -q $ hg ci --amend -m "updated b" 1 new orphan changesets $ hg up 1 0 files updated, 0 files merged, 0 files removed, 0 files unresolved working directory parent is obsolete! (5f6d8a4bf34a) (use 'hg evolve' to update to its successor: e6048a693c0d) $ hg glog o 3:e6048a693c0d updated b | () draft | * 2:155349b645be added c | | () draft orphan | @ 1:5f6d8a4bf34a added b |/ () draft o 0:9092f1db7931 added a () draft Test `hg evolve` evolve all the revisions specified by user: $ hg evolve -r .:: update:[3] updated b 0 files updated, 0 files merged, 0 files removed, 0 files unresolved working directory is now at e6048a693c0d move:[2] added c atop:[3] updated b working directory is now at e6048a693c0d