Mercurial > hg
annotate tests/test-gpg.t @ 24735:07200e3332a1
tags: extract .hgtags filenodes cache to a standalone file
Resolution of .hgtags filenodes values has historically been a
performance pain point for large repositories, where reading individual
manifests can take over 100ms. Multiplied by hundreds or even thousands
of heads and resolving .hgtags filenodes becomes a performance issue.
This patch establishes a standalone cache file holding the .hgtags
filenodes for each changeset. After this patch, the .hgtags filenode
for any particular changeset should only have to be computed once
during the lifetime of the repository.
The introduced hgtagsfnodes1 cache file is modeled after the rev branch
cache: the cache is effectively an array of entries consisting of a
changeset fragment and the filenode for a revision. The file grows in
proportion to the length of the repository (24 bytes per changeset) and
is truncated when the repository is stripped. The file is not written
unless tag info is requested and tags have changed since last time.
This patch partially addresses issue4550. Future patches will split the
"tags" cache file into per-filter files and will refactor the cache
format to not capture the .hgtags fnodes, as these are now stored in
the hgtagsfnodes1 cache. This patch is capable of standing alone. We
should not have to wait on the tags cache filter split and format
refactor for this patch to land.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 15 Apr 2015 17:42:38 -0400 |
parents | 7a9cbb315d84 |
children | 4d2b9b304ad0 |
rev | line source |
---|---|
22046
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
21711
diff
changeset
|
1 #require gpg |
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
21711
diff
changeset
|
2 |
12428 | 3 Test the GPG extension |
8809 | 4 |
12428 | 5 $ cat <<EOF >> $HGRCPATH |
6 > [extensions] | |
7 > gpg= | |
8 > | |
9 > [gpg] | |
16350
4f795f5fbb0b
tests: make tests work if directory contains special characters
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16349
diff
changeset
|
10 > cmd=gpg --no-permission-warning --no-secmem-warning --no-auto-check-trustdb --homedir "$TESTDIR/gpg" |
12428 | 11 > EOF |
12 $ hg init r | |
13 $ cd r | |
14 $ echo foo > foo | |
15 $ hg ci -Amfoo | |
16 adding foo | |
8809 | 17 |
12428 | 18 $ hg sigs |
19 | |
21711
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
20 $ HGEDITOR=cat hg sign -e 0 |
16927 | 21 signing 0:e63c23eaa88a |
21711
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
22 Added signature for changeset e63c23eaa88a |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
23 |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
24 |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
25 HG: Enter commit message. Lines beginning with 'HG:' are removed. |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
26 HG: Leave message empty to abort commit. |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
27 HG: -- |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
28 HG: user: test |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
29 HG: branch 'default' |
0986af9e7006
gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20305
diff
changeset
|
30 HG: added .hgsigs |
8809 | 31 |
12428 | 32 $ hg sigs |
33 hgtest 0:e63c23eaa88ae77967edcf4ea194d31167c478b0 | |
8809 | 34 |
12428 | 35 $ hg sigcheck 0 |
36 e63c23eaa88a is signed by: | |
37 hgtest | |
16289
aae219a99a6e
test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents:
12428
diff
changeset
|
38 |
aae219a99a6e
test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents:
12428
diff
changeset
|
39 verify that this test has not modified the trustdb.gpg file back in |
aae219a99a6e
test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents:
12428
diff
changeset
|
40 the main hg working dir |
16349
425f1fbcfb94
test-gpg: replace 825565136235 by md5sum check
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16345
diff
changeset
|
41 $ "$TESTDIR/md5sum.py" "$TESTDIR/gpg/trustdb.gpg" |
425f1fbcfb94
test-gpg: replace 825565136235 by md5sum check
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16345
diff
changeset
|
42 f6b9c78c65fa9536e7512bb2ceb338ae */gpg/trustdb.gpg (glob) |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16350
diff
changeset
|
43 |
20305
e5a2177d97f0
tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com>
parents:
16927
diff
changeset
|
44 don't leak any state to next test run |
e5a2177d97f0
tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com>
parents:
16927
diff
changeset
|
45 $ rm -f "$TESTDIR/gpg/random_seed" |
e5a2177d97f0
tests: stop tracking tests/gpg/random_seed
Mads Kiilerich <madski@unity3d.com>
parents:
16927
diff
changeset
|
46 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16350
diff
changeset
|
47 $ cd .. |