# HG changeset patch # User Pierre-Yves David # Date 1512864376 -3600 # Node ID af1f8f0687e1262ccbf40ec4533ab01ce3df6eae # Parent 064738ae1588064249d7f4324c99e4d6223864f7 stablerange: introduce a basic-mergepoint method This method use the new 'mergepoint' based stable sorting. It is expected to be eventually better than branch point to stable range: more stable, easier to cache, etc. Having a basic implementation will allow use to validate more advanced implementation. diff -r 064738ae1588 -r af1f8f0687e1 hgext3rd/evolve/stablerange.py --- a/hgext3rd/evolve/stablerange.py Sun Nov 26 11:58:35 2017 -0500 +++ b/hgext3rd/evolve/stablerange.py Sun Dec 10 01:06:16 2017 +0100 @@ -76,6 +76,7 @@ _stablerangemethodmap = { 'branchpoint': lambda repo: repo.stablerange, 'basic-branchpoint': lambda repo: stablerangebasic(), + 'basic-mergepoint': lambda repo: stablerangedummy_mergepoint(), } @eh.command( @@ -284,6 +285,13 @@ assert initialrevs == subrangerevs return result +class stablerangedummy_mergepoint(stablerangebasic): + """a very dummy implementation of stablerange use 'mergepoint' sorting + """ + + def _sortfunction(self, repo, headrev): + return stablesort.stablesort_mergepoint_head_basic(repo, [headrev]) + class stablerange(abstractstablerange): def __init__(self, lrusize=2000): diff -r 064738ae1588 -r af1f8f0687e1 tests/test-stablerange-branchpoint.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-stablerange-branchpoint.t Sun Dec 10 01:06:16 2017 +0100 @@ -0,0 +1,731 @@ +Test for stable ordering capabilities +===================================== + + $ . $TESTDIR/testlib/pythonpath.sh + + $ cat << EOF >> $HGRCPATH + > [extensions] + > hgext3rd.evolve = + > [ui] + > logtemplate = "{rev} {node|short} {desc} {tags}\n" + > [defaults] + > debugstablerange = --method branchpoint + > EOF + +Simple linear test +================== + + $ hg init repo_linear + $ cd repo_linear + $ hg debugbuilddag '.+6' + $ hg debugdepth -r 'all()' + 1ea73414a91b 1 + 66f7d451a68b 2 + 01241442b3c2 3 + 2dc09a01254d 4 + bebd167eb94d 5 + c8d03c1b5e94 6 + f69452c5b1af 7 + $ hg debugstablerange --verify --verbose --subranges --rev 1 + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 1 > 1.range + +bigger subset reuse most of the previous one + + $ hg debugstablerange --verify --verbose --subranges --rev 4 + bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 4 > 4.range + $ diff -u 1.range 4.range + --- 1.range * (glob) + +++ 4.range * (glob) + @@ -1,3 +1,9 @@ + +bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + +01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + +2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + +bebd167eb94d-4 (4, 5, 1) [leaf] - + [1] + +Using a range not ending on 2**N boundary +we fall back on 2**N as much as possible + + $ hg debugstablerange --verify --verbose --subranges --rev 5 + c8d03c1b5e94-0 (5, 6, 6) [complete] - 2dc09a01254d-0 (3, 4, 4), c8d03c1b5e94-4 (5, 6, 2) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + c8d03c1b5e94-5 (5, 6, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 5 > 5.range + $ diff -u 4.range 5.range + --- 4.range * (glob) + +++ 5.range * (glob) + @@ -1,9 +1,11 @@ + -bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + +c8d03c1b5e94-0 (5, 6, 6) [complete] - 2dc09a01254d-0 (3, 4, 4), c8d03c1b5e94-4 (5, 6, 2) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + +c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + +c8d03c1b5e94-5 (5, 6, 1) [leaf] - + [1] + +Even two unperfect range overlap a lot + + $ hg debugstablerange --verify --verbose --subranges --rev tip + f69452c5b1af-0 (6, 7, 7) [complete] - 2dc09a01254d-0 (3, 4, 4), f69452c5b1af-4 (6, 7, 3) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + f69452c5b1af-4 (6, 7, 3) [complete] - c8d03c1b5e94-4 (5, 6, 2), f69452c5b1af-6 (6, 7, 1) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + c8d03c1b5e94-5 (5, 6, 1) [leaf] - + f69452c5b1af-6 (6, 7, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev tip > tip.range + $ diff -u 5.range tip.range + --- 5.range * (glob) + +++ tip.range * (glob) + @@ -1,5 +1,6 @@ + -c8d03c1b5e94-0 (5, 6, 6) [complete] - 2dc09a01254d-0 (3, 4, 4), c8d03c1b5e94-4 (5, 6, 2) + +f69452c5b1af-0 (6, 7, 7) [complete] - 2dc09a01254d-0 (3, 4, 4), f69452c5b1af-4 (6, 7, 3) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +f69452c5b1af-4 (6, 7, 3) [complete] - c8d03c1b5e94-4 (5, 6, 2), f69452c5b1af-6 (6, 7, 1) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1) + @@ -9,3 +10,4 @@ + 66f7d451a68b-1 (1, 2, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + c8d03c1b5e94-5 (5, 6, 1) [leaf] - + +f69452c5b1af-6 (6, 7, 1) [leaf] - + [1] + + $ cd .. + +Case with merge +=============== + +Simple case: branching is on a boundary +-------------------------------------------- + + $ hg init repo_merge_split_on_boundary + $ cd repo_merge_split_on_boundary + $ hg debugbuilddag '.:base + > +3:left + > +2:head + > ' + $ hg log -G + o 9 0338daf18215 r9 head tip + | + o 8 71b32fcf3f71 r8 + | + o 7 5f18015f9110 r7 merge + |\ + | o 6 a2f58e9c1e56 r6 right + | | + | o 5 3a367db1fabc r5 + | | + | o 4 e7bd5218ca15 r4 + | | + o | 3 2dc09a01254d r3 left + | | + 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 + 71b32fcf3f71 9 + 0338daf18215 10 + +Each of the linear branch reuse range internally + +(left branch) + + $ hg debugstablerange --verify --verbose --subranges --rev 'left~2' + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'left~2' > left-2.range + $ hg debugstablerange --verify --verbose --subranges --rev left + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'left' > left.range + $ diff -u left-2.range left.range + --- left-2.range * (glob) + +++ left.range * (glob) + @@ -1,3 +1,7 @@ + +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + +01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + +2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + [1] + +(right branch) + + $ hg debugstablerange --verify --verbose --subranges --rev right~2 + e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + e7bd5218ca15-1 (4, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'right~2' > right-2.range + $ hg debugstablerange --verify --verbose --subranges --rev right + a2f58e9c1e56-0 (6, 4, 4) [complete] - e7bd5218ca15-0 (4, 2, 2), a2f58e9c1e56-2 (6, 4, 2) + a2f58e9c1e56-2 (6, 4, 2) [complete] - 3a367db1fabc-2 (5, 3, 1), a2f58e9c1e56-3 (6, 4, 1) + e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 3a367db1fabc-2 (5, 3, 1) [leaf] - + a2f58e9c1e56-3 (6, 4, 1) [leaf] - + e7bd5218ca15-1 (4, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'right' > right.range + $ diff -u right-2.range right.range + --- right-2.range * (glob) + +++ right.range * (glob) + @@ -1,3 +1,7 @@ + +a2f58e9c1e56-0 (6, 4, 4) [complete] - e7bd5218ca15-0 (4, 2, 2), a2f58e9c1e56-2 (6, 4, 2) + +a2f58e9c1e56-2 (6, 4, 2) [complete] - 3a367db1fabc-2 (5, 3, 1), a2f58e9c1e56-3 (6, 4, 1) + e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + +3a367db1fabc-2 (5, 3, 1) [leaf] - + +a2f58e9c1e56-3 (6, 4, 1) [leaf] - + e7bd5218ca15-1 (4, 2, 1) [leaf] - + [1] + +The merge reuse as much of the slicing created for one of the branch + + $ hg debugstablerange --verify --verbose --subranges --rev merge + 5f18015f9110-0 (7, 8, 8) [complete] - 2dc09a01254d-0 (3, 4, 4), 5f18015f9110-4 (7, 8, 4) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 5f18015f9110-4 (7, 8, 4) [complete] - 3a367db1fabc-1 (5, 3, 2), 5f18015f9110-6 (7, 8, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 3a367db1fabc-1 (5, 3, 2) [complete] - e7bd5218ca15-1 (4, 2, 1), 3a367db1fabc-2 (5, 3, 1) + 5f18015f9110-6 (7, 8, 2) [complete] - a2f58e9c1e56-3 (6, 4, 1), 5f18015f9110-7 (7, 8, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 3a367db1fabc-2 (5, 3, 1) [leaf] - + 5f18015f9110-7 (7, 8, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + a2f58e9c1e56-3 (6, 4, 1) [leaf] - + e7bd5218ca15-1 (4, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'merge' > merge.range + $ diff -u left.range merge.range + --- left.range * (glob) + +++ merge.range * (glob) + @@ -1,7 +1,15 @@ + +5f18015f9110-0 (7, 8, 8) [complete] - 2dc09a01254d-0 (3, 4, 4), 5f18015f9110-4 (7, 8, 4) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +5f18015f9110-4 (7, 8, 4) [complete] - 3a367db1fabc-1 (5, 3, 2), 5f18015f9110-6 (7, 8, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + +3a367db1fabc-1 (5, 3, 2) [complete] - e7bd5218ca15-1 (4, 2, 1), 3a367db1fabc-2 (5, 3, 1) + +5f18015f9110-6 (7, 8, 2) [complete] - a2f58e9c1e56-3 (6, 4, 1), 5f18015f9110-7 (7, 8, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + +3a367db1fabc-2 (5, 3, 1) [leaf] - + +5f18015f9110-7 (7, 8, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + +a2f58e9c1e56-3 (6, 4, 1) [leaf] - + +e7bd5218ca15-1 (4, 2, 1) [leaf] - + [1] + $ diff -u right.range merge.range + --- right.range * (glob) + +++ merge.range * (glob) + @@ -1,7 +1,15 @@ + -a2f58e9c1e56-0 (6, 4, 4) [complete] - e7bd5218ca15-0 (4, 2, 2), a2f58e9c1e56-2 (6, 4, 2) + -a2f58e9c1e56-2 (6, 4, 2) [complete] - 3a367db1fabc-2 (5, 3, 1), a2f58e9c1e56-3 (6, 4, 1) + -e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1) + +5f18015f9110-0 (7, 8, 8) [complete] - 2dc09a01254d-0 (3, 4, 4), 5f18015f9110-4 (7, 8, 4) + +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +5f18015f9110-4 (7, 8, 4) [complete] - 3a367db1fabc-1 (5, 3, 2), 5f18015f9110-6 (7, 8, 2) + +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + +3a367db1fabc-1 (5, 3, 2) [complete] - e7bd5218ca15-1 (4, 2, 1), 3a367db1fabc-2 (5, 3, 1) + +5f18015f9110-6 (7, 8, 2) [complete] - a2f58e9c1e56-3 (6, 4, 1), 5f18015f9110-7 (7, 8, 1) + +66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + +01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + +2dc09a01254d-3 (3, 4, 1) [leaf] - + 3a367db1fabc-2 (5, 3, 1) [leaf] - + +5f18015f9110-7 (7, 8, 1) [leaf] - + +66f7d451a68b-1 (1, 2, 1) [leaf] - + a2f58e9c1e56-3 (6, 4, 1) [leaf] - + e7bd5218ca15-1 (4, 2, 1) [leaf] - + [1] + $ cd .. + +slice create multiple heads +--------------------------- + + $ hg init repo_merge_split_heads + $ cd repo_merge_split_heads + $ hg debugbuilddag '.:base + > +4:left + > +2:head + > ' + $ hg debugbuilddag '.:base + > +3:left + > +2:head + > ' + abort: repository is not empty + [255] + $ hg log -G + o 12 e6b8d5b46647 r12 head tip + | + o 11 485383494a89 r11 + | + o 10 8aca7f8c9bd2 r10 merge + |\ + | o 9 f4b7da68b467 r9 right + | | + | o 8 857477a9aebb r8 + | | + | o 7 42b07e8da27d r7 + | | + | o 6 b9bc20507e0b r6 + | | + | o 5 de561312eff4 r5 + | | + o | 4 bebd167eb94d r4 left + | | + o | 3 2dc09a01254d r3 + | | + 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 + bebd167eb94d 5 + de561312eff4 2 + b9bc20507e0b 3 + 42b07e8da27d 4 + 857477a9aebb 5 + f4b7da68b467 6 + 8aca7f8c9bd2 11 + 485383494a89 12 + e6b8d5b46647 13 + +Each of the linear branch reuse range internally + +(left branch) + + $ hg debugstablerange --verify --verbose --subranges --rev 'left~2' + 01241442b3c2-0 (2, 3, 3) [complete] - 66f7d451a68b-0 (1, 2, 2), 01241442b3c2-2 (2, 3, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'left~2' > left-2.range + $ hg debugstablerange --verify --verbose --subranges --rev left + bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'left' > left.range + $ diff -u left-2.range left.range + --- left-2.range * (glob) + +++ left.range * (glob) + @@ -1,5 +1,9 @@ + -01241442b3c2-0 (2, 3, 3) [complete] - 66f7d451a68b-0 (1, 2, 2), 01241442b3c2-2 (2, 3, 1) + +bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + +2dc09a01254d-3 (3, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + +bebd167eb94d-4 (4, 5, 1) [leaf] - + [1] + +(right branch) + + $ hg debugstablerange --verify --verbose --subranges --rev right~2 + 42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'right~2' > right-2.range + $ hg debugstablerange --verify --verbose --subranges --rev right + f4b7da68b467-0 (9, 6, 6) [complete] - 42b07e8da27d-0 (7, 4, 4), f4b7da68b467-4 (9, 6, 2) + 42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1) + f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + 857477a9aebb-4 (8, 5, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + f4b7da68b467-5 (9, 6, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'right' > right.range + $ diff -u right-2.range right.range + --- right-2.range * (glob) + +++ right.range * (glob) + @@ -1,7 +1,11 @@ + +f4b7da68b467-0 (9, 6, 6) [complete] - 42b07e8da27d-0 (7, 4, 4), f4b7da68b467-4 (9, 6, 2) + 42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1) + +f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + +857477a9aebb-4 (8, 5, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + +f4b7da68b467-5 (9, 6, 1) [leaf] - + [1] + +In this case, the bottom of the split will have multiple heads, + +So we'll create more than 1 subrange out of it. + +We are still able to reuse one of the branch however + + $ hg debugstablerange --verify --verbose --subranges --rev merge + 8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3) + bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2) + 8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + 857477a9aebb-4 (8, 5, 1) [leaf] - + 8aca7f8c9bd2-10 (10, 11, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + f4b7da68b467-5 (9, 6, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'merge' > merge.range + $ diff -u left.range merge.range + --- left.range * (glob) + +++ merge.range * (glob) + @@ -1,9 +1,20 @@ + +8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3) + bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2) + +8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + +42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + +f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + +42b07e8da27d-3 (7, 4, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + +857477a9aebb-4 (8, 5, 1) [leaf] - + +8aca7f8c9bd2-10 (10, 11, 1) [leaf] - + +b9bc20507e0b-2 (6, 3, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + +de561312eff4-1 (5, 2, 1) [leaf] - + +f4b7da68b467-5 (9, 6, 1) [leaf] - + [1] + $ diff -u right.range merge.range + --- right.range * (glob) + +++ merge.range * (glob) + @@ -1,11 +1,20 @@ + -f4b7da68b467-0 (9, 6, 6) [complete] - 42b07e8da27d-0 (7, 4, 4), f4b7da68b467-4 (9, 6, 2) + -42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2) + +8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3) + +bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2) + +8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1) + +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + -de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1) + +66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + +01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + +2dc09a01254d-3 (3, 4, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + +66f7d451a68b-1 (1, 2, 1) [leaf] - + 857477a9aebb-4 (8, 5, 1) [leaf] - + +8aca7f8c9bd2-10 (10, 11, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + +bebd167eb94d-4 (4, 5, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + f4b7da68b467-5 (9, 6, 1) [leaf] - + [1] + +Range above the merge, reuse subrange from the merge + + $ hg debugstablerange --verify --verbose --subranges --rev tip + e6b8d5b46647-0 (12, 13, 13) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), e6b8d5b46647-8 (12, 13, 5) + bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + e6b8d5b46647-8 (12, 13, 5) [complete] - 485383494a89-8 (11, 12, 4), e6b8d5b46647-12 (12, 13, 1) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + 485383494a89-8 (11, 12, 4) [complete] - f4b7da68b467-4 (9, 6, 2), 485383494a89-10 (11, 12, 2) + 42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + 485383494a89-10 (11, 12, 2) [complete] - 8aca7f8c9bd2-10 (10, 11, 1), 485383494a89-11 (11, 12, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + 485383494a89-11 (11, 12, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + 857477a9aebb-4 (8, 5, 1) [leaf] - + 8aca7f8c9bd2-10 (10, 11, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + e6b8d5b46647-12 (12, 13, 1) [leaf] - + f4b7da68b467-5 (9, 6, 1) [leaf] - + $ hg debugstablerange --verify --verbose --subranges --rev 'tip' > tip.range + $ diff -u merge.range tip.range + --- merge.range * (glob) + +++ tip.range * (glob) + @@ -1,20 +1,24 @@ + -8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3) + +e6b8d5b46647-0 (12, 13, 13) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), e6b8d5b46647-8 (12, 13, 5) + bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1) + +e6b8d5b46647-8 (12, 13, 5) [complete] - 485383494a89-8 (11, 12, 4), e6b8d5b46647-12 (12, 13, 1) + 2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2) + +485383494a89-8 (11, 12, 4) [complete] - f4b7da68b467-4 (9, 6, 2), 485383494a89-10 (11, 12, 2) + 42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2) + -8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1) + 2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1) + 42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1) + +485383494a89-10 (11, 12, 2) [complete] - 8aca7f8c9bd2-10 (10, 11, 1), 485383494a89-11 (11, 12, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1) + 01241442b3c2-2 (2, 3, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2dc09a01254d-3 (3, 4, 1) [leaf] - + 42b07e8da27d-3 (7, 4, 1) [leaf] - + +485383494a89-11 (11, 12, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + 857477a9aebb-4 (8, 5, 1) [leaf] - + 8aca7f8c9bd2-10 (10, 11, 1) [leaf] - + b9bc20507e0b-2 (6, 3, 1) [leaf] - + bebd167eb94d-4 (4, 5, 1) [leaf] - + de561312eff4-1 (5, 2, 1) [leaf] - + +e6b8d5b46647-12 (12, 13, 1) [leaf] - + f4b7da68b467-5 (9, 6, 1) [leaf] - + [1] + + $ cd .. + +Tests range with criss cross merge in the graph +=============================================== + + $ hg init repo_criss_cross + $ cd repo_criss_cross + $ 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" + > <2.:b # 1 node based on -2; tagged "b" + > <2.:e # 1 node based on -2, tagged "e" + > ' + $ 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 debugstablerange --verify --verbose --subranges --rev 'head()' + 1d8d22637c2d-0 (15, 8, 8) [complete] - 2b6d669947cd-0 (3, 4, 4), 1d8d22637c2d-4 (15, 8, 4) + dcbb326fdec2-0 (9, 7, 7) [complete] - 2b6d669947cd-0 (3, 4, 4), dcbb326fdec2-4 (9, 7, 3) + ff43616e5d0f-0 (10, 7, 7) [complete] - 2b6d669947cd-0 (3, 4, 4), ff43616e5d0f-4 (10, 7, 3) + b4594d867745-0 (13, 6, 6) [complete] - 2b6d669947cd-0 (3, 4, 4), b4594d867745-4 (13, 6, 2) + e46a4836065c-0 (12, 6, 6) [complete] - 2b6d669947cd-0 (3, 4, 4), e46a4836065c-4 (12, 6, 2) + 2702dd0c91e7-0 (6, 5, 5) [complete] - f0f3ef9a6cd5-0 (5, 4, 4), 2702dd0c91e7-4 (6, 5, 1) + 1d8d22637c2d-4 (15, 8, 4) [complete] - 43227190fef8-4 (14, 5, 1), 4c748ffd1a46-2 (4, 3, 1), 1d8d22637c2d-6 (15, 8, 2) + 2b6d669947cd-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2b6d669947cd-2 (3, 4, 2) + f0f3ef9a6cd5-0 (5, 4, 4) [complete] - fa942426a6fd-0 (2, 2, 2), f0f3ef9a6cd5-2 (5, 4, 2) + dcbb326fdec2-4 (9, 7, 3) [complete] - d62d843c9a01-4 (8, 6, 2), dcbb326fdec2-6 (9, 7, 1) + ff43616e5d0f-4 (10, 7, 3) [complete] - d62d843c9a01-4 (8, 6, 2), ff43616e5d0f-6 (10, 7, 1) + 1d8d22637c2d-6 (15, 8, 2) [complete] - f0f3ef9a6cd5-3 (5, 4, 1), 1d8d22637c2d-7 (15, 8, 1) + 2b6d669947cd-2 (3, 4, 2) [complete] - fa942426a6fd-1 (2, 2, 1), 2b6d669947cd-3 (3, 4, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + b4594d867745-4 (13, 6, 2) [complete] - bab5d5bf48bd-4 (11, 5, 1), b4594d867745-5 (13, 6, 1) + d62d843c9a01-4 (8, 6, 2) [complete] - e7d9710d9fc6-4 (7, 5, 1), d62d843c9a01-5 (8, 6, 1) + e46a4836065c-4 (12, 6, 2) [complete] - bab5d5bf48bd-4 (11, 5, 1), e46a4836065c-5 (12, 6, 1) + f0f3ef9a6cd5-2 (5, 4, 2) [complete] - 4c748ffd1a46-2 (4, 3, 1), f0f3ef9a6cd5-3 (5, 4, 1) + fa942426a6fd-0 (2, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), fa942426a6fd-1 (2, 2, 1) + 1d8d22637c2d-7 (15, 8, 1) [leaf] - + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 2702dd0c91e7-4 (6, 5, 1) [leaf] - + 2b6d669947cd-3 (3, 4, 1) [leaf] - + 43227190fef8-4 (14, 5, 1) [leaf] - + 4c748ffd1a46-2 (4, 3, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + b4594d867745-5 (13, 6, 1) [leaf] - + bab5d5bf48bd-4 (11, 5, 1) [leaf] - + d62d843c9a01-5 (8, 6, 1) [leaf] - + dcbb326fdec2-6 (9, 7, 1) [leaf] - + e46a4836065c-5 (12, 6, 1) [leaf] - + e7d9710d9fc6-4 (7, 5, 1) [leaf] - + f0f3ef9a6cd5-3 (5, 4, 1) [leaf] - + fa942426a6fd-1 (2, 2, 1) [leaf] - + ff43616e5d0f-6 (10, 7, 1) [leaf] - + $ cd .. + +Tests range where a toprange is rooted on a merge +================================================= + + $ hg init slice_on_merge + $ cd slice_on_merge + $ hg debugbuilddag ' + > ..:a # 2 nodes, tagged "a" + > <2..:b # another branch with two node based on 0, tagged b + > *a/b:m # merge -1 and -2 (1, 2), tagged "m" + > ' + $ hg log -G + o 4 f37e476fba9a r4 m tip + |\ + | o 3 36315563e2fa r3 b + | | + | o 2 fa942426a6fd r2 + | | + o | 1 66f7d451a68b r1 a + |/ + o 0 1ea73414a91b r0 + + $ hg debugdepth -r 'all()' + 1ea73414a91b 1 + 66f7d451a68b 2 + fa942426a6fd 2 + 36315563e2fa 3 + f37e476fba9a 5 + $ hg debugstablerange --verify --verbose --subranges --rev 'head()' + f37e476fba9a-0 (4, 5, 5) [complete] - 66f7d451a68b-0 (1, 2, 2), 36315563e2fa-1 (3, 3, 2), f37e476fba9a-4 (4, 5, 1) + 36315563e2fa-1 (3, 3, 2) [complete] - fa942426a6fd-1 (2, 2, 1), 36315563e2fa-2 (3, 3, 1) + 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + 1ea73414a91b-0 (0, 1, 1) [leaf] - + 36315563e2fa-2 (3, 3, 1) [leaf] - + 66f7d451a68b-1 (1, 2, 1) [leaf] - + f37e476fba9a-4 (4, 5, 1) [leaf] - + fa942426a6fd-1 (2, 2, 1) [leaf] - + diff -r 064738ae1588 -r af1f8f0687e1 tests/test-stablerange.t --- a/tests/test-stablerange.t Sun Nov 26 11:58:35 2017 -0500 +++ b/tests/test-stablerange.t Sun Dec 10 01:06:16 2017 +0100 @@ -9,7 +9,7 @@ > [ui] > logtemplate = "{rev} {node|short} {desc} {tags}\n" > [defaults] - > debugstablerange = --method branchpoint + > debugstablerange = --method basic-mergepoint > EOF Simple linear test @@ -720,9 +720,9 @@ 36315563e2fa 3 f37e476fba9a 5 $ hg debugstablerange --verify --verbose --subranges --rev 'head()' - f37e476fba9a-0 (4, 5, 5) [complete] - 66f7d451a68b-0 (1, 2, 2), 36315563e2fa-1 (3, 3, 2), f37e476fba9a-4 (4, 5, 1) - 36315563e2fa-1 (3, 3, 2) [complete] - fa942426a6fd-1 (2, 2, 1), 36315563e2fa-2 (3, 3, 1) - 66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1) + f37e476fba9a-0 (4, 5, 5) [complete] - 36315563e2fa-0 (3, 3, 3), 66f7d451a68b-1 (1, 2, 1), f37e476fba9a-4 (4, 5, 1) + 36315563e2fa-0 (3, 3, 3) [complete] - fa942426a6fd-0 (2, 2, 2), 36315563e2fa-2 (3, 3, 1) + fa942426a6fd-0 (2, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), fa942426a6fd-1 (2, 2, 1) 1ea73414a91b-0 (0, 1, 1) [leaf] - 36315563e2fa-2 (3, 3, 1) [leaf] - 66f7d451a68b-1 (1, 2, 1) [leaf] -