tests/test-stablesort-branchpoint.t
changeset 3254 00e20077bccf
parent 3246 543708c3f754
child 3257 064738ae1588
equal deleted inserted replaced
3253:8dcb9e929a57 3254:00e20077bccf
       
     1 Test for stable ordering capabilities
       
     2 =====================================
       
     3 
       
     4   $ . $TESTDIR/testlib/pythonpath.sh
       
     5 
       
     6   $ cat << EOF >> $HGRCPATH
       
     7   > [extensions]
       
     8   > hgext3rd.evolve =
       
     9   > [ui]
       
    10   > logtemplate = "{rev} {node|short} {desc} {tags}\n"
       
    11   > [alias]
       
    12   > showsort = debugstablesort --template="{node|short}\n" --method branchpoint
       
    13   > EOF
       
    14 
       
    15 
       
    16 
       
    17   $ checktopo () {
       
    18   >     seen='null';
       
    19   >     for node in `hg showsort --rev "$1"`; do
       
    20   >         echo "=== checking $node ===";
       
    21   >         hg log --rev "($seen) and $node::";
       
    22   >         seen="${seen}+${node}";
       
    23   >     done;
       
    24   > }
       
    25 
       
    26   $ cat << EOF >> random_rev.py
       
    27   > import random
       
    28   > import sys
       
    29   > 
       
    30   > loop = int(sys.argv[1])
       
    31   > var = int(sys.argv[2])
       
    32   > for x in range(loop):
       
    33   >     print(x + random.randint(0, var))
       
    34   > EOF
       
    35 
       
    36 Basic tests
       
    37 ===========
       
    38 (no criss cross merge)
       
    39 
       
    40 Smoke tests
       
    41 -----------
       
    42 
       
    43 Starts with a "simple case"
       
    44 
       
    45   $ hg init repo_A
       
    46   $ cd repo_A
       
    47   $ hg debugbuilddag '
       
    48   > ..:g   # 2 nodes, tagged "g"
       
    49   > <2.:h   # another node base one -2 -> 0, tagged "h"
       
    50   > *1/2:m # merge -1 and -2 (1, 2), tagged "m"
       
    51   > <2+2:i # 2 nodes based on -2, tag head as "i"
       
    52   > .:c    # 1 node tagged "c"
       
    53   > <m+3:a # 3 nodes base on the "m" tag
       
    54   > <2.:b  # 1 node based on -2; tagged "b"
       
    55   > <m+2:d # 2 nodes from "m" tagged "d"
       
    56   > <2.:e  # 1 node based on -2, tagged "e"
       
    57   > <m+1:f # 1 node based on "m" tagged "f"
       
    58   > <i/f   # merge "i" and "f"
       
    59   > '
       
    60   $ hg log -G
       
    61   o    15 1d8d22637c2d r15 tip
       
    62   |\
       
    63   | o  14 43227190fef8 r14 f
       
    64   | |
       
    65   | | o  13 b4594d867745 r13 e
       
    66   | | |
       
    67   | | | o  12 e46a4836065c r12 d
       
    68   | | |/
       
    69   | | o  11 bab5d5bf48bd r11
       
    70   | |/
       
    71   | | o  10 ff43616e5d0f r10 b
       
    72   | | |
       
    73   | | | o  9 dcbb326fdec2 r9 a
       
    74   | | |/
       
    75   | | o  8 d62d843c9a01 r8
       
    76   | | |
       
    77   | | o  7 e7d9710d9fc6 r7
       
    78   | |/
       
    79   +---o  6 2702dd0c91e7 r6 c
       
    80   | |
       
    81   o |  5 f0f3ef9a6cd5 r5 i
       
    82   | |
       
    83   o |  4 4c748ffd1a46 r4
       
    84   | |
       
    85   | o  3 2b6d669947cd r3 m
       
    86   |/|
       
    87   o |  2 fa942426a6fd r2 h
       
    88   | |
       
    89   | o  1 66f7d451a68b r1 g
       
    90   |/
       
    91   o  0 1ea73414a91b r0
       
    92   
       
    93   $ hg debugdepth -r 'all()'
       
    94   1ea73414a91b 1
       
    95   66f7d451a68b 2
       
    96   fa942426a6fd 2
       
    97   2b6d669947cd 4
       
    98   4c748ffd1a46 3
       
    99   f0f3ef9a6cd5 4
       
   100   2702dd0c91e7 5
       
   101   e7d9710d9fc6 5
       
   102   d62d843c9a01 6
       
   103   dcbb326fdec2 7
       
   104   ff43616e5d0f 7
       
   105   bab5d5bf48bd 5
       
   106   e46a4836065c 6
       
   107   b4594d867745 6
       
   108   43227190fef8 5
       
   109   1d8d22637c2d 8
       
   110   $ hg showsort --rev 'all()' --traceback
       
   111   1ea73414a91b
       
   112   66f7d451a68b
       
   113   fa942426a6fd
       
   114   2b6d669947cd
       
   115   43227190fef8
       
   116   bab5d5bf48bd
       
   117   b4594d867745
       
   118   e46a4836065c
       
   119   e7d9710d9fc6
       
   120   d62d843c9a01
       
   121   dcbb326fdec2
       
   122   ff43616e5d0f
       
   123   4c748ffd1a46
       
   124   f0f3ef9a6cd5
       
   125   1d8d22637c2d
       
   126   2702dd0c91e7
       
   127 
       
   128 Verify the topological order
       
   129 ----------------------------
       
   130 
       
   131 Check we we did not issued a node before on ancestor
       
   132 
       
   133 output of log should be empty
       
   134 
       
   135   $ checktopo 'all()'
       
   136   === checking 1ea73414a91b ===
       
   137   === checking 66f7d451a68b ===
       
   138   === checking fa942426a6fd ===
       
   139   === checking 2b6d669947cd ===
       
   140   === checking 43227190fef8 ===
       
   141   === checking bab5d5bf48bd ===
       
   142   === checking b4594d867745 ===
       
   143   === checking e46a4836065c ===
       
   144   === checking e7d9710d9fc6 ===
       
   145   === checking d62d843c9a01 ===
       
   146   === checking dcbb326fdec2 ===
       
   147   === checking ff43616e5d0f ===
       
   148   === checking 4c748ffd1a46 ===
       
   149   === checking f0f3ef9a6cd5 ===
       
   150   === checking 1d8d22637c2d ===
       
   151   === checking 2702dd0c91e7 ===
       
   152 
       
   153 Check stability
       
   154 ===============
       
   155 
       
   156 have repo with changesets in orders
       
   157 
       
   158   $ cd ..
       
   159   $ hg -R repo_A log -G > A.log
       
   160   $ hg clone repo_A repo_B --rev 5
       
   161   adding changesets
       
   162   adding manifests
       
   163   adding file changes
       
   164   added 4 changesets with 0 changes to 0 files
       
   165   new changesets 1ea73414a91b:f0f3ef9a6cd5
       
   166   updating to branch default
       
   167   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   168   $ hg -R repo_B pull --rev 13
       
   169   pulling from $TESTTMP/repo_A (glob)
       
   170   searching for changes
       
   171   adding changesets
       
   172   adding manifests
       
   173   adding file changes
       
   174   added 4 changesets with 0 changes to 0 files (+1 heads)
       
   175   new changesets 66f7d451a68b:b4594d867745
       
   176   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   177   $ hg -R repo_B pull --rev 14
       
   178   pulling from $TESTTMP/repo_A (glob)
       
   179   searching for changes
       
   180   adding changesets
       
   181   adding manifests
       
   182   adding file changes
       
   183   added 1 changesets with 0 changes to 0 files (+1 heads)
       
   184   new changesets 43227190fef8
       
   185   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   186   $ hg -R repo_B pull
       
   187   pulling from $TESTTMP/repo_A (glob)
       
   188   searching for changes
       
   189   adding changesets
       
   190   adding manifests
       
   191   adding file changes
       
   192   added 7 changesets with 0 changes to 0 files (+3 heads)
       
   193   new changesets 2702dd0c91e7:1d8d22637c2d
       
   194   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   195   $ hg -R repo_B log -G
       
   196   o    15 1d8d22637c2d r15 tip
       
   197   |\
       
   198   | | o  14 e46a4836065c r12
       
   199   | | |
       
   200   | | | o  13 ff43616e5d0f r10
       
   201   | | | |
       
   202   | | | | o  12 dcbb326fdec2 r9
       
   203   | | | |/
       
   204   | | | o  11 d62d843c9a01 r8
       
   205   | | | |
       
   206   | | | o  10 e7d9710d9fc6 r7
       
   207   | | | |
       
   208   +-------o  9 2702dd0c91e7 r6
       
   209   | | | |
       
   210   | o---+  8 43227190fef8 r14
       
   211   |  / /
       
   212   | +---o  7 b4594d867745 r13
       
   213   | | |
       
   214   | o |  6 bab5d5bf48bd r11
       
   215   | |/
       
   216   | o    5 2b6d669947cd r3
       
   217   | |\
       
   218   | | o  4 66f7d451a68b r1
       
   219   | | |
       
   220   @ | |  3 f0f3ef9a6cd5 r5
       
   221   | | |
       
   222   o | |  2 4c748ffd1a46 r4
       
   223   |/ /
       
   224   o /  1 fa942426a6fd r2
       
   225   |/
       
   226   o  0 1ea73414a91b r0
       
   227   
       
   228   $ hg -R repo_B debugdepth -r 'all()'
       
   229   1ea73414a91b 1
       
   230   fa942426a6fd 2
       
   231   4c748ffd1a46 3
       
   232   f0f3ef9a6cd5 4
       
   233   66f7d451a68b 2
       
   234   2b6d669947cd 4
       
   235   bab5d5bf48bd 5
       
   236   b4594d867745 6
       
   237   43227190fef8 5
       
   238   2702dd0c91e7 5
       
   239   e7d9710d9fc6 5
       
   240   d62d843c9a01 6
       
   241   dcbb326fdec2 7
       
   242   ff43616e5d0f 7
       
   243   e46a4836065c 6
       
   244   1d8d22637c2d 8
       
   245   $ hg -R repo_B log -G > B.log
       
   246 
       
   247   $ hg clone repo_A repo_C --rev 10
       
   248   adding changesets
       
   249   adding manifests
       
   250   adding file changes
       
   251   added 7 changesets with 0 changes to 0 files
       
   252   new changesets 1ea73414a91b:ff43616e5d0f
       
   253   updating to branch default
       
   254   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   255   $ hg -R repo_C pull --rev 12
       
   256   pulling from $TESTTMP/repo_A (glob)
       
   257   searching for changes
       
   258   adding changesets
       
   259   adding manifests
       
   260   adding file changes
       
   261   added 2 changesets with 0 changes to 0 files (+1 heads)
       
   262   new changesets bab5d5bf48bd:e46a4836065c
       
   263   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   264   $ hg -R repo_C pull --rev 15
       
   265   pulling from $TESTTMP/repo_A (glob)
       
   266   searching for changes
       
   267   adding changesets
       
   268   adding manifests
       
   269   adding file changes
       
   270   added 4 changesets with 0 changes to 0 files (+1 heads)
       
   271   new changesets 4c748ffd1a46:1d8d22637c2d
       
   272   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   273   $ hg -R repo_C pull
       
   274   pulling from $TESTTMP/repo_A (glob)
       
   275   searching for changes
       
   276   adding changesets
       
   277   adding manifests
       
   278   adding file changes
       
   279   added 3 changesets with 0 changes to 0 files (+3 heads)
       
   280   new changesets 2702dd0c91e7:b4594d867745
       
   281   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   282   $ hg -R repo_C log -G
       
   283   o  15 b4594d867745 r13 tip
       
   284   |
       
   285   | o  14 dcbb326fdec2 r9
       
   286   | |
       
   287   | | o  13 2702dd0c91e7 r6
       
   288   | | |
       
   289   | | | o  12 1d8d22637c2d r15
       
   290   | | |/|
       
   291   | | | o  11 43227190fef8 r14
       
   292   | | | |
       
   293   | | o |  10 f0f3ef9a6cd5 r5
       
   294   | | | |
       
   295   | | o |  9 4c748ffd1a46 r4
       
   296   | | | |
       
   297   +-------o  8 e46a4836065c r12
       
   298   | | | |
       
   299   o-----+  7 bab5d5bf48bd r11
       
   300    / / /
       
   301   +-----@  6 ff43616e5d0f r10
       
   302   | | |
       
   303   o | |  5 d62d843c9a01 r8
       
   304   | | |
       
   305   o---+  4 e7d9710d9fc6 r7
       
   306    / /
       
   307   | o  3 2b6d669947cd r3
       
   308   |/|
       
   309   o |  2 fa942426a6fd r2
       
   310   | |
       
   311   | o  1 66f7d451a68b r1
       
   312   |/
       
   313   o  0 1ea73414a91b r0
       
   314   
       
   315   $ hg -R repo_C log -G > C.log
       
   316 
       
   317   $ hg clone repo_A repo_D --rev 2
       
   318   adding changesets
       
   319   adding manifests
       
   320   adding file changes
       
   321   added 2 changesets with 0 changes to 0 files
       
   322   new changesets 1ea73414a91b:fa942426a6fd
       
   323   updating to branch default
       
   324   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   325   $ hg -R repo_D pull --rev 10
       
   326   pulling from $TESTTMP/repo_A (glob)
       
   327   searching for changes
       
   328   adding changesets
       
   329   adding manifests
       
   330   adding file changes
       
   331   added 5 changesets with 0 changes to 0 files
       
   332   new changesets 66f7d451a68b:ff43616e5d0f
       
   333   (run 'hg update' to get a working copy)
       
   334   $ hg -R repo_D pull --rev 15
       
   335   pulling from $TESTTMP/repo_A (glob)
       
   336   searching for changes
       
   337   adding changesets
       
   338   adding manifests
       
   339   adding file changes
       
   340   added 4 changesets with 0 changes to 0 files (+1 heads)
       
   341   new changesets 4c748ffd1a46:1d8d22637c2d
       
   342   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   343   $ hg -R repo_D pull
       
   344   pulling from $TESTTMP/repo_A (glob)
       
   345   searching for changes
       
   346   adding changesets
       
   347   adding manifests
       
   348   adding file changes
       
   349   added 5 changesets with 0 changes to 0 files (+4 heads)
       
   350   new changesets 2702dd0c91e7:b4594d867745
       
   351   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   352   $ hg -R repo_D log -G
       
   353   o  15 b4594d867745 r13 tip
       
   354   |
       
   355   | o  14 e46a4836065c r12
       
   356   |/
       
   357   o  13 bab5d5bf48bd r11
       
   358   |
       
   359   | o  12 dcbb326fdec2 r9
       
   360   | |
       
   361   | | o  11 2702dd0c91e7 r6
       
   362   | | |
       
   363   | | | o  10 1d8d22637c2d r15
       
   364   | | |/|
       
   365   +-----o  9 43227190fef8 r14
       
   366   | | |
       
   367   | | o  8 f0f3ef9a6cd5 r5
       
   368   | | |
       
   369   | | o  7 4c748ffd1a46 r4
       
   370   | | |
       
   371   | +---o  6 ff43616e5d0f r10
       
   372   | | |
       
   373   | o |  5 d62d843c9a01 r8
       
   374   | | |
       
   375   | o |  4 e7d9710d9fc6 r7
       
   376   |/ /
       
   377   o |  3 2b6d669947cd r3
       
   378   |\|
       
   379   o |  2 66f7d451a68b r1
       
   380   | |
       
   381   | @  1 fa942426a6fd r2
       
   382   |/
       
   383   o  0 1ea73414a91b r0
       
   384   
       
   385   $ hg -R repo_D log -G > D.log
       
   386 
       
   387 check the log output are different
       
   388 
       
   389   $ python "$RUNTESTDIR/md5sum.py" *.log
       
   390   55919ebc9c02f28070cf3255b1690f8c  A.log
       
   391   c6244b76a60d0707767dc71780e544f3  B.log
       
   392   4d8b08b8c50ecbdd2460a62e5852d84d  C.log
       
   393   0f327003593b50b9591bea8ee28acb81  D.log
       
   394 
       
   395 bug stable ordering should be identical
       
   396 ---------------------------------------
       
   397 
       
   398   $ repos="A B C D "
       
   399 
       
   400 for 'all()'
       
   401 
       
   402   $ for x in $repos; do
       
   403   >     echo $x
       
   404   >     hg -R repo_$x showsort --rev 'all()' > ${x}.all.order;
       
   405   > done
       
   406   A
       
   407   B
       
   408   C
       
   409   D
       
   410 
       
   411   $ python "$RUNTESTDIR/md5sum.py" *.all.order
       
   412   0c6b2e6f15249c0359b0f93e28c5bd1c  A.all.order
       
   413   0c6b2e6f15249c0359b0f93e28c5bd1c  B.all.order
       
   414   0c6b2e6f15249c0359b0f93e28c5bd1c  C.all.order
       
   415   0c6b2e6f15249c0359b0f93e28c5bd1c  D.all.order
       
   416 
       
   417 one specific head
       
   418 
       
   419   $ for x in $repos; do
       
   420   >     hg -R repo_$x showsort --rev 'b4594d867745' > ${x}.b4594d867745.order;
       
   421   > done
       
   422 
       
   423   $ python "$RUNTESTDIR/md5sum.py" *.b4594d867745.order
       
   424   5c40900a22008f24eab8dfe2f30ad79f  A.b4594d867745.order
       
   425   5c40900a22008f24eab8dfe2f30ad79f  B.b4594d867745.order
       
   426   5c40900a22008f24eab8dfe2f30ad79f  C.b4594d867745.order
       
   427   5c40900a22008f24eab8dfe2f30ad79f  D.b4594d867745.order
       
   428 
       
   429 one secific heads, that is a merge
       
   430 
       
   431   $ for x in $repos; do
       
   432   >     hg -R repo_$x showsort --rev '1d8d22637c2d' > ${x}.1d8d22637c2d.order;
       
   433   > done
       
   434 
       
   435   $ python "$RUNTESTDIR/md5sum.py" *.1d8d22637c2d.order
       
   436   77dc20a6f86db9103df8edaae9ad2754  A.1d8d22637c2d.order
       
   437   77dc20a6f86db9103df8edaae9ad2754  B.1d8d22637c2d.order
       
   438   77dc20a6f86db9103df8edaae9ad2754  C.1d8d22637c2d.order
       
   439   77dc20a6f86db9103df8edaae9ad2754  D.1d8d22637c2d.order
       
   440 
       
   441 changeset that are not heads
       
   442 
       
   443   $ for x in $repos; do
       
   444   >     hg -R repo_$x showsort --rev 'e7d9710d9fc6+43227190fef8' > ${x}.non-heads.order;
       
   445   > done
       
   446 
       
   447   $ python "$RUNTESTDIR/md5sum.py" *.non-heads.order
       
   448   94e0ea8cdade135dabde4ec5e9954329  A.non-heads.order
       
   449   94e0ea8cdade135dabde4ec5e9954329  B.non-heads.order
       
   450   94e0ea8cdade135dabde4ec5e9954329  C.non-heads.order
       
   451   94e0ea8cdade135dabde4ec5e9954329  D.non-heads.order
       
   452 
       
   453 Check with different subset
       
   454 
       
   455   $ hg clone repo_A repo_E --rev "43227190fef8"
       
   456   adding changesets
       
   457   adding manifests
       
   458   adding file changes
       
   459   added 5 changesets with 0 changes to 0 files
       
   460   new changesets 1ea73414a91b:43227190fef8
       
   461   updating to branch default
       
   462   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   463   $ hg -R repo_E pull --rev e7d9710d9fc6
       
   464   pulling from $TESTTMP/repo_A (glob)
       
   465   searching for changes
       
   466   adding changesets
       
   467   adding manifests
       
   468   adding file changes
       
   469   added 1 changesets with 0 changes to 0 files (+1 heads)
       
   470   new changesets e7d9710d9fc6
       
   471   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   472 
       
   473   $ hg clone repo_A repo_F --rev "1d8d22637c2d"
       
   474   adding changesets
       
   475   adding manifests
       
   476   adding file changes
       
   477   added 8 changesets with 0 changes to 0 files
       
   478   new changesets 1ea73414a91b:1d8d22637c2d
       
   479   updating to branch default
       
   480   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   481   $ hg -R repo_F pull --rev d62d843c9a01
       
   482   pulling from $TESTTMP/repo_A (glob)
       
   483   searching for changes
       
   484   adding changesets
       
   485   adding manifests
       
   486   adding file changes
       
   487   added 2 changesets with 0 changes to 0 files (+1 heads)
       
   488   new changesets e7d9710d9fc6:d62d843c9a01
       
   489   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   490 
       
   491   $ hg clone repo_A repo_G --rev "e7d9710d9fc6"
       
   492   adding changesets
       
   493   adding manifests
       
   494   adding file changes
       
   495   added 5 changesets with 0 changes to 0 files
       
   496   new changesets 1ea73414a91b:e7d9710d9fc6
       
   497   updating to branch default
       
   498   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   499   $ hg -R repo_G pull --rev 43227190fef8
       
   500   pulling from $TESTTMP/repo_A (glob)
       
   501   searching for changes
       
   502   adding changesets
       
   503   adding manifests
       
   504   adding file changes
       
   505   added 1 changesets with 0 changes to 0 files (+1 heads)
       
   506   new changesets 43227190fef8
       
   507   (run 'hg heads' to see heads, 'hg merge' to merge)
       
   508   $ hg -R repo_G pull --rev 2702dd0c91e7
       
   509   pulling from $TESTTMP/repo_A (glob)
       
   510   searching for changes
       
   511   adding changesets
       
   512   adding manifests
       
   513   adding file changes
       
   514   added 3 changesets with 0 changes to 0 files (+1 heads)
       
   515   new changesets 4c748ffd1a46:2702dd0c91e7
       
   516   (run 'hg heads .' to see heads, 'hg merge' to merge)
       
   517 
       
   518   $ for x in E F G; do
       
   519   >     hg -R repo_$x showsort --rev 'e7d9710d9fc6+43227190fef8' > ${x}.non-heads.order;
       
   520   > done
       
   521 
       
   522   $ python "$RUNTESTDIR/md5sum.py" *.non-heads.order
       
   523   94e0ea8cdade135dabde4ec5e9954329  A.non-heads.order
       
   524   94e0ea8cdade135dabde4ec5e9954329  B.non-heads.order
       
   525   94e0ea8cdade135dabde4ec5e9954329  C.non-heads.order
       
   526   94e0ea8cdade135dabde4ec5e9954329  D.non-heads.order
       
   527   94e0ea8cdade135dabde4ec5e9954329  E.non-heads.order
       
   528   94e0ea8cdade135dabde4ec5e9954329  F.non-heads.order
       
   529   94e0ea8cdade135dabde4ec5e9954329  G.non-heads.order
       
   530 
       
   531 Multiple recursions
       
   532 ===================
       
   533 
       
   534   $ hg init recursion_A
       
   535   $ cd recursion_A
       
   536   $ hg debugbuilddag '
       
   537   > .:base
       
   538   > +3:A
       
   539   > <base.:B
       
   540   > +2/A:C
       
   541   > <A+2:D
       
   542   > <B./D:E
       
   543   > +3:F
       
   544   > <C+3/E
       
   545   > +2
       
   546   > '
       
   547   $ hg log -G
       
   548   o  20 160a7a0adbf4 r20 tip
       
   549   |
       
   550   o  19 1c645e73dbc6 r19
       
   551   |
       
   552   o    18 0496f0a6a143 r18
       
   553   |\
       
   554   | o  17 d64d500024d1 r17
       
   555   | |
       
   556   | o  16 4dbf739dd63f r16
       
   557   | |
       
   558   | o  15 9fff0871d230 r15
       
   559   | |
       
   560   | | o  14 4bbfc6078919 r14 F
       
   561   | | |
       
   562   | | o  13 013b27f11536 r13
       
   563   | | |
       
   564   +---o  12 a66b68853635 r12
       
   565   | |
       
   566   o |    11 001194dd78d5 r11 E
       
   567   |\ \
       
   568   | o |  10 6ee532b68cfa r10
       
   569   | | |
       
   570   o | |  9 529dfc5bb875 r9 D
       
   571   | | |
       
   572   o | |  8 abf57d94268b r8
       
   573   | | |
       
   574   +---o  7 5f18015f9110 r7 C
       
   575   | | |
       
   576   | | o  6 a2f58e9c1e56 r6
       
   577   | | |
       
   578   | | o  5 3a367db1fabc r5
       
   579   | |/
       
   580   | o  4 e7bd5218ca15 r4 B
       
   581   | |
       
   582   o |  3 2dc09a01254d r3 A
       
   583   | |
       
   584   o |  2 01241442b3c2 r2
       
   585   | |
       
   586   o |  1 66f7d451a68b r1
       
   587   |/
       
   588   o  0 1ea73414a91b r0 base
       
   589   
       
   590   $ hg debugdepth -r 'all()'
       
   591   1ea73414a91b 1
       
   592   66f7d451a68b 2
       
   593   01241442b3c2 3
       
   594   2dc09a01254d 4
       
   595   e7bd5218ca15 2
       
   596   3a367db1fabc 3
       
   597   a2f58e9c1e56 4
       
   598   5f18015f9110 8
       
   599   abf57d94268b 5
       
   600   529dfc5bb875 6
       
   601   6ee532b68cfa 3
       
   602   001194dd78d5 9
       
   603   a66b68853635 10
       
   604   013b27f11536 11
       
   605   4bbfc6078919 12
       
   606   9fff0871d230 9
       
   607   4dbf739dd63f 10
       
   608   d64d500024d1 11
       
   609   0496f0a6a143 16
       
   610   1c645e73dbc6 17
       
   611   160a7a0adbf4 18
       
   612   $ hg showsort --rev 'all()'
       
   613   1ea73414a91b
       
   614   66f7d451a68b
       
   615   01241442b3c2
       
   616   2dc09a01254d
       
   617   abf57d94268b
       
   618   529dfc5bb875
       
   619   e7bd5218ca15
       
   620   3a367db1fabc
       
   621   a2f58e9c1e56
       
   622   5f18015f9110
       
   623   9fff0871d230
       
   624   4dbf739dd63f
       
   625   d64d500024d1
       
   626   6ee532b68cfa
       
   627   001194dd78d5
       
   628   0496f0a6a143
       
   629   1c645e73dbc6
       
   630   160a7a0adbf4
       
   631   a66b68853635
       
   632   013b27f11536
       
   633   4bbfc6078919
       
   634   $ checktopo 'all()'
       
   635   === checking 1ea73414a91b ===
       
   636   === checking 66f7d451a68b ===
       
   637   === checking 01241442b3c2 ===
       
   638   === checking 2dc09a01254d ===
       
   639   === checking abf57d94268b ===
       
   640   === checking 529dfc5bb875 ===
       
   641   === checking e7bd5218ca15 ===
       
   642   === checking 3a367db1fabc ===
       
   643   === checking a2f58e9c1e56 ===
       
   644   === checking 5f18015f9110 ===
       
   645   === checking 9fff0871d230 ===
       
   646   === checking 4dbf739dd63f ===
       
   647   === checking d64d500024d1 ===
       
   648   === checking 6ee532b68cfa ===
       
   649   === checking 001194dd78d5 ===
       
   650   === checking 0496f0a6a143 ===
       
   651   === checking 1c645e73dbc6 ===
       
   652   === checking 160a7a0adbf4 ===
       
   653   === checking a66b68853635 ===
       
   654   === checking 013b27f11536 ===
       
   655   === checking 4bbfc6078919 ===
       
   656   $ hg showsort --rev 'all()' > ../multiple.source.order
       
   657   $ hg log -r tip
       
   658   20 160a7a0adbf4 r20 tip
       
   659   $ cd ..
       
   660 
       
   661   $ hg clone recursion_A recursion_random --rev 0
       
   662   adding changesets
       
   663   adding manifests
       
   664   adding file changes
       
   665   added 1 changesets with 0 changes to 0 files
       
   666   new changesets 1ea73414a91b
       
   667   updating to branch default
       
   668   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   669   $ cd recursion_random
       
   670   $ for x in `python ../random_rev.py 15 5`; do
       
   671   >   # using python to benefit from the random seed
       
   672   >   hg pull -r $x --quiet
       
   673   > done;
       
   674   $ hg pull --quiet
       
   675   $ hg showsort --rev 'all()' > ../multiple.random.order
       
   676   $ python "$RUNTESTDIR/md5sum.py" ../multiple.*.order
       
   677   6ff802a0a5f0a3ddd82b25f860238fbd  ../multiple.random.order
       
   678   6ff802a0a5f0a3ddd82b25f860238fbd  ../multiple.source.order
       
   679   $ hg showsort --rev 'all()'
       
   680   1ea73414a91b
       
   681   66f7d451a68b
       
   682   01241442b3c2
       
   683   2dc09a01254d
       
   684   abf57d94268b
       
   685   529dfc5bb875
       
   686   e7bd5218ca15
       
   687   3a367db1fabc
       
   688   a2f58e9c1e56
       
   689   5f18015f9110
       
   690   9fff0871d230
       
   691   4dbf739dd63f
       
   692   d64d500024d1
       
   693   6ee532b68cfa
       
   694   001194dd78d5
       
   695   0496f0a6a143
       
   696   1c645e73dbc6
       
   697   160a7a0adbf4
       
   698   a66b68853635
       
   699   013b27f11536
       
   700   4bbfc6078919
       
   701   $ cd ..
       
   702 
       
   703 
       
   704 Test behavior with oedipus merges
       
   705 =================================
       
   706 
       
   707   $ hg init recursion_oedipus
       
   708   $ cd recursion_oedipus
       
   709   $ echo base > base
       
   710   $ hg add base
       
   711   $ hg ci -m base
       
   712   $ hg branch foo
       
   713   marked working directory as branch foo
       
   714   (branches are permanent and global, did you want a bookmark?)
       
   715   $ echo foo1 > foo1
       
   716   $ hg add foo1
       
   717   $ hg ci -m foo1
       
   718   $ echo foo2 > foo2
       
   719   $ hg add foo2
       
   720   $ hg ci -m foo2
       
   721   $ hg up default
       
   722   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   723   $ hg merge foo
       
   724   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   725   (branch merge, don't forget to commit)
       
   726   $ hg ci -m oedipus_merge
       
   727   $ echo default1 > default1
       
   728   $ hg add default1
       
   729   $ hg ci -m default1
       
   730   $ hg log -G 
       
   731   @  4 7f2454f6b04f default1 tip
       
   732   |
       
   733   o    3 ed776db7ed63 oedipus_merge
       
   734   |\
       
   735   | o  2 0dedbcd995b6 foo2
       
   736   | |
       
   737   | o  1 47da0f2c25e2 foo1
       
   738   |/
       
   739   o  0 d20a80d4def3 base
       
   740   
       
   741   $ hg debugdepth -r 'all()'
       
   742   d20a80d4def3 1
       
   743   47da0f2c25e2 2
       
   744   0dedbcd995b6 3
       
   745   ed776db7ed63 4
       
   746   7f2454f6b04f 5
       
   747   $ hg showsort --rev '.'
       
   748   d20a80d4def3
       
   749   47da0f2c25e2
       
   750   0dedbcd995b6
       
   751   ed776db7ed63
       
   752   7f2454f6b04f