Mercurial > evolve
view tests/test-evolve-bumped.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 | b237c1c6dc19 |
children | e1a230cc4527 |
line wrap: on
line source
$ hg init public $ cd public $ echo a > a $ mkcommit() { > echo "$1" > "$1" > hg add "$1" > hg ci -m "add $1" > } $ hg commit -A -m init adding a $ cd .. $ evolvepath=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/ $ hg clone -U public private $ cd private $ cat >> .hg/hgrc <<EOF > [extensions] > evolve = $evolvepath > [ui] > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline}\n > [phases] > publish = false > EOF $ cd .. $ cp -a private alice $ cp -a private bob $ cd alice $ hg update 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo a >> a $ hg commit -u alice -m 'modify a' $ hg push ../private pushing to ../private searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files $ hg log -r 'draft()' 1:4d1169d82e47@default(draft) modify a $ cd ../bob $ hg pull ../private pulling from ../private searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 4d1169d82e47 (run 'hg update' to get a working copy) $ hg log -r 'draft()' 1:4d1169d82e47@default(draft) modify a $ hg push ../public pushing to ../public searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files $ hg log -r 'draft()' $ cd ../alice $ hg amend -m 'tweak a' $ hg pull ../public pulling from ../public searching for changes no changes found 1 new phase-divergent changesets $ hg evolve -a -A --phase-divergent recreate:[2] tweak a atop:[1] modify a computing new diff committed as 4d1169d82e47 working directory is now at 4d1169d82e47 Bumped Merge changeset: ----------------------- We currently cannot automatically solve bumped changeset that is the product of a merge, we add a test for it. $ mkcommit _a $ hg up .^ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ mkcommit _b created new head $ mkcommit _c $ hg log -G @ 5:eeaf70969381@default(draft) add _c | o 4:6612fc0ddeb6@default(draft) add _b | | o 3:154ad198ff4a@default(draft) add _a |/ o 1:4d1169d82e47@default(public) modify a | o 0:d3873e73d99e@default(public) init $ hg merge 3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg commit -m "merge" $ hg commit --amend -m "New message" $ hg phase --public 551127da2a8a --hidden 1 new phase-divergent changesets $ hg log -G @ 7:b28e84916d8c@default(draft) New message |\ +---o 6:551127da2a8a@default(public) merge | |/ | o 5:eeaf70969381@default(public) add _c | | | o 4:6612fc0ddeb6@default(public) add _b | | o | 3:154ad198ff4a@default(public) add _a |/ o 1:4d1169d82e47@default(public) modify a | o 0:d3873e73d99e@default(public) init $ hg evolve --all --phase-divergent skipping b28e84916d8c : we do not handle merge yet