tests/test-rebase-legacy.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 10 Oct 2019 03:49:33 +0200
changeset 43198 c16fe77e340a
parent 42613 35ebdbb38efb
child 45110 503d0dd2af18
permissions -rw-r--r--
pathcopies: give up any optimization based on `introrev` Between 8a0136f69027 and d98fb3f42f33, we sped up the search for the introduction revision during path copies. However, further checking show that finding the introduction revision is still expensive and that we are better off without it. So we simply drop it and only rely on the linkrev optimisation. I ran `perfpathcopies` on 6989 pair of revision in the pypy repository (`hg perfhelper-pathcopies`. The result is massively in favor of dropping this condition. The result of the copy tracing are unchanged. Attempt to use a smaller changes preserving linkrev usage were unsuccessful, it can return wrong result. The following changesets broke test-mv-cp-st-diff.t - if not f.isintroducedafter(limit): + if limit >= 0 and f.linkrev() < limit: return None Here are various numbers (before this changeset/after this changesets) source destination before after saved-time ratio worth cases e66f24650daf 695dfb0f493b 1.062843 1.246369 -0.183526 1.172675 c979853a3b6a 8d60fe293e79 1.036985 1.196414 -0.159429 1.153743 22349fa2fc33 fbb1c9fd86c0 0.879926 1.038682 -0.158756 1.180420 682b98f3e672 a4878080a536 0.909952 1.063801 -0.153849 1.169074 5adabc9b9848 920958a93997 0.993622 1.147452 -0.153830 1.154817 worse 1% dbfbfcf077e9 aea8f2fd3593 1.016595 1.082999 -0.066404 1.065320 worse 5% c95f1ced15f2 7d29d5e39734 0.453694 0.471156 -0.017462 1.038488 worse 10% 3e144ed1d5b7 2aef0e942480 0.035140 0.037535 -0.002395 1.068156 worse 25% 321fc60db035 801748ba582a 0.009267 0.009325 -0.000058 1.006259 median 2088ce763fc2 e6991321d78b 0.000665 0.000651 0.000014 0.978947 best 25% 915631a97de6 385b31354be6 0.040743 0.040363 0.000380 0.990673 best 10% ad495c36a765 19c10384d3e7 0.431658 0.411490 0.020168 0.953278 best 5% d13ae7d283ae 813c99f810ac 1.141404 1.075346 0.066058 0.942126 best 1% 81593cb4a496 99ae11866969 1.833297 0.063823 1.769474 0.034813 best cases c3b14617fbd7 743a0fcaa4eb 1101.811740 2.735970 1099.075770 0.002483 c3b14617fbd7 9ba6ab77fd29 1116.753953 2.800729 1113.953224 0.002508 058b99d6e81f 57e249b7a3ea 1246.128485 3.042762 1243.085723 0.002442 9a8c361aab49 0354a250d371 1253.111894 3.085796 1250.026098 0.002463 442dbbc53c68 3ec1002a818c 1261.786294 3.138607 1258.647687 0.002487 As one can see, the average case is not really impacted. However, the worth case we get after this changeset are much better than the one we had before it. We have 30 pairs where improvements are above 10 minutes. This reflect in the combined time for all pairs before: 26256s after: 1300s (-95%) If we remove these pathological 30 cases, we still see a significant improvements: before: 1631s after: 1245s (-24%)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42613
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
     1
#testcases continuecommand continueflag
34004
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     2
Test rebase --continue with rebasestate written by legacy client
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     3
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     4
  $ cat >> $HGRCPATH <<EOF
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     5
  > [extensions]
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     6
  > rebase=
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     7
  > drawdag=$TESTDIR/drawdag.py
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     8
  > EOF
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
     9
42613
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    10
#if continueflag
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    11
  $ cat >> $HGRCPATH <<EOF
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    12
  > [alias]
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    13
  > continue = rebase --continue
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    14
  > EOF
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    15
#endif
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    16
34004
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    17
  $ hg init
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    18
  $ hg debugdrawdag <<'EOF'
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    19
  >    D H
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    20
  >    | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    21
  >    C G
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    22
  >    | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    23
  >    B F
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    24
  >    | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    25
  >  Z A E
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    26
  >   \|/
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    27
  >    R
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    28
  > EOF
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    29
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    30
rebasestate generated by a legacy client running "hg rebase -r B+D+E+G+H -d Z"
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    31
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    32
  $ touch .hg/last-message.txt
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    33
  $ cat > .hg/rebasestate <<EOF
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    34
  > 0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    35
  > f424eb6a8c01c4a0c0fba9f863f79b3eb5b4b69f
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    36
  > 0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    37
  > 0
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    38
  > 0
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    39
  > 0
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    40
  > 
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    41
  > 21a6c45028857f500f56ae84fbf40689c429305b:-2
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    42
  > de008c61a447fcfd93f808ef527d933a84048ce7:0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    43
  > c1e6b162678d07d0b204e5c8267d51b4e03b633c:0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    44
  > aeba276fcb7df8e10153a07ee728d5540693f5aa:-3
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    45
  > bd5548558fcf354d37613005737a143871bf3723:-3
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    46
  > d2fa1c02b2401b0e32867f26cce50818a4bd796a:0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    47
  > 6f7a236de6852570cd54649ab62b1012bb78abc8:0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    48
  > 6582e6951a9c48c236f746f186378e36f59f4928:0000000000000000000000000000000000000000
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    49
  > EOF
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    50
42613
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    51
#if continuecommand
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    52
  $ hg continue --dry-run
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    53
  rebase in progress, will be resumed
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    54
#endif
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    55
35ebdbb38efb continue: added support for rebase
Taapas Agrawal <taapas2897@gmail.com>
parents: 35393
diff changeset
    56
  $ hg continue
34004
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    57
  rebasing 4:c1e6b162678d "B" (B)
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    58
  rebasing 8:6f7a236de685 "D" (D)
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    59
  rebasing 2:de008c61a447 "E" (E)
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    60
  rebasing 7:d2fa1c02b240 "G" (G)
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    61
  rebasing 9:6582e6951a9c "H" (H tip)
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    62
  warning: orphaned descendants detected, not stripping c1e6b162678d, de008c61a447
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34004
diff changeset
    63
  saved backup bundle to $TESTTMP/.hg/strip-backup/6f7a236de685-9880a3dc-rebase.hg
34004
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    64
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    65
  $ hg log -G -T '{rev}:{node|short} {desc}\n'
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    66
  o  11:721b8da0a708 H
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    67
  |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    68
  o  10:9d65695ec3c2 G
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    69
  |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    70
  o  9:21c8397a5d68 E
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    71
  |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    72
  | o  8:fc52970345e8 D
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    73
  | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    74
  | o  7:eac96551b107 B
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    75
  |/
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    76
  | o  6:bd5548558fcf C
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    77
  | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    78
  | | o  5:aeba276fcb7d F
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    79
  | | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    80
  | o |  4:c1e6b162678d B
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    81
  | | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    82
  o | |  3:f424eb6a8c01 Z
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    83
  | | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    84
  +---o  2:de008c61a447 E
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    85
  | |
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    86
  | o  1:21a6c4502885 A
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    87
  |/
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    88
  o  0:b41ce7760717 R
af609bb3487f rebase: change internal format to support destination map
Jun Wu <quark@fb.com>
parents:
diff changeset
    89