annotate tests/test-persistent-nodemap.t @ 47877:2174f54aab18

store: return just one filename in walk functions Various walk functions return `(revlog_type, decoded, encoded)` where decoded could be None. But no-one cares about `encoded` and expects `unencoded` to be present, except verify (because this can only happen with old repo formats). Simplify all this by either failing outright if a decoding a filename fails (instead of almost certainly failing with a type error due to treating None as a bytes), or skipping the filename but providing in an out argument for hg verify. Differential Revision: https://phab.mercurial-scm.org/D11248
author Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
date Mon, 02 Aug 2021 08:05:13 -0400
parents 3fffb48539ee
children 9c4204b7f3e4 b833f8cbe199
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44307
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
46884
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
5
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
6 #if no-rust
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
7
44791
b81486b609a3 nodemap: gate the feature behind a new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44789
diff changeset
8 $ cat << EOF >> $HGRCPATH
44793
d688a8d537b9 nodemap: move the main switch to the `format` section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44791
diff changeset
9 > [format]
d688a8d537b9 nodemap: move the main switch to the `format` section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44791
diff changeset
10 > use-persistent-nodemap=yes
44313
6f9e8e142cea nodemap: add a (python) index class for persistent nodemap testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44312
diff changeset
11 > [devel]
6f9e8e142cea nodemap: add a (python) index class for persistent nodemap testing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44312
diff changeset
12 > persistent-nodemap=yes
44308
5962fd0d1045 nodemap: write nodemap data on disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44307
diff changeset
13 > EOF
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
14
46884
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
15 #endif
cc3ad5c3af3b persistent-nodemap: enable the feature by default when using Rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46874
diff changeset
16
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
17 $ hg init test-repo --config storage.revlog.persistent-nodemap.slow-path=allow
44791
b81486b609a3 nodemap: gate the feature behind a new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44789
diff changeset
18 $ cd test-repo
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
19
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
20 Check handling of the default slow-path value
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
21
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
22 #if no-pure no-rust
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
23
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
24 $ hg id
46311
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
25 abort: accessing `persistent-nodemap` repository without associated fast implementation.
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
26 (check `hg help config.format.use-persistent-nodemap` for details)
46311
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
27 [255]
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
28
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
29 Unlock further check (we are here to test the feature)
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
30
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
31 $ cat << EOF >> $HGRCPATH
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
32 > [storage]
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
33 > # to avoid spamming the test
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
34 > revlog.persistent-nodemap.slow-path=allow
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
35 > EOF
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
36
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
37 #endif
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
38
46411
3df00f905458 persistent-nodemap: add test case reproducing a Rust panic
Simon Sapin <simon.sapin@octobus.net>
parents: 46334
diff changeset
39 #if rust
3df00f905458 persistent-nodemap: add test case reproducing a Rust panic
Simon Sapin <simon.sapin@octobus.net>
parents: 46334
diff changeset
40
46412
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
41 Regression test for a previous bug in Rust/C FFI for the `Revlog_CAPI` capsule:
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
42 in places where `mercurial/cext/revlog.c` function signatures use `Py_ssize_t`
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
43 (64 bits on Linux x86_64), corresponding declarations in `rust/hg-cpython/src/cindex.rs`
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
44 incorrectly used `libc::c_int` (32 bits).
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
45 As a result, -1 passed from Rust for the null revision became 4294967295 in C.
46411
3df00f905458 persistent-nodemap: add test case reproducing a Rust panic
Simon Sapin <simon.sapin@octobus.net>
parents: 46334
diff changeset
46
46412
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
47 $ hg log -r 00000000
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
48 changeset: -1:000000000000
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
49 tag: tip
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
50 user:
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
51 date: Thu Jan 01 00:00:00 1970 +0000
7d0405e458a0 persistent-nodemap: Fix Rust declarations for Revlog_CAPI signatures
Simon Sapin <simon.sapin@octobus.net>
parents: 46411
diff changeset
52
46411
3df00f905458 persistent-nodemap: add test case reproducing a Rust panic
Simon Sapin <simon.sapin@octobus.net>
parents: 46334
diff changeset
53
3df00f905458 persistent-nodemap: add test case reproducing a Rust panic
Simon Sapin <simon.sapin@octobus.net>
parents: 46334
diff changeset
54 #endif
3df00f905458 persistent-nodemap: add test case reproducing a Rust panic
Simon Sapin <simon.sapin@octobus.net>
parents: 46334
diff changeset
55
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
56
44799
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
57 $ hg debugformat
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
58 format-variant repo
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
59 fncache: yes
47320
a43d256c041a dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents: 47311
diff changeset
60 dirstate-v2: no
44799
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
61 dotencode: yes
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
62 generaldelta: yes
46334
4b0192f592cf share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46322
diff changeset
63 share-safe: no
44799
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
64 sparserevlog: yes
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
65 persistent-nodemap: yes
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
66 copies-sdc: no
46705
fd55a9eb1507 revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents: 46526
diff changeset
67 revlog-v2: no
47263
6c84fc9c9a90 changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47066
diff changeset
68 changelog-v2: no
44799
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
69 plain-cl-delta: yes
46874
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
70 compression: zlib (no-zstd !)
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
71 compression: zstd (zstd !)
44799
ea9563e9e65a nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44796
diff changeset
72 compression-level: default
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
73 $ hg debugbuilddag .+5000 --new-file
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
74
44334
6614b301ea58 nodemap: add a flag to dump the details of the docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44333
diff changeset
75 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
76 uid: ???????? (glob)
44335
e41a164db7a9 nodemap: track the maximum revision tracked in the nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44334
diff changeset
77 tip-rev: 5000
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
78 tip-node: 6b02b8c7b96654c25e86ba69eda198d7e6ad8b3c
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
79 data-length: 121088
44336
8374b69aef75 nodemap: track the total and unused amount of data in the rawdata file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44335
diff changeset
80 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
81 data-unused: 0.000%
44311
2b72c4ff8ed1 nodemap: use an intermediate "docket" file to carry small metadata
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44309
diff changeset
82 $ f --size .hg/store/00changelog.n
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
83 .hg/store/00changelog.n: size=62
44464
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44445
diff changeset
84
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44445
diff changeset
85 Simple lookup works
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44445
diff changeset
86
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44445
diff changeset
87 $ 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: 44445
diff changeset
88 $ 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: 44445
diff changeset
89 5000
23df5ecfa365 nodemap: check that a simple lookup works fine
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44445
diff changeset
90
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
91
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
92 #if rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
93
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
94 $ f --sha256 .hg/store/00changelog-*.nd
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
95 .hg/store/00changelog-????????.nd: sha256=2e029d3200bd1a986b32784fc2ef1a3bd60dc331f025718bcf5ff44d93f026fd (glob)
44786
640d5b3bd060 nodemap: also use persistent nodemap for manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44785
diff changeset
96
640d5b3bd060 nodemap: also use persistent nodemap for manifest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44785
diff changeset
97 $ f --sha256 .hg/store/00manifest-*.nd
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
98 .hg/store/00manifest-????????.nd: sha256=97117b1c064ea2f86664a124589e47db0e254e8d34739b5c5cc5bf31c9da2b51 (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
99 $ hg debugnodemap --dump-new | f --sha256 --size
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
100 size=121088, sha256=2e029d3200bd1a986b32784fc2ef1a3bd60dc331f025718bcf5ff44d93f026fd
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
101 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
102 size=121088, sha256=2e029d3200bd1a986b32784fc2ef1a3bd60dc331f025718bcf5ff44d93f026fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
103 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: 44636
diff changeset
104 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: 44636
diff changeset
105 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: 44636
diff changeset
106 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: 44636
diff changeset
107 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: 44636
diff changeset
108 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: 44636
diff changeset
109 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: 44636
diff changeset
110 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: 44636
diff changeset
111 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: 44636
diff changeset
112 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: 44636
diff changeset
113 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: 44636
diff changeset
114 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: 44636
diff changeset
115 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: 44636
diff changeset
116 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: 44636
diff changeset
117 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: 44636
diff changeset
118 00f0: 00 00 00 a4 00 00 00 83 00 00 00 c9 00 00 00 8c |................|
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
119
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
120
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
121 #else
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
122
44312
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
123 $ f --sha256 .hg/store/00changelog-*.nd
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
124 .hg/store/00changelog-????????.nd: sha256=f544f5462ff46097432caf6d764091f6d8c46d6121be315ead8576d548c9dd79 (glob)
44309
6c07480d6659 nodemap: add a function to read the data from disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44308
diff changeset
125 $ hg debugnodemap --dump-new | f --sha256 --size
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
126 size=121088, sha256=f544f5462ff46097432caf6d764091f6d8c46d6121be315ead8576d548c9dd79
44309
6c07480d6659 nodemap: add a function to read the data from disk
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44308
diff changeset
127 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
128 size=121088, sha256=f544f5462ff46097432caf6d764091f6d8c46d6121be315ead8576d548c9dd79
44307
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
129 0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
130 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: 44636
diff changeset
131 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: 44636
diff changeset
132 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: 44636
diff changeset
133 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: 44636
diff changeset
134 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: 44636
diff changeset
135 0060: ff ff ed 66 ff ff ff ff ff ff ff ff ff ff ff ff |...f............|
44307
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
136 0070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
137 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: 44636
diff changeset
138 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: 44636
diff changeset
139 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: 44636
diff changeset
140 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: 44636
diff changeset
141 00c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44307
c577bb4a04d4 nodemap: have some python code writing a nodemap in persistent binary form
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
142 00d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
143 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: 44636
diff changeset
144 00f0: ff ff ff ff ff ff ed 1b ff ff ff ff ff ff ff ff |................|
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
145
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
146 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
147
44318
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44313
diff changeset
148 $ hg debugnodemap --check
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44313
diff changeset
149 revision in index: 5001
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44313
diff changeset
150 revision in nodemap: 5001
44312
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
151
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
152 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: 44311
diff changeset
153
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
154 $ hg up
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
155 5001 files updated, 0 files merged, 0 files removed, 0 files unresolved
44312
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
156 $ echo foo > foo
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
157 $ hg add foo
44789
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44788
diff changeset
158
46309
2c9c88879ab7 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46306
diff changeset
159
2c9c88879ab7 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46306
diff changeset
160 Check slow-path config value handling
2c9c88879ab7 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46306
diff changeset
161 -------------------------------------
2c9c88879ab7 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46306
diff changeset
162
46311
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
163 #if no-pure no-rust
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
164
46309
2c9c88879ab7 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46306
diff changeset
165 $ hg id --config "storage.revlog.persistent-nodemap.slow-path=invalid-value"
2c9c88879ab7 persistent-node: check the value of the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46306
diff changeset
166 unknown value for config "storage.revlog.persistent-nodemap.slow-path": "invalid-value"
46311
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
167 falling back to default value: abort
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
168 abort: accessing `persistent-nodemap` repository without associated fast implementation.
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
169 (check `hg help config.format.use-persistent-nodemap` for details)
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
170 [255]
44789
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44788
diff changeset
171
46310
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
172 $ hg log -r . --config "storage.revlog.persistent-nodemap.slow-path=warn"
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
173 warning: accessing `persistent-nodemap` repository without associated fast implementation.
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
174 (check `hg help config.format.use-persistent-nodemap` for details)
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
175 changeset: 5000:6b02b8c7b966
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
176 tag: tip
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
177 user: debugbuilddag
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
178 date: Thu Jan 01 01:23:20 1970 +0000
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
179 summary: r5000
fc2d5c0aed7f persistent-nodemap: add a "warn" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46309
diff changeset
180
46311
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
181 $ hg ci -m 'foo' --config "storage.revlog.persistent-nodemap.slow-path=abort"
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
182 abort: accessing `persistent-nodemap` repository without associated fast implementation.
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
183 (check `hg help config.format.use-persistent-nodemap` for details)
44789
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44788
diff changeset
184 [255]
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44788
diff changeset
185
46311
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
186 #else
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
187
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
188 $ hg id --config "storage.revlog.persistent-nodemap.slow-path=invalid-value"
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
189 unknown value for config "storage.revlog.persistent-nodemap.slow-path": "invalid-value"
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
190 falling back to default value: abort
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
191 6b02b8c7b966+ tip
014ac7a32048 persistent-nodemap: add a "abort" option to the slow-path config
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46310
diff changeset
192
44789
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44788
diff changeset
193 #endif
6b01799e9db0 nodemap: add a new mode value, "strict"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44788
diff changeset
194
44312
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
195 $ hg ci -m 'foo'
44336
8374b69aef75 nodemap: track the total and unused amount of data in the rawdata file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44335
diff changeset
196
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
197 #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: 44495
diff changeset
198 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
199 uid: ???????? (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
200 tip-rev: 5001
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
201 tip-node: 16395c3cf7e231394735e6b1717823ada303fb0c
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
202 data-length: 121088
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
203 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
204 data-unused: 0.000%
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
205 #else
44334
6614b301ea58 nodemap: add a flag to dump the details of the docket
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44333
diff changeset
206 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
207 uid: ???????? (glob)
44335
e41a164db7a9 nodemap: track the maximum revision tracked in the nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44334
diff changeset
208 tip-rev: 5001
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
209 tip-node: 16395c3cf7e231394735e6b1717823ada303fb0c
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
210 data-length: 121344
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
211 data-unused: 256
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
212 data-unused: 0.211%
44336
8374b69aef75 nodemap: track the total and unused amount of data in the rawdata file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44335
diff changeset
213 #endif
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
214
44312
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
215 $ f --size .hg/store/00changelog.n
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
216 .hg/store/00changelog.n: size=62
44333
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
217
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
218 (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: 44318
diff changeset
219
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
220 #if pure
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
221 $ f --sha256 .hg/store/00changelog-*.nd --size
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
222 .hg/store/00changelog-????????.nd: size=121344, sha256=cce54c5da5bde3ad72a4938673ed4064c86231b9c64376b082b163fdb20f8f66 (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
223 #endif
44333
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
224
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
225 #if rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
226 $ f --sha256 .hg/store/00changelog-*.nd --size
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
227 .hg/store/00changelog-????????.nd: size=121344, sha256=952b042fcf614ceb37b542b1b723e04f18f83efe99bee4e0f5ccd232ef470e58 (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
228 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
229
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
230 #if no-pure no-rust
44312
563dfdfd01a4 nodemap: delete older raw data file when creating a new ones
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44311
diff changeset
231 $ f --sha256 .hg/store/00changelog-*.nd --size
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
232 .hg/store/00changelog-????????.nd: size=121088, sha256=df7c06a035b96cb28c7287d349d603baef43240be7736fe34eea419a49702e17 (glob)
44333
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
233 #endif
50ad851efd9b nodemap: introduce append-only incremental update of the persistent data
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44318
diff changeset
234
44318
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44313
diff changeset
235 $ hg debugnodemap --check
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44313
diff changeset
236 revision in index: 5002
20e125cdd719 nodemap: add basic checking of the on disk nodemap content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44313
diff changeset
237 revision in nodemap: 5002
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
238
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
239 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: 44336
diff changeset
240 ---------------------------
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
241
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
242 $ 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: 44336
diff changeset
243 $ hg add bar
46306
7d096e5a5b90 persistent-nodemap: rename the storage.revlog.nodemap.mmap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46253
diff changeset
244 $ hg ci -m 'bar' --config storage.revlog.persistent-nodemap.mmap=no
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
245
46306
7d096e5a5b90 persistent-nodemap: rename the storage.revlog.nodemap.mmap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46253
diff changeset
246 $ hg debugnodemap --check --config storage.revlog.persistent-nodemap.mmap=yes
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
247 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: 44336
diff changeset
248 revision in nodemap: 5003
46306
7d096e5a5b90 persistent-nodemap: rename the storage.revlog.nodemap.mmap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46253
diff changeset
249 $ hg debugnodemap --check --config storage.revlog.persistent-nodemap.mmap=no
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
250 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: 44336
diff changeset
251 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: 44336
diff changeset
252
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
253
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
254 #if pure
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
255 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
256 uid: ???????? (glob)
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
257 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
258 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
259 data-length: 121600
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
260 data-unused: 512
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
261 data-unused: 0.421%
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
262 $ f --sha256 .hg/store/00changelog-*.nd --size
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
263 .hg/store/00changelog-????????.nd: size=121600, sha256=def52503d049ccb823974af313a98a935319ba61f40f3aa06a8be4d35c215054 (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
264 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
265 #if rust
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
266 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
267 uid: ???????? (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
268 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
269 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
270 data-length: 121600
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
271 data-unused: 512
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
272 data-unused: 0.421%
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
273 $ f --sha256 .hg/store/00changelog-*.nd --size
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
274 .hg/store/00changelog-????????.nd: size=121600, sha256=dacf5b5f1d4585fee7527d0e67cad5b1ba0930e6a0928f650f779aefb04ce3fb (glob)
44513
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
275 #endif
e7fff9c3cdac rust-nodemap: automatically use the rust index for persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44495
diff changeset
276 #if no-pure no-rust
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
277 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
278 uid: ???????? (glob)
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
279 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
280 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
281 data-length: 121088
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
282 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
283 data-unused: 0.000%
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
284 $ f --sha256 .hg/store/00changelog-*.nd --size
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
285 .hg/store/00changelog-????????.nd: size=121088, sha256=59fcede3e3cc587755916ceed29e3c33748cd1aa7d2f91828ac83e7979d935e8 (glob)
44363
f7459da77f23 nodemap: introduce an option to use mmap to read the nodemap mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44336
diff changeset
286 #endif
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
287
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
288 Test force warming the cache
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
289
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
290 $ rm .hg/store/00changelog.n
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
291 $ hg debugnodemap --metadata
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
292 $ hg debugupdatecache
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
293 #if pure
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
294 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
295 uid: ???????? (glob)
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
296 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
297 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
298 data-length: 121088
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
299 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
300 data-unused: 0.000%
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
301 #else
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
302 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
303 uid: ???????? (glob)
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
304 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
305 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
306 data-length: 121088
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
307 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
308 data-unused: 0.000%
44445
336ec75ed1ac nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44363
diff changeset
309 #endif
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
310
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
311 Check out of sync nodemap
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
312 =========================
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
313
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
314 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: 44464
diff changeset
315
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
316 $ mkdir ../tmp-copies
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
317 $ cp .hg/store/00changelog-????????.nd .hg/store/00changelog.n ../tmp-copies
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
318
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
319 Nodemap lagging behind
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
320 ----------------------
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
321
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
322 make a new commit
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
323
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
324 $ echo bar2 > bar
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
325 $ hg ci -m 'bar2'
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
326 $ 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: 44464
diff changeset
327 $ 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: 44464
diff changeset
328 5003
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
329
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
330 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: 44464
diff changeset
331
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
332 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
333 uid: ???????? (glob)
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
334 tip-rev: 5003
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
335 tip-node: c9329770f979ade2d16912267c38ba5f82fd37b3
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
336 data-length: 121344 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
337 data-length: 121344 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
338 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: 44636
diff changeset
339 data-unused: 192 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
340 data-unused: 192 (rust !)
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
341 data-unused: 0 (no-rust no-pure !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
342 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: 44636
diff changeset
343 data-unused: 0.158% (rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
344 data-unused: 0.000% (no-rust no-pure !)
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
345 $ 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: 44464
diff changeset
346 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
347 uid: ???????? (glob)
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
348 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
349 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
350 data-length: 121088
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
351 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
352 data-unused: 0.000%
44495
1376cb1c8e34 nodemap: test that an outdated nodemap can catch up
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44464
diff changeset
353 $ 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: 44464
diff changeset
354 5003
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
355
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
356 changelog altered
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
357 -----------------
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
358
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
359 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: 44513
diff changeset
360 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: 44513
diff changeset
361 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: 44513
diff changeset
362
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
363 $ hg up "$NODE~5"
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
364 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
365 $ echo bar > babar
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
366 $ hg add babar
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
367 $ hg ci -m 'babar'
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
368 created new head
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
369 $ 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: 44513
diff changeset
370 $ hg log -r "$OTHERNODE" -T '{rev}\n'
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
371 5004
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
372
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
373 $ 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: 44513
diff changeset
374
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
375 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: 44513
diff changeset
376
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
377 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
378 uid: ???????? (glob)
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
379 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
380 tip-node: b355ef8adce0949b8bdf6afc72ca853740d65944
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
381 data-length: 121536 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
382 data-length: 121088 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
383 data-length: 121088 (no-pure no-rust !)
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
384 data-unused: 448 (pure !)
44636
c70bcaf7927b nodemap: automatically "vacuum" the persistent nodemap when too sparse
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44635
diff changeset
385 data-unused: 0 (rust !)
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
386 data-unused: 0 (no-pure no-rust !)
44636
c70bcaf7927b nodemap: automatically "vacuum" the persistent nodemap when too sparse
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44635
diff changeset
387 data-unused: 0.000% (rust !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
388 data-unused: 0.369% (pure !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
389 data-unused: 0.000% (no-pure no-rust !)
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
390
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
391 $ cp -f ../tmp-copies/* .hg/store/
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
392 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
393 uid: ???????? (glob)
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
394 tip-rev: 5002
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
395 tip-node: 880b18d239dfa9f632413a2071bfdbcc4806a4fd
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
396 data-length: 121088
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
397 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
398 data-unused: 0.000%
44515
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
399 $ hg log -r "$OTHERNODE" -T '{rev}\n'
6c906eaedd0d nodemap: track the tip_node for validation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44513
diff changeset
400 5002
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
401
46321
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
402 missing data file
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
403 -----------------
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
404
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
405 $ UUID=`hg debugnodemap --metadata| grep 'uid:' | \
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
406 > sed 's/uid: //'`
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
407 $ FILE=.hg/store/00changelog-"${UUID}".nd
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
408 $ mv $FILE ../tmp-data-file
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
409 $ cp .hg/store/00changelog.n ../tmp-docket
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
410
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
411 mercurial don't crash
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
412
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
413 $ hg log -r .
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
414 changeset: 5002:b355ef8adce0
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
415 tag: tip
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
416 parent: 4998:d918ad6d18d3
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
417 user: test
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
418 date: Thu Jan 01 00:00:00 1970 +0000
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
419 summary: babar
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
420
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
421 $ hg debugnodemap --metadata
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
422
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
423 $ hg debugupdatecache
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
424 $ hg debugnodemap --metadata
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
425 uid: * (glob)
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
426 tip-rev: 5002
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
427 tip-node: b355ef8adce0949b8bdf6afc72ca853740d65944
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
428 data-length: 121088
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
429 data-unused: 0
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
430 data-unused: 0.000%
47799
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
431
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
432 Sub-case: fallback for corrupted data file
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
433 ------------------------------------------
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
434
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
435 Sabotaging the data file so that nodemap resolutions fail, triggering fallback to
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
436 (non-persistent) C implementation.
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
437
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
438
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
439 $ UUID=`hg debugnodemap --metadata| grep 'uid:' | \
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
440 > sed 's/uid: //'`
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
441 $ FILE=.hg/store/00changelog-"${UUID}".nd
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
442 $ python -c "fobj = open('$FILE', 'r+b'); fobj.write(b'\xff' * 121088); fobj.close()"
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
443
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
444 The nodemap data file is still considered in sync with the docket. This
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
445 would fail without the fallback to the (non-persistent) C implementation:
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
446
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
447 $ hg log -r b355ef8adce0949b8bdf6afc72ca853740d65944 -T '{rev}\n' --traceback
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
448 5002
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
449
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
450 The nodemap data file hasn't been fixed, more tests can be inserted:
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
451
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
452 $ hg debugnodemap --dump-disk | f --bytes=256 --hexdump --size
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
453 size=121088
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
454 0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
455 0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
456 0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
457 0030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
458 0040: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
459 0050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
460 0060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
461 0070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
462 0080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
463 0090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
464 00a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
465 00b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
466 00c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
467 00d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
468 00e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
469 00f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
3fffb48539ee rust-nodemap: falling back to C impl as mitigation
Georges Racinet <georges.racinet@octobus.net>
parents: 47659
diff changeset
470
46321
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
471 $ mv ../tmp-data-file $FILE
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
472 $ mv ../tmp-docket .hg/store/00changelog.n
d32e7ed81f4f persistent-nodemap: catch the right exception on python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46314
diff changeset
473
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
474 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: 44515
diff changeset
475 ==================================
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
476
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
477 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: 44515
diff changeset
478
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
479 $ 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: 44515
diff changeset
480 $ 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: 44515
diff changeset
481 $ 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: 44515
diff changeset
482 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
483 uid: ???????? (glob)
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
484 tip-rev: 5003
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
485 tip-node: a52c5079765b5865d97b993b303a18740113bbb2
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
486 data-length: 121088
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
487 data-unused: 0
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
488 data-unused: 0.000%
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
489 $ 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: 44515
diff changeset
490 $ hg ci -m 'babar2' --config "hooks.pretxnclose.nodemap-test=hg debugnodemap --metadata"
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
491 uid: ???????? (glob)
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
492 tip-rev: 5004
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
493 tip-node: 2f5fb1c06a16834c5679d672e90da7c5f3b1a984
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
494 data-length: 121280 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
495 data-length: 121280 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
496 data-length: 121088 (no-pure no-rust !)
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
497 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: 44515
diff changeset
498 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: 44515
diff changeset
499 data-unused: 0 (no-pure no-rust !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
500 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: 44636
diff changeset
501 data-unused: 0.158% (rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
502 data-unused: 0.000% (no-pure no-rust !)
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
503 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
504 uid: ???????? (glob)
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
505 tip-rev: 5004
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
506 tip-node: 2f5fb1c06a16834c5679d672e90da7c5f3b1a984
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
507 data-length: 121280 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
508 data-length: 121280 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
509 data-length: 121088 (no-pure no-rust !)
44516
64e2f603de9d nodemap: make sure hooks have access to an up-to-date version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44515
diff changeset
510 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: 44515
diff changeset
511 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: 44515
diff changeset
512 data-unused: 0 (no-pure no-rust !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
513 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: 44636
diff changeset
514 data-unused: 0.158% (rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
515 data-unused: 0.000% (no-pure no-rust !)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
516
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
517 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: 44516
diff changeset
518
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
519 $ echo qpoasp > a
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
520 $ hg ci -m a2 \
47066
9e3979a25bfe tests: stabilize test-persistent-nodemap.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 46990
diff changeset
521 > --config "hooks.pretxnclose=sh \"$RUNTESTDIR/testlib/wait-on-file\" 20 sync-repo-read sync-txn-pending" \
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
522 > --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: 44516
diff changeset
523
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
524 (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: 44516
diff changeset
525
47066
9e3979a25bfe tests: stabilize test-persistent-nodemap.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 46990
diff changeset
526 $ sh "$RUNTESTDIR/testlib/wait-on-file" 20 sync-txn-pending && \
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
527 > hg debugnodemap --metadata && \
47066
9e3979a25bfe tests: stabilize test-persistent-nodemap.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 46990
diff changeset
528 > sh "$RUNTESTDIR/testlib/wait-on-file" 20 sync-txn-close sync-repo-read
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
529 uid: ???????? (glob)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
530 tip-rev: 5004
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
531 tip-node: 2f5fb1c06a16834c5679d672e90da7c5f3b1a984
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
532 data-length: 121280 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
533 data-length: 121280 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
534 data-length: 121088 (no-pure no-rust !)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
535 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: 44516
diff changeset
536 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: 44516
diff changeset
537 data-unused: 0 (no-pure no-rust !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
538 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: 44636
diff changeset
539 data-unused: 0.158% (rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
540 data-unused: 0.000% (no-pure no-rust !)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
541 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
542 uid: ???????? (glob)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
543 tip-rev: 5005
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
544 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
545 data-length: 121536 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
546 data-length: 121536 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
547 data-length: 121088 (no-pure no-rust !)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
548 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: 44516
diff changeset
549 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: 44516
diff changeset
550 data-unused: 0 (no-pure no-rust !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
551 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: 44636
diff changeset
552 data-unused: 0.369% (rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
553 data-unused: 0.000% (no-pure no-rust !)
44633
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
554
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
555 $ cat output.txt
dd5b47fb0860 nodemap: test that concurrent process don't see the pending transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44516
diff changeset
556
44634
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
557 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: 44633
diff changeset
558
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
559 $ 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: 44633
diff changeset
560 $ f --size --sha256 .hg/store/00changelog-*.nd
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
561 .hg/store/00changelog-????????.nd: size=121536, sha256=bb414468d225cf52d69132e1237afba34d4346ee2eb81b505027e6197b107f03 (glob) (pure !)
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
562 .hg/store/00changelog-????????.nd: size=121536, sha256=909ac727bc4d1c0fda5f7bff3c620c98bd4a2967c143405a1503439e33b377da (glob) (rust !)
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
563 .hg/store/00changelog-????????.nd: size=121088, sha256=342d36d30d86dde67d3cb6c002606c4a75bcad665595d941493845066d9c8ee0 (glob) (no-pure no-rust !)
44634
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
564 $ 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: 44633
diff changeset
565 transaction abort!
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
566 rollback completed
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
567 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: 44633
diff changeset
568 [255]
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
569 $ hg debugnodemap --metadata
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
570 uid: ???????? (glob)
44634
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
571 tip-rev: 5005
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
572 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
573 data-length: 121536 (pure !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
574 data-length: 121536 (rust !)
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
575 data-length: 121088 (no-pure no-rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
576 data-unused: 448 (pure !)
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
577 data-unused: 448 (rust !)
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
578 data-unused: 0 (no-pure no-rust !)
44785
2c073d82fbfa nodemap: create files in the repository used in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
579 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: 44636
diff changeset
580 data-unused: 0.369% (rust !)
44635
99ea74cbed74 nodemap: display percentage of unused in `hg debugnodemap`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44634
diff changeset
581 data-unused: 0.000% (no-pure no-rust !)
44634
01b0805534bb nodemap: make sure on disk change get rolled back with the transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44633
diff changeset
582 $ f --size --sha256 .hg/store/00changelog-*.nd
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
583 .hg/store/00changelog-????????.nd: size=121536, sha256=bb414468d225cf52d69132e1237afba34d4346ee2eb81b505027e6197b107f03 (glob) (pure !)
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
584 .hg/store/00changelog-????????.nd: size=121536, sha256=909ac727bc4d1c0fda5f7bff3c620c98bd4a2967c143405a1503439e33b377da (glob) (rust !)
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
585 .hg/store/00changelog-????????.nd: size=121088, sha256=342d36d30d86dde67d3cb6c002606c4a75bcad665595d941493845066d9c8ee0 (glob) (no-pure no-rust !)
44954
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
586
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
587 Check that removing content does not confuse the nodemap
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
588 --------------------------------------------------------
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
589
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
590 removing data with rollback
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
591
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
592 $ echo aso > a
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
593 $ hg ci -m a4
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
594 $ hg rollback
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
595 repository tip rolled back to revision 5005 (undo commit)
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
596 working directory now based on revision 5005
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
597 $ hg id -r .
44960
78cafd48b9b2 merge with stable
Augie Fackler <augie@google.com>
parents: 44841 44954
diff changeset
598 90d5d3ba2fc4 tip
44954
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
599
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
600 roming data with strip
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
601
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
602 $ echo aso > a
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
603 $ hg ci -m a4
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
604 $ hg --config extensions.strip= strip -r . --no-backup
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
605 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
affe0fb42250 nodemap: fix validity checking when revlog is too short
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44636
diff changeset
606 $ hg id -r . --traceback
44960
78cafd48b9b2 merge with stable
Augie Fackler <augie@google.com>
parents: 44841 44954
diff changeset
607 90d5d3ba2fc4 tip
78cafd48b9b2 merge with stable
Augie Fackler <augie@google.com>
parents: 44841 44954
diff changeset
608
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
609 Test upgrade / downgrade
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
610 ========================
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
611
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
612 downgrading
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
613
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
614 $ cat << EOF >> .hg/hgrc
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
615 > [format]
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
616 > use-persistent-nodemap=no
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
617 > EOF
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
618 $ hg debugformat -v
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
619 format-variant repo config default
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
620 fncache: yes yes yes
47320
a43d256c041a dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents: 47311
diff changeset
621 dirstate-v2: no no no
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
622 dotencode: yes yes yes
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
623 generaldelta: yes yes yes
46334
4b0192f592cf share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46322
diff changeset
624 share-safe: no no no
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
625 sparserevlog: yes yes yes
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
626 persistent-nodemap: yes no no
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
627 copies-sdc: no no no
46705
fd55a9eb1507 revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents: 46526
diff changeset
628 revlog-v2: no no no
47263
6c84fc9c9a90 changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47066
diff changeset
629 changelog-v2: no no no
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
630 plain-cl-delta: yes yes yes
46874
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
631 compression: zlib zlib zlib (no-zstd !)
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
632 compression: zstd zstd zstd (zstd !)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
633 compression-level: default default default
46526
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
634 $ hg debugupgraderepo --run --no-backup
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
635 upgrade will perform the following actions:
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
636
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
637 requirements
47279
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
638 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd no-dirstate-v2 !)
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
639 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd no-dirstate-v2 !)
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
640 preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd dirstate-v2 !)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
641 removed: persistent-nodemap
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
642
46035
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
643 processed revlogs:
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
644 - all-filelogs
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
645 - changelog
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
646 - manifest
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
647
46526
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
648 beginning upgrade...
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
649 repository locked and read-only
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
650 creating temporary repository to stage upgraded data: $TESTTMP/test-repo/.hg/upgrade.* (glob)
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
651 (it is safe to interrupt this process any time before data migration completes)
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
652 downgrading repository to not use persistent nodemap feature
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
653 removing temporary repository $TESTTMP/test-repo/.hg/upgrade.* (glob)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
654 $ ls -1 .hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)'
46526
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
655 00changelog-*.nd (glob)
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
656 00manifest-*.nd (glob)
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
657 undo.backup.00changelog.n
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
658 undo.backup.00manifest.n
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
659 $ hg debugnodemap --metadata
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
660
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
661
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
662 upgrading
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
663
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
664 $ cat << EOF >> .hg/hgrc
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
665 > [format]
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
666 > use-persistent-nodemap=yes
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
667 > EOF
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
668 $ hg debugformat -v
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
669 format-variant repo config default
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
670 fncache: yes yes yes
47320
a43d256c041a dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents: 47311
diff changeset
671 dirstate-v2: no no no
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
672 dotencode: yes yes yes
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
673 generaldelta: yes yes yes
46334
4b0192f592cf share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46322
diff changeset
674 share-safe: no no no
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
675 sparserevlog: yes yes yes
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
676 persistent-nodemap: no yes no
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
677 copies-sdc: no no no
46705
fd55a9eb1507 revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents: 46526
diff changeset
678 revlog-v2: no no no
47263
6c84fc9c9a90 changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47066
diff changeset
679 changelog-v2: no no no
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
680 plain-cl-delta: yes yes yes
46874
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
681 compression: zlib zlib zlib (no-zstd !)
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
682 compression: zstd zstd zstd (zstd !)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
683 compression-level: default default default
46471
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
684 $ hg debugupgraderepo --run --no-backup
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
685 upgrade will perform the following actions:
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
686
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
687 requirements
47279
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
688 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd no-dirstate-v2 !)
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
689 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd no-dirstate-v2 !)
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
690 preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd dirstate-v2 !)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
691 added: persistent-nodemap
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
692
46471
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
693 persistent-nodemap
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
694 Speedup revision lookup by node id.
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
695
46035
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
696 processed revlogs:
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
697 - all-filelogs
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
698 - changelog
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
699 - manifest
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
700
46471
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
701 beginning upgrade...
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
702 repository locked and read-only
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
703 creating temporary repository to stage upgraded data: $TESTTMP/test-repo/.hg/upgrade.* (glob)
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
704 (it is safe to interrupt this process any time before data migration completes)
46472
98e39f04d60e upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46471
diff changeset
705 upgrading repository to use persistent nodemap feature
46471
bfaacfa8ebfc tests: unquiet a test to show changes in next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46412
diff changeset
706 removing temporary repository $TESTTMP/test-repo/.hg/upgrade.* (glob)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
707 $ ls -1 .hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)'
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
708 00changelog-*.nd (glob)
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
709 00changelog.n
46525
636853347e14 upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46472
diff changeset
710 00manifest-*.nd (glob)
636853347e14 upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46472
diff changeset
711 00manifest.n
46526
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
712 undo.backup.00changelog.n
67b5fafd3a46 upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46525
diff changeset
713 undo.backup.00manifest.n
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
714
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
715 $ hg debugnodemap --metadata
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
716 uid: * (glob)
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
717 tip-rev: 5005
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
718 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
719 data-length: 121088
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
720 data-unused: 0
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
721 data-unused: 0.000%
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
722
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
723 Running unrelated upgrade
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
724
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
725 $ hg debugupgraderepo --run --no-backup --quiet --optimize re-delta-all
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
726 upgrade will perform the following actions:
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
727
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
728 requirements
47279
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
729 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (no-zstd no-dirstate-v2 !)
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
730 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd no-dirstate-v2 !)
40b51c28b242 dirstate-v2: Update the expected output of some tests for new requirement
Simon Sapin <simon.sapin@octobus.net>
parents: 47263
diff changeset
731 preserved: dotencode, exp-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd dirstate-v2 !)
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
732
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
733 optimisations: re-delta-all
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
734
46035
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
735 processed revlogs:
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
736 - all-filelogs
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
737 - changelog
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
738 - manifest
6c960b708ac4 upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46002
diff changeset
739
44841
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
740 $ ls -1 .hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)'
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
741 00changelog-*.nd (glob)
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
742 00changelog.n
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
743 00manifest-*.nd (glob)
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
744 00manifest.n
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
745
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
746 $ hg debugnodemap --metadata
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
747 uid: * (glob)
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
748 tip-rev: 5005
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
749 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
750 data-length: 121088
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
751 data-unused: 0
526d69eeea31 upgrade: support upgrade and downgrade from persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44799
diff changeset
752 data-unused: 0.000%
46248
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
753
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
754 Persistent nodemap and local/streaming clone
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
755 ============================================
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
756
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
757 $ cd ..
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
758
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
759 standard clone
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
760 --------------
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
761
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
762 The persistent nodemap should exist after a streaming clone
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
763
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
764 $ hg clone --pull --quiet -U test-repo standard-clone
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
765 $ ls -1 standard-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)'
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
766 00changelog-*.nd (glob)
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
767 00changelog.n
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
768 00manifest-*.nd (glob)
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
769 00manifest.n
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
770 $ hg -R standard-clone debugnodemap --metadata
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
771 uid: * (glob)
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
772 tip-rev: 5005
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
773 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
774 data-length: 121088
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
775 data-unused: 0
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
776 data-unused: 0.000%
7488067b8c1e persistent-nodemap: test that is it present after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46035
diff changeset
777
46249
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
778
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
779 local clone
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
780 ------------
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
781
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
782 The persistent nodemap should exist after a streaming clone
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
783
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
784 $ hg clone -U test-repo local-clone
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
785 $ ls -1 local-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)'
46314
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
786 00changelog-*.nd (glob)
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
787 00changelog.n
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
788 00manifest-*.nd (glob)
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
789 00manifest.n
46249
3eb33aa237c0 persistent-nodemap: test it (does not) exist after a local clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46248
diff changeset
790 $ hg -R local-clone debugnodemap --metadata
46314
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
791 uid: * (glob)
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
792 tip-rev: 5005
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
793 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
794 data-length: 121088
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
795 data-unused: 0
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
796 data-unused: 0.000%
46250
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
797
46970
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
798 Test various corruption case
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
799 ============================
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
800
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
801 Missing datafile
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
802 ----------------
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
803
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
804 Test behavior with a missing datafile
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
805
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
806 $ hg clone --quiet --pull test-repo corruption-test-repo
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
807 $ ls -1 corruption-test-repo/.hg/store/00changelog*
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
808 corruption-test-repo/.hg/store/00changelog-*.nd (glob)
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
809 corruption-test-repo/.hg/store/00changelog.d
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
810 corruption-test-repo/.hg/store/00changelog.i
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
811 corruption-test-repo/.hg/store/00changelog.n
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
812 $ rm corruption-test-repo/.hg/store/00changelog*.nd
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
813 $ hg log -R corruption-test-repo -r .
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
814 changeset: 5005:90d5d3ba2fc4
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
815 tag: tip
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
816 user: test
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
817 date: Thu Jan 01 00:00:00 1970 +0000
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
818 summary: a2
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
819
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
820 $ ls -1 corruption-test-repo/.hg/store/00changelog*
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
821 corruption-test-repo/.hg/store/00changelog.d
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
822 corruption-test-repo/.hg/store/00changelog.i
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
823 corruption-test-repo/.hg/store/00changelog.n
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
824
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
825 Truncated data file
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
826 -------------------
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
827
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
828 Test behavior with a too short datafile
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
829
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
830 rebuild the missing data
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
831 $ hg -R corruption-test-repo debugupdatecache
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
832 $ ls -1 corruption-test-repo/.hg/store/00changelog*
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
833 corruption-test-repo/.hg/store/00changelog-*.nd (glob)
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
834 corruption-test-repo/.hg/store/00changelog.d
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
835 corruption-test-repo/.hg/store/00changelog.i
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
836 corruption-test-repo/.hg/store/00changelog.n
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
837
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
838 truncate the file
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
839
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
840 $ datafilepath=`ls corruption-test-repo/.hg/store/00changelog*.nd`
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
841 $ f -s $datafilepath
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
842 corruption-test-repo/.hg/store/00changelog-*.nd: size=121088 (glob)
47066
9e3979a25bfe tests: stabilize test-persistent-nodemap.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 46990
diff changeset
843 $ dd if=$datafilepath bs=1000 count=10 of=$datafilepath-tmp status=noxfer
9e3979a25bfe tests: stabilize test-persistent-nodemap.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 46990
diff changeset
844 10+0 records in
9e3979a25bfe tests: stabilize test-persistent-nodemap.t on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 46990
diff changeset
845 10+0 records out
46970
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
846 $ mv $datafilepath-tmp $datafilepath
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
847 $ f -s $datafilepath
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
848 corruption-test-repo/.hg/store/00changelog-*.nd: size=10000 (glob)
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
849
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
850 Check that Mercurial reaction to this event
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
851
46971
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
852 $ hg -R corruption-test-repo log -r . --traceback
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
853 changeset: 5005:90d5d3ba2fc4
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
854 tag: tip
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
855 user: test
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
856 date: Thu Jan 01 00:00:00 1970 +0000
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
857 summary: a2
a3720569a43f nodemap: deal with data mmap error
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46970
diff changeset
858
46970
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
859
99aed233aa8d nodemap: test various corruption scenario for the persistent nodemap
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46895
diff changeset
860
46250
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
861 stream clone
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
862 ============
46250
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
863
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
864 The persistent nodemap should exist after a streaming clone
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
865
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
866 Simple case
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
867 -----------
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
868
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
869 No race condition
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
870
46251
40ec2173f4dd persistent-nodemap: highlight that node is not sent when streaming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46250
diff changeset
871 $ hg clone -U --stream --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/test-repo stream-clone --debug | egrep '00(changelog|manifest)'
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
872 adding [s] 00manifest.n (62 bytes)
46322
7c1367c0b5bc persistent-nodemap: also exchange the nodemap data over the wire
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46321
diff changeset
873 adding [s] 00manifest-*.nd (118 KB) (glob)
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
874 adding [s] 00changelog.n (62 bytes)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
875 adding [s] 00changelog-*.nd (118 KB) (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
876 adding [s] 00manifest.d (452 KB) (no-zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
877 adding [s] 00manifest.d (491 KB) (zstd !)
46874
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
878 adding [s] 00changelog.d (360 KB) (no-zstd !)
84a93fa7ecfd revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46706
diff changeset
879 adding [s] 00changelog.d (368 KB) (zstd !)
46895
6085b7f1536d store: also return some information about the type of file `walk` found
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46884
diff changeset
880 adding [s] 00manifest.i (313 KB)
6085b7f1536d store: also return some information about the type of file `walk` found
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46884
diff changeset
881 adding [s] 00changelog.i (313 KB)
46250
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
882 $ ls -1 stream-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)'
46314
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
883 00changelog-*.nd (glob)
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
884 00changelog.n
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
885 00manifest-*.nd (glob)
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
886 00manifest.n
46250
de2ed219fd00 persistent-nodemap: test it (does not) exist after a stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46249
diff changeset
887 $ hg -R stream-clone debugnodemap --metadata
46314
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
888 uid: * (glob)
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
889 tip-rev: 5005
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
890 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
891 data-length: 121088
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
892 data-unused: 0
95a615dd77bf clone: make sure we warm the cache after a clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46311
diff changeset
893 data-unused: 0.000%
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
894
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
895 new data appened
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
896 -----------------
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
897
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
898 Other commit happening on the server during the stream clone
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
899
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
900 setup the step-by-step stream cloning
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
901
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
902 $ HG_TEST_STREAM_WALKED_FILE_1="$TESTTMP/sync_file_walked_1"
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
903 $ export HG_TEST_STREAM_WALKED_FILE_1
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
904 $ HG_TEST_STREAM_WALKED_FILE_2="$TESTTMP/sync_file_walked_2"
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
905 $ export HG_TEST_STREAM_WALKED_FILE_2
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
906 $ HG_TEST_STREAM_WALKED_FILE_3="$TESTTMP/sync_file_walked_3"
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
907 $ export HG_TEST_STREAM_WALKED_FILE_3
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
908 $ cat << EOF >> test-repo/.hg/hgrc
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
909 > [extensions]
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
910 > steps=$RUNTESTDIR/testlib/ext-stream-clone-steps.py
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
911 > EOF
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
912
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
913 Check and record file state beforehand
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
914
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
915 $ f --size test-repo/.hg/store/00changelog*
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
916 test-repo/.hg/store/00changelog-*.nd: size=121088 (glob)
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
917 test-repo/.hg/store/00changelog.d: size=376891 (zstd !)
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
918 test-repo/.hg/store/00changelog.d: size=368890 (no-zstd !)
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
919 test-repo/.hg/store/00changelog.i: size=320384
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
920 test-repo/.hg/store/00changelog.n: size=62
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
921 $ hg -R test-repo debugnodemap --metadata | tee server-metadata.txt
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
922 uid: * (glob)
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
923 tip-rev: 5005
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
924 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
925 data-length: 121088
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
926 data-unused: 0
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
927 data-unused: 0.000%
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
928
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
929 Prepare a commit
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
930
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
931 $ echo foo >> test-repo/foo
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
932 $ hg -R test-repo/ add test-repo/foo
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
933
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
934 Do a mix of clone and commit at the same time so that the file listed on disk differ at actual transfer time.
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
935
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
936 $ (hg clone -U --stream --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/test-repo stream-clone-race-1 --debug 2>> clone-output | egrep '00(changelog|manifest)' >> clone-output; touch $HG_TEST_STREAM_WALKED_FILE_3) &
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
937 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
938 $ hg -R test-repo/ commit -m foo
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
939 $ touch $HG_TEST_STREAM_WALKED_FILE_2
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
940 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_3
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
941 $ cat clone-output
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
942 adding [s] 00manifest.n (62 bytes)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
943 adding [s] 00manifest-*.nd (118 KB) (glob)
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
944 adding [s] 00changelog.n (62 bytes)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
945 adding [s] 00changelog-*.nd (118 KB) (glob)
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
946 adding [s] 00manifest.d (452 KB) (no-zstd !)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
947 adding [s] 00manifest.d (491 KB) (zstd !)
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
948 adding [s] 00changelog.d (360 KB) (no-zstd !)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
949 adding [s] 00changelog.d (368 KB) (zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
950 adding [s] 00manifest.i (313 KB)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
951 adding [s] 00changelog.i (313 KB)
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
952
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
953 Check the result state
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
954
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
955 $ f --size stream-clone-race-1/.hg/store/00changelog*
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
956 stream-clone-race-1/.hg/store/00changelog-*.nd: size=121088 (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
957 stream-clone-race-1/.hg/store/00changelog.d: size=368890 (no-zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
958 stream-clone-race-1/.hg/store/00changelog.d: size=376891 (zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
959 stream-clone-race-1/.hg/store/00changelog.i: size=320384
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
960 stream-clone-race-1/.hg/store/00changelog.n: size=62
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
961
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
962 $ hg -R stream-clone-race-1 debugnodemap --metadata | tee client-metadata.txt
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
963 uid: * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
964 tip-rev: 5005
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
965 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
966 data-length: 121088
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
967 data-unused: 0
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
968 data-unused: 0.000%
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
969
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
970 We get a usable nodemap, so no rewrite would be needed and the metadata should be identical
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
971 (ie: the following diff should be empty)
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
972
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
973 This isn't the case for the `no-rust` `no-pure` implementation as it use a very minimal nodemap implementation that unconditionnaly rewrite the nodemap "all the time".
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
974
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
975 #if no-rust no-pure
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
976 $ diff -u server-metadata.txt client-metadata.txt
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
977 --- server-metadata.txt * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
978 +++ client-metadata.txt * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
979 @@ -1,4 +1,4 @@
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
980 -uid: * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
981 +uid: * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
982 tip-rev: 5005
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
983 tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
984 data-length: 121088
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
985 [1]
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
986 #else
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
987 $ diff -u server-metadata.txt client-metadata.txt
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
988 #endif
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
989
46987
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
990
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
991 Clean up after the test.
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
992
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
993 $ rm -f "$HG_TEST_STREAM_WALKED_FILE_1"
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
994 $ rm -f "$HG_TEST_STREAM_WALKED_FILE_2"
d70319c3ca14 nodemap: add a test about racy commit during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46971
diff changeset
995 $ rm -f "$HG_TEST_STREAM_WALKED_FILE_3"
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
996
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
997 full regeneration
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
998 -----------------
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
999
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1000 A full nodemap is generated
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1001
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1002 (ideally this test would append enough data to make sure the nodemap data file
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1003 get changed, however to make thing simpler we will force the regeneration for
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1004 this test.
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1005
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1006 Check the initial state
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1007
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1008 $ f --size test-repo/.hg/store/00changelog*
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1009 test-repo/.hg/store/00changelog-*.nd: size=121344 (glob) (rust !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1010 test-repo/.hg/store/00changelog-*.nd: size=121344 (glob) (pure !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1011 test-repo/.hg/store/00changelog-*.nd: size=121152 (glob) (no-rust no-pure !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1012 test-repo/.hg/store/00changelog.d: size=376950 (zstd !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1013 test-repo/.hg/store/00changelog.d: size=368949 (no-zstd !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1014 test-repo/.hg/store/00changelog.i: size=320448
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
1015 test-repo/.hg/store/00changelog.n: size=62
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1016 $ hg -R test-repo debugnodemap --metadata | tee server-metadata-2.txt
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1017 uid: * (glob)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1018 tip-rev: 5006
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1019 tip-node: ed2ec1eef9aa2a0ec5057c51483bc148d03e810b
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1020 data-length: 121344 (rust !)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1021 data-length: 121344 (pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1022 data-length: 121152 (no-rust no-pure !)
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1023 data-unused: 192 (rust !)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1024 data-unused: 192 (pure !)
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1025 data-unused: 0 (no-rust no-pure !)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1026 data-unused: 0.158% (rust !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1027 data-unused: 0.158% (pure !)
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1028 data-unused: 0.000% (no-rust no-pure !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1029
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1030 Performe the mix of clone and full refresh of the nodemap, so that the files
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1031 (and filenames) are different between listing time and actual transfer time.
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1032
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1033 $ (hg clone -U --stream --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/test-repo stream-clone-race-2 --debug 2>> clone-output-2 | egrep '00(changelog|manifest)' >> clone-output-2; touch $HG_TEST_STREAM_WALKED_FILE_3) &
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1034 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1035 $ rm test-repo/.hg/store/00changelog.n
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1036 $ rm test-repo/.hg/store/00changelog-*.nd
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1037 $ hg -R test-repo/ debugupdatecache
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1038 $ touch $HG_TEST_STREAM_WALKED_FILE_2
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1039 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_3
47659
f030c7d22032 walk: no longer ignore revlogs of files starting with `undo.` (issue6542)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47320
diff changeset
1040
f030c7d22032 walk: no longer ignore revlogs of files starting with `undo.` (issue6542)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47320
diff changeset
1041 (note: the stream clone code wronly pick the `undo.` files)
f030c7d22032 walk: no longer ignore revlogs of files starting with `undo.` (issue6542)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47320
diff changeset
1042
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1043 $ cat clone-output-2
47659
f030c7d22032 walk: no longer ignore revlogs of files starting with `undo.` (issue6542)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47320
diff changeset
1044 adding [s] undo.backup.00manifest.n (62 bytes) (known-bad-output !)
f030c7d22032 walk: no longer ignore revlogs of files starting with `undo.` (issue6542)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47320
diff changeset
1045 adding [s] undo.backup.00changelog.n (62 bytes) (known-bad-output !)
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
1046 adding [s] 00manifest.n (62 bytes)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1047 adding [s] 00manifest-*.nd (118 KB) (glob)
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
1048 adding [s] 00changelog.n (62 bytes)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1049 adding [s] 00changelog-*.nd (118 KB) (glob)
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1050 adding [s] 00manifest.d (492 KB) (zstd !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1051 adding [s] 00manifest.d (452 KB) (no-zstd !)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1052 adding [s] 00changelog.d (360 KB) (no-zstd !)
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1053 adding [s] 00changelog.d (368 KB) (zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1054 adding [s] 00manifest.i (313 KB)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1055 adding [s] 00changelog.i (313 KB)
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1056
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1057 Check the result.
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1058
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1059 $ f --size stream-clone-race-2/.hg/store/00changelog*
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1060 stream-clone-race-2/.hg/store/00changelog-*.nd: size=121344 (glob) (rust !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1061 stream-clone-race-2/.hg/store/00changelog-*.nd: size=121344 (glob) (pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1062 stream-clone-race-2/.hg/store/00changelog-*.nd: size=121152 (glob) (no-rust no-pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1063 stream-clone-race-2/.hg/store/00changelog.d: size=376950 (zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1064 stream-clone-race-2/.hg/store/00changelog.d: size=368949 (no-zstd !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1065 stream-clone-race-2/.hg/store/00changelog.i: size=320448
47311
5bc6d2fc1cfc persistent-nodemap: use the intended uuid size
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47279
diff changeset
1066 stream-clone-race-2/.hg/store/00changelog.n: size=62
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1067
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1068 $ hg -R stream-clone-race-2 debugnodemap --metadata | tee client-metadata-2.txt
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1069 uid: * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1070 tip-rev: 5006
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1071 tip-node: ed2ec1eef9aa2a0ec5057c51483bc148d03e810b
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1072 data-length: 121344 (rust !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1073 data-unused: 192 (rust !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1074 data-unused: 0.158% (rust !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1075 data-length: 121152 (no-rust no-pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1076 data-unused: 0 (no-rust no-pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1077 data-unused: 0.000% (no-rust no-pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1078 data-length: 121344 (pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1079 data-unused: 192 (pure !)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1080 data-unused: 0.158% (pure !)
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1081
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1082 We get a usable nodemap, so no rewrite would be needed and the metadata should be identical
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1083 (ie: the following diff should be empty)
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1084
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1085 This isn't the case for the `no-rust` `no-pure` implementation as it use a very minimal nodemap implementation that unconditionnaly rewrite the nodemap "all the time".
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1086
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1087 #if no-rust no-pure
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1088 $ diff -u server-metadata-2.txt client-metadata-2.txt
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1089 --- server-metadata-2.txt * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1090 +++ client-metadata-2.txt * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1091 @@ -1,4 +1,4 @@
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1092 -uid: * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1093 +uid: * (glob)
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1094 tip-rev: 5006
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1095 tip-node: ed2ec1eef9aa2a0ec5057c51483bc148d03e810b
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1096 data-length: 121152
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1097 [1]
46989
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1098 #else
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1099 $ diff -u server-metadata-2.txt client-metadata-2.txt
aed6ceaad6d7 streamclone: treat volatile file as "fullfile"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46988
diff changeset
1100 #endif
46988
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1101
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1102 Clean up after the test
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1103
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1104 $ rm -f $HG_TEST_STREAM_WALKED_FILE_1
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1105 $ rm -f $HG_TEST_STREAM_WALKED_FILE_2
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1106 $ rm -f $HG_TEST_STREAM_WALKED_FILE_3
dc95c8ca171f nodemap: add a test about nodemap "vacuum" during stream clone
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46987
diff changeset
1107