Mercurial > hg
annotate tests/test-merge2.t @ 37438:7b7ca9ba2de5
commands: don't violate storage abstractions in `manifest --all`
Previously, we asked the store to emit its data files. For modern
repos, this would use fncache to resolve the set of files then would
stat() each file. For my copy of the mozilla-unified repository, this
took 3.3-10s depending on the state of my filesystem cache to render
449,790 items.
The previous behavior was a massive layering violation because it
assumed tracked files would have specific filenames in specific
directories. Alternate storage backends would violate this assumption.
The new behavior scans the changelog entries for the set of files
changed by each commit. It aggregates them into a set and then
sorts and prints the result. This reliably takes ~16.3s on my
machine. ~80% of the time is spent in zlib decompression.
The performance regression is unfortunate. If we want to claw it
back, we can create a proper storage API to query for the set of
tracked files. I'm not opposed to doing that. But I'm in no hurry
because I suspect ~0 people care about the performance of
`hg manifest --all`.
.. perf::
`hg manifest --all` is likely slower due to changing its
implementation to respect storage interface boundaries. If you
are impacted by this regression in a meaningful way, please make
noise on the development mailing list and it can be dealt with.
Differential Revision: https://phab.mercurial-scm.org/D3119
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 04 Apr 2018 21:27:02 -0700 |
parents | f2719b387380 |
children | 1850066f9e36 |
rev | line source |
---|---|
13956
ffb5c09ba822
tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents:
12156
diff
changeset
|
1 $ hg init t |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
2 $ cd t |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
3 $ echo This is file a1 > a |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
4 $ hg add a |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
5 $ hg commit -m "commit #0" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
6 $ echo This is file b1 > b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
7 $ hg add b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
8 $ hg commit -m "commit #1" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
9 $ rm b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
10 $ hg update 0 |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
11 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
12 $ echo This is file b2 > b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
13 $ hg add b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
14 $ hg commit -m "commit #2" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
15 created new head |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
16 $ cd ..; rm -r t |
409 | 17 |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
18 $ mkdir t |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
19 $ cd t |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
20 $ hg init |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
21 $ echo This is file a1 > a |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
22 $ hg add a |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
23 $ hg commit -m "commit #0" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
24 $ echo This is file b1 > b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
25 $ hg add b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
26 $ hg commit -m "commit #1" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
27 $ rm b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
28 $ hg update 0 |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
29 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
30 $ echo This is file b2 > b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
31 $ hg commit -A -m "commit #2" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
32 adding b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
33 created new head |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
34 $ cd ..; rm -r t |
409 | 35 |
13956
ffb5c09ba822
tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents:
12156
diff
changeset
|
36 $ hg init t |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
37 $ cd t |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
38 $ echo This is file a1 > a |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
39 $ hg add a |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
40 $ hg commit -m "commit #0" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
41 $ echo This is file b1 > b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
42 $ hg add b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
43 $ hg commit -m "commit #1" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
44 $ rm b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
45 $ hg remove b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
46 $ hg update 0 |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
47 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
48 $ echo This is file b2 > b |
12156
4c94b6d0fb1c
tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents:
11976
diff
changeset
|
49 $ hg commit -A -m "commit #2" |
11976
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
50 adding b |
b28fc3b3efd6
tests: unify test-merge2
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
3988
diff
changeset
|
51 created new head |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
52 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
53 $ cd .. |