Mercurial > evolve
view tests/test-evolve-public-content-divergent.t @ 4407:7fd0cbf6190d
evolve: change in a test which demonstrate divergence resolution can break
This patch just add "--any" flag to "hg evolve --content-divergent" in
a test and changed output reflect that there is something which is not
handled correctly.
After looking into code I found that it is because of using a evolvestate
value which is not updated i.e evolvestate['divergent']
Next patch will fix this problem.
author | Sushil khanchi <sushilkhanchi97@gmail.com> |
---|---|
date | Fri, 22 Feb 2019 23:49:37 +0530 |
parents | 34322fb3afca |
children | dcbe64c954dc |
line wrap: on
line source
Test for handling of content divergence with public cset using `hg evolve` ========================================================================== Setup ===== $ cat >> $HGRCPATH <<EOF > [alias] > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n" > [phases] > publish = False > [extensions] > rebase = > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH Testing the case when both divergent cset are on the same parent and no-conflict in merging: ------------------------------------------------------------------------------------- Prepare the repository: $ hg init pubdiv $ cd pubdiv $ for ch in a b; do > echo $ch > $ch; > hg ci -Aqm "added "$ch; > done; $ hg glog @ 1:5f6d8a4bf34a added b | draft | o 0:9092f1db7931 added a draft Make an amend and change phase to public: $ sed -i "1 i I am first" b $ hg amend $ hg phase --public Amend again to create a cset divergent to public one: $ hg up 1 --hidden -q updated to hidden changeset 5f6d8a4bf34a (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f) working directory parent is obsolete! (5f6d8a4bf34a) $ echo "I am second" >> b $ hg ci --amend -m "updated b" 1 new content-divergent changesets $ hg glog @ 3:dcdaf152280a updated b | draft content-divergent | | o 2:44f360db368f added b |/ public | o 0:9092f1db7931 added a public Lets resolve the public content-divergence: $ hg evolve --content-divergent merge:[3] updated b with: [2] added b base: [1] added b merging "other" content-divergent changeset '44f360db368f' merging b 0 files updated, 1 files merged, 0 files removed, 0 files unresolved computing new diff committed as c1aa9cfb6cf8 working directory is now at c1aa9cfb6cf8 Following graph log shows that it correctly merged the two divergent csets: $ hg glog -p @ 5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f: | draft | | diff -r 44f360db368f -r c1aa9cfb6cf8 b | --- a/b Thu Jan 01 00:00:00 1970 +0000 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 | @@ -1,2 +1,3 @@ | I am first | b | +I am second | o 2:44f360db368f added b | public | | diff -r 9092f1db7931 -r 44f360db368f b | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,2 @@ | +I am first | +b | o 0:9092f1db7931 added a public diff -r 000000000000 -r 9092f1db7931 a --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/a Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +a $ hg evolve -l $ cd .. Testing the case when both divergent cset has same parent and has conflict in merging: ------------------------------------------------------------------------------ Prepare the repository: $ hg init pubdiv1 $ cd pubdiv1 $ for ch in a b; do > echo $ch > $ch; > hg ci -Aqm "added "$ch; > done; $ hg glog @ 1:5f6d8a4bf34a added b | draft | o 0:9092f1db7931 added a draft Make an amend and change phase to public: $ echo "I am foo" > b $ hg amend $ hg phase --public Amend again to create a cset divergent to public one: $ hg up 1 --hidden -q updated to hidden changeset 5f6d8a4bf34a (hidden revision '5f6d8a4bf34a' was rewritten as: 580f2d01e52c) working directory parent is obsolete! (5f6d8a4bf34a) $ echo "I am bar" > b $ hg ci --amend -m "updated b" 1 new content-divergent changesets $ hg glog @ 3:0e805383168e updated b | draft content-divergent | | o 2:580f2d01e52c added b |/ public | o 0:9092f1db7931 added a public Lets resolve the divergence: $ hg evolve --content-divergent merge:[3] updated b with: [2] added b base: [1] added b merging "other" content-divergent changeset '580f2d01e52c' merging b warning: conflicts while merging b! (edit, then use 'hg resolve --mark') 0 files updated, 0 files merged, 0 files removed, 1 files unresolved fix conflicts and see `hg help evolve.interrupted` [1] $ echo "I am foobar" > b $ hg resolve -m --tool union (no more unresolved files) continue: hg evolve --continue $ hg evolve --continue computing new diff committed as 1a739394e9d4 working directory is now at 1a739394e9d4 $ hg glog @ 5:1a739394e9d4 phase-divergent update to 580f2d01e52c: | draft | o 2:580f2d01e52c added b | public | o 0:9092f1db7931 added a public Testing the case when divergence is not created by actual diff change, but because of rebasing: ------------------------------------------------------------------------------------------------ Prepare the repo: $ cd .. $ hg init rebasediv $ cd rebasediv $ for ch in a b c; do > echo $ch > $ch; > hg ci -Am "added "$ch; > done; adding a adding b adding c $ hg glog @ 2:155349b645be added c | draft | o 1:5f6d8a4bf34a added b | draft | o 0:9092f1db7931 added a draft On server side: a new cset is added based on rev 1 and rev 2 is rebased on newly added cset: $ hg up .^ -q $ echo d > d $ hg ci -Am "added d" adding d created new head $ hg rebase -r 2 -d . rebasing 2:155349b645be "added c" $ hg glog o 4:c0d7ee6604ea added c | draft | @ 3:c9241b0f2d5b added d | draft | o 1:5f6d8a4bf34a added b | draft | o 0:9092f1db7931 added a draft On user side: user has not pulled yet and amended the rev 2 which created the divergence after pull: $ hg up 2 --hidden -q updated to hidden changeset 155349b645be (hidden revision '155349b645be' was rewritten as: c0d7ee6604ea) working directory parent is obsolete! (155349b645be) $ echo cc >> c $ hg ci --amend -m "updated c" 2 new content-divergent changesets Lets change the phase to --public of branch which is pulled from server: $ hg phase --public -r 4 $ hg glog -p @ 5:f5f9b4fc8b77 updated c | draft content-divergent | | diff -r 5f6d8a4bf34a -r f5f9b4fc8b77 c | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/c Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,2 @@ | +c | +cc | | o 4:c0d7ee6604ea added c | | public | | | | diff -r c9241b0f2d5b -r c0d7ee6604ea c | | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | | +++ b/c Thu Jan 01 00:00:00 1970 +0000 | | @@ -0,0 +1,1 @@ | | +c | | | o 3:c9241b0f2d5b added d |/ public | | diff -r 5f6d8a4bf34a -r c9241b0f2d5b d | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/d Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,1 @@ | +d | o 1:5f6d8a4bf34a added b | public | | diff -r 9092f1db7931 -r 5f6d8a4bf34a b | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,1 @@ | +b | o 0:9092f1db7931 added a public diff -r 000000000000 -r 9092f1db7931 a --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/a Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +a Evolve: $ hg evolve --content-divergent merge:[4] added c with: [5] updated c base: [2] added c rebasing "other" content-divergent changeset f5f9b4fc8b77 on c9241b0f2d5b updating to "local" side of the conflict: c0d7ee6604ea merging "other" content-divergent changeset 'c3d442d80993' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved computing new diff committed as 3b336cbee992 working directory is now at 3b336cbee992 $ hg glog -p @ 8:3b336cbee992 phase-divergent update to c0d7ee6604ea: | draft | | diff -r c0d7ee6604ea -r 3b336cbee992 c | --- a/c Thu Jan 01 00:00:00 1970 +0000 | +++ b/c Thu Jan 01 00:00:00 1970 +0000 | @@ -1,1 +1,2 @@ | c | +cc | o 4:c0d7ee6604ea added c | public | | diff -r c9241b0f2d5b -r c0d7ee6604ea c | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/c Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,1 @@ | +c | o 3:c9241b0f2d5b added d | public | | diff -r 5f6d8a4bf34a -r c9241b0f2d5b d | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/d Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,1 @@ | +d | o 1:5f6d8a4bf34a added b | public | | diff -r 9092f1db7931 -r 5f6d8a4bf34a b | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 | @@ -0,0 +1,1 @@ | +b | o 0:9092f1db7931 added a public diff -r 000000000000 -r 9092f1db7931 a --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/a Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +a Check that we don't have any troubled cset now: $ hg evolve -l