Mercurial > evolve
view tests/test-evolve-list.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 | 3ff0da45d4c7 |
children | 85cdce113c2c a2fdbece7ce1 3caa4a459439 |
line wrap: on
line source
Set up some configs $ cat >> $HGRCPATH <<EOF > [extensions] > rebase= > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH Test the instability listing $ hg init r2 $ cd r2 $ echo a > a && hg ci -Am a adding a $ echo b > b && hg ci -Am b adding b $ echo c > c && hg ci -Am c adding c $ hg up 0 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ echo a >> a && hg ci --amend -m a 2 new orphan changesets $ hg evolve --list d2ae7f538514: b orphan: cb9a9f314b8b (obsolete parent) 177f92b77385: c orphan: d2ae7f538514 (orphan parent) $ cd .. Test the bumpedness listing $ hg init r3 $ cd r3 $ echo a > a && hg ci -Am a adding a $ echo b > b && hg ci --amend -m ab $ hg phase --public --rev 0 --hidden 1 new phase-divergent changesets $ hg evolve --list 88cc282e27fc: ab phase-divergent: cb9a9f314b8b (immutable precursor) $ cd .. Test the divergence listing $ hg init r1 $ cd r1 $ echo a > a && hg ci -Am a adding a $ hg up 0 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo b > b && hg ci -Am b adding b $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo c > c && hg ci -Am c adding c created new head $ hg up 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo d > d && hg ci -Am d adding d created new head $ hg rebase -s 1 -d 2 rebasing 1:d2ae7f538514 "b" $ hg rebase -s 1 -d 3 --hidden --config experimental.allowdivergence=True rebasing 1:d2ae7f538514 "b" 2 new content-divergent changesets $ hg evolve --list c882616e9d84: b content-divergent: a922b3733e98 (draft) (precursor d2ae7f538514) a922b3733e98: b content-divergent: c882616e9d84 (draft) (precursor d2ae7f538514) $ hg evolve --list --rev c882616e9d84 c882616e9d84: b content-divergent: a922b3733e98 (draft) (precursor d2ae7f538514) $ hg phase -p a922b3733e98 $ hg evolve --list c882616e9d84: b content-divergent: a922b3733e98 (public) (precursor d2ae7f538514) $ cd ..