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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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