tests/test-rebase-mq-skip.t
author Gregory Szorc <gregory.szorc@gmail.com>
Thu, 13 Oct 2016 12:50:27 +0200
changeset 30155 b7a966ce89ed
parent 27626 157675d0f600
child 30211 6b0741d6d234
permissions -rw-r--r--
changelog: disable delta chains This patch disables delta chains on changelogs. After this patch, new entries on changelogs - including existing changelogs - will be stored as the fulltext of that data (likely compressed). No delta computation will be performed. An overview of delta chains and data justifying this change follows. Revlogs try to store entries as a delta against a previous entry (either a parent revision in the case of generaldelta or the previous physical revision when not using generaldelta). Most of the time this is the correct thing to do: it frequently results in less CPU usage and smaller storage. Delta chains are most effective when the base revision being deltad against is similar to the current data. This tends to occur naturally for manifests and file data, since only small parts of each tend to change with each revision. Changelogs, however, are a different story. Changelog entries represent changesets/commits. And unless commits in a repository are homogonous (same author, changing same files, similar commit messages, etc), a delta from one entry to the next tends to be relatively large compared to the size of the entry. This means that delta chains tend to be short. How short? Here is the full vs delta revision breakdown on some real world repos: Repo % Full % Delta Max Length hg 45.8 54.2 6 mozilla-central 42.4 57.6 8 mozilla-unified 42.5 57.5 17 pypy 46.1 53.9 6 python-zstandard 46.1 53.9 3 (I threw in python-zstandard as an example of a repo that is homogonous. It contains a small Python project with changes all from the same author.) Contrast this with the manifest revlog for these repos, where 99+% of revisions are deltas and delta chains run into the thousands. So delta chains aren't as useful on changelogs. But even a short delta chain may provide benefits. Let's measure that. Delta chains may require less CPU to read revisions if the CPU time spent reading smaller deltas is less than the CPU time used to decompress larger individual entries. We can measure this via `hg perfrevlog -c -d 1` to iterate a revlog to resolve each revision's fulltext. Here are the results of that command on a repo using delta chains in its changelog and on a repo without delta chains: hg (forward) ! wall 0.407008 comb 0.410000 user 0.410000 sys 0.000000 (best of 25) ! wall 0.390061 comb 0.390000 user 0.390000 sys 0.000000 (best of 26) hg (reverse) ! wall 0.515221 comb 0.520000 user 0.520000 sys 0.000000 (best of 19) ! wall 0.400018 comb 0.400000 user 0.390000 sys 0.010000 (best of 25) mozilla-central (forward) ! wall 4.508296 comb 4.490000 user 4.490000 sys 0.000000 (best of 3) ! wall 4.370222 comb 4.370000 user 4.350000 sys 0.020000 (best of 3) mozilla-central (reverse) ! wall 5.758995 comb 5.760000 user 5.720000 sys 0.040000 (best of 3) ! wall 4.346503 comb 4.340000 user 4.320000 sys 0.020000 (best of 3) mozilla-unified (forward) ! wall 4.957088 comb 4.950000 user 4.940000 sys 0.010000 (best of 3) ! wall 4.660528 comb 4.650000 user 4.630000 sys 0.020000 (best of 3) mozilla-unified (reverse) ! wall 6.119827 comb 6.110000 user 6.090000 sys 0.020000 (best of 3) ! wall 4.675136 comb 4.670000 user 4.670000 sys 0.000000 (best of 3) pypy (forward) ! wall 1.231122 comb 1.240000 user 1.230000 sys 0.010000 (best of 8) ! wall 1.164896 comb 1.160000 user 1.160000 sys 0.000000 (best of 9) pypy (reverse) ! wall 1.467049 comb 1.460000 user 1.460000 sys 0.000000 (best of 7) ! wall 1.160200 comb 1.170000 user 1.160000 sys 0.010000 (best of 9) The data clearly shows that it takes less wall and CPU time to resolve revisions when there are no delta chains in the changelogs, regardless of the direction of traversal. Furthermore, not using a delta chain means that fulltext resolution in reverse is as fast as iterating forward. So not using delta chains on the changelog is a clear CPU win for reading operations. An example of a user-visible operation showing this speed-up is revset evaluation. Here are results for `hg perfrevset 'author(gps) or author(mpm)'`: hg ! wall 1.655506 comb 1.660000 user 1.650000 sys 0.010000 (best of 6) ! wall 1.612723 comb 1.610000 user 1.600000 sys 0.010000 (best of 7) mozilla-central ! wall 17.629826 comb 17.640000 user 17.600000 sys 0.040000 (best of 3) ! wall 17.311033 comb 17.300000 user 17.260000 sys 0.040000 (best of 3) What about 00changelog.i size? Repo Delta Chains No Delta Chains hg 7,033,250 6,976,771 mozilla-central 82,978,748 81,574,623 mozilla-unified 88,112,349 86,702,162 pypy 20,740,699 20,659,741 The data shows that removing delta chains from the changelog makes the changelog smaller. Delta chains are also used during changegroup generation. This operation essentially converts a series of revisions to one large delta chain. And changegroup generation is smart: if the delta in the revlog matches what the changegroup is emitting, it will reuse the delta instead of recalculating it. We can measure the impact removing changelog delta chains has on changegroup generation via `hg perfchangegroupchangelog`: hg ! wall 1.589245 comb 1.590000 user 1.590000 sys 0.000000 (best of 7) ! wall 1.788060 comb 1.790000 user 1.790000 sys 0.000000 (best of 6) mozilla-central ! wall 17.382585 comb 17.380000 user 17.340000 sys 0.040000 (best of 3) ! wall 20.161357 comb 20.160000 user 20.120000 sys 0.040000 (best of 3) mozilla-unified ! wall 18.722839 comb 18.720000 user 18.680000 sys 0.040000 (best of 3) ! wall 21.168075 comb 21.170000 user 21.130000 sys 0.040000 (best of 3) pypy ! wall 4.828317 comb 4.830000 user 4.820000 sys 0.010000 (best of 3) ! wall 5.415455 comb 5.420000 user 5.410000 sys 0.010000 (best of 3) The data shows eliminating delta chains makes the changelog part of changegroup generation slower. This is expected since we now have to compute deltas for revisions where we could recycle the delta before. It is worth putting this regression into context of overall changegroup times. Here is the rough total CPU time spent in changegroup generation for various repos while using delta chains on the changelog: Repo CPU Time (s) CPU Time w/ compression hg 4.50 7.05 mozilla-central 111.1 222.0 pypy 28.68 75.5 Before compression, removing delta chains from the changegroup adds ~4.4% overhead to hg changegroup generation, 1.3% to mozilla-central, and 2.0% to pypy. When you factor in zlib compression, these percentages are roughly divided by 2. While the increased CPU usage for changegroup generation is unfortunate, I think it is acceptable because the percentage is small, server operators (those likely impacted most by this) have other mechanisms to mitigate CPU consumption (namely reducing zlib compression level and pre-generated clone bundles), and because there is room to optimize this in the future. For example, we could use the nullid as the base revision, effectively encoding the full revision for each entry in the changegroup. When doing this, `hg perfchangegroupchangelog` nearly halves: mozilla-unified ! wall 21.168075 comb 21.170000 user 21.130000 sys 0.040000 (best of 3) ! wall 11.196461 comb 11.200000 user 11.190000 sys 0.010000 (best of 3) This looks very promising as a future optimization opportunity. It's worth that the changes in test-acl.t to the changegroup part size. This is because revision 6 in the changegroup had a delta chain of length 2 before and after this patch the base revision is nullrev. When the base revision is nullrev, cg2packer.deltaparent() hardcodes the *previous* revision from the changegroup as the delta parent. This caused the delta in the changegroup to switch base revisions, the delta to change, and the size to change accordingly. While the size increased in this case, I think sizes will remain the same on average, as the delta base for changelog revisions doesn't matter too much (as this patch shows). So, I don't consider this a regression.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12785
c7d23b4ca4ba check-code: warning and fixes for whitespace in unified tests
Matt Mackall <mpm@selenic.com>
parents: 12640
diff changeset
     1
This emulates the effects of an hg pull --rebase in which the remote repo
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
     2
already has one local mq patch
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
     3
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
     4
  $ cat >> $HGRCPATH <<EOF
26916
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
     5
  > [format]
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
     6
  > usegeneraldelta=yes
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
     7
  > [extensions]
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
     8
  > rebase=
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
     9
  > mq=
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    10
  > 
15742
65df60a3f96b phases: prevent rebase to rebase immutable changeset.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 12896
diff changeset
    11
  > [phases]
65df60a3f96b phases: prevent rebase to rebase immutable changeset.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 12896
diff changeset
    12
  > publish=False
65df60a3f96b phases: prevent rebase to rebase immutable changeset.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 12896
diff changeset
    13
  > 
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    14
  > [alias]
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    15
  > tglog = log -G --template "{rev}: '{desc}' tags: {tags}\n"
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    16
  > EOF
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    17
11198
b345b1cc124f rebase: use helpers.sh in tests
Matt Mackall <mpm@selenic.com>
parents: 8168
diff changeset
    18
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    19
  $ hg init a
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    20
  $ cd a
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    21
  $ hg qinit -c
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    22
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    23
  $ echo c1 > c1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    24
  $ hg add c1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    25
  $ hg ci -m C1
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    26
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    27
  $ echo r1 > r1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    28
  $ hg add r1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    29
  $ hg ci -m R1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    30
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    31
  $ hg up -q 0
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    32
23515
7856a87bbb02 tests: stabilise mq rebase tests
Mads Kiilerich <madski@unity3d.com>
parents: 21947
diff changeset
    33
  $ hg qnew p0.patch -d '1 0'
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    34
  $ echo p0 > p0
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    35
  $ hg add p0
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    36
  $ hg qref -m P0
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    37
23515
7856a87bbb02 tests: stabilise mq rebase tests
Mads Kiilerich <madski@unity3d.com>
parents: 21947
diff changeset
    38
  $ hg qnew p1.patch -d '2 0'
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    39
  $ echo p1 > p1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    40
  $ hg add p1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    41
  $ hg qref -m P1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    42
17345
4f8054d3171b check-code: fix check for trailing whitespace on sh command lines
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    43
  $ hg export qtip > p1.patch
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    44
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    45
  $ hg up -q -C 1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    46
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    47
  $ hg import p1.patch
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    48
  applying p1.patch
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    49
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    50
  $ rm p1.patch
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    51
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    52
  $ hg up -q -C qtip
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    53
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    54
  $ hg rebase -v
23517
4f18e80d9c30 rebase: show more useful status information while rebasing
Mads Kiilerich <madski@unity3d.com>
parents: 23515
diff changeset
    55
  rebasing 2:13a46ce44f60 "P0" (p0.patch qbase)
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    56
  resolving manifests
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    57
  removing p0
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    58
  getting r1
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    59
  resolving manifests
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    60
  getting p0
23749
a387b0390082 localrepo: show headline notes in commitctx before showing filenames
Mads Kiilerich <madski@unity3d.com>
parents: 23748
diff changeset
    61
  committing files:
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    62
  p0
23749
a387b0390082 localrepo: show headline notes in commitctx before showing filenames
Mads Kiilerich <madski@unity3d.com>
parents: 23748
diff changeset
    63
  committing manifest
a387b0390082 localrepo: show headline notes in commitctx before showing filenames
Mads Kiilerich <madski@unity3d.com>
parents: 23748
diff changeset
    64
  committing changelog
23517
4f18e80d9c30 rebase: show more useful status information while rebasing
Mads Kiilerich <madski@unity3d.com>
parents: 23515
diff changeset
    65
  rebasing 3:148775c71080 "P1" (p1.patch qtip)
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    66
  resolving manifests
23518
2fb0504b8175 rebase: show warning when rebase creates no changes to commit
Mads Kiilerich <madski@unity3d.com>
parents: 23517
diff changeset
    67
  note: rebase of 3:148775c71080 created no changes to commit
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    68
  rebase merging completed
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    69
  updating mq patch p0.patch to 5:9ecc820b1737
23627
7aaf987d9e88 tests: add missing globs for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 23520
diff changeset
    70
  $TESTTMP/a/.hg/patches/p0.patch (glob)
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    71
  2 changesets found
23748
4ab66de46a96 bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents: 23627
diff changeset
    72
  uncompressed size of bundle content:
26916
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    73
       384 (changelog)
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    74
       324 (manifests)
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    75
       129  p0
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    76
       129  p1
23835
aa4a1672583e bundles: do not overwrite existing backup bundles (BC)
Durham Goode <durham@fb.com>
parents: 23749
diff changeset
    77
  saved backup bundle to $TESTTMP/a/.hg/strip-backup/13a46ce44f60-5da6ecfb-backup.hg (glob)
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    78
  2 changesets found
23748
4ab66de46a96 bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents: 23627
diff changeset
    79
  uncompressed size of bundle content:
26916
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    80
       439 (changelog)
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    81
       324 (manifests)
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    82
       129  p0
c7931d8ea29c test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26736
diff changeset
    83
       129  p1
23520
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    84
  adding branch
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    85
  adding changesets
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    86
  adding manifests
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    87
  adding file changes
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    88
  added 2 changesets with 2 changes to 2 files
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    89
  rebase completed
de143427c499 rebase: show a note for updated mq patches
Mads Kiilerich <mads@kiilerich.com>
parents: 23518
diff changeset
    90
  1 revisions have been skipped
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
    91
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    92
  $ hg tglog
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    93
  @  3: 'P0' tags: p0.patch qbase qtip tip
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    94
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    95
  o  2: 'P1' tags: qparent
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    96
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    97
  o  1: 'R1' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    98
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
    99
  o  0: 'C1' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   100
  
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   101
  $ cd ..
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   102
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   103
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   104
  $ hg init b
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   105
  $ cd b
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   106
  $ hg qinit -c
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   107
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   108
  $ for i in r0 r1 r2 r3 r4 r5 r6;
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   109
  > do
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   110
  >     echo $i > $i
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   111
  >     hg ci -Am $i
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   112
  > done
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   113
  adding r0
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   114
  adding r1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   115
  adding r2
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   116
  adding r3
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   117
  adding r4
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   118
  adding r5
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   119
  adding r6
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   120
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   121
  $ hg qimport -r 1:tip
6906
808f03f61ebe Add rebase extension
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
diff changeset
   122
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   123
  $ hg up -q 0
11843
00f8e7837668 rebase: recompute the set of skipped rev when using --continue (issue2330)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 11208
diff changeset
   124
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   125
  $ for i in r1 r3 r7 r8;
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   126
  > do
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   127
  >     echo $i > $i
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   128
  >     hg ci -Am branch2-$i
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   129
  > done
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   130
  adding r1
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   131
  created new head
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   132
  adding r3
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   133
  adding r7
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   134
  adding r8
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   135
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   136
  $ echo somethingelse > r4
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   137
  $ hg ci -Am branch2-r4
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   138
  adding r4
11843
00f8e7837668 rebase: recompute the set of skipped rev when using --continue (issue2330)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 11208
diff changeset
   139
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   140
  $ echo r6 > r6
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   141
  $ hg ci -Am branch2-r6
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   142
  adding r6
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   143
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   144
  $ hg up -q qtip
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   145
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   146
  $ HGMERGE=internal:fail hg rebase
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   147
  rebasing 1:b4bffa6e4776 "r1" (qbase r1)
23518
2fb0504b8175 rebase: show warning when rebase creates no changes to commit
Mads Kiilerich <madski@unity3d.com>
parents: 23517
diff changeset
   148
  note: rebase of 1:b4bffa6e4776 created no changes to commit
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   149
  rebasing 2:c0fd129beb01 "r2" (r2)
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   150
  rebasing 3:6ff5b8feed8e "r3" (r3)
23518
2fb0504b8175 rebase: show warning when rebase creates no changes to commit
Mads Kiilerich <madski@unity3d.com>
parents: 23517
diff changeset
   151
  note: rebase of 3:6ff5b8feed8e created no changes to commit
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   152
  rebasing 4:094320fec554 "r4" (r4)
18933
42b620fc89e2 rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com>
parents: 17345
diff changeset
   153
  unresolved conflicts (see hg resolve, then hg rebase --continue)
18935
e5d9441ec281 dispatch: exit with status 1 for an InterventionRequired exception (bc)
Augie Fackler <raf@durin42.com>
parents: 18933
diff changeset
   154
  [1]
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   155
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   156
  $ HGMERGE=internal:local hg resolve --all
21947
b081decd9062 resolve: add parenthesis around "no more unresolved files" message
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21267
diff changeset
   157
  (no more unresolved files)
27626
157675d0f600 rebase: hook afterresolvedstates
timeless <timeless@mozdev.org>
parents: 26916
diff changeset
   158
  continue: hg rebase --continue
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   159
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   160
  $ hg rebase --continue
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   161
  already rebased 1:b4bffa6e4776 "r1" (qbase r1) as 057f55ff8f44
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   162
  already rebased 2:c0fd129beb01 "r2" (r2) as 1660ab13ce9a
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   163
  already rebased 3:6ff5b8feed8e "r3" (r3) as 1660ab13ce9a
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   164
  rebasing 4:094320fec554 "r4" (r4)
23518
2fb0504b8175 rebase: show warning when rebase creates no changes to commit
Mads Kiilerich <madski@unity3d.com>
parents: 23517
diff changeset
   165
  note: rebase of 4:094320fec554 created no changes to commit
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   166
  rebasing 5:681a378595ba "r5" (r5)
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   167
  rebasing 6:512a1f24768b "r6" (qtip r6)
23518
2fb0504b8175 rebase: show warning when rebase creates no changes to commit
Mads Kiilerich <madski@unity3d.com>
parents: 23517
diff changeset
   168
  note: rebase of 6:512a1f24768b created no changes to commit
23835
aa4a1672583e bundles: do not overwrite existing backup bundles (BC)
Durham Goode <durham@fb.com>
parents: 23749
diff changeset
   169
  saved backup bundle to $TESTTMP/b/.hg/strip-backup/b4bffa6e4776-b9bfb84d-backup.hg (glob)
11843
00f8e7837668 rebase: recompute the set of skipped rev when using --continue (issue2330)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 11208
diff changeset
   170
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   171
  $ hg tglog
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   172
  @  8: 'r5' tags: qtip r5 tip
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   173
  |
26736
143b52fce68e mq: generate patch names from first line of description
Mads Kiilerich <mads@kiilerich.com>
parents: 23835
diff changeset
   174
  o  7: 'r2' tags: qbase r2
12608
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   175
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   176
  o  6: 'branch2-r6' tags: qparent
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   177
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   178
  o  5: 'branch2-r4' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   179
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   180
  o  4: 'branch2-r8' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   181
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   182
  o  3: 'branch2-r7' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   183
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   184
  o  2: 'branch2-r3' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   185
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   186
  o  1: 'branch2-r1' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   187
  |
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   188
  o  0: 'r0' tags:
16b854cb80f1 tests: unify test-rebase*
Adrian Buehlmann <adrian@cadifra.com>
parents: 11843
diff changeset
   189
  
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16509
diff changeset
   190
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16509
diff changeset
   191
  $ cd ..