Mercurial > hg
annotate tests/test-rebase-templates.t @ 38893:23d582caae30
changegroup: capture revision delta in a data structure
The current changegroup generation code is tightly coupled to
the revlog API. This tight coupling makes it difficult to implement
alternate storage backends without requiring a large surface area
of the revlog API to be exposed. This is not desirable.
In order to support changegroup generation with non-revlog storage,
we'll need to abstract the concept of delta generation.
This commit is the first step down that road. We introduce a
data structure for representing a delta in a changegroup.
The API still leaves a lot to be desired. But at least we now
have separation between data and actions performed on it.
As part of this, we tweak behavior slightly: we no longer
concatenate the delta prefix with the metadata header. Instead,
we track and emit the prefix as a separate chunk. This shouldn't
have any meaningful impact since all the chunks just get sent to
the wire, the compressor, etc.
Because we're introducing a new object, this does add some
overhead to changegroup execution. `hg perfchangegroupchangelog`
on my clone of the Mercurial repo (~40,000 visible revisions in
the changelog) slows down a bit:
! wall 1.268600 comb 1.270000 user 1.270000 sys 0.000000 (best of 8)
! wall 1.419479 comb 1.410000 user 1.410000 sys 0.000000 (best of 8)
With for `hg bundle -t none-v2 -a /dev/null`:
before: real 6.610 secs (user 6.460+0.000 sys 0.140+0.000)
after: real 7.210 secs (user 7.060+0.000 sys 0.140+0.000)
I plan to claw back this regression in future commits. And I may
even do away with this data structure once the refactor is complete.
For now, it makes things easier to comprehend.
Differential Revision: https://phab.mercurial-scm.org/D4075
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 03 Aug 2018 10:05:26 -0700 |
parents | f56a30b844aa |
children | 43c84b816445 |
rev | line source |
---|---|
34883
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
1 Testing templating for rebase command |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
2 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
3 Setup |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
4 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
5 $ cat >> $HGRCPATH <<EOF |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
6 > [extensions] |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
7 > rebase= |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
8 > [experimental] |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
9 > evolution=createmarkers |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
10 > EOF |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
11 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
12 $ hg init repo |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
13 $ cd repo |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
14 $ for ch in a b c d; do echo foo > $ch; hg commit -Aqm "Added "$ch; done |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
15 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
16 $ hg log -G -T "{rev}:{node|short} {desc}" |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
17 @ 3:62615734edd5 Added d |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
18 | |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
19 o 2:28ad74487de9 Added c |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
20 | |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
21 o 1:29becc82797a Added b |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
22 | |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
23 o 0:18d04c59bb5d Added a |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
24 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
25 Getting the JSON output for nodechanges |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
26 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
27 $ hg rebase -s 2 -d 0 -q -Tjson |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
28 [ |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
29 { |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
30 "nodechanges": {"28ad74487de9599d00d81085be739c61fc340652": ["849767420fd5519cf0026232411a943ed03cc9fb"], "62615734edd52f06b6fb9c2beb429e4fe30d57b8": ["df21b32134ba85d86bca590cbe9b8b7cbc346c53"]} |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
31 } |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
32 ] |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
33 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
34 $ hg log -G -T "{rev}:{node|short} {desc}" |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
35 @ 5:df21b32134ba Added d |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
36 | |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
37 o 4:849767420fd5 Added c |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
38 | |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
39 | o 1:29becc82797a Added b |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
40 |/ |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
41 o 0:18d04c59bb5d Added a |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
42 |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
43 $ hg rebase -s 1 -d 5 -q -T "{nodechanges|json}" |
c858afe9c59b
rebase: add support to output nodechanges
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
44 {"29becc82797a4bc11ec8880b58eaecd2ab3e7760": ["d9d6773efc831c274eace04bc13e8e6412517139"]} (no-eol) |
35124
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
45 |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
46 $ hg log -G -T "{rev}:{node|short} {desc}" |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
47 o 6:d9d6773efc83 Added b |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
48 | |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
49 @ 5:df21b32134ba Added d |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
50 | |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
51 o 4:849767420fd5 Added c |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
52 | |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
53 o 0:18d04c59bb5d Added a |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
54 |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
55 |
c157bb0120a9
tests: add test for rebase template showing wrong behavior
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34883
diff
changeset
|
56 $ hg rebase -s 6 -d 4 -q -T "{nodechanges % '{oldnode}:{newnodes % ' {node} '}'}" |
35125
f56a30b844aa
rebase: use fm.formatlist() and fm.formatdict() to support user template
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35124
diff
changeset
|
57 d9d6773efc831c274eace04bc13e8e6412517139: f48cd65c6dc3d2acb55da54402a5b029546e546f (no-eol) |