--- a/tests/test-obsolete-divergent.t Wed Jan 02 14:41:47 2013 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,452 +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: [23] new changesets \(update\) (re)
- unstable: 0 changesets
- bumped: 0 changesets
- divergent: 2 changesets
-
-
-check that mercurial refuse to push
-
- $ hg init ../other
- $ hg log -r 'outgoing("../other") and divergent()'
- 2:82623d38b9ba A_1
- 3:392fd25390da A_2
- $ hg push ../other
- pushing to ../other
- searching for changes
- abort: push includes divergent changeset: (82623d38b9ba|392fd25390da)! (re)
- (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 ..