annotate tests/test-persistent-nodemap.t @ 44868:b81486b609a3

nodemap: gate the feature behind a new requirement Now that the feature is working smoothly, a question was still open, should we gate the feature behind a new requirement or just treat it as a cache to be warmed by those who can and ignored by other. The advantage of using the cache approach is a transparent upgrade/downgrade story, making the feature easier to move to. However having out of date cache can come with a significant performance hit for process who expect an up to date cache but found none. In this case the file needs to be stored under `.hg/cache`. The "requirement" approach guarantee that the persistent nodemap is up to date. However, it comes with a less flexible activation story since an explicite upgrade is required. In this case the file can be stored in `.hg/store`. This wiki page is relevant to this questions: https://www.mercurial-scm.org/wiki/ComputedIndexPlan So which one should we take? Another element came into plan, the persistent nodemap use the `add` method of the transaction, it is used to keep track of a file content before a transaction in case we need to rollback it back. It turns out that the `transaction.add` API does not support file stored anywhere than `.hg/store`. Making it support file stored elsewhere is possible, require a change in on disk transaction format. Updating on disk file requires? introducing a new requirements. As a result, we pick the second option "gating the persistent nodemap behind a new requirements". Differential Revision: https://phab.mercurial-scm.org/D8417
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 14 Apr 2020 03:16:23 +0200
parents 6b01799e9db0
children d688a8d537b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44350
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 ===================================
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
2 Test the persistent on-disk nodemap
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
3 ===================================
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4
44868
b81486b609a3 nodemap: gate the feature behind a new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44866
diff changeset
5 $ cat << EOF >> $HGRCPATH
44351
5962fd0d1045 nodemap: write nodemap data on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44350
diff changeset
6 > [experimental]
5962fd0d1045 nodemap: write nodemap data on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44350
diff changeset
7 > exp-persistent-nodemap=yes
44356
6f9e8e142cea nodemap: add a (python) index class for persistent nodemap testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44355
diff changeset
8 > [devel]
6f9e8e142cea nodemap: add a (python) index class for persistent nodemap testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44355
diff changeset
9 > persistent-nodemap=yes
44351
5962fd0d1045 nodemap: write nodemap data on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44350
diff changeset
10 > EOF
44868
b81486b609a3 nodemap: gate the feature behind a new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44866
diff changeset
11 $ hg init test-repo
b81486b609a3 nodemap: gate the feature behind a new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44866
diff changeset
12 $ cd test-repo
44865
6493f0a567c2 nodemap: add a new mode option, with an optional "warn" value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44863
diff changeset
13 $ hg debugbuilddag .+5000 --new-file --config "experimental.exp-persistent-nodemap.mode=warn"
6493f0a567c2 nodemap: add a new mode option, with an optional "warn" value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44863
diff changeset
14 persistent nodemap in strict mode without efficient method (no-rust no-pure !)
6493f0a567c2 nodemap: add a new mode option, with an optional "warn" value
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44863
diff changeset
15 persistent nodemap in strict mode without efficient method (no-rust no-pure !)
44368
6614b301ea58 nodemap: add a flag to dump the details of the docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44367
diff changeset
16 $ hg debugnodemap --metadata
6614b301ea58 nodemap: add a flag to dump the details of the docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44367
diff changeset
17 uid: ???????????????? (glob)
44369
e41a164db7a9 nodemap: track the maximum revision tracked in the nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44368
diff changeset
18 tip-rev: 5000
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
19 tip-node: 6b02b8c7b96654c25e86ba69eda198d7e6ad8b3c
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
20 data-length: 121088
44370
8374b69aef75 nodemap: track the total and unused amount of data in the rawdata file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44369
diff changeset
21 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
22 data-unused: 0.000%
44354
2b72c4ff8ed1 nodemap: use an intermediate "docket" file to carry small metadata
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44352
diff changeset
23 $ f --size .hg/store/00changelog.n
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
24 .hg/store/00changelog.n: size=70
44482
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
25
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
26 Simple lookup works
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
27
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
28 $ ANYNODE=`hg log --template '{node|short}\n' --rev tip`
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
29 $ hg log -r "$ANYNODE" --template '{rev}\n'
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
30 5000
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44465
diff changeset
31
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
32
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
33 #if rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
34
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
35 $ f --sha256 .hg/store/00changelog-*.nd
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
36 .hg/store/00changelog-????????????????.nd: sha256=2e029d3200bd1a986b32784fc2ef1a3bd60dc331f025718bcf5ff44d93f026fd (glob)
44863
640d5b3bd060 nodemap: also use persistent nodemap for manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44862
diff changeset
37
640d5b3bd060 nodemap: also use persistent nodemap for manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44862
diff changeset
38 $ f --sha256 .hg/store/00manifest-*.nd
640d5b3bd060 nodemap: also use persistent nodemap for manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44862
diff changeset
39 .hg/store/00manifest-????????????????.nd: sha256=97117b1c064ea2f86664a124589e47db0e254e8d34739b5c5cc5bf31c9da2b51 (glob)
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
40 $ hg debugnodemap --dump-new | f --sha256 --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
41 size=121088, sha256=2e029d3200bd1a986b32784fc2ef1a3bd60dc331f025718bcf5ff44d93f026fd
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
42 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
43 size=121088, sha256=2e029d3200bd1a986b32784fc2ef1a3bd60dc331f025718bcf5ff44d93f026fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
44 0000: 00 00 00 91 00 00 00 20 00 00 00 bb 00 00 00 e7 |....... ........|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
45 0010: 00 00 00 66 00 00 00 a1 00 00 01 13 00 00 01 22 |...f..........."|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
46 0020: 00 00 00 23 00 00 00 fc 00 00 00 ba 00 00 00 5e |...#...........^|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
47 0030: 00 00 00 df 00 00 01 4e 00 00 01 65 00 00 00 ab |.......N...e....|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
48 0040: 00 00 00 a9 00 00 00 95 00 00 00 73 00 00 00 38 |...........s...8|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
49 0050: 00 00 00 cc 00 00 00 92 00 00 00 90 00 00 00 69 |...............i|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
50 0060: 00 00 00 ec 00 00 00 8d 00 00 01 4f 00 00 00 12 |...........O....|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
51 0070: 00 00 02 0c 00 00 00 77 00 00 00 9c 00 00 00 8f |.......w........|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
52 0080: 00 00 00 d5 00 00 00 6b 00 00 00 48 00 00 00 b3 |.......k...H....|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
53 0090: 00 00 00 e5 00 00 00 b5 00 00 00 8e 00 00 00 ad |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
54 00a0: 00 00 00 7b 00 00 00 7c 00 00 00 0b 00 00 00 2b |...{...|.......+|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
55 00b0: 00 00 00 c6 00 00 00 1e 00 00 01 08 00 00 00 11 |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
56 00c0: 00 00 01 30 00 00 00 26 00 00 01 9c 00 00 00 35 |...0...&.......5|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
57 00d0: 00 00 00 b8 00 00 01 31 00 00 00 2c 00 00 00 55 |.......1...,...U|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
58 00e0: 00 00 00 8a 00 00 00 9a 00 00 00 0c 00 00 01 1e |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
59 00f0: 00 00 00 a4 00 00 00 83 00 00 00 c9 00 00 00 8c |................|
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
60
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
61
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
62 #else
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
63
44355
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
64 $ f --sha256 .hg/store/00changelog-*.nd
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
65 .hg/store/00changelog-????????????????.nd: sha256=f544f5462ff46097432caf6d764091f6d8c46d6121be315ead8576d548c9dd79 (glob)
44352
6c07480d6659 nodemap: add a function to read the data from disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44351
diff changeset
66 $ hg debugnodemap --dump-new | f --sha256 --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
67 size=121088, sha256=f544f5462ff46097432caf6d764091f6d8c46d6121be315ead8576d548c9dd79
44352
6c07480d6659 nodemap: add a function to read the data from disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44351
diff changeset
68 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
69 size=121088, sha256=f544f5462ff46097432caf6d764091f6d8c46d6121be315ead8576d548c9dd79
44350
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
70 0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
71 0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
72 0020: ff ff ff ff ff ff f5 06 ff ff ff ff ff ff f3 e7 |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
73 0030: ff ff ef ca ff ff ff ff ff ff ff ff ff ff ff ff |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
74 0040: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
75 0050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ed 08 |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
76 0060: ff ff ed 66 ff ff ff ff ff ff ff ff ff ff ff ff |...f............|
44350
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
77 0070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
78 0080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
79 0090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff f6 ed |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
80 00a0: ff ff ff ff ff ff fe 61 ff ff ff ff ff ff ff ff |.......a........|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
81 00b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
82 00c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44350
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
83 00d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
84 00e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff f1 02 |................|
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
85 00f0: ff ff ff ff ff ff ed 1b ff ff ff ff ff ff ff ff |................|
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
86
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
87 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
88
44361
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44356
diff changeset
89 $ hg debugnodemap --check
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44356
diff changeset
90 revision in index: 5001
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44356
diff changeset
91 revision in nodemap: 5001
44355
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
92
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
93 add a new commit
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
94
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
95 $ hg up
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
96 5001 files updated, 0 files merged, 0 files removed, 0 files unresolved
44355
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
97 $ echo foo > foo
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
98 $ hg add foo
44866
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
99
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
100 #if no-pure no-rust
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
101
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
102 $ hg ci -m 'foo' --config "experimental.exp-persistent-nodemap.mode=strict"
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
103 transaction abort!
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
104 rollback completed
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
105 abort: persistent nodemap in strict mode without efficient method
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
106 [255]
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
107
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
108 #endif
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44865
diff changeset
109
44355
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
110 $ hg ci -m 'foo'
44370
8374b69aef75 nodemap: track the total and unused amount of data in the rawdata file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44369
diff changeset
111
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
112 #if no-pure no-rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
113 $ hg debugnodemap --metadata
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
114 uid: ???????????????? (glob)
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
115 tip-rev: 5001
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
116 tip-node: 16395c3cf7e231394735e6b1717823ada303fb0c
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
117 data-length: 121088
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
118 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
119 data-unused: 0.000%
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
120 #else
44368
6614b301ea58 nodemap: add a flag to dump the details of the docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44367
diff changeset
121 $ hg debugnodemap --metadata
6614b301ea58 nodemap: add a flag to dump the details of the docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44367
diff changeset
122 uid: ???????????????? (glob)
44369
e41a164db7a9 nodemap: track the maximum revision tracked in the nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44368
diff changeset
123 tip-rev: 5001
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
124 tip-node: 16395c3cf7e231394735e6b1717823ada303fb0c
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
125 data-length: 121344
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
126 data-unused: 256
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
127 data-unused: 0.211%
44370
8374b69aef75 nodemap: track the total and unused amount of data in the rawdata file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44369
diff changeset
128 #endif
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
129
44355
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
130 $ f --size .hg/store/00changelog.n
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
131 .hg/store/00changelog.n: size=70
44367
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
132
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
133 (The pure code use the debug code that perform incremental update, the C code reencode from scratch)
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
134
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
135 #if pure
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
136 $ f --sha256 .hg/store/00changelog-*.nd --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
137 .hg/store/00changelog-????????????????.nd: size=121344, sha256=cce54c5da5bde3ad72a4938673ed4064c86231b9c64376b082b163fdb20f8f66 (glob)
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
138 #endif
44367
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
139
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
140 #if rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
141 $ f --sha256 .hg/store/00changelog-*.nd --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
142 .hg/store/00changelog-????????????????.nd: size=121344, sha256=952b042fcf614ceb37b542b1b723e04f18f83efe99bee4e0f5ccd232ef470e58 (glob)
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
143 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
144
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
145 #if no-pure no-rust
44355
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44354
diff changeset
146 $ f --sha256 .hg/store/00changelog-*.nd --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
147 .hg/store/00changelog-????????????????.nd: size=121088, sha256=df7c06a035b96cb28c7287d349d603baef43240be7736fe34eea419a49702e17 (glob)
44367
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
148 #endif
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44361
diff changeset
149
44361
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44356
diff changeset
150 $ hg debugnodemap --check
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44356
diff changeset
151 revision in index: 5002
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44356
diff changeset
152 revision in nodemap: 5002
44397
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
153
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
154 Test code path without mmap
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
155 ---------------------------
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
156
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
157 $ echo bar > bar
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
158 $ hg add bar
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
159 $ hg ci -m 'bar' --config experimental.exp-persistent-nodemap.mmap=no
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
160
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
161 $ hg debugnodemap --check --config experimental.exp-persistent-nodemap.mmap=yes
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
162 revision in index: 5003
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
163 revision in nodemap: 5003
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
164 $ hg debugnodemap --check --config experimental.exp-persistent-nodemap.mmap=no
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
165 revision in index: 5003
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
166 revision in nodemap: 5003
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
167
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
168
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
169 #if pure
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
170 $ hg debugnodemap --metadata
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
171 uid: ???????????????? (glob)
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
172 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
173 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
174 data-length: 121600
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
175 data-unused: 512
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
176 data-unused: 0.421%
44397
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
177 $ f --sha256 .hg/store/00changelog-*.nd --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
178 .hg/store/00changelog-????????????????.nd: size=121600, sha256=def52503d049ccb823974af313a98a935319ba61f40f3aa06a8be4d35c215054 (glob)
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
179 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
180 #if rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
181 $ hg debugnodemap --metadata
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
182 uid: ???????????????? (glob)
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
183 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
184 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
185 data-length: 121600
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
186 data-unused: 512
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
187 data-unused: 0.421%
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
188 $ f --sha256 .hg/store/00changelog-*.nd --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
189 .hg/store/00changelog-????????????????.nd: size=121600, sha256=dacf5b5f1d4585fee7527d0e67cad5b1ba0930e6a0928f650f779aefb04ce3fb (glob)
44523
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
190 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44507
diff changeset
191 #if no-pure no-rust
44397
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
192 $ hg debugnodemap --metadata
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
193 uid: ???????????????? (glob)
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
194 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
195 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
196 data-length: 121088
44397
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
197 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
198 data-unused: 0.000%
44397
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
199 $ f --sha256 .hg/store/00changelog-*.nd --size
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
200 .hg/store/00changelog-????????????????.nd: size=121088, sha256=59fcede3e3cc587755916ceed29e3c33748cd1aa7d2f91828ac83e7979d935e8 (glob)
44397
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44370
diff changeset
201 #endif
44465
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
202
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
203 Test force warming the cache
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
204
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
205 $ rm .hg/store/00changelog.n
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
206 $ hg debugnodemap --metadata
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
207 $ hg debugupdatecache
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
208 #if pure
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
209 $ hg debugnodemap --metadata
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
210 uid: ???????????????? (glob)
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
211 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
212 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
213 data-length: 121088
44465
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
214 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
215 data-unused: 0.000%
44465
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
216 #else
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
217 $ hg debugnodemap --metadata
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
218 uid: ???????????????? (glob)
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
219 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
220 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
221 data-length: 121088
44465
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
222 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
223 data-unused: 0.000%
44465
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44397
diff changeset
224 #endif
44507
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
225
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
226 Check out of sync nodemap
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
227 =========================
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
228
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
229 First copy old data on the side.
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
230
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
231 $ mkdir ../tmp-copies
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
232 $ cp .hg/store/00changelog-????????????????.nd .hg/store/00changelog.n ../tmp-copies
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
233
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
234 Nodemap lagging behind
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
235 ----------------------
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
236
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
237 make a new commit
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
238
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
239 $ echo bar2 > bar
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
240 $ hg ci -m 'bar2'
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
241 $ NODE=`hg log -r tip -T '{node}\n'`
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
242 $ hg log -r "$NODE" -T '{rev}\n'
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
243 5003
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
244
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
245 If the nodemap is lagging behind, it can catch up fine
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
246
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
247 $ hg debugnodemap --metadata
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
248 uid: ???????????????? (glob)
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
249 tip-rev: 5003
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
250 tip-node: c9329770f979ade2d16912267c38ba5f82fd37b3
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
251 data-length: 121344 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
252 data-length: 121344 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
253 data-length: 121152 (no-rust no-pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
254 data-unused: 192 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
255 data-unused: 192 (rust !)
44507
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
256 data-unused: 0 (no-rust no-pure !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
257 data-unused: 0.158% (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
258 data-unused: 0.158% (rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
259 data-unused: 0.000% (no-rust no-pure !)
44507
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
260 $ cp -f ../tmp-copies/* .hg/store/
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
261 $ hg debugnodemap --metadata
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
262 uid: ???????????????? (glob)
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
263 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
264 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
265 data-length: 121088
44507
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
266 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
267 data-unused: 0.000%
44507
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
268 $ hg log -r "$NODE" -T '{rev}\n'
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44482
diff changeset
269 5003
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
270
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
271 changelog altered
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
272 -----------------
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
273
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
274 If the nodemap is not gated behind a requirements, an unaware client can alter
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
275 the repository so the revlog used to generate the nodemap is not longer
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
276 compatible with the persistent nodemap. We need to detect that.
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
277
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
278 $ hg up "$NODE~5"
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
279 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
280 $ echo bar > babar
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
281 $ hg add babar
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
282 $ hg ci -m 'babar'
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
283 created new head
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
284 $ OTHERNODE=`hg log -r tip -T '{node}\n'`
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
285 $ hg log -r "$OTHERNODE" -T '{rev}\n'
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
286 5004
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
287
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
288 $ hg --config extensions.strip= strip --rev "$NODE~1" --no-backup
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
289
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
290 the nodemap should detect the changelog have been tampered with and recover.
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
291
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
292 $ hg debugnodemap --metadata
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
293 uid: ???????????????? (glob)
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
294 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
295 tip-node: b355ef8adce0949b8bdf6afc72ca853740d65944
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
296 data-length: 121536 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
297 data-length: 121088 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
298 data-length: 121088 (no-pure no-rust !)
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
299 data-unused: 448 (pure !)
44640
c70bcaf7927b nodemap: automatically "vacuum" the persistent nodemap when too sparse
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44639
diff changeset
300 data-unused: 0 (rust !)
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
301 data-unused: 0 (no-pure no-rust !)
44640
c70bcaf7927b nodemap: automatically "vacuum" the persistent nodemap when too sparse
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44639
diff changeset
302 data-unused: 0.000% (rust !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
303 data-unused: 0.369% (pure !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
304 data-unused: 0.000% (no-pure no-rust !)
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
305
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
306 $ cp -f ../tmp-copies/* .hg/store/
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
307 $ hg debugnodemap --metadata
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
308 uid: ???????????????? (glob)
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
309 tip-rev: 5002
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
310 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
311 data-length: 121088
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
312 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
313 data-unused: 0.000%
44525
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
314 $ hg log -r "$OTHERNODE" -T '{rev}\n'
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44523
diff changeset
315 5002
44526
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
316
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
317 Check transaction related property
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
318 ==================================
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
319
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
320 An up to date nodemap should be available to shell hooks,
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
321
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
322 $ echo dsljfl > a
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
323 $ hg add a
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
324 $ hg ci -m a
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
325 $ hg debugnodemap --metadata
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
326 uid: ???????????????? (glob)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
327 tip-rev: 5003
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
328 tip-node: a52c5079765b5865d97b993b303a18740113bbb2
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
329 data-length: 121088
44526
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
330 data-unused: 0
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
331 data-unused: 0.000%
44526
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
332 $ echo babar2 > babar
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
333 $ hg ci -m 'babar2' --config "hooks.pretxnclose.nodemap-test=hg debugnodemap --metadata"
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
334 uid: ???????????????? (glob)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
335 tip-rev: 5004
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
336 tip-node: 2f5fb1c06a16834c5679d672e90da7c5f3b1a984
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
337 data-length: 121280 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
338 data-length: 121280 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
339 data-length: 121088 (no-pure no-rust !)
44526
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
340 data-unused: 192 (pure !)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
341 data-unused: 192 (rust !)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
342 data-unused: 0 (no-pure no-rust !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
343 data-unused: 0.158% (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
344 data-unused: 0.158% (rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
345 data-unused: 0.000% (no-pure no-rust !)
44526
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
346 $ hg debugnodemap --metadata
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
347 uid: ???????????????? (glob)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
348 tip-rev: 5004
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
349 tip-node: 2f5fb1c06a16834c5679d672e90da7c5f3b1a984
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
350 data-length: 121280 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
351 data-length: 121280 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
352 data-length: 121088 (no-pure no-rust !)
44526
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
353 data-unused: 192 (pure !)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
354 data-unused: 192 (rust !)
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44525
diff changeset
355 data-unused: 0 (no-pure no-rust !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
356 data-unused: 0.158% (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
357 data-unused: 0.158% (rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
358 data-unused: 0.000% (no-pure no-rust !)
44637
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
359
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
360 Another process does not see the pending nodemap content during run.
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
361
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
362 $ PATH=$RUNTESTDIR/testlib/:$PATH
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
363 $ echo qpoasp > a
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
364 $ hg ci -m a2 \
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
365 > --config "hooks.pretxnclose=wait-on-file 20 sync-repo-read sync-txn-pending" \
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
366 > --config "hooks.txnclose=touch sync-txn-close" > output.txt 2>&1 &
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
367
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
368 (read the repository while the commit transaction is pending)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
369
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
370 $ wait-on-file 20 sync-txn-pending && \
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
371 > hg debugnodemap --metadata && \
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
372 > wait-on-file 20 sync-txn-close sync-repo-read
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
373 uid: ???????????????? (glob)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
374 tip-rev: 5004
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
375 tip-node: 2f5fb1c06a16834c5679d672e90da7c5f3b1a984
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
376 data-length: 121280 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
377 data-length: 121280 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
378 data-length: 121088 (no-pure no-rust !)
44637
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
379 data-unused: 192 (pure !)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
380 data-unused: 192 (rust !)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
381 data-unused: 0 (no-pure no-rust !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
382 data-unused: 0.158% (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
383 data-unused: 0.158% (rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
384 data-unused: 0.000% (no-pure no-rust !)
44637
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
385 $ hg debugnodemap --metadata
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
386 uid: ???????????????? (glob)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
387 tip-rev: 5005
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
388 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
389 data-length: 121536 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
390 data-length: 121536 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
391 data-length: 121088 (no-pure no-rust !)
44637
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
392 data-unused: 448 (pure !)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
393 data-unused: 448 (rust !)
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
394 data-unused: 0 (no-pure no-rust !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
395 data-unused: 0.369% (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
396 data-unused: 0.369% (rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
397 data-unused: 0.000% (no-pure no-rust !)
44637
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
398
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
399 $ cat output.txt
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44526
diff changeset
400
44638
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
401 Check that a failing transaction will properly revert the data
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
402
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
403 $ echo plakfe > a
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
404 $ f --size --sha256 .hg/store/00changelog-*.nd
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
405 .hg/store/00changelog-????????????????.nd: size=121536, sha256=bb414468d225cf52d69132e1237afba34d4346ee2eb81b505027e6197b107f03 (glob) (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
406 .hg/store/00changelog-????????????????.nd: size=121536, sha256=909ac727bc4d1c0fda5f7bff3c620c98bd4a2967c143405a1503439e33b377da (glob) (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
407 .hg/store/00changelog-????????????????.nd: size=121088, sha256=342d36d30d86dde67d3cb6c002606c4a75bcad665595d941493845066d9c8ee0 (glob) (no-pure no-rust !)
44638
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
408 $ hg ci -m a3 --config "extensions.abort=$RUNTESTDIR/testlib/crash_transaction_late.py"
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
409 transaction abort!
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
410 rollback completed
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
411 abort: This is a late abort
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
412 [255]
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
413 $ hg debugnodemap --metadata
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
414 uid: ???????????????? (glob)
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
415 tip-rev: 5005
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
416 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
417 data-length: 121536 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
418 data-length: 121536 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
419 data-length: 121088 (no-pure no-rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
420 data-unused: 448 (pure !)
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
421 data-unused: 448 (rust !)
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
422 data-unused: 0 (no-pure no-rust !)
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
423 data-unused: 0.369% (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
424 data-unused: 0.369% (rust !)
44639
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44638
diff changeset
425 data-unused: 0.000% (no-pure no-rust !)
44638
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44637
diff changeset
426 $ f --size --sha256 .hg/store/00changelog-*.nd
44862
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
427 .hg/store/00changelog-????????????????.nd: size=121536, sha256=bb414468d225cf52d69132e1237afba34d4346ee2eb81b505027e6197b107f03 (glob) (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
428 .hg/store/00changelog-????????????????.nd: size=121536, sha256=909ac727bc4d1c0fda5f7bff3c620c98bd4a2967c143405a1503439e33b377da (glob) (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44640
diff changeset
429 .hg/store/00changelog-????????????????.nd: size=121088, sha256=342d36d30d86dde67d3cb6c002606c4a75bcad665595d941493845066d9c8ee0 (glob) (no-pure no-rust !)