Mercurial > evolve
view tests/test-issue-5720.t @ 3573:d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
This patch adds logic to stabilize an orphan merge changeset having both parents
obsoleted.
The logic tries to first stabilize the merge changeset on successor of second
parent and then stabilize the new changeset formed on the successor of first
parent. We are stabilizing on second parent first and then to second parent to
preserve the first parent's successor as first parent of the merge changeset.
Conflicts can occcur and we can loose processing information, therefore we store
a variable in statefile `orphanmerge` which represents whether we are processing
a merge changeset with both parents obsoleted.
Thanks to Pierre-Yves David for suggesting this way and helping to understand
the correctness of this.
More rigourous test cases for this will be added in next patch.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Sun, 18 Mar 2018 17:29:32 +0530 |
parents | 14cd04ff968e |
children | d5adce52cef4 f6979d64b9fb |
line wrap: on
line source
This test file test the #5720 issue Check that `hg evolve --continue` doesn't change changeset phase from secret to draft after a merge conflict. https://bz.mercurial-scm.org/show_bug.cgi?id=5720 Global setup ============ $ . $TESTDIR/testlib/common.sh $ cat >> $HGRCPATH <<EOF > [ui] > interactive = true > [phases] > publish=False > [extensions] > evolve = > EOF Test ==== $ hg init $TESTTMP/issue-5720 $ cd $TESTTMP/issue-5720 Create two drafts commits and one secret $ echo a > a $ hg commit -Am a adding a $ echo b > a $ hg commit -m b $ echo c > a $ hg commit --secret -m c $ hg log -G -T "{rev}: {phase}" @ 2: secret | o 1: draft | o 0: draft Amend the second draft with new content $ hg prev 1 files updated, 0 files merged, 0 files removed, 0 files unresolved [1] b $ echo b2 > a $ hg amend 1 new orphan changesets $ hg log -G -T "{rev}: {phase}" @ 3: draft | | * 2: secret | | | x 1: draft |/ o 0: draft Evolve which triggers a conflict $ hg evolve move:[2] c atop:[3] b merging a warning: conflicts while merging a! (edit, then use 'hg resolve --mark') evolve failed! fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort abort: unresolved merge conflicts (see hg help resolve) [255] Fix the conflict $ echo c2 > a $ hg resolve -m (no more unresolved files) continue: hg evolve --continue Continue the evolution $ hg evolve --continue evolving 2:13833940840c "c" working directory is now at 3d2080c198e5 Tip should stay in secret phase $ hg log -G -T "{rev}: {phase}" @ 4: secret | o 3: draft | o 0: draft $ hg log -r . -T '{phase}\n' secret