tests/test-stabletailgraph.t
author pacien <pacien.trangirard@pacien.net>
Fri, 21 Apr 2023 14:33:33 +0200
changeset 50528 8fb3e942473a
parent 50459 e06331275a53
child 50529 027481f19944
permissions -rw-r--r--
stabletailgraph: naive version of leap computation This adds a naive reference implementation of the computation of leap and specific leap sets (described in the code documentation). The existing tests are enriched accordingly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     1
====================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     2
Test for the stabletailgraph package
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     3
====================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     4
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     5
This test file contains a bunch of small test graphs with some minimal yet
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     6
non-trivial structure, on which the various stable-tail graph and stable-tail
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     7
sort functions are tested.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     8
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
     9
Each case consists of the creation of the interesting graph structure, followed
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    10
by a check, for each noteworthy node, of:
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    11
- the stable-tail sort output (with the linear parts globbed),
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    12
- the leap set,
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    13
- the specific leap set.
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    14
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    15
In the ASCII art of the diagrams, the side of the exclusive part which is
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    16
followed in priority is denoted with "<" or ">" if it is on the left or right
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    17
respectively.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    18
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    19
The intermediary linear parts in the example graph are there to force the
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    20
exclusive part choice (made on a min rank condition).
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    21
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    22
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    23
Setup
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    24
=====
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    25
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    26
Enable the rank computation to test sorting based on the rank.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    27
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    28
  $ cat << EOF >> $HGRCPATH
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    29
  > [format]
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    30
  > exp-use-changelog-v2=enable-unstable-format-and-corrupt-my-data
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    31
  > 
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    32
  > [alias]
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    33
  > test-sts = debug::stable-tail-sort -T '{tags},'
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    34
  > test-leaps = debug::stable-tail-sort-leaps -T '{tags}'
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
    35
  > test-log = log --graph -T '{tags} rank={_fast_rank}' --rev 'tagged()'
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    36
  > EOF
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    37
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    38
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    39
Example 1: single merge node
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    40
============================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    41
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    42
A base case with one branchpoint "b" and one merge node "e".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    43
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    44
The exclusive part, starting with the lowest-ranking parent "c" of "e",
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    45
appears first in stable-tail sort of "e" and "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    46
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    47
#        f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    48
#        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    49
#        e
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    50
#        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    51
#      --<--
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    52
#      |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    53
#      c   d
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    54
#      |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    55
#      --+--      <- at this point, the sort of "e" is done consuming its
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    56
#        |           exclusive part [c] and jumps back to its other parent "d"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    57
#        b
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    58
#        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    59
#        a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    60
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    61
  $ hg init example-1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    62
  $ cd example-1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    63
  $ hg debugbuilddag '.:a*a:b*b:c<b+2:d*c/d:e*e:f.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    64
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    65
  o  f rank=7
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    66
  |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    67
  o    e rank=6
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    68
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    69
  | o  d rank=4
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
    70
  | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
    71
  o :  c rank=3
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
    72
  :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    73
  o  b rank=2
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    74
  |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    75
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    76
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    77
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    78
Check the sort of the base linear case.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    79
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    80
  $ hg test-sts c
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    81
  c,b,a, (no-eol)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    82
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    83
Check the stable-tail sort of "e": "c" should come before "d".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    84
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    85
  $ hg test-sts e
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    86
  e,c,d,*,b,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    87
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    88
Check that the linear descendant of the merge inherits its sort properly.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    89
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    90
  $ hg test-sts f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    91
  f,e,c,d,*,b,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
    92
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    93
Check the leaps of "e": arriving at "c", the sort continues at "d", which
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    94
which breaks the child-parent chain and results in a leap.
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    95
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    96
  $ hg test-leaps e
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    97
  cd
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    98
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
    99
Check that this leap is indeed specific to "e", i.e. that it appears in its
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   100
stable-tail sort, but not in any stable-tail sort of its ancestors.
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   101
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   102
  $ hg test-leaps --specific e
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   103
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   104
Check that this leap is inherited by its direct ancestor "f".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   105
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   106
  $ hg test-leaps f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   107
  cd
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   108
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   109
Check that this leap is not classified as specific to "f", since it is specific
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   110
to "e".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   111
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   112
  $ hg test-leaps --specific f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   113
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   114
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   115
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   116
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   117
Example 2: nested exclusive parts, without specific leap
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   118
========================================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   119
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   120
"g" is a merge node whose exclusive part contains a merge node "e".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   121
We check that the stable-tail sort recurses properly by delegating.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   122
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   123
Notice that parts of the sort of "e" is an infix of the sort of "g".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   124
This is an expected property of the sort.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   125
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   126
#           g
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   127
#           |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   128
#        ---<---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   129
#        |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   130
#        e     |    <- while processing the sort in the exclusive part of "g"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   131
#        |     |       we recursively process the exclusive part of "e"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   132
#      --<--   f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   133
#      |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   134
#      c   d   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   135
#      |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   136
#      --+--   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   137
#        |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   138
#        b     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   139
#        |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   140
#        ---+---    <- done with excl(g), jump to "f"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   141
#           |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   142
#           a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   143
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   144
  $ hg init example-2
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   145
  $ cd example-2
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   146
  $ hg debugbuilddag '.:a*a:b*b:c<b+2:d*c/d:e<a+6:f*e/f:g.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   147
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   148
  o    g rank=13
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   149
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   150
  | o  f rank=7
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   151
  | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   152
  o :    e rank=6
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   153
  |\ \
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   154
  | o :  d rank=4
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   155
  | : :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   156
  o : :  c rank=3
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   157
  :/ /
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   158
  o /  b rank=2
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   159
  :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   160
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   161
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   162
Display the sort of "e" for reference
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   163
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   164
  $ hg test-sts e
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   165
  e,c,d,*,b,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   166
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   167
Check the correctness of the sort of "g",
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   168
and that a part of the sort of "e" appears as an infix.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   169
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   170
  $ hg test-sts g
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   171
  g,e,c,d,*,b,f,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   172
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   173
Check the leaps of "e".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   174
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   175
  $ hg test-leaps e
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   176
  cd
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   177
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   178
  $ hg test-leaps --specific e
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   179
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   180
Check that "g" inherits a leap from "e" in addition of its own.
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   181
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   182
  $ hg test-leaps g
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   183
  cd
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   184
  bf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   185
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   186
Check that only the additional leap of "g" is classified as specific.
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   187
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   188
  $ hg test-leaps --specific g
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   189
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   190
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   191
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   192
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   193
Example 3: shadowing of a final leap
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   194
====================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   195
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   196
We have a merge "f" whose exclusive part contains a merge "d".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   197
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   198
The inherited parent of "d" is not in the exclusive part of "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   199
At the end of the exclusive part of "d",
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   200
the leap to "c" is shadowed by the leap to "e", i.e. the inherited part to "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   201
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   202
Notice that emitting "c" before "e" would break the reverse topological
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   203
ordering.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   204
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   205
#           f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   206
#           |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   207
#        ---<---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   208
#        |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   209
#        d     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   210
#        |     e
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   211
#      --<--   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   212
#      |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   213
#      |   +----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   214
#      b   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   215
#      |   c
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   216
#      |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   217
#      --+--       <- at this point, jumping to "e", not the shadowed "c"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   218
#        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   219
#        a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   220
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   221
  $ hg init example-3
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   222
  $ cd example-3
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   223
  $ hg debugbuilddag '.:a*a:b<a+2:c*b/c:d<c+3:e*d/e:f.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   224
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   225
  o    f rank=9
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   226
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   227
  | o  e rank=6
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   228
  | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   229
  o :  d rank=5
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   230
  |\:
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   231
  | o  c rank=3
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   232
  | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   233
  o :  b rank=2
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   234
  :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   235
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   236
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   237
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   238
Display the sort of "d" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   239
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   240
  $ hg test-sts d
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   241
  d,b,c,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   242
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   243
Check that we leap from "b" directly to "e" (shadowing the leap to "c"),
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   244
and that "c" is then emitted after "e" (its descendant).
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   245
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   246
  $ hg test-sts f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   247
  f,d,b,e,*,c,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   248
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   249
Check the leaps of "d".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   250
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   251
  $ hg test-leaps d
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   252
  bc
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   253
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   254
  $ hg test-leaps --specific d
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   255
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   256
Check thet leaps of "f", which, despite being a descendant of "f", has a
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   257
different stable-tail sort which does not reuse any leap of "d".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   258
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   259
  $ hg test-leaps f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   260
  be
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   261
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   262
  $ hg test-leaps --specific f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   263
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   264
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   265
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   266
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   267
Example 4: skipping over nested exclusive part (entirely)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   268
=========================================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   269
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   270
We have a merge "f" whose exclusive part contains a merge "d".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   271
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   272
The exclusive part of "d" is not in the exclusive part of "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   273
However, some of the inherited part of "d" is part of the exclusive part of "f"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   274
and needs to be iterated over before leaping to the inherited part of "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   275
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   276
The sort of "d" is partially reused for the ordering of the exclusive part of
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   277
"f". However the reused part is not contiguous in the sort of "d".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   278
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   279
#           f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   280
#           |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   281
#        ---<---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   282
#        |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   283
#        d     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   284
#        |     e
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   285
#      -->--   |    <- in the sort of "f", we need to skip "c" and leap to the
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   286
#      |   |   |       inherited part of "d"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   287
#      |   +----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   288
#      b   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   289
#      |   c
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   290
#      |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   291
#      --+--
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   292
#        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   293
#        a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   294
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   295
  $ hg init example-4
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   296
  $ cd example-4
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   297
  $ hg debugbuilddag '.:a*a+1:b<a+1:c*b/c:d<c+4:e*d/e:f.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   298
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   299
  o    f rank=10
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   300
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   301
  | o  e rank=6
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   302
  | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   303
  o :  d rank=5
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   304
  |\:
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   305
  | o  c rank=2
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   306
  | |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   307
  o |  b rank=3
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   308
  |/
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   309
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   310
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   311
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   312
Display the sort of "d" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   313
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   314
  $ hg test-sts d
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   315
  d,c,b,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   316
50457
1e31eda9c845 stabletailgraph: fix typo in test
pacien <pacien.trangirard@pacien.net>
parents: 50392
diff changeset
   317
Check that sort "f" leaps from "d" to "b":
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   318
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   319
  $ hg test-sts f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   320
  f,d,b,*,e,*,c,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   321
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   322
Check the leaps of "d".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   323
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   324
  $ hg test-leaps d
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   325
  cb
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   326
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   327
  $ hg test-leaps --specific d
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   328
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   329
Check the leaps of "f".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   330
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   331
  $ hg test-leaps f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   332
  db
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   333
  e* (glob)
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   334
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   335
  $ hg test-leaps --specific f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   336
  db
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   337
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   338
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   339
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   340
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   341
Example 5: skipping over nested exclusive part (partially)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   342
==========================================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   343
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   344
We have a merge "f" whose exclusive part contains a merge "d".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   345
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   346
Similar to example 4, but the exclusive part of "d" is only partially
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   347
contained in the inherited part of "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   348
So, we need to leap in the middle of the exclusive part of "d".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   349
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   350
#           f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   351
#           |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   352
#        ---<---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   353
#        |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   354
#        d     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   355
#        |     e
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   356
#      -->--   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   357
#      |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   358
#      |   g   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   359
#      |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   360
#      |   +----    <- in the sort of "f", leaping from "g" to "b"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   361
#      b   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   362
#      |   c
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   363
#      |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   364
#      --+--
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   365
#        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   366
#        a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   367
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   368
  $ hg init example-5
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   369
  $ cd example-5
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   370
  $ hg debugbuilddag '.:a*a+2:b<a+1:c+1:g*b/g:d<c+6:e*d/e:f.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   371
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   372
  o    f rank=14
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   373
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   374
  | o  e rank=8
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   375
  | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   376
  o :    d rank=7
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   377
  |\ \
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   378
  | o :  g rank=3
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   379
  | :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   380
  | o  c rank=2
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   381
  | |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   382
  o |  b rank=4
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   383
  |/
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   384
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   385
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   386
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   387
Display the sort of "d" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   388
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   389
  $ hg test-sts d
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   390
  d,g,c,b,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   391
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   392
Check that sort "f" leaps from "g" to "b":
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   393
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   394
  $ hg test-sts f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   395
  f,d,g,b,*,e,*,c,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   396
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   397
Check the leaps of "d".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   398
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   399
  $ hg test-leaps d
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   400
  cb
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   401
  $ hg test-leaps --specific d
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   402
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   403
Check the leaps of "f".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   404
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   405
  $ hg test-leaps f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   406
  gb
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   407
  e* (glob)
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   408
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   409
  $ hg test-leaps --specific f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   410
  gb
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   411
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   412
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   413
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   414
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   415
Example 6: merge in the inherited part
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   416
======================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   417
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   418
Variant of example 2, but with a merge ("f") in the inherited part of "g".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   419
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   420
"g" is a merge node whose inherited part contains a merge node "f".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   421
We check that the stable-tail sort delegates properly after the exclusive part.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   422
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   423
#         g
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   424
#         |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   425
#      ---<---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   426
#      |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   427
#      d     f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   428
#      |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   429
#      |  ---<---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   430
#      |  |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   431
#      |  e     c
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   432
#      |  |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   433
#      ---+     |    <- at this point, we're done (for good) with the exclusive
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   434
#         |     |       part of "g"
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   435
#         b     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   436
#         |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   437
#         ---+---
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   438
#            |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   439
#            a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   440
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   441
  $ hg init example-6
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   442
  $ cd example-6
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   443
  $ hg debugbuilddag '.:a*a:b<a+3:c*b:d*b:e*e/c:f*d/f:g.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   444
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   445
  o    g rank=9
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   446
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   447
  | o    f rank=7
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   448
  | |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   449
  | | o  e rank=3
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   450
  | | |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   451
  o---+  d rank=3
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   452
   / /
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   453
  o |  c rank=4
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   454
  : |
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   455
  : o  b rank=2
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   456
  :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   457
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   458
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   459
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   460
Display the sort of "f" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   461
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   462
  $ hg test-sts f
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   463
  f,e,b,c,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   464
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   465
Check that the sort of "g" delegates to the sort of "f" after processing its
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   466
exclusive part of "g":
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   467
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   468
  $ hg test-sts g
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   469
  g,d,f,e,b,c,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   470
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   471
Check the leaps of "f".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   472
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   473
  $ hg test-leaps f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   474
  bc
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   475
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   476
  $ hg test-leaps --specific f
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   477
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   478
Check the leaps of "g".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   479
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   480
  $ hg test-leaps g
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   481
  df
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   482
  bc
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   483
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   484
  $ hg test-leaps --specific g
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   485
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   486
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   487
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   488
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   489
Example 7: postponed iteration of common exclusive ancestors
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   490
============================================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   491
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   492
Sibling merges "j" and "k", with partially shared exclusive parts.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   493
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   494
When considering the sort of "l", the iteration over this shared part cannot
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   495
happen when iterating over excl(j) and has to be postponed to excl(k).
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   496
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   497
#            l
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   498
#            |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   499
#        ----<----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   500
#        |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   501
#        j       k
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   502
#        |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   503
#      -->--   --<--
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   504
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   505
#      g   e   h   i
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   506
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   507
#      |   --+--   |   <- at this point, for the sort of "l", the iteration on
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   508
#      f     |     |      the end of excl(j) is postponed to the iteration of
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   509
#      |     d     |      excl(k)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   510
#      |     |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   511
#      |     c     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   512
#      |     |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   513
#      ---+---     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   514
#         |        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   515
#         b        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   516
#         |        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   517
#         ----+-----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   518
#             |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   519
#             a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   520
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   521
  $ hg init example-7
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   522
  $ cd example-7
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   523
  $ hg debugbuilddag \
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   524
  > '.:a*a:b*b:c*c:d*d:e*b:f<f+3:g<d+2:h<a+6:i*e/g:j*h/i:k*j/k:l.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   525
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   526
  o    l rank=20
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   527
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   528
  | o    k rank=13
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   529
  | |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   530
  o \ \    j rank=10
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   531
  |\ \ \
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   532
  | | | o  i rank=7
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   533
  | | | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   534
  | | o :  h rank=6
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   535
  | | : :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   536
  | o : :  g rank=6
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   537
  | : : :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   538
  | o : :  f rank=3
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   539
  | | : :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   540
  o---+ :  e rank=5
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   541
   / / /
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   542
  | o :  d rank=4
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   543
  | | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   544
  | o :  c rank=3
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   545
  |/ /
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   546
  o /  b rank=2
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   547
  :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   548
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   549
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   550
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   551
Display the sort of "j" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   552
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   553
  $ hg test-sts j
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   554
  j,e,d,c,g,*,f,b,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   555
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   556
Display the sort of "k" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   557
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   558
  $ hg test-sts k
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   559
  k,h,*,d,c,b,i,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   560
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   561
Check that the common part of excl(j) and excl(k) is iterated over after "k":
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   562
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   563
  $ hg test-sts l
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   564
  l,j,e,g,*,f,k,h,*,d,c,b,i,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   565
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   566
Check the leaps of "j".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   567
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   568
  $ hg test-leaps j
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   569
  cg
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   570
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   571
  $ hg test-leaps --specific j
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   572
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   573
Check the leaps of "k".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   574
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   575
  $ hg test-leaps k
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   576
  bi
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   577
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   578
  $ hg test-leaps --specific k
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   579
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   580
Check the leaps of "l".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   581
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   582
  $ hg test-leaps l
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   583
  eg
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   584
  fk
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   585
  bi
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   586
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   587
  $ hg test-leaps --specific l
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   588
  eg
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   589
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   590
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   591
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   592
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   593
Example 8: postponed iteration of common ancestors between parts
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   594
================================================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   595
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   596
Sibling merges "g" and "i", with some part shared between the inherited part
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   597
of "g" and the exclusive part of "i".
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   598
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   599
When considering the sort of "j", the iteration over this shared part cannot
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   600
happen when iterating over inherited(g) and has to be postponed to excl(i).
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   601
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   602
#            j
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   603
#            |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   604
#        ----<----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   605
#        |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   606
#        g       i
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   607
#        |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   608
#      --<--   --<--
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   609
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   610
#      c   f   |   h
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   611
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   612
#      |   --+--   |   <- at this point, for the sort of "j", the iteration
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   613
#      |     |     |      on the end of inherited(g) is postponed to the
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   614
#      |     e     |      iteration of excl(k)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   615
#      |     |     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   616
#      ---+---     |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   617
#         b        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   618
#         |        |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   619
#         ----+-----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   620
#             |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   621
#             a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   622
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   623
  $ hg init example-8
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   624
  $ cd example-8
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   625
  $ hg debugbuilddag '.:a*a:b*b:c*b:d*d:e*e:f*c/f:g<a+5:h*e/h:i*g/i:j.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   626
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   627
  o    j rank=14
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   628
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   629
  | o    i rank=10
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   630
  | |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   631
  | | o  h rank=6
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   632
  | | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   633
  o | :    g rank=7
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   634
  |\ \ \
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   635
  | o | :  f rank=5
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   636
  | |/ /
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   637
  | o :  e rank=4
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   638
  | | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   639
  | o :  d rank=3
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   640
  | | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   641
  o | :  c rank=3
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   642
  |/ /
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   643
  o /  b rank=2
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   644
  :/
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   645
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   646
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   647
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   648
Display the sort of "g" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   649
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   650
  $ hg test-sts g
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   651
  g,c,f,e,d,b,a, (no-eol)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   652
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   653
Display the sort of "i" for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   654
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   655
  $ hg test-sts i
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   656
  i,e,d,b,h,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   657
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   658
Check that the common part of inherited(g) and excl(k) is iterated over after
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   659
"i":
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   660
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   661
  $ hg test-sts j
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   662
  j,g,c,f,i,e,d,b,h,*,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   663
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   664
Check the leaps of "g".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   665
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   666
  $ hg test-leaps g
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   667
  cf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   668
  $ hg test-leaps g
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   669
  cf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   670
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   671
Check the leaps of "i".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   672
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   673
  $ hg test-leaps i
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   674
  bh
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   675
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   676
  $ hg test-leaps --specific i
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   677
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   678
Check the leaps of "j".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   679
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   680
  $ hg test-leaps j
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   681
  cf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   682
  fi
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   683
  bh
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   684
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   685
  $ hg test-leaps --specific j
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   686
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   687
  $ cd ..
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   688
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   689
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   690
Example 9: postponed iteration of common ancestors between both parts
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   691
=====================================================================
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   692
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   693
This is a combination of example 7 and 8 at the same time.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   694
Both excl(i) and excl(j) share a common part.
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   695
Same with inherited(i) and inherited(j).
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   696
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   697
We test that the walk on the common ancestors in both cases is properly
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   698
postponed when considering sort(k).
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   699
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   700
#            k
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   701
#            |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   702
#        ----<----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   703
#        |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   704
#        i       j
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   705
#        |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   706
#      --<--   --<--
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   707
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   708
#      c   f   g   h
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   709
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   710
#      |   e   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   711
#      |   |   |   |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   712
#      +--]|[---   |   <- rest of excl(i) postponed to excl(j)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   713
#      |   |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   714
#      b   ----+----   <- rest of inherited(i) postponed to inherited(j)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   715
#      |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   716
#      |       d
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   717
#      |       |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   718
#      ----+----
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   719
#          |
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   720
#          a
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   721
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   722
  $ hg init example-9
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   723
  $ cd example-9
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   724
  $ hg debugbuilddag '.:a*a:b*b:c*a:d*d:e*e:f<b+2:g<d+3:h*c/f:i*g/h:j*i/j:k.'
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   725
  $ hg test-log
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   726
  o    k rank=14
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   727
  |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   728
  | o    j rank=9
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   729
  | |\
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   730
  o \ \    i rank=7
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   731
  |\ \ \
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   732
  | | | o  h rank=5
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   733
  | | | :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   734
  | | o :  g rank=4
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   735
  | | : :
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   736
  | o : :  f rank=4
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   737
  | | : :
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   738
  | o---+  e rank=3
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   739
  |  / /
50458
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   740
  | : o  d rank=2
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   741
  | : |
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   742
  o : |  c rank=3
a6522a7de594 stabletailgraph: omit uninteresting linear parts in test log
pacien <pacien.trangirard@pacien.net>
parents: 50457
diff changeset
   743
  :/ /
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   744
  o /  b rank=2
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   745
  |/
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   746
  o  a rank=1
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   747
  
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   748
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   749
Display sort(i) for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   750
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   751
  $ hg test-sts i
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   752
  i,c,b,f,e,d,a, (no-eol)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   753
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   754
Display sort(j) for reference:
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   755
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   756
  $ hg test-sts j
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   757
  j,g,*,b,h,*,d,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   758
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   759
Check that the end of excl(i) is postponed to excl(j), the end of inherited(i)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   760
is postponed to inherited(j) in sort(k):
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   761
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   762
  $ hg test-sts k
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   763
  k,i,c,f,e,j,g,*,b,h,*,d,a, (no-eol) (glob)
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   764
50528
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   765
Check the leaps of "i".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   766
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   767
  $ hg test-leaps i
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   768
  bf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   769
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   770
  $ hg test-leaps --specific i
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   771
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   772
Check the leaps of "j".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   773
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   774
  $ hg test-leaps j
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   775
  bh
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   776
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   777
  $ hg test-leaps --specific j
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   778
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   779
Check the leaps of "k".
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   780
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   781
  $ hg test-leaps k
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   782
  cf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   783
  ej
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   784
  bh
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   785
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   786
  $ hg test-leaps --specific k
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   787
  cf
8fb3e942473a stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net>
parents: 50459
diff changeset
   788
50392
f0d2b18f0274 stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
diff changeset
   789
  $ cd ..