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