diff -r e6ba7e324015 -r 3343eac099ec tests/test-evolve-public-content-divergent.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-evolve-public-content-divergent.t Mon Jan 21 23:06:34 2019 +0530 @@ -0,0 +1,109 @@ +Test for handling of content divergence with public cset using `hg evolve` +========================================================================== + +Setup +===== + $ cat >> $HGRCPATH < [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