# HG changeset patch # User Sushil khanchi # Date 1573389537 -19800 # Node ID a6434bdfb3878608a36588752275b962179ab619 # Parent e50f4fc6cc6d864424a0d44f1e7714979d986702 evolve: add test to show that user can create phase-divergence locally After resolution of phase-divergence, user can locally create phase-divergence by rewriting the old bumped (obsolete now) changeset. Next patch will be adding the pre-check logic for creation of this phase-divergence. diff -r e50f4fc6cc6d -r a6434bdfb387 tests/test-evolve-phase-divergence.t --- a/tests/test-evolve-phase-divergence.t Mon Nov 04 00:18:55 2019 +0530 +++ b/tests/test-evolve-phase-divergence.t Sun Nov 10 18:08:57 2019 +0530 @@ -1955,4 +1955,81 @@ +++ b/b Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +b + $ cd .. +Test of pre-checking the creation of phase divergence locally +============================================================= +What are we testing here is that: after we resolve a phase divergence (which +occured when we pulled from public repo) if we revive that phase-divergent rev +(obsolete now) it will create phase-divergence. So our pre-check logic is to +catch that part. + $ hg init phasediv-public + $ cd phasediv-public + $ cat >> .hg/hgrc << EOF + > [phases] + > publish=False + > EOF + + $ echo a > a + $ hg ci -Aqm "add a" + $ echo b > b + $ hg ci -Aqm "add b" + $ cd .. + + $ hg clone phasediv-public phasediv-local + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd phasediv-local + $ hg up -r "desc('add b')" + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo bb >> b + $ hg amend + +Publish the revs at public side + $ cd ../phasediv-public + $ hg phase --public + +Pull into local from public repo + $ cd ../phasediv-local + $ hg pull + pulling from $TESTTMP/merge-no-conflict/phasediv-public + searching for changes + no changes found + 1 new phase-divergent changesets + 2 local changesets published + + $ hg log -GT "{rev}:{node|short} {desc|firstline}\t {troubles}\n {phase}" + @ 2:603041d63ba0 add b phase-divergent + | draft + | o 1:7c3bad9141dc add b + |/ public + o 0:1f0dee641bb7 add a + public + +Evolve phase-divergence + $ hg evolve --phase-divergent + recreate:[2] add b + atop:[1] add b + committed as d2ee22650c7c + working directory is now at d2ee22650c7c + +Revive phase-divergent (obsolete) rev + $ hg log --hidden -GT "{rev}:{node|short} {desc|firstline}\t {troubles}\n {phase}" + @ 3:d2ee22650c7c phase-divergent update to 7c3bad9141dc: + | draft + | x 2:603041d63ba0 add b + | | draft + o | 1:7c3bad9141dc add b + |/ public + o 0:1f0dee641bb7 add a + public +First, let's prune the tip (cset which is result of resolution of phase-divergence) +to avoid creating both content-div and phase-div at the same time while reviving +phase-divergent cset. + $ hg prune . + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + working directory is now at 7c3bad9141dc + 1 changesets pruned + + $ hg touch --hidden -r 2 + 1 new phase-divergent changesets