--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-stablesort-branchpoint.t Sat Nov 25 04:09:17 2017 -0500
@@ -0,0 +1,752 @@
+Test for stable ordering capabilities
+=====================================
+
+ $ . $TESTDIR/testlib/pythonpath.sh
+
+ $ cat << EOF >> $HGRCPATH
+ > [extensions]
+ > hgext3rd.evolve =
+ > [ui]
+ > logtemplate = "{rev} {node|short} {desc} {tags}\n"
+ > [alias]
+ > showsort = debugstablesort --template="{node|short}\n" --method branchpoint
+ > EOF
+
+
+
+ $ checktopo () {
+ > seen='null';
+ > for node in `hg showsort --rev "$1"`; do
+ > echo "=== checking $node ===";
+ > hg log --rev "($seen) and $node::";
+ > seen="${seen}+${node}";
+ > done;
+ > }
+
+ $ cat << EOF >> random_rev.py
+ > import random
+ > import sys
+ >
+ > loop = int(sys.argv[1])
+ > var = int(sys.argv[2])
+ > for x in range(loop):
+ > print(x + random.randint(0, var))
+ > EOF
+
+Basic tests
+===========
+(no criss cross merge)
+
+Smoke tests
+-----------
+
+Starts with a "simple case"
+
+ $ hg init repo_A
+ $ cd repo_A
+ $ hg debugbuilddag '
+ > ..:g # 2 nodes, tagged "g"
+ > <2.:h # another node base one -2 -> 0, tagged "h"
+ > *1/2:m # merge -1 and -2 (1, 2), tagged "m"
+ > <2+2:i # 2 nodes based on -2, tag head as "i"
+ > .:c # 1 node tagged "c"
+ > <m+3:a # 3 nodes base on the "m" tag
+ > <2.:b # 1 node based on -2; tagged "b"
+ > <m+2:d # 2 nodes from "m" tagged "d"
+ > <2.:e # 1 node based on -2, tagged "e"
+ > <m+1:f # 1 node based on "m" tagged "f"
+ > <i/f # merge "i" and "f"
+ > '
+ $ hg log -G
+ o 15 1d8d22637c2d r15 tip
+ |\
+ | o 14 43227190fef8 r14 f
+ | |
+ | | o 13 b4594d867745 r13 e
+ | | |
+ | | | o 12 e46a4836065c r12 d
+ | | |/
+ | | o 11 bab5d5bf48bd r11
+ | |/
+ | | o 10 ff43616e5d0f r10 b
+ | | |
+ | | | o 9 dcbb326fdec2 r9 a
+ | | |/
+ | | o 8 d62d843c9a01 r8
+ | | |
+ | | o 7 e7d9710d9fc6 r7
+ | |/
+ +---o 6 2702dd0c91e7 r6 c
+ | |
+ o | 5 f0f3ef9a6cd5 r5 i
+ | |
+ o | 4 4c748ffd1a46 r4
+ | |
+ | o 3 2b6d669947cd r3 m
+ |/|
+ o | 2 fa942426a6fd r2 h
+ | |
+ | o 1 66f7d451a68b r1 g
+ |/
+ o 0 1ea73414a91b r0
+
+ $ hg debugdepth -r 'all()'
+ 1ea73414a91b 1
+ 66f7d451a68b 2
+ fa942426a6fd 2
+ 2b6d669947cd 4
+ 4c748ffd1a46 3
+ f0f3ef9a6cd5 4
+ 2702dd0c91e7 5
+ e7d9710d9fc6 5
+ d62d843c9a01 6
+ dcbb326fdec2 7
+ ff43616e5d0f 7
+ bab5d5bf48bd 5
+ e46a4836065c 6
+ b4594d867745 6
+ 43227190fef8 5
+ 1d8d22637c2d 8
+ $ hg showsort --rev 'all()' --traceback
+ 1ea73414a91b
+ 66f7d451a68b
+ fa942426a6fd
+ 2b6d669947cd
+ 43227190fef8
+ bab5d5bf48bd
+ b4594d867745
+ e46a4836065c
+ e7d9710d9fc6
+ d62d843c9a01
+ dcbb326fdec2
+ ff43616e5d0f
+ 4c748ffd1a46
+ f0f3ef9a6cd5
+ 1d8d22637c2d
+ 2702dd0c91e7
+
+Verify the topological order
+----------------------------
+
+Check we we did not issued a node before on ancestor
+
+output of log should be empty
+
+ $ checktopo 'all()'
+ === checking 1ea73414a91b ===
+ === checking 66f7d451a68b ===
+ === checking fa942426a6fd ===
+ === checking 2b6d669947cd ===
+ === checking 43227190fef8 ===
+ === checking bab5d5bf48bd ===
+ === checking b4594d867745 ===
+ === checking e46a4836065c ===
+ === checking e7d9710d9fc6 ===
+ === checking d62d843c9a01 ===
+ === checking dcbb326fdec2 ===
+ === checking ff43616e5d0f ===
+ === checking 4c748ffd1a46 ===
+ === checking f0f3ef9a6cd5 ===
+ === checking 1d8d22637c2d ===
+ === checking 2702dd0c91e7 ===
+
+Check stability
+===============
+
+have repo with changesets in orders
+
+ $ cd ..
+ $ hg -R repo_A log -G > A.log
+ $ hg clone repo_A repo_B --rev 5
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b:f0f3ef9a6cd5
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R repo_B pull --rev 13
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 0 changes to 0 files (+1 heads)
+ new changesets 66f7d451a68b:b4594d867745
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+ $ hg -R repo_B pull --rev 14
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 0 changes to 0 files (+1 heads)
+ new changesets 43227190fef8
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
+ $ hg -R repo_B pull
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 7 changesets with 0 changes to 0 files (+3 heads)
+ new changesets 2702dd0c91e7:1d8d22637c2d
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
+ $ hg -R repo_B log -G
+ o 15 1d8d22637c2d r15 tip
+ |\
+ | | o 14 e46a4836065c r12
+ | | |
+ | | | o 13 ff43616e5d0f r10
+ | | | |
+ | | | | o 12 dcbb326fdec2 r9
+ | | | |/
+ | | | o 11 d62d843c9a01 r8
+ | | | |
+ | | | o 10 e7d9710d9fc6 r7
+ | | | |
+ +-------o 9 2702dd0c91e7 r6
+ | | | |
+ | o---+ 8 43227190fef8 r14
+ | / /
+ | +---o 7 b4594d867745 r13
+ | | |
+ | o | 6 bab5d5bf48bd r11
+ | |/
+ | o 5 2b6d669947cd r3
+ | |\
+ | | o 4 66f7d451a68b r1
+ | | |
+ @ | | 3 f0f3ef9a6cd5 r5
+ | | |
+ o | | 2 4c748ffd1a46 r4
+ |/ /
+ o / 1 fa942426a6fd r2
+ |/
+ o 0 1ea73414a91b r0
+
+ $ hg -R repo_B debugdepth -r 'all()'
+ 1ea73414a91b 1
+ fa942426a6fd 2
+ 4c748ffd1a46 3
+ f0f3ef9a6cd5 4
+ 66f7d451a68b 2
+ 2b6d669947cd 4
+ bab5d5bf48bd 5
+ b4594d867745 6
+ 43227190fef8 5
+ 2702dd0c91e7 5
+ e7d9710d9fc6 5
+ d62d843c9a01 6
+ dcbb326fdec2 7
+ ff43616e5d0f 7
+ e46a4836065c 6
+ 1d8d22637c2d 8
+ $ hg -R repo_B log -G > B.log
+
+ $ hg clone repo_A repo_C --rev 10
+ adding changesets
+ adding manifests
+ adding file changes
+ added 7 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b:ff43616e5d0f
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R repo_C pull --rev 12
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 0 changes to 0 files (+1 heads)
+ new changesets bab5d5bf48bd:e46a4836065c
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+ $ hg -R repo_C pull --rev 15
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 0 changes to 0 files (+1 heads)
+ new changesets 4c748ffd1a46:1d8d22637c2d
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
+ $ hg -R repo_C pull
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 0 changes to 0 files (+3 heads)
+ new changesets 2702dd0c91e7:b4594d867745
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
+ $ hg -R repo_C log -G
+ o 15 b4594d867745 r13 tip
+ |
+ | o 14 dcbb326fdec2 r9
+ | |
+ | | o 13 2702dd0c91e7 r6
+ | | |
+ | | | o 12 1d8d22637c2d r15
+ | | |/|
+ | | | o 11 43227190fef8 r14
+ | | | |
+ | | o | 10 f0f3ef9a6cd5 r5
+ | | | |
+ | | o | 9 4c748ffd1a46 r4
+ | | | |
+ +-------o 8 e46a4836065c r12
+ | | | |
+ o-----+ 7 bab5d5bf48bd r11
+ / / /
+ +-----@ 6 ff43616e5d0f r10
+ | | |
+ o | | 5 d62d843c9a01 r8
+ | | |
+ o---+ 4 e7d9710d9fc6 r7
+ / /
+ | o 3 2b6d669947cd r3
+ |/|
+ o | 2 fa942426a6fd r2
+ | |
+ | o 1 66f7d451a68b r1
+ |/
+ o 0 1ea73414a91b r0
+
+ $ hg -R repo_C log -G > C.log
+
+ $ hg clone repo_A repo_D --rev 2
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b:fa942426a6fd
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R repo_D pull --rev 10
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 5 changesets with 0 changes to 0 files
+ new changesets 66f7d451a68b:ff43616e5d0f
+ (run 'hg update' to get a working copy)
+ $ hg -R repo_D pull --rev 15
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 4 changesets with 0 changes to 0 files (+1 heads)
+ new changesets 4c748ffd1a46:1d8d22637c2d
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+ $ hg -R repo_D pull
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 5 changesets with 0 changes to 0 files (+4 heads)
+ new changesets 2702dd0c91e7:b4594d867745
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
+ $ hg -R repo_D log -G
+ o 15 b4594d867745 r13 tip
+ |
+ | o 14 e46a4836065c r12
+ |/
+ o 13 bab5d5bf48bd r11
+ |
+ | o 12 dcbb326fdec2 r9
+ | |
+ | | o 11 2702dd0c91e7 r6
+ | | |
+ | | | o 10 1d8d22637c2d r15
+ | | |/|
+ +-----o 9 43227190fef8 r14
+ | | |
+ | | o 8 f0f3ef9a6cd5 r5
+ | | |
+ | | o 7 4c748ffd1a46 r4
+ | | |
+ | +---o 6 ff43616e5d0f r10
+ | | |
+ | o | 5 d62d843c9a01 r8
+ | | |
+ | o | 4 e7d9710d9fc6 r7
+ |/ /
+ o | 3 2b6d669947cd r3
+ |\|
+ o | 2 66f7d451a68b r1
+ | |
+ | @ 1 fa942426a6fd r2
+ |/
+ o 0 1ea73414a91b r0
+
+ $ hg -R repo_D log -G > D.log
+
+check the log output are different
+
+ $ python "$RUNTESTDIR/md5sum.py" *.log
+ 55919ebc9c02f28070cf3255b1690f8c A.log
+ c6244b76a60d0707767dc71780e544f3 B.log
+ 4d8b08b8c50ecbdd2460a62e5852d84d C.log
+ 0f327003593b50b9591bea8ee28acb81 D.log
+
+bug stable ordering should be identical
+---------------------------------------
+
+ $ repos="A B C D "
+
+for 'all()'
+
+ $ for x in $repos; do
+ > echo $x
+ > hg -R repo_$x showsort --rev 'all()' > ${x}.all.order;
+ > done
+ A
+ B
+ C
+ D
+
+ $ python "$RUNTESTDIR/md5sum.py" *.all.order
+ 0c6b2e6f15249c0359b0f93e28c5bd1c A.all.order
+ 0c6b2e6f15249c0359b0f93e28c5bd1c B.all.order
+ 0c6b2e6f15249c0359b0f93e28c5bd1c C.all.order
+ 0c6b2e6f15249c0359b0f93e28c5bd1c D.all.order
+
+one specific head
+
+ $ for x in $repos; do
+ > hg -R repo_$x showsort --rev 'b4594d867745' > ${x}.b4594d867745.order;
+ > done
+
+ $ python "$RUNTESTDIR/md5sum.py" *.b4594d867745.order
+ 5c40900a22008f24eab8dfe2f30ad79f A.b4594d867745.order
+ 5c40900a22008f24eab8dfe2f30ad79f B.b4594d867745.order
+ 5c40900a22008f24eab8dfe2f30ad79f C.b4594d867745.order
+ 5c40900a22008f24eab8dfe2f30ad79f D.b4594d867745.order
+
+one secific heads, that is a merge
+
+ $ for x in $repos; do
+ > hg -R repo_$x showsort --rev '1d8d22637c2d' > ${x}.1d8d22637c2d.order;
+ > done
+
+ $ python "$RUNTESTDIR/md5sum.py" *.1d8d22637c2d.order
+ 77dc20a6f86db9103df8edaae9ad2754 A.1d8d22637c2d.order
+ 77dc20a6f86db9103df8edaae9ad2754 B.1d8d22637c2d.order
+ 77dc20a6f86db9103df8edaae9ad2754 C.1d8d22637c2d.order
+ 77dc20a6f86db9103df8edaae9ad2754 D.1d8d22637c2d.order
+
+changeset that are not heads
+
+ $ for x in $repos; do
+ > hg -R repo_$x showsort --rev 'e7d9710d9fc6+43227190fef8' > ${x}.non-heads.order;
+ > done
+
+ $ python "$RUNTESTDIR/md5sum.py" *.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 A.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 B.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 C.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 D.non-heads.order
+
+Check with different subset
+
+ $ hg clone repo_A repo_E --rev "43227190fef8"
+ adding changesets
+ adding manifests
+ adding file changes
+ added 5 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b:43227190fef8
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R repo_E pull --rev e7d9710d9fc6
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 0 changes to 0 files (+1 heads)
+ new changesets e7d9710d9fc6
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+
+ $ hg clone repo_A repo_F --rev "1d8d22637c2d"
+ adding changesets
+ adding manifests
+ adding file changes
+ added 8 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b:1d8d22637c2d
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R repo_F pull --rev d62d843c9a01
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 0 changes to 0 files (+1 heads)
+ new changesets e7d9710d9fc6:d62d843c9a01
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+
+ $ hg clone repo_A repo_G --rev "e7d9710d9fc6"
+ adding changesets
+ adding manifests
+ adding file changes
+ added 5 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b:e7d9710d9fc6
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg -R repo_G pull --rev 43227190fef8
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 0 changes to 0 files (+1 heads)
+ new changesets 43227190fef8
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+ $ hg -R repo_G pull --rev 2702dd0c91e7
+ pulling from $TESTTMP/repo_A (glob)
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 3 changesets with 0 changes to 0 files (+1 heads)
+ new changesets 4c748ffd1a46:2702dd0c91e7
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
+
+ $ for x in E F G; do
+ > hg -R repo_$x showsort --rev 'e7d9710d9fc6+43227190fef8' > ${x}.non-heads.order;
+ > done
+
+ $ python "$RUNTESTDIR/md5sum.py" *.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 A.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 B.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 C.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 D.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 E.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 F.non-heads.order
+ 94e0ea8cdade135dabde4ec5e9954329 G.non-heads.order
+
+Multiple recursions
+===================
+
+ $ hg init recursion_A
+ $ cd recursion_A
+ $ hg debugbuilddag '
+ > .:base
+ > +3:A
+ > <base.:B
+ > +2/A:C
+ > <A+2:D
+ > <B./D:E
+ > +3:F
+ > <C+3/E
+ > +2
+ > '
+ $ hg log -G
+ o 20 160a7a0adbf4 r20 tip
+ |
+ o 19 1c645e73dbc6 r19
+ |
+ o 18 0496f0a6a143 r18
+ |\
+ | o 17 d64d500024d1 r17
+ | |
+ | o 16 4dbf739dd63f r16
+ | |
+ | o 15 9fff0871d230 r15
+ | |
+ | | o 14 4bbfc6078919 r14 F
+ | | |
+ | | o 13 013b27f11536 r13
+ | | |
+ +---o 12 a66b68853635 r12
+ | |
+ o | 11 001194dd78d5 r11 E
+ |\ \
+ | o | 10 6ee532b68cfa r10
+ | | |
+ o | | 9 529dfc5bb875 r9 D
+ | | |
+ o | | 8 abf57d94268b r8
+ | | |
+ +---o 7 5f18015f9110 r7 C
+ | | |
+ | | o 6 a2f58e9c1e56 r6
+ | | |
+ | | o 5 3a367db1fabc r5
+ | |/
+ | o 4 e7bd5218ca15 r4 B
+ | |
+ o | 3 2dc09a01254d r3 A
+ | |
+ o | 2 01241442b3c2 r2
+ | |
+ o | 1 66f7d451a68b r1
+ |/
+ o 0 1ea73414a91b r0 base
+
+ $ hg debugdepth -r 'all()'
+ 1ea73414a91b 1
+ 66f7d451a68b 2
+ 01241442b3c2 3
+ 2dc09a01254d 4
+ e7bd5218ca15 2
+ 3a367db1fabc 3
+ a2f58e9c1e56 4
+ 5f18015f9110 8
+ abf57d94268b 5
+ 529dfc5bb875 6
+ 6ee532b68cfa 3
+ 001194dd78d5 9
+ a66b68853635 10
+ 013b27f11536 11
+ 4bbfc6078919 12
+ 9fff0871d230 9
+ 4dbf739dd63f 10
+ d64d500024d1 11
+ 0496f0a6a143 16
+ 1c645e73dbc6 17
+ 160a7a0adbf4 18
+ $ hg showsort --rev 'all()'
+ 1ea73414a91b
+ 66f7d451a68b
+ 01241442b3c2
+ 2dc09a01254d
+ abf57d94268b
+ 529dfc5bb875
+ e7bd5218ca15
+ 3a367db1fabc
+ a2f58e9c1e56
+ 5f18015f9110
+ 9fff0871d230
+ 4dbf739dd63f
+ d64d500024d1
+ 6ee532b68cfa
+ 001194dd78d5
+ 0496f0a6a143
+ 1c645e73dbc6
+ 160a7a0adbf4
+ a66b68853635
+ 013b27f11536
+ 4bbfc6078919
+ $ checktopo 'all()'
+ === checking 1ea73414a91b ===
+ === checking 66f7d451a68b ===
+ === checking 01241442b3c2 ===
+ === checking 2dc09a01254d ===
+ === checking abf57d94268b ===
+ === checking 529dfc5bb875 ===
+ === checking e7bd5218ca15 ===
+ === checking 3a367db1fabc ===
+ === checking a2f58e9c1e56 ===
+ === checking 5f18015f9110 ===
+ === checking 9fff0871d230 ===
+ === checking 4dbf739dd63f ===
+ === checking d64d500024d1 ===
+ === checking 6ee532b68cfa ===
+ === checking 001194dd78d5 ===
+ === checking 0496f0a6a143 ===
+ === checking 1c645e73dbc6 ===
+ === checking 160a7a0adbf4 ===
+ === checking a66b68853635 ===
+ === checking 013b27f11536 ===
+ === checking 4bbfc6078919 ===
+ $ hg showsort --rev 'all()' > ../multiple.source.order
+ $ hg log -r tip
+ 20 160a7a0adbf4 r20 tip
+ $ cd ..
+
+ $ hg clone recursion_A recursion_random --rev 0
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 0 changes to 0 files
+ new changesets 1ea73414a91b
+ updating to branch default
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd recursion_random
+ $ for x in `python ../random_rev.py 15 5`; do
+ > # using python to benefit from the random seed
+ > hg pull -r $x --quiet
+ > done;
+ $ hg pull --quiet
+ $ hg showsort --rev 'all()' > ../multiple.random.order
+ $ python "$RUNTESTDIR/md5sum.py" ../multiple.*.order
+ 6ff802a0a5f0a3ddd82b25f860238fbd ../multiple.random.order
+ 6ff802a0a5f0a3ddd82b25f860238fbd ../multiple.source.order
+ $ hg showsort --rev 'all()'
+ 1ea73414a91b
+ 66f7d451a68b
+ 01241442b3c2
+ 2dc09a01254d
+ abf57d94268b
+ 529dfc5bb875
+ e7bd5218ca15
+ 3a367db1fabc
+ a2f58e9c1e56
+ 5f18015f9110
+ 9fff0871d230
+ 4dbf739dd63f
+ d64d500024d1
+ 6ee532b68cfa
+ 001194dd78d5
+ 0496f0a6a143
+ 1c645e73dbc6
+ 160a7a0adbf4
+ a66b68853635
+ 013b27f11536
+ 4bbfc6078919
+ $ cd ..
+
+
+Test behavior with oedipus merges
+=================================
+
+ $ hg init recursion_oedipus
+ $ cd recursion_oedipus
+ $ echo base > base
+ $ hg add base
+ $ hg ci -m base
+ $ hg branch foo
+ marked working directory as branch foo
+ (branches are permanent and global, did you want a bookmark?)
+ $ echo foo1 > foo1
+ $ hg add foo1
+ $ hg ci -m foo1
+ $ echo foo2 > foo2
+ $ hg add foo2
+ $ hg ci -m foo2
+ $ hg up default
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg merge foo
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ hg ci -m oedipus_merge
+ $ echo default1 > default1
+ $ hg add default1
+ $ hg ci -m default1
+ $ hg log -G
+ @ 4 7f2454f6b04f default1 tip
+ |
+ o 3 ed776db7ed63 oedipus_merge
+ |\
+ | o 2 0dedbcd995b6 foo2
+ | |
+ | o 1 47da0f2c25e2 foo1
+ |/
+ o 0 d20a80d4def3 base
+
+ $ hg debugdepth -r 'all()'
+ d20a80d4def3 1
+ 47da0f2c25e2 2
+ 0dedbcd995b6 3
+ ed776db7ed63 4
+ 7f2454f6b04f 5
+ $ hg showsort --rev '.'
+ d20a80d4def3
+ 47da0f2c25e2
+ 0dedbcd995b6
+ ed776db7ed63
+ 7f2454f6b04f