tests/test-stablerange-branchpoint.t
changeset 3258 af1f8f0687e1
parent 3252 d57400a0f4c3
equal deleted inserted replaced
3257:064738ae1588 3258:af1f8f0687e1
       
     1 Test for stable ordering capabilities
       
     2 =====================================
       
     3 
       
     4   $ . $TESTDIR/testlib/pythonpath.sh
       
     5 
       
     6   $ cat << EOF >> $HGRCPATH
       
     7   > [extensions]
       
     8   > hgext3rd.evolve =
       
     9   > [ui]
       
    10   > logtemplate = "{rev} {node|short} {desc} {tags}\n"
       
    11   > [defaults]
       
    12   > debugstablerange = --method branchpoint
       
    13   > EOF
       
    14 
       
    15 Simple linear test
       
    16 ==================
       
    17 
       
    18   $ hg init repo_linear
       
    19   $ cd repo_linear
       
    20   $ hg debugbuilddag '.+6'
       
    21   $ hg debugdepth -r 'all()'
       
    22   1ea73414a91b 1
       
    23   66f7d451a68b 2
       
    24   01241442b3c2 3
       
    25   2dc09a01254d 4
       
    26   bebd167eb94d 5
       
    27   c8d03c1b5e94 6
       
    28   f69452c5b1af 7
       
    29   $ hg debugstablerange --verify --verbose --subranges --rev 1
       
    30   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
    31   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
    32   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
    33   $ hg debugstablerange --verify --verbose --subranges --rev 1 > 1.range
       
    34 
       
    35 bigger subset reuse most of the previous one
       
    36 
       
    37   $ hg debugstablerange --verify --verbose --subranges --rev 4
       
    38   bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
    39   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
    40   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
    41   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
    42   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
    43   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
    44   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
    45   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
    46   bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
    47   $ hg debugstablerange --verify --verbose --subranges --rev 4 > 4.range
       
    48   $ diff -u 1.range 4.range
       
    49   --- 1.range	* (glob)
       
    50   +++ 4.range	* (glob)
       
    51   @@ -1,3 +1,9 @@
       
    52   +bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
    53   +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
    54   +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
    55    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
    56   +01241442b3c2-2 (2, 3, 1) [leaf] - 
       
    57    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
    58   +2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
    59    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
    60   +bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
    61   [1]
       
    62 
       
    63 Using a range not ending on 2**N boundary
       
    64 we fall back on 2**N as much as possible
       
    65 
       
    66   $ hg debugstablerange --verify --verbose --subranges --rev 5
       
    67   c8d03c1b5e94-0 (5, 6, 6) [complete] - 2dc09a01254d-0 (3, 4, 4), c8d03c1b5e94-4 (5, 6, 2)
       
    68   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
    69   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
    70   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
    71   c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1)
       
    72   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
    73   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
    74   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
    75   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
    76   bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
    77   c8d03c1b5e94-5 (5, 6, 1) [leaf] - 
       
    78   $ hg debugstablerange --verify --verbose --subranges --rev 5 > 5.range
       
    79   $ diff -u 4.range 5.range
       
    80   --- 4.range	* (glob)
       
    81   +++ 5.range	* (glob)
       
    82   @@ -1,9 +1,11 @@
       
    83   -bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
    84   +c8d03c1b5e94-0 (5, 6, 6) [complete] - 2dc09a01254d-0 (3, 4, 4), c8d03c1b5e94-4 (5, 6, 2)
       
    85    2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
    86    2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
    87    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
    88   +c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1)
       
    89    01241442b3c2-2 (2, 3, 1) [leaf] - 
       
    90    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
    91    2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
    92    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
    93    bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
    94   +c8d03c1b5e94-5 (5, 6, 1) [leaf] - 
       
    95   [1]
       
    96 
       
    97 Even two unperfect range overlap a lot
       
    98 
       
    99   $ hg debugstablerange --verify --verbose --subranges --rev tip
       
   100   f69452c5b1af-0 (6, 7, 7) [complete] - 2dc09a01254d-0 (3, 4, 4), f69452c5b1af-4 (6, 7, 3)
       
   101   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   102   f69452c5b1af-4 (6, 7, 3) [complete] - c8d03c1b5e94-4 (5, 6, 2), f69452c5b1af-6 (6, 7, 1)
       
   103   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   104   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   105   c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1)
       
   106   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   107   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   108   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   109   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   110   bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   111   c8d03c1b5e94-5 (5, 6, 1) [leaf] - 
       
   112   f69452c5b1af-6 (6, 7, 1) [leaf] - 
       
   113   $ hg debugstablerange --verify --verbose --subranges --rev tip > tip.range
       
   114   $ diff -u 5.range tip.range
       
   115   --- 5.range	* (glob)
       
   116   +++ tip.range	* (glob)
       
   117   @@ -1,5 +1,6 @@
       
   118   -c8d03c1b5e94-0 (5, 6, 6) [complete] - 2dc09a01254d-0 (3, 4, 4), c8d03c1b5e94-4 (5, 6, 2)
       
   119   +f69452c5b1af-0 (6, 7, 7) [complete] - 2dc09a01254d-0 (3, 4, 4), f69452c5b1af-4 (6, 7, 3)
       
   120    2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   121   +f69452c5b1af-4 (6, 7, 3) [complete] - c8d03c1b5e94-4 (5, 6, 2), f69452c5b1af-6 (6, 7, 1)
       
   122    2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   123    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   124    c8d03c1b5e94-4 (5, 6, 2) [complete] - bebd167eb94d-4 (4, 5, 1), c8d03c1b5e94-5 (5, 6, 1)
       
   125   @@ -9,3 +10,4 @@
       
   126    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   127    bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   128    c8d03c1b5e94-5 (5, 6, 1) [leaf] - 
       
   129   +f69452c5b1af-6 (6, 7, 1) [leaf] - 
       
   130   [1]
       
   131 
       
   132   $ cd ..
       
   133 
       
   134 Case with merge
       
   135 ===============
       
   136 
       
   137 Simple case: branching is on a boundary
       
   138 --------------------------------------------
       
   139 
       
   140   $ hg init repo_merge_split_on_boundary
       
   141   $ cd repo_merge_split_on_boundary
       
   142   $ hg debugbuilddag '.:base
       
   143   > +3:left
       
   144   > <base+3:right
       
   145   > <left/right:merge
       
   146   > +2:head
       
   147   > '
       
   148   $ hg log -G
       
   149   o  9 0338daf18215 r9 head tip
       
   150   |
       
   151   o  8 71b32fcf3f71 r8
       
   152   |
       
   153   o    7 5f18015f9110 r7 merge
       
   154   |\
       
   155   | o  6 a2f58e9c1e56 r6 right
       
   156   | |
       
   157   | o  5 3a367db1fabc r5
       
   158   | |
       
   159   | o  4 e7bd5218ca15 r4
       
   160   | |
       
   161   o |  3 2dc09a01254d r3 left
       
   162   | |
       
   163   o |  2 01241442b3c2 r2
       
   164   | |
       
   165   o |  1 66f7d451a68b r1
       
   166   |/
       
   167   o  0 1ea73414a91b r0 base
       
   168   
       
   169   $ hg debugdepth -r 'all()'
       
   170   1ea73414a91b 1
       
   171   66f7d451a68b 2
       
   172   01241442b3c2 3
       
   173   2dc09a01254d 4
       
   174   e7bd5218ca15 2
       
   175   3a367db1fabc 3
       
   176   a2f58e9c1e56 4
       
   177   5f18015f9110 8
       
   178   71b32fcf3f71 9
       
   179   0338daf18215 10
       
   180 
       
   181 Each of the linear branch reuse range internally
       
   182 
       
   183 (left branch)
       
   184 
       
   185   $ hg debugstablerange --verify --verbose --subranges --rev 'left~2'
       
   186   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   187   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   188   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   189   $ hg debugstablerange --verify --verbose --subranges --rev 'left~2' > left-2.range
       
   190   $ hg debugstablerange --verify --verbose --subranges --rev left
       
   191   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   192   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   193   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   194   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   195   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   196   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   197   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   198   $ hg debugstablerange --verify --verbose --subranges --rev 'left' > left.range
       
   199   $ diff -u left-2.range left.range
       
   200   --- left-2.range	* (glob)
       
   201   +++ left.range	* (glob)
       
   202   @@ -1,3 +1,7 @@
       
   203   +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   204   +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   205    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   206   +01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   207    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   208   +2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   209    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   210   [1]
       
   211 
       
   212 (right branch)
       
   213 
       
   214   $ hg debugstablerange --verify --verbose --subranges --rev right~2
       
   215   e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1)
       
   216   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   217   e7bd5218ca15-1 (4, 2, 1) [leaf] - 
       
   218   $ hg debugstablerange --verify --verbose --subranges --rev 'right~2' > right-2.range
       
   219   $ hg debugstablerange --verify --verbose --subranges --rev right
       
   220   a2f58e9c1e56-0 (6, 4, 4) [complete] - e7bd5218ca15-0 (4, 2, 2), a2f58e9c1e56-2 (6, 4, 2)
       
   221   a2f58e9c1e56-2 (6, 4, 2) [complete] - 3a367db1fabc-2 (5, 3, 1), a2f58e9c1e56-3 (6, 4, 1)
       
   222   e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1)
       
   223   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   224   3a367db1fabc-2 (5, 3, 1) [leaf] - 
       
   225   a2f58e9c1e56-3 (6, 4, 1) [leaf] - 
       
   226   e7bd5218ca15-1 (4, 2, 1) [leaf] - 
       
   227   $ hg debugstablerange --verify --verbose --subranges --rev 'right' > right.range
       
   228   $ diff -u right-2.range right.range
       
   229   --- right-2.range	* (glob)
       
   230   +++ right.range	* (glob)
       
   231   @@ -1,3 +1,7 @@
       
   232   +a2f58e9c1e56-0 (6, 4, 4) [complete] - e7bd5218ca15-0 (4, 2, 2), a2f58e9c1e56-2 (6, 4, 2)
       
   233   +a2f58e9c1e56-2 (6, 4, 2) [complete] - 3a367db1fabc-2 (5, 3, 1), a2f58e9c1e56-3 (6, 4, 1)
       
   234    e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1)
       
   235    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   236   +3a367db1fabc-2 (5, 3, 1) [leaf] - 
       
   237   +a2f58e9c1e56-3 (6, 4, 1) [leaf] - 
       
   238    e7bd5218ca15-1 (4, 2, 1) [leaf] - 
       
   239   [1]
       
   240 
       
   241 The merge reuse as much of the slicing created for one of the branch
       
   242 
       
   243   $ hg debugstablerange --verify --verbose --subranges --rev merge
       
   244   5f18015f9110-0 (7, 8, 8) [complete] - 2dc09a01254d-0 (3, 4, 4), 5f18015f9110-4 (7, 8, 4)
       
   245   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   246   5f18015f9110-4 (7, 8, 4) [complete] - 3a367db1fabc-1 (5, 3, 2), 5f18015f9110-6 (7, 8, 2)
       
   247   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   248   3a367db1fabc-1 (5, 3, 2) [complete] - e7bd5218ca15-1 (4, 2, 1), 3a367db1fabc-2 (5, 3, 1)
       
   249   5f18015f9110-6 (7, 8, 2) [complete] - a2f58e9c1e56-3 (6, 4, 1), 5f18015f9110-7 (7, 8, 1)
       
   250   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   251   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   252   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   253   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   254   3a367db1fabc-2 (5, 3, 1) [leaf] - 
       
   255   5f18015f9110-7 (7, 8, 1) [leaf] - 
       
   256   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   257   a2f58e9c1e56-3 (6, 4, 1) [leaf] - 
       
   258   e7bd5218ca15-1 (4, 2, 1) [leaf] - 
       
   259   $ hg debugstablerange --verify --verbose --subranges --rev 'merge' > merge.range
       
   260   $ diff -u left.range merge.range
       
   261   --- left.range	* (glob)
       
   262   +++ merge.range	* (glob)
       
   263   @@ -1,7 +1,15 @@
       
   264   +5f18015f9110-0 (7, 8, 8) [complete] - 2dc09a01254d-0 (3, 4, 4), 5f18015f9110-4 (7, 8, 4)
       
   265    2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   266   +5f18015f9110-4 (7, 8, 4) [complete] - 3a367db1fabc-1 (5, 3, 2), 5f18015f9110-6 (7, 8, 2)
       
   267    2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   268   +3a367db1fabc-1 (5, 3, 2) [complete] - e7bd5218ca15-1 (4, 2, 1), 3a367db1fabc-2 (5, 3, 1)
       
   269   +5f18015f9110-6 (7, 8, 2) [complete] - a2f58e9c1e56-3 (6, 4, 1), 5f18015f9110-7 (7, 8, 1)
       
   270    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   271    01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   272    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   273    2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   274   +3a367db1fabc-2 (5, 3, 1) [leaf] - 
       
   275   +5f18015f9110-7 (7, 8, 1) [leaf] - 
       
   276    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   277   +a2f58e9c1e56-3 (6, 4, 1) [leaf] - 
       
   278   +e7bd5218ca15-1 (4, 2, 1) [leaf] - 
       
   279   [1]
       
   280   $ diff -u right.range merge.range
       
   281   --- right.range	* (glob)
       
   282   +++ merge.range	* (glob)
       
   283   @@ -1,7 +1,15 @@
       
   284   -a2f58e9c1e56-0 (6, 4, 4) [complete] - e7bd5218ca15-0 (4, 2, 2), a2f58e9c1e56-2 (6, 4, 2)
       
   285   -a2f58e9c1e56-2 (6, 4, 2) [complete] - 3a367db1fabc-2 (5, 3, 1), a2f58e9c1e56-3 (6, 4, 1)
       
   286   -e7bd5218ca15-0 (4, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), e7bd5218ca15-1 (4, 2, 1)
       
   287   +5f18015f9110-0 (7, 8, 8) [complete] - 2dc09a01254d-0 (3, 4, 4), 5f18015f9110-4 (7, 8, 4)
       
   288   +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   289   +5f18015f9110-4 (7, 8, 4) [complete] - 3a367db1fabc-1 (5, 3, 2), 5f18015f9110-6 (7, 8, 2)
       
   290   +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   291   +3a367db1fabc-1 (5, 3, 2) [complete] - e7bd5218ca15-1 (4, 2, 1), 3a367db1fabc-2 (5, 3, 1)
       
   292   +5f18015f9110-6 (7, 8, 2) [complete] - a2f58e9c1e56-3 (6, 4, 1), 5f18015f9110-7 (7, 8, 1)
       
   293   +66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   294   +01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   295    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   296   +2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   297    3a367db1fabc-2 (5, 3, 1) [leaf] - 
       
   298   +5f18015f9110-7 (7, 8, 1) [leaf] - 
       
   299   +66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   300    a2f58e9c1e56-3 (6, 4, 1) [leaf] - 
       
   301    e7bd5218ca15-1 (4, 2, 1) [leaf] - 
       
   302   [1]
       
   303   $ cd ..
       
   304 
       
   305 slice create multiple heads
       
   306 ---------------------------
       
   307 
       
   308   $ hg init repo_merge_split_heads
       
   309   $ cd repo_merge_split_heads
       
   310   $ hg debugbuilddag '.:base
       
   311   > +4:left
       
   312   > <base+5:right
       
   313   > <left/right:merge
       
   314   > +2:head
       
   315   > '
       
   316   $ hg debugbuilddag '.:base
       
   317   > +3:left
       
   318   > <base+3:right
       
   319   > <left/right:merge
       
   320   > +2:head
       
   321   > '
       
   322   abort: repository is not empty
       
   323   [255]
       
   324   $ hg log -G
       
   325   o  12 e6b8d5b46647 r12 head tip
       
   326   |
       
   327   o  11 485383494a89 r11
       
   328   |
       
   329   o    10 8aca7f8c9bd2 r10 merge
       
   330   |\
       
   331   | o  9 f4b7da68b467 r9 right
       
   332   | |
       
   333   | o  8 857477a9aebb r8
       
   334   | |
       
   335   | o  7 42b07e8da27d r7
       
   336   | |
       
   337   | o  6 b9bc20507e0b r6
       
   338   | |
       
   339   | o  5 de561312eff4 r5
       
   340   | |
       
   341   o |  4 bebd167eb94d r4 left
       
   342   | |
       
   343   o |  3 2dc09a01254d r3
       
   344   | |
       
   345   o |  2 01241442b3c2 r2
       
   346   | |
       
   347   o |  1 66f7d451a68b r1
       
   348   |/
       
   349   o  0 1ea73414a91b r0 base
       
   350   
       
   351   $ hg debugdepth -r 'all()'
       
   352   1ea73414a91b 1
       
   353   66f7d451a68b 2
       
   354   01241442b3c2 3
       
   355   2dc09a01254d 4
       
   356   bebd167eb94d 5
       
   357   de561312eff4 2
       
   358   b9bc20507e0b 3
       
   359   42b07e8da27d 4
       
   360   857477a9aebb 5
       
   361   f4b7da68b467 6
       
   362   8aca7f8c9bd2 11
       
   363   485383494a89 12
       
   364   e6b8d5b46647 13
       
   365 
       
   366 Each of the linear branch reuse range internally
       
   367 
       
   368 (left branch)
       
   369 
       
   370   $ hg debugstablerange --verify --verbose --subranges --rev 'left~2'
       
   371   01241442b3c2-0 (2, 3, 3) [complete] - 66f7d451a68b-0 (1, 2, 2), 01241442b3c2-2 (2, 3, 1)
       
   372   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   373   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   374   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   375   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   376   $ hg debugstablerange --verify --verbose --subranges --rev 'left~2' > left-2.range
       
   377   $ hg debugstablerange --verify --verbose --subranges --rev left
       
   378   bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   379   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   380   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   381   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   382   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   383   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   384   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   385   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   386   bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   387   $ hg debugstablerange --verify --verbose --subranges --rev 'left' > left.range
       
   388   $ diff -u left-2.range left.range
       
   389   --- left-2.range	* (glob)
       
   390   +++ left.range	* (glob)
       
   391   @@ -1,5 +1,9 @@
       
   392   -01241442b3c2-0 (2, 3, 3) [complete] - 66f7d451a68b-0 (1, 2, 2), 01241442b3c2-2 (2, 3, 1)
       
   393   +bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   394   +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   395   +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   396    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   397    01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   398    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   399   +2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   400    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   401   +bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   402   [1]
       
   403 
       
   404 (right branch)
       
   405 
       
   406   $ hg debugstablerange --verify --verbose --subranges --rev right~2
       
   407   42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2)
       
   408   42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   409   de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1)
       
   410   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   411   42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   412   b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   413   de561312eff4-1 (5, 2, 1) [leaf] - 
       
   414   $ hg debugstablerange --verify --verbose --subranges --rev 'right~2' > right-2.range
       
   415   $ hg debugstablerange --verify --verbose --subranges --rev right
       
   416   f4b7da68b467-0 (9, 6, 6) [complete] - 42b07e8da27d-0 (7, 4, 4), f4b7da68b467-4 (9, 6, 2)
       
   417   42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2)
       
   418   42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   419   de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1)
       
   420   f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   421   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   422   42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   423   857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   424   b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   425   de561312eff4-1 (5, 2, 1) [leaf] - 
       
   426   f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   427   $ hg debugstablerange --verify --verbose --subranges --rev 'right' > right.range
       
   428   $ diff -u right-2.range right.range
       
   429   --- right-2.range	* (glob)
       
   430   +++ right.range	* (glob)
       
   431   @@ -1,7 +1,11 @@
       
   432   +f4b7da68b467-0 (9, 6, 6) [complete] - 42b07e8da27d-0 (7, 4, 4), f4b7da68b467-4 (9, 6, 2)
       
   433    42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2)
       
   434    42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   435    de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1)
       
   436   +f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   437    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   438    42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   439   +857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   440    b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   441    de561312eff4-1 (5, 2, 1) [leaf] - 
       
   442   +f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   443   [1]
       
   444 
       
   445 In this case, the bottom of the split will have multiple heads,
       
   446 
       
   447 So we'll create more than 1 subrange out of it.
       
   448 
       
   449 We are still able to reuse one of the branch however
       
   450 
       
   451   $ hg debugstablerange --verify --verbose --subranges --rev merge
       
   452   8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3)
       
   453   bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   454   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   455   42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2)
       
   456   8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1)
       
   457   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   458   42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   459   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   460   f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   461   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   462   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   463   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   464   42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   465   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   466   857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   467   8aca7f8c9bd2-10 (10, 11, 1) [leaf] - 
       
   468   b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   469   bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   470   de561312eff4-1 (5, 2, 1) [leaf] - 
       
   471   f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   472   $ hg debugstablerange --verify --verbose --subranges --rev 'merge' > merge.range
       
   473   $ diff -u left.range merge.range
       
   474   --- left.range	* (glob)
       
   475   +++ merge.range	* (glob)
       
   476   @@ -1,9 +1,20 @@
       
   477   +8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3)
       
   478    bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   479    2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   480   +42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2)
       
   481   +8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1)
       
   482    2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   483   +42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   484    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   485   +f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   486    01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   487    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   488    2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   489   +42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   490    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   491   +857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   492   +8aca7f8c9bd2-10 (10, 11, 1) [leaf] - 
       
   493   +b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   494    bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   495   +de561312eff4-1 (5, 2, 1) [leaf] - 
       
   496   +f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   497   [1]
       
   498   $ diff -u right.range merge.range
       
   499   --- right.range	* (glob)
       
   500   +++ merge.range	* (glob)
       
   501   @@ -1,11 +1,20 @@
       
   502   -f4b7da68b467-0 (9, 6, 6) [complete] - 42b07e8da27d-0 (7, 4, 4), f4b7da68b467-4 (9, 6, 2)
       
   503   -42b07e8da27d-0 (7, 4, 4) [complete] - de561312eff4-0 (5, 2, 2), 42b07e8da27d-2 (7, 4, 2)
       
   504   +8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3)
       
   505   +bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   506   +2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   507   +42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2)
       
   508   +8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1)
       
   509   +2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   510    42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   511   -de561312eff4-0 (5, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), de561312eff4-1 (5, 2, 1)
       
   512   +66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   513    f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   514   +01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   515    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   516   +2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   517    42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   518   +66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   519    857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   520   +8aca7f8c9bd2-10 (10, 11, 1) [leaf] - 
       
   521    b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   522   +bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   523    de561312eff4-1 (5, 2, 1) [leaf] - 
       
   524    f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   525   [1]
       
   526 
       
   527 Range above the merge, reuse subrange from the merge
       
   528 
       
   529   $ hg debugstablerange --verify --verbose --subranges --rev tip
       
   530   e6b8d5b46647-0 (12, 13, 13) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), e6b8d5b46647-8 (12, 13, 5)
       
   531   bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   532   e6b8d5b46647-8 (12, 13, 5) [complete] - 485383494a89-8 (11, 12, 4), e6b8d5b46647-12 (12, 13, 1)
       
   533   2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   534   485383494a89-8 (11, 12, 4) [complete] - f4b7da68b467-4 (9, 6, 2), 485383494a89-10 (11, 12, 2)
       
   535   42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2)
       
   536   2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   537   42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   538   485383494a89-10 (11, 12, 2) [complete] - 8aca7f8c9bd2-10 (10, 11, 1), 485383494a89-11 (11, 12, 1)
       
   539   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   540   f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   541   01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   542   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   543   2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   544   42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   545   485383494a89-11 (11, 12, 1) [leaf] - 
       
   546   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   547   857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   548   8aca7f8c9bd2-10 (10, 11, 1) [leaf] - 
       
   549   b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   550   bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   551   de561312eff4-1 (5, 2, 1) [leaf] - 
       
   552   e6b8d5b46647-12 (12, 13, 1) [leaf] - 
       
   553   f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   554   $ hg debugstablerange --verify --verbose --subranges --rev 'tip' > tip.range
       
   555   $ diff -u merge.range tip.range
       
   556   --- merge.range	* (glob)
       
   557   +++ tip.range	* (glob)
       
   558   @@ -1,20 +1,24 @@
       
   559   -8aca7f8c9bd2-0 (10, 11, 11) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), 8aca7f8c9bd2-8 (10, 11, 3)
       
   560   +e6b8d5b46647-0 (12, 13, 13) [complete] - bebd167eb94d-0 (4, 5, 5), 42b07e8da27d-1 (7, 4, 3), e6b8d5b46647-8 (12, 13, 5)
       
   561    bebd167eb94d-0 (4, 5, 5) [complete] - 2dc09a01254d-0 (3, 4, 4), bebd167eb94d-4 (4, 5, 1)
       
   562   +e6b8d5b46647-8 (12, 13, 5) [complete] - 485383494a89-8 (11, 12, 4), e6b8d5b46647-12 (12, 13, 1)
       
   563    2dc09a01254d-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2dc09a01254d-2 (3, 4, 2)
       
   564   +485383494a89-8 (11, 12, 4) [complete] - f4b7da68b467-4 (9, 6, 2), 485383494a89-10 (11, 12, 2)
       
   565    42b07e8da27d-1 (7, 4, 3) [complete] - de561312eff4-1 (5, 2, 1), 42b07e8da27d-2 (7, 4, 2)
       
   566   -8aca7f8c9bd2-8 (10, 11, 3) [complete] - f4b7da68b467-4 (9, 6, 2), 8aca7f8c9bd2-10 (10, 11, 1)
       
   567    2dc09a01254d-2 (3, 4, 2) [complete] - 01241442b3c2-2 (2, 3, 1), 2dc09a01254d-3 (3, 4, 1)
       
   568    42b07e8da27d-2 (7, 4, 2) [complete] - b9bc20507e0b-2 (6, 3, 1), 42b07e8da27d-3 (7, 4, 1)
       
   569   +485383494a89-10 (11, 12, 2) [complete] - 8aca7f8c9bd2-10 (10, 11, 1), 485383494a89-11 (11, 12, 1)
       
   570    66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   571    f4b7da68b467-4 (9, 6, 2) [complete] - 857477a9aebb-4 (8, 5, 1), f4b7da68b467-5 (9, 6, 1)
       
   572    01241442b3c2-2 (2, 3, 1) [leaf] - 
       
   573    1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   574    2dc09a01254d-3 (3, 4, 1) [leaf] - 
       
   575    42b07e8da27d-3 (7, 4, 1) [leaf] - 
       
   576   +485383494a89-11 (11, 12, 1) [leaf] - 
       
   577    66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   578    857477a9aebb-4 (8, 5, 1) [leaf] - 
       
   579    8aca7f8c9bd2-10 (10, 11, 1) [leaf] - 
       
   580    b9bc20507e0b-2 (6, 3, 1) [leaf] - 
       
   581    bebd167eb94d-4 (4, 5, 1) [leaf] - 
       
   582    de561312eff4-1 (5, 2, 1) [leaf] - 
       
   583   +e6b8d5b46647-12 (12, 13, 1) [leaf] - 
       
   584    f4b7da68b467-5 (9, 6, 1) [leaf] - 
       
   585   [1]
       
   586 
       
   587   $ cd ..
       
   588 
       
   589 Tests range with criss cross merge in the graph
       
   590 ===============================================
       
   591 
       
   592   $ hg init repo_criss_cross
       
   593   $ cd repo_criss_cross
       
   594   $ hg debugbuilddag '
       
   595   > ..:g   # 2 nodes, tagged "g"
       
   596   > <2.:h   # another node base one -2 -> 0, tagged "h"
       
   597   > *1/2:m # merge -1 and -2 (1, 2), tagged "m"
       
   598   > <2+2:i # 2 nodes based on -2, tag head as "i"
       
   599   > .:c    # 1 node tagged "c"
       
   600   > <m+3:a # 3 nodes base on the "m" tag
       
   601   > <2.:b  # 1 node based on -2; tagged "b"
       
   602   > <m+2:d # 2 nodes from "m" tagged "d"
       
   603   > <2.:e  # 1 node based on -2, tagged "e"
       
   604   > <m+1:f # 1 node based on "m" tagged "f"
       
   605   > <i/f   # merge "i" and "f"
       
   606   > '
       
   607   $ hg log -G
       
   608   o    15 1d8d22637c2d r15 tip
       
   609   |\
       
   610   | o  14 43227190fef8 r14 f
       
   611   | |
       
   612   | | o  13 b4594d867745 r13 e
       
   613   | | |
       
   614   | | | o  12 e46a4836065c r12 d
       
   615   | | |/
       
   616   | | o  11 bab5d5bf48bd r11
       
   617   | |/
       
   618   | | o  10 ff43616e5d0f r10 b
       
   619   | | |
       
   620   | | | o  9 dcbb326fdec2 r9 a
       
   621   | | |/
       
   622   | | o  8 d62d843c9a01 r8
       
   623   | | |
       
   624   | | o  7 e7d9710d9fc6 r7
       
   625   | |/
       
   626   +---o  6 2702dd0c91e7 r6 c
       
   627   | |
       
   628   o |  5 f0f3ef9a6cd5 r5 i
       
   629   | |
       
   630   o |  4 4c748ffd1a46 r4
       
   631   | |
       
   632   | o  3 2b6d669947cd r3 m
       
   633   |/|
       
   634   o |  2 fa942426a6fd r2 h
       
   635   | |
       
   636   | o  1 66f7d451a68b r1 g
       
   637   |/
       
   638   o  0 1ea73414a91b r0
       
   639   
       
   640   $ hg debugdepth -r 'all()'
       
   641   1ea73414a91b 1
       
   642   66f7d451a68b 2
       
   643   fa942426a6fd 2
       
   644   2b6d669947cd 4
       
   645   4c748ffd1a46 3
       
   646   f0f3ef9a6cd5 4
       
   647   2702dd0c91e7 5
       
   648   e7d9710d9fc6 5
       
   649   d62d843c9a01 6
       
   650   dcbb326fdec2 7
       
   651   ff43616e5d0f 7
       
   652   bab5d5bf48bd 5
       
   653   e46a4836065c 6
       
   654   b4594d867745 6
       
   655   43227190fef8 5
       
   656   1d8d22637c2d 8
       
   657   $ hg debugstablerange --verify --verbose --subranges --rev 'head()'
       
   658   1d8d22637c2d-0 (15, 8, 8) [complete] - 2b6d669947cd-0 (3, 4, 4), 1d8d22637c2d-4 (15, 8, 4)
       
   659   dcbb326fdec2-0 (9, 7, 7) [complete] - 2b6d669947cd-0 (3, 4, 4), dcbb326fdec2-4 (9, 7, 3)
       
   660   ff43616e5d0f-0 (10, 7, 7) [complete] - 2b6d669947cd-0 (3, 4, 4), ff43616e5d0f-4 (10, 7, 3)
       
   661   b4594d867745-0 (13, 6, 6) [complete] - 2b6d669947cd-0 (3, 4, 4), b4594d867745-4 (13, 6, 2)
       
   662   e46a4836065c-0 (12, 6, 6) [complete] - 2b6d669947cd-0 (3, 4, 4), e46a4836065c-4 (12, 6, 2)
       
   663   2702dd0c91e7-0 (6, 5, 5) [complete] - f0f3ef9a6cd5-0 (5, 4, 4), 2702dd0c91e7-4 (6, 5, 1)
       
   664   1d8d22637c2d-4 (15, 8, 4) [complete] - 43227190fef8-4 (14, 5, 1), 4c748ffd1a46-2 (4, 3, 1), 1d8d22637c2d-6 (15, 8, 2)
       
   665   2b6d669947cd-0 (3, 4, 4) [complete] - 66f7d451a68b-0 (1, 2, 2), 2b6d669947cd-2 (3, 4, 2)
       
   666   f0f3ef9a6cd5-0 (5, 4, 4) [complete] - fa942426a6fd-0 (2, 2, 2), f0f3ef9a6cd5-2 (5, 4, 2)
       
   667   dcbb326fdec2-4 (9, 7, 3) [complete] - d62d843c9a01-4 (8, 6, 2), dcbb326fdec2-6 (9, 7, 1)
       
   668   ff43616e5d0f-4 (10, 7, 3) [complete] - d62d843c9a01-4 (8, 6, 2), ff43616e5d0f-6 (10, 7, 1)
       
   669   1d8d22637c2d-6 (15, 8, 2) [complete] - f0f3ef9a6cd5-3 (5, 4, 1), 1d8d22637c2d-7 (15, 8, 1)
       
   670   2b6d669947cd-2 (3, 4, 2) [complete] - fa942426a6fd-1 (2, 2, 1), 2b6d669947cd-3 (3, 4, 1)
       
   671   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   672   b4594d867745-4 (13, 6, 2) [complete] - bab5d5bf48bd-4 (11, 5, 1), b4594d867745-5 (13, 6, 1)
       
   673   d62d843c9a01-4 (8, 6, 2) [complete] - e7d9710d9fc6-4 (7, 5, 1), d62d843c9a01-5 (8, 6, 1)
       
   674   e46a4836065c-4 (12, 6, 2) [complete] - bab5d5bf48bd-4 (11, 5, 1), e46a4836065c-5 (12, 6, 1)
       
   675   f0f3ef9a6cd5-2 (5, 4, 2) [complete] - 4c748ffd1a46-2 (4, 3, 1), f0f3ef9a6cd5-3 (5, 4, 1)
       
   676   fa942426a6fd-0 (2, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), fa942426a6fd-1 (2, 2, 1)
       
   677   1d8d22637c2d-7 (15, 8, 1) [leaf] - 
       
   678   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   679   2702dd0c91e7-4 (6, 5, 1) [leaf] - 
       
   680   2b6d669947cd-3 (3, 4, 1) [leaf] - 
       
   681   43227190fef8-4 (14, 5, 1) [leaf] - 
       
   682   4c748ffd1a46-2 (4, 3, 1) [leaf] - 
       
   683   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   684   b4594d867745-5 (13, 6, 1) [leaf] - 
       
   685   bab5d5bf48bd-4 (11, 5, 1) [leaf] - 
       
   686   d62d843c9a01-5 (8, 6, 1) [leaf] - 
       
   687   dcbb326fdec2-6 (9, 7, 1) [leaf] - 
       
   688   e46a4836065c-5 (12, 6, 1) [leaf] - 
       
   689   e7d9710d9fc6-4 (7, 5, 1) [leaf] - 
       
   690   f0f3ef9a6cd5-3 (5, 4, 1) [leaf] - 
       
   691   fa942426a6fd-1 (2, 2, 1) [leaf] - 
       
   692   ff43616e5d0f-6 (10, 7, 1) [leaf] - 
       
   693   $ cd ..
       
   694 
       
   695 Tests range where a toprange is rooted on a merge
       
   696 =================================================
       
   697 
       
   698   $ hg init slice_on_merge
       
   699   $ cd slice_on_merge
       
   700   $ hg debugbuilddag '
       
   701   > ..:a   # 2 nodes, tagged "a"
       
   702   > <2..:b   # another branch with two node based on 0, tagged b
       
   703   > *a/b:m # merge -1 and -2 (1, 2), tagged "m"
       
   704   > '
       
   705   $ hg log -G
       
   706   o    4 f37e476fba9a r4 m tip
       
   707   |\
       
   708   | o  3 36315563e2fa r3 b
       
   709   | |
       
   710   | o  2 fa942426a6fd r2
       
   711   | |
       
   712   o |  1 66f7d451a68b r1 a
       
   713   |/
       
   714   o  0 1ea73414a91b r0
       
   715   
       
   716   $ hg debugdepth -r 'all()'
       
   717   1ea73414a91b 1
       
   718   66f7d451a68b 2
       
   719   fa942426a6fd 2
       
   720   36315563e2fa 3
       
   721   f37e476fba9a 5
       
   722   $ hg debugstablerange --verify --verbose --subranges --rev 'head()'
       
   723   f37e476fba9a-0 (4, 5, 5) [complete] - 66f7d451a68b-0 (1, 2, 2), 36315563e2fa-1 (3, 3, 2), f37e476fba9a-4 (4, 5, 1)
       
   724   36315563e2fa-1 (3, 3, 2) [complete] - fa942426a6fd-1 (2, 2, 1), 36315563e2fa-2 (3, 3, 1)
       
   725   66f7d451a68b-0 (1, 2, 2) [complete] - 1ea73414a91b-0 (0, 1, 1), 66f7d451a68b-1 (1, 2, 1)
       
   726   1ea73414a91b-0 (0, 1, 1) [leaf] - 
       
   727   36315563e2fa-2 (3, 3, 1) [leaf] - 
       
   728   66f7d451a68b-1 (1, 2, 1) [leaf] - 
       
   729   f37e476fba9a-4 (4, 5, 1) [leaf] - 
       
   730   fa942426a6fd-1 (2, 2, 1) [leaf] - 
       
   731