Mercurial > hg
annotate tests/test-backwards-remove.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 | 4c94b6d0fb1c |
children | 5c2a4f37eace |
rev | line source |
---|---|
11857
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
1 $ hg init |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
2 $ echo This is file a1 > a |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
3 $ hg add a |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11857
diff
changeset
|
4 $ hg commit -m "commit #0" |
11857
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
5 $ ls |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
6 a |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
7 $ echo This is file b1 > b |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
8 $ hg add b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11857
diff
changeset
|
9 $ hg commit -m "commit #1" |
11857
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
10 $ hg co 0 |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
11 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
12 |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
13 B should disappear |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
14 |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
15 $ ls |
9661514f85ae
tests: unify test-backwards-remove
Martin Geisler <mg@lazybytes.net>
parents:
1933
diff
changeset
|
16 a |