diff -r f727ebe6ffd5 -r 40854e956315 tests/test-obsolete-divergent.t --- a/tests/test-obsolete-divergent.t Wed Jan 02 14:52:32 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,449 +0,0 @@ -Test file decicated to testing the divergent troubles from obsolete changeset. - -This is the most complexe troubles from far so we isolate it in a dedicated -file. - -Enable obsolete - - $ cat >> $HGRCPATH << EOF - > [ui] - > logtemplate = {rev}:{node|short} {desc}\n - > [alias] - > debugobsolete = debugobsolete -d '0 0' - > [phases] - > publish=False - > [extensions] - > rebase= - > EOF - $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH - - - $ mkcommit() { - > echo "$1" > "$1" - > hg add "$1" - > hg ci -m "$1" - > } - $ getid() { - > hg id --debug -ir "desc('$1')" - > } - -setup repo - - $ hg init reference - $ cd reference - $ mkcommit base - $ mkcommit A_0 - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A_1 - created new head - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A_2 - created new head - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ cd .. - - - $ newcase() { - > hg clone -u 0 -q reference $1 - > cd $1 - > } - -direct divergence ------------------ - -A_1 have two direct and divergent successors A_1 and A_1 - - $ newcase direct - $ hg debugobsolete `getid A_0` `getid A_1` - $ hg debugobsolete `getid A_0` `getid A_2` - $ hg log -G --hidden - o 3:392fd25390da A_2 - | - | o 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - @ 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 392fd25390da - 82623d38b9ba - 82623d38b9ba - 82623d38b9ba - 392fd25390da - 392fd25390da - $ hg log -r 'divergent()' - 2:82623d38b9ba A_1 - 3:392fd25390da A_2 - $ hg summary -v - parent: 0:d20a80d4def3 - base - branch: default - commit: (clean) - update: 3 new changesets (update) - unstable: 0 changesets - bumped: 0 changesets - divergent: 2 changesets - - -check that mercurial refuse to push - - $ hg init ../other - $ hg push ../other - pushing to ../other - searching for changes - abort: push includes a divergent changeset: 82623d38b9ba! - (use 'hg evolve' to get a stable history or --force to ignore warnings) - [255] - - $ cd .. - - -indirect divergence with known changeset -------------------------------------------- - - $ newcase indirect_known - $ hg debugobsolete `getid A_0` `getid A_1` - $ hg debugobsolete `getid A_0` `getid A_2` - $ mkcommit A_3 - created new head - $ hg debugobsolete `getid A_2` `getid A_3` - $ hg log -G --hidden - @ 4:01f36c5a8fda A_3 - | - | x 3:392fd25390da A_2 - |/ - | o 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - o 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 01f36c5a8fda - 82623d38b9ba - 82623d38b9ba - 82623d38b9ba - 392fd25390da - 01f36c5a8fda - 01f36c5a8fda - 01f36c5a8fda - $ hg log -r 'divergent()' - 2:82623d38b9ba A_1 - 4:01f36c5a8fda A_3 - $ cd .. - - -indirect divergence with known changeset -------------------------------------------- - - $ newcase indirect_unknown - $ hg debugobsolete `getid A_0` aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid A_1` - $ hg debugobsolete `getid A_0` `getid A_2` - $ hg log -G --hidden - o 3:392fd25390da A_2 - | - | o 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - @ 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 392fd25390da - 82623d38b9ba - 82623d38b9ba - 82623d38b9ba - 392fd25390da - 392fd25390da - $ hg log -r 'divergent()' - 2:82623d38b9ba A_1 - 3:392fd25390da A_2 - $ cd .. - -do not take unknown node in account if they are final ------------------------------------------------------ - - $ newcase final-unknown - $ hg debugobsolete `getid A_0` `getid A_1` - $ hg debugobsolete `getid A_1` `getid A_2` - $ hg debugobsolete `getid A_0` bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb - $ hg debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccc - $ hg debugobsolete `getid A_1` dddddddddddddddddddddddddddddddddddddddd - - $ hg debugsuccessorssets 'desc('A_0')' - 007dc284c1f8 - 392fd25390da - - $ cd .. - -divergence that converge again is not divergence anymore ------------------------------------------------------ - - $ newcase converged_divergence - $ hg debugobsolete `getid A_0` `getid A_1` - $ hg debugobsolete `getid A_0` `getid A_2` - $ mkcommit A_3 - created new head - $ hg debugobsolete `getid A_1` `getid A_3` - $ hg debugobsolete `getid A_2` `getid A_3` - $ hg log -G --hidden - @ 4:01f36c5a8fda A_3 - | - | x 3:392fd25390da A_2 - |/ - | x 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - o 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 01f36c5a8fda - 82623d38b9ba - 01f36c5a8fda - 392fd25390da - 01f36c5a8fda - 01f36c5a8fda - 01f36c5a8fda - $ hg log -r 'divergent()' - $ cd .. - -split is not divergences ------------------------------ - - $ newcase split - $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2` - $ hg log -G --hidden - o 3:392fd25390da A_2 - | - | o 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - @ 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 82623d38b9ba 392fd25390da - 82623d38b9ba - 82623d38b9ba - 392fd25390da - 392fd25390da - $ hg log -r 'divergent()' - -Even when subsequente rewriting happen - - $ mkcommit A_3 - created new head - $ hg debugobsolete `getid A_1` `getid A_3` - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A_4 - created new head - $ hg debugobsolete `getid A_2` `getid A_4` - $ hg up 0 - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A_5 - created new head - $ hg debugobsolete `getid A_4` `getid A_5` - $ hg log -G --hidden - @ 6:e442cfc57690 A_5 - | - | x 5:6a411f0d7a0a A_4 - |/ - | o 4:01f36c5a8fda A_3 - |/ - | x 3:392fd25390da A_2 - |/ - | x 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - o 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 01f36c5a8fda e442cfc57690 - 82623d38b9ba - 01f36c5a8fda - 392fd25390da - e442cfc57690 - 01f36c5a8fda - 01f36c5a8fda - 6a411f0d7a0a - e442cfc57690 - e442cfc57690 - e442cfc57690 - $ hg log -r 'divergent()' - -Check more complexe obsolescence graft (with divergence) - - $ mkcommit B_0; hg up 0 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg debugobsolete `getid B_0` `getid A_2` - $ mkcommit A_7; hg up 0 - created new head - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit A_8; hg up 0 - created new head - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg debugobsolete `getid A_5` `getid A_7` `getid A_8` - $ mkcommit A_9; hg up 0 - created new head - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg debugobsolete `getid A_5` `getid A_9` - $ hg log -G --hidden - o 10:bed64f5d2f5a A_9 - | - | o 9:14608b260df8 A_8 - |/ - | o 8:7ae126973a96 A_7 - |/ - | x 7:3750ebee865d B_0 - | | - | x 6:e442cfc57690 A_5 - |/ - | x 5:6a411f0d7a0a A_4 - |/ - | o 4:01f36c5a8fda A_3 - |/ - | x 3:392fd25390da A_2 - |/ - | x 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - @ 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 01f36c5a8fda bed64f5d2f5a - 01f36c5a8fda 7ae126973a96 14608b260df8 - 82623d38b9ba - 01f36c5a8fda - 392fd25390da - bed64f5d2f5a - 7ae126973a96 14608b260df8 - 01f36c5a8fda - 01f36c5a8fda - 6a411f0d7a0a - bed64f5d2f5a - 7ae126973a96 14608b260df8 - e442cfc57690 - bed64f5d2f5a - 7ae126973a96 14608b260df8 - 3750ebee865d - bed64f5d2f5a - 7ae126973a96 14608b260df8 - 7ae126973a96 - 7ae126973a96 - 14608b260df8 - 14608b260df8 - bed64f5d2f5a - bed64f5d2f5a - $ hg log -r 'divergent()' - 4:01f36c5a8fda A_3 - 8:7ae126973a96 A_7 - 9:14608b260df8 A_8 - 10:bed64f5d2f5a A_9 - -fix the divergence - - $ mkcommit A_A; hg up 0 - created new head - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg debugobsolete `getid A_9` `getid A_A` - $ hg debugobsolete `getid A_7` `getid A_A` - $ hg debugobsolete `getid A_8` `getid A_A` - $ hg log -G --hidden - o 11:a139f71be9da A_A - | - | x 10:bed64f5d2f5a A_9 - |/ - | x 9:14608b260df8 A_8 - |/ - | x 8:7ae126973a96 A_7 - |/ - | x 7:3750ebee865d B_0 - | | - | x 6:e442cfc57690 A_5 - |/ - | x 5:6a411f0d7a0a A_4 - |/ - | o 4:01f36c5a8fda A_3 - |/ - | x 3:392fd25390da A_2 - |/ - | x 2:82623d38b9ba A_1 - |/ - | x 1:007dc284c1f8 A_0 - |/ - @ 0:d20a80d4def3 base - - $ hg debugsuccessorssets 'all()' - d20a80d4def3 - d20a80d4def3 - 007dc284c1f8 - 01f36c5a8fda a139f71be9da - 82623d38b9ba - 01f36c5a8fda - 392fd25390da - a139f71be9da - 01f36c5a8fda - 01f36c5a8fda - 6a411f0d7a0a - a139f71be9da - e442cfc57690 - a139f71be9da - 3750ebee865d - a139f71be9da - 7ae126973a96 - a139f71be9da - 14608b260df8 - a139f71be9da - bed64f5d2f5a - a139f71be9da - a139f71be9da - a139f71be9da - $ hg log -r 'divergent()' - - $ cd .. - - -Subset does not diverge ------------------------------- - -Do not report divergent successors-set if it is a subset of another -successors-set. (report [A,B] not [A] + [A,B]) - - $ newcase subset - $ hg debugobsolete `getid A_0` `getid A_2` - $ hg debugobsolete `getid A_0` `getid A_1` `getid A_2` - $ hg debugsuccessorssets 'desc('A_0')' - 007dc284c1f8 - 82623d38b9ba 392fd25390da - - $ cd ..