##// END OF EJS Templates
nodemap: test that concurrent process don't see the pending transaction...
marmoute -
r45123:dd5b47fb default
parent child Browse files
Show More
@@ -1,319 +1,355 b''
1 ===================================
1 ===================================
2 Test the persistent on-disk nodemap
2 Test the persistent on-disk nodemap
3 ===================================
3 ===================================
4
4
5 $ hg init test-repo
5 $ hg init test-repo
6 $ cd test-repo
6 $ cd test-repo
7 $ cat << EOF >> .hg/hgrc
7 $ cat << EOF >> .hg/hgrc
8 > [experimental]
8 > [experimental]
9 > exp-persistent-nodemap=yes
9 > exp-persistent-nodemap=yes
10 > [devel]
10 > [devel]
11 > persistent-nodemap=yes
11 > persistent-nodemap=yes
12 > EOF
12 > EOF
13 $ hg debugbuilddag .+5000
13 $ hg debugbuilddag .+5000
14 $ hg debugnodemap --metadata
14 $ hg debugnodemap --metadata
15 uid: ???????????????? (glob)
15 uid: ???????????????? (glob)
16 tip-rev: 5000
16 tip-rev: 5000
17 tip-node: 06ddac466af534d365326c13c3879f97caca3cb1
17 tip-node: 06ddac466af534d365326c13c3879f97caca3cb1
18 data-length: 122880
18 data-length: 122880
19 data-unused: 0
19 data-unused: 0
20 $ f --size .hg/store/00changelog.n
20 $ f --size .hg/store/00changelog.n
21 .hg/store/00changelog.n: size=70
21 .hg/store/00changelog.n: size=70
22
22
23 Simple lookup works
23 Simple lookup works
24
24
25 $ ANYNODE=`hg log --template '{node|short}\n' --rev tip`
25 $ ANYNODE=`hg log --template '{node|short}\n' --rev tip`
26 $ hg log -r "$ANYNODE" --template '{rev}\n'
26 $ hg log -r "$ANYNODE" --template '{rev}\n'
27 5000
27 5000
28
28
29
29
30 #if rust
30 #if rust
31
31
32 $ f --sha256 .hg/store/00changelog-*.nd
32 $ f --sha256 .hg/store/00changelog-*.nd
33 .hg/store/00changelog-????????????????.nd: sha256=1e38e9ffaa45cad13f15c1a9880ad606f4241e8beea2f61b4d5365abadfb55f6 (glob)
33 .hg/store/00changelog-????????????????.nd: sha256=1e38e9ffaa45cad13f15c1a9880ad606f4241e8beea2f61b4d5365abadfb55f6 (glob)
34 $ hg debugnodemap --dump-new | f --sha256 --size
34 $ hg debugnodemap --dump-new | f --sha256 --size
35 size=122880, sha256=1e38e9ffaa45cad13f15c1a9880ad606f4241e8beea2f61b4d5365abadfb55f6
35 size=122880, sha256=1e38e9ffaa45cad13f15c1a9880ad606f4241e8beea2f61b4d5365abadfb55f6
36 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
36 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
37 size=122880, sha256=1e38e9ffaa45cad13f15c1a9880ad606f4241e8beea2f61b4d5365abadfb55f6
37 size=122880, sha256=1e38e9ffaa45cad13f15c1a9880ad606f4241e8beea2f61b4d5365abadfb55f6
38 0000: 00 00 00 76 00 00 01 65 00 00 00 95 00 00 01 34 |...v...e.......4|
38 0000: 00 00 00 76 00 00 01 65 00 00 00 95 00 00 01 34 |...v...e.......4|
39 0010: 00 00 00 19 00 00 01 69 00 00 00 ab 00 00 00 4b |.......i.......K|
39 0010: 00 00 00 19 00 00 01 69 00 00 00 ab 00 00 00 4b |.......i.......K|
40 0020: 00 00 00 07 00 00 01 4c 00 00 00 f8 00 00 00 8f |.......L........|
40 0020: 00 00 00 07 00 00 01 4c 00 00 00 f8 00 00 00 8f |.......L........|
41 0030: 00 00 00 c0 00 00 00 a7 00 00 00 89 00 00 01 46 |...............F|
41 0030: 00 00 00 c0 00 00 00 a7 00 00 00 89 00 00 01 46 |...............F|
42 0040: 00 00 00 92 00 00 01 bc 00 00 00 71 00 00 00 ac |...........q....|
42 0040: 00 00 00 92 00 00 01 bc 00 00 00 71 00 00 00 ac |...........q....|
43 0050: 00 00 00 af 00 00 00 b4 00 00 00 34 00 00 01 ca |...........4....|
43 0050: 00 00 00 af 00 00 00 b4 00 00 00 34 00 00 01 ca |...........4....|
44 0060: 00 00 00 23 00 00 01 45 00 00 00 2d 00 00 00 b2 |...#...E...-....|
44 0060: 00 00 00 23 00 00 01 45 00 00 00 2d 00 00 00 b2 |...#...E...-....|
45 0070: 00 00 00 56 00 00 01 0f 00 00 00 4e 00 00 02 4c |...V.......N...L|
45 0070: 00 00 00 56 00 00 01 0f 00 00 00 4e 00 00 02 4c |...V.......N...L|
46 0080: 00 00 00 e7 00 00 00 cd 00 00 01 5b 00 00 00 78 |...........[...x|
46 0080: 00 00 00 e7 00 00 00 cd 00 00 01 5b 00 00 00 78 |...........[...x|
47 0090: 00 00 00 e3 00 00 01 8e 00 00 00 4f 00 00 00 b1 |...........O....|
47 0090: 00 00 00 e3 00 00 01 8e 00 00 00 4f 00 00 00 b1 |...........O....|
48 00a0: 00 00 00 30 00 00 00 11 00 00 00 25 00 00 00 d2 |...0.......%....|
48 00a0: 00 00 00 30 00 00 00 11 00 00 00 25 00 00 00 d2 |...0.......%....|
49 00b0: 00 00 00 ec 00 00 00 69 00 00 01 2b 00 00 01 2e |.......i...+....|
49 00b0: 00 00 00 ec 00 00 00 69 00 00 01 2b 00 00 01 2e |.......i...+....|
50 00c0: 00 00 00 aa 00 00 00 15 00 00 00 3a 00 00 01 4e |...........:...N|
50 00c0: 00 00 00 aa 00 00 00 15 00 00 00 3a 00 00 01 4e |...........:...N|
51 00d0: 00 00 00 4d 00 00 00 9d 00 00 00 8e 00 00 00 a4 |...M............|
51 00d0: 00 00 00 4d 00 00 00 9d 00 00 00 8e 00 00 00 a4 |...M............|
52 00e0: 00 00 00 c3 00 00 00 eb 00 00 00 29 00 00 00 ad |...........)....|
52 00e0: 00 00 00 c3 00 00 00 eb 00 00 00 29 00 00 00 ad |...........)....|
53 00f0: 00 00 01 3a 00 00 01 32 00 00 00 04 00 00 00 53 |...:...2.......S|
53 00f0: 00 00 01 3a 00 00 01 32 00 00 00 04 00 00 00 53 |...:...2.......S|
54
54
55
55
56 #else
56 #else
57
57
58 $ f --sha256 .hg/store/00changelog-*.nd
58 $ f --sha256 .hg/store/00changelog-*.nd
59 .hg/store/00changelog-????????????????.nd: sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7 (glob)
59 .hg/store/00changelog-????????????????.nd: sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7 (glob)
60 $ hg debugnodemap --dump-new | f --sha256 --size
60 $ hg debugnodemap --dump-new | f --sha256 --size
61 size=122880, sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7
61 size=122880, sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7
62 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
62 $ hg debugnodemap --dump-disk | f --sha256 --bytes=256 --hexdump --size
63 size=122880, sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7
63 size=122880, sha256=b961925120e1c9bc345c199b2cc442abc477029fdece37ef9d99cbe59c0558b7
64 0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
64 0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
65 0010: ff ff ff ff ff ff ff ff ff ff fa c2 ff ff ff ff |................|
65 0010: ff ff ff ff ff ff ff ff ff ff fa c2 ff ff ff ff |................|
66 0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
66 0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
67 0030: ff ff ff ff ff ff ed b3 ff ff ff ff ff ff ff ff |................|
67 0030: ff ff ff ff ff ff ed b3 ff ff ff ff ff ff ff ff |................|
68 0040: ff ff ff ff ff ff ee 34 00 00 00 00 ff ff ff ff |.......4........|
68 0040: ff ff ff ff ff ff ee 34 00 00 00 00 ff ff ff ff |.......4........|
69 0050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
69 0050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
70 0060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
70 0060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
71 0070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
71 0070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
72 0080: ff ff ff ff ff ff f8 50 ff ff ff ff ff ff ff ff |.......P........|
72 0080: ff ff ff ff ff ff f8 50 ff ff ff ff ff ff ff ff |.......P........|
73 0090: ff ff ff ff ff ff ff ff ff ff ec c7 ff ff ff ff |................|
73 0090: ff ff ff ff ff ff ff ff ff ff ec c7 ff ff ff ff |................|
74 00a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
74 00a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
75 00b0: ff ff ff ff ff ff fa be ff ff f2 fc ff ff ff ff |................|
75 00b0: ff ff ff ff ff ff fa be ff ff f2 fc ff ff ff ff |................|
76 00c0: ff ff ff ff ff ff ef ea ff ff ff ff ff ff f9 17 |................|
76 00c0: ff ff ff ff ff ff ef ea ff ff ff ff ff ff f9 17 |................|
77 00d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
77 00d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
78 00e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
78 00e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
79 00f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
79 00f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
80
80
81 #endif
81 #endif
82
82
83 $ hg debugnodemap --check
83 $ hg debugnodemap --check
84 revision in index: 5001
84 revision in index: 5001
85 revision in nodemap: 5001
85 revision in nodemap: 5001
86
86
87 add a new commit
87 add a new commit
88
88
89 $ hg up
89 $ hg up
90 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
90 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 $ echo foo > foo
91 $ echo foo > foo
92 $ hg add foo
92 $ hg add foo
93 $ hg ci -m 'foo'
93 $ hg ci -m 'foo'
94
94
95 #if no-pure no-rust
95 #if no-pure no-rust
96 $ hg debugnodemap --metadata
96 $ hg debugnodemap --metadata
97 uid: ???????????????? (glob)
97 uid: ???????????????? (glob)
98 tip-rev: 5001
98 tip-rev: 5001
99 tip-node: 2dd9b5258caa46469ff07d4a3da1eb3529a51f49
99 tip-node: 2dd9b5258caa46469ff07d4a3da1eb3529a51f49
100 data-length: 122880
100 data-length: 122880
101 data-unused: 0
101 data-unused: 0
102 #else
102 #else
103 $ hg debugnodemap --metadata
103 $ hg debugnodemap --metadata
104 uid: ???????????????? (glob)
104 uid: ???????????????? (glob)
105 tip-rev: 5001
105 tip-rev: 5001
106 tip-node: 2dd9b5258caa46469ff07d4a3da1eb3529a51f49
106 tip-node: 2dd9b5258caa46469ff07d4a3da1eb3529a51f49
107 data-length: 123072
107 data-length: 123072
108 data-unused: 192
108 data-unused: 192
109 #endif
109 #endif
110
110
111 $ f --size .hg/store/00changelog.n
111 $ f --size .hg/store/00changelog.n
112 .hg/store/00changelog.n: size=70
112 .hg/store/00changelog.n: size=70
113
113
114 (The pure code use the debug code that perform incremental update, the C code reencode from scratch)
114 (The pure code use the debug code that perform incremental update, the C code reencode from scratch)
115
115
116 #if pure
116 #if pure
117 $ f --sha256 .hg/store/00changelog-*.nd --size
117 $ f --sha256 .hg/store/00changelog-*.nd --size
118 .hg/store/00changelog-????????????????.nd: size=123072, sha256=136472751566c8198ff09e306a7d2f9bd18bd32298d614752b73da4d6df23340 (glob)
118 .hg/store/00changelog-????????????????.nd: size=123072, sha256=136472751566c8198ff09e306a7d2f9bd18bd32298d614752b73da4d6df23340 (glob)
119 #endif
119 #endif
120
120
121 #if rust
121 #if rust
122 $ f --sha256 .hg/store/00changelog-*.nd --size
122 $ f --sha256 .hg/store/00changelog-*.nd --size
123 .hg/store/00changelog-????????????????.nd: size=123072, sha256=ccc8a43310ace13812fcc648683e259346754ef934c12dd238cf9b7fadfe9a4b (glob)
123 .hg/store/00changelog-????????????????.nd: size=123072, sha256=ccc8a43310ace13812fcc648683e259346754ef934c12dd238cf9b7fadfe9a4b (glob)
124 #endif
124 #endif
125
125
126 #if no-pure no-rust
126 #if no-pure no-rust
127 $ f --sha256 .hg/store/00changelog-*.nd --size
127 $ f --sha256 .hg/store/00changelog-*.nd --size
128 .hg/store/00changelog-????????????????.nd: size=122880, sha256=bfafebd751c4f6d116a76a37a1dee2a251747affe7efbcc4f4842ccc746d4db9 (glob)
128 .hg/store/00changelog-????????????????.nd: size=122880, sha256=bfafebd751c4f6d116a76a37a1dee2a251747affe7efbcc4f4842ccc746d4db9 (glob)
129 #endif
129 #endif
130
130
131 $ hg debugnodemap --check
131 $ hg debugnodemap --check
132 revision in index: 5002
132 revision in index: 5002
133 revision in nodemap: 5002
133 revision in nodemap: 5002
134
134
135 Test code path without mmap
135 Test code path without mmap
136 ---------------------------
136 ---------------------------
137
137
138 $ echo bar > bar
138 $ echo bar > bar
139 $ hg add bar
139 $ hg add bar
140 $ hg ci -m 'bar' --config experimental.exp-persistent-nodemap.mmap=no
140 $ hg ci -m 'bar' --config experimental.exp-persistent-nodemap.mmap=no
141
141
142 $ hg debugnodemap --check --config experimental.exp-persistent-nodemap.mmap=yes
142 $ hg debugnodemap --check --config experimental.exp-persistent-nodemap.mmap=yes
143 revision in index: 5003
143 revision in index: 5003
144 revision in nodemap: 5003
144 revision in nodemap: 5003
145 $ hg debugnodemap --check --config experimental.exp-persistent-nodemap.mmap=no
145 $ hg debugnodemap --check --config experimental.exp-persistent-nodemap.mmap=no
146 revision in index: 5003
146 revision in index: 5003
147 revision in nodemap: 5003
147 revision in nodemap: 5003
148
148
149
149
150 #if pure
150 #if pure
151 $ hg debugnodemap --metadata
151 $ hg debugnodemap --metadata
152 uid: ???????????????? (glob)
152 uid: ???????????????? (glob)
153 tip-rev: 5002
153 tip-rev: 5002
154 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
154 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
155 data-length: 123328
155 data-length: 123328
156 data-unused: 384
156 data-unused: 384
157 $ f --sha256 .hg/store/00changelog-*.nd --size
157 $ f --sha256 .hg/store/00changelog-*.nd --size
158 .hg/store/00changelog-????????????????.nd: size=123328, sha256=10d26e9776b6596af0f89143a54eba8cc581e929c38242a02a7b0760698c6c70 (glob)
158 .hg/store/00changelog-????????????????.nd: size=123328, sha256=10d26e9776b6596af0f89143a54eba8cc581e929c38242a02a7b0760698c6c70 (glob)
159 #endif
159 #endif
160 #if rust
160 #if rust
161 $ hg debugnodemap --metadata
161 $ hg debugnodemap --metadata
162 uid: ???????????????? (glob)
162 uid: ???????????????? (glob)
163 tip-rev: 5002
163 tip-rev: 5002
164 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
164 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
165 data-length: 123328
165 data-length: 123328
166 data-unused: 384
166 data-unused: 384
167 $ f --sha256 .hg/store/00changelog-*.nd --size
167 $ f --sha256 .hg/store/00changelog-*.nd --size
168 .hg/store/00changelog-????????????????.nd: size=123328, sha256=081eec9eb6708f2bf085d939b4c97bc0b6762bc8336bc4b93838f7fffa1516bf (glob)
168 .hg/store/00changelog-????????????????.nd: size=123328, sha256=081eec9eb6708f2bf085d939b4c97bc0b6762bc8336bc4b93838f7fffa1516bf (glob)
169 #endif
169 #endif
170 #if no-pure no-rust
170 #if no-pure no-rust
171 $ hg debugnodemap --metadata
171 $ hg debugnodemap --metadata
172 uid: ???????????????? (glob)
172 uid: ???????????????? (glob)
173 tip-rev: 5002
173 tip-rev: 5002
174 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
174 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
175 data-length: 122944
175 data-length: 122944
176 data-unused: 0
176 data-unused: 0
177 $ f --sha256 .hg/store/00changelog-*.nd --size
177 $ f --sha256 .hg/store/00changelog-*.nd --size
178 .hg/store/00changelog-????????????????.nd: size=122944, sha256=755976b22b64ab680401b45395953504e64e7fa8c31ac570f58dee21e15f9bc0 (glob)
178 .hg/store/00changelog-????????????????.nd: size=122944, sha256=755976b22b64ab680401b45395953504e64e7fa8c31ac570f58dee21e15f9bc0 (glob)
179 #endif
179 #endif
180
180
181 Test force warming the cache
181 Test force warming the cache
182
182
183 $ rm .hg/store/00changelog.n
183 $ rm .hg/store/00changelog.n
184 $ hg debugnodemap --metadata
184 $ hg debugnodemap --metadata
185 $ hg debugupdatecache
185 $ hg debugupdatecache
186 #if pure
186 #if pure
187 $ hg debugnodemap --metadata
187 $ hg debugnodemap --metadata
188 uid: ???????????????? (glob)
188 uid: ???????????????? (glob)
189 tip-rev: 5002
189 tip-rev: 5002
190 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
190 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
191 data-length: 122944
191 data-length: 122944
192 data-unused: 0
192 data-unused: 0
193 #else
193 #else
194 $ hg debugnodemap --metadata
194 $ hg debugnodemap --metadata
195 uid: ???????????????? (glob)
195 uid: ???????????????? (glob)
196 tip-rev: 5002
196 tip-rev: 5002
197 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
197 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
198 data-length: 122944
198 data-length: 122944
199 data-unused: 0
199 data-unused: 0
200 #endif
200 #endif
201
201
202 Check out of sync nodemap
202 Check out of sync nodemap
203 =========================
203 =========================
204
204
205 First copy old data on the side.
205 First copy old data on the side.
206
206
207 $ mkdir ../tmp-copies
207 $ mkdir ../tmp-copies
208 $ cp .hg/store/00changelog-????????????????.nd .hg/store/00changelog.n ../tmp-copies
208 $ cp .hg/store/00changelog-????????????????.nd .hg/store/00changelog.n ../tmp-copies
209
209
210 Nodemap lagging behind
210 Nodemap lagging behind
211 ----------------------
211 ----------------------
212
212
213 make a new commit
213 make a new commit
214
214
215 $ echo bar2 > bar
215 $ echo bar2 > bar
216 $ hg ci -m 'bar2'
216 $ hg ci -m 'bar2'
217 $ NODE=`hg log -r tip -T '{node}\n'`
217 $ NODE=`hg log -r tip -T '{node}\n'`
218 $ hg log -r "$NODE" -T '{rev}\n'
218 $ hg log -r "$NODE" -T '{rev}\n'
219 5003
219 5003
220
220
221 If the nodemap is lagging behind, it can catch up fine
221 If the nodemap is lagging behind, it can catch up fine
222
222
223 $ hg debugnodemap --metadata
223 $ hg debugnodemap --metadata
224 uid: ???????????????? (glob)
224 uid: ???????????????? (glob)
225 tip-rev: 5003
225 tip-rev: 5003
226 tip-node: 5c049e9c4a4af159bdcd65dce1b6bf303a0da6cf
226 tip-node: 5c049e9c4a4af159bdcd65dce1b6bf303a0da6cf
227 data-length: 123200 (pure !)
227 data-length: 123200 (pure !)
228 data-length: 123200 (rust !)
228 data-length: 123200 (rust !)
229 data-length: 122944 (no-rust no-pure !)
229 data-length: 122944 (no-rust no-pure !)
230 data-unused: 256 (pure !)
230 data-unused: 256 (pure !)
231 data-unused: 256 (rust !)
231 data-unused: 256 (rust !)
232 data-unused: 0 (no-rust no-pure !)
232 data-unused: 0 (no-rust no-pure !)
233 $ cp -f ../tmp-copies/* .hg/store/
233 $ cp -f ../tmp-copies/* .hg/store/
234 $ hg debugnodemap --metadata
234 $ hg debugnodemap --metadata
235 uid: ???????????????? (glob)
235 uid: ???????????????? (glob)
236 tip-rev: 5002
236 tip-rev: 5002
237 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
237 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
238 data-length: 122944
238 data-length: 122944
239 data-unused: 0
239 data-unused: 0
240 $ hg log -r "$NODE" -T '{rev}\n'
240 $ hg log -r "$NODE" -T '{rev}\n'
241 5003
241 5003
242
242
243 changelog altered
243 changelog altered
244 -----------------
244 -----------------
245
245
246 If the nodemap is not gated behind a requirements, an unaware client can alter
246 If the nodemap is not gated behind a requirements, an unaware client can alter
247 the repository so the revlog used to generate the nodemap is not longer
247 the repository so the revlog used to generate the nodemap is not longer
248 compatible with the persistent nodemap. We need to detect that.
248 compatible with the persistent nodemap. We need to detect that.
249
249
250 $ hg up "$NODE~5"
250 $ hg up "$NODE~5"
251 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
251 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
252 $ echo bar > babar
252 $ echo bar > babar
253 $ hg add babar
253 $ hg add babar
254 $ hg ci -m 'babar'
254 $ hg ci -m 'babar'
255 created new head
255 created new head
256 $ OTHERNODE=`hg log -r tip -T '{node}\n'`
256 $ OTHERNODE=`hg log -r tip -T '{node}\n'`
257 $ hg log -r "$OTHERNODE" -T '{rev}\n'
257 $ hg log -r "$OTHERNODE" -T '{rev}\n'
258 5004
258 5004
259
259
260 $ hg --config extensions.strip= strip --rev "$NODE~1" --no-backup
260 $ hg --config extensions.strip= strip --rev "$NODE~1" --no-backup
261
261
262 the nodemap should detect the changelog have been tampered with and recover.
262 the nodemap should detect the changelog have been tampered with and recover.
263
263
264 $ hg debugnodemap --metadata
264 $ hg debugnodemap --metadata
265 uid: ???????????????? (glob)
265 uid: ???????????????? (glob)
266 tip-rev: 5002
266 tip-rev: 5002
267 tip-node: 42bf3068c7ddfdfded53c4eb11d02266faeebfee
267 tip-node: 42bf3068c7ddfdfded53c4eb11d02266faeebfee
268 data-length: 123456 (pure !)
268 data-length: 123456 (pure !)
269 data-length: 246464 (rust !)
269 data-length: 246464 (rust !)
270 data-length: 123008 (no-pure no-rust !)
270 data-length: 123008 (no-pure no-rust !)
271 data-unused: 448 (pure !)
271 data-unused: 448 (pure !)
272 data-unused: 123904 (rust !)
272 data-unused: 123904 (rust !)
273 data-unused: 0 (no-pure no-rust !)
273 data-unused: 0 (no-pure no-rust !)
274
274
275 $ cp -f ../tmp-copies/* .hg/store/
275 $ cp -f ../tmp-copies/* .hg/store/
276 $ hg debugnodemap --metadata
276 $ hg debugnodemap --metadata
277 uid: ???????????????? (glob)
277 uid: ???????????????? (glob)
278 tip-rev: 5002
278 tip-rev: 5002
279 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
279 tip-node: 6ce944fafcee85af91f29ea5b51654cc6101ad7e
280 data-length: 122944
280 data-length: 122944
281 data-unused: 0
281 data-unused: 0
282 $ hg log -r "$OTHERNODE" -T '{rev}\n'
282 $ hg log -r "$OTHERNODE" -T '{rev}\n'
283 5002
283 5002
284
284
285 Check transaction related property
285 Check transaction related property
286 ==================================
286 ==================================
287
287
288 An up to date nodemap should be available to shell hooks,
288 An up to date nodemap should be available to shell hooks,
289
289
290 $ echo dsljfl > a
290 $ echo dsljfl > a
291 $ hg add a
291 $ hg add a
292 $ hg ci -m a
292 $ hg ci -m a
293 $ hg debugnodemap --metadata
293 $ hg debugnodemap --metadata
294 uid: ???????????????? (glob)
294 uid: ???????????????? (glob)
295 tip-rev: 5003
295 tip-rev: 5003
296 tip-node: c91af76d172f1053cca41b83f7c2e4e514fe2bcf
296 tip-node: c91af76d172f1053cca41b83f7c2e4e514fe2bcf
297 data-length: 123008
297 data-length: 123008
298 data-unused: 0
298 data-unused: 0
299 $ echo babar2 > babar
299 $ echo babar2 > babar
300 $ hg ci -m 'babar2' --config "hooks.pretxnclose.nodemap-test=hg debugnodemap --metadata"
300 $ hg ci -m 'babar2' --config "hooks.pretxnclose.nodemap-test=hg debugnodemap --metadata"
301 uid: ???????????????? (glob)
301 uid: ???????????????? (glob)
302 tip-rev: 5004
302 tip-rev: 5004
303 tip-node: ba87cd9559559e4b91b28cb140d003985315e031
303 tip-node: ba87cd9559559e4b91b28cb140d003985315e031
304 data-length: 123328 (pure !)
304 data-length: 123328 (pure !)
305 data-length: 123328 (rust !)
305 data-length: 123328 (rust !)
306 data-length: 123136 (no-pure no-rust !)
306 data-length: 123136 (no-pure no-rust !)
307 data-unused: 192 (pure !)
307 data-unused: 192 (pure !)
308 data-unused: 192 (rust !)
308 data-unused: 192 (rust !)
309 data-unused: 0 (no-pure no-rust !)
309 data-unused: 0 (no-pure no-rust !)
310 $ hg debugnodemap --metadata
310 $ hg debugnodemap --metadata
311 uid: ???????????????? (glob)
311 uid: ???????????????? (glob)
312 tip-rev: 5004
312 tip-rev: 5004
313 tip-node: ba87cd9559559e4b91b28cb140d003985315e031
313 tip-node: ba87cd9559559e4b91b28cb140d003985315e031
314 data-length: 123328 (pure !)
314 data-length: 123328 (pure !)
315 data-length: 123328 (rust !)
315 data-length: 123328 (rust !)
316 data-length: 123136 (no-pure no-rust !)
316 data-length: 123136 (no-pure no-rust !)
317 data-unused: 192 (pure !)
317 data-unused: 192 (pure !)
318 data-unused: 192 (rust !)
318 data-unused: 192 (rust !)
319 data-unused: 0 (no-pure no-rust !)
319 data-unused: 0 (no-pure no-rust !)
320
321 Another process does not see the pending nodemap content during run.
322
323 $ PATH=$RUNTESTDIR/testlib/:$PATH
324 $ echo qpoasp > a
325 $ hg ci -m a2 \
326 > --config "hooks.pretxnclose=wait-on-file 20 sync-repo-read sync-txn-pending" \
327 > --config "hooks.txnclose=touch sync-txn-close" > output.txt 2>&1 &
328
329 (read the repository while the commit transaction is pending)
330
331 $ wait-on-file 20 sync-txn-pending && \
332 > hg debugnodemap --metadata && \
333 > wait-on-file 20 sync-txn-close sync-repo-read
334 uid: ???????????????? (glob)
335 tip-rev: 5004
336 tip-node: ba87cd9559559e4b91b28cb140d003985315e031
337 data-length: 123328 (pure !)
338 data-length: 123328 (rust !)
339 data-length: 123136 (no-pure no-rust !)
340 data-unused: 192 (pure !)
341 data-unused: 192 (rust !)
342 data-unused: 0 (no-pure no-rust !)
343 $ hg debugnodemap --metadata
344 uid: ???????????????? (glob)
345 tip-rev: 5005
346 tip-node: bae4d45c759e30f1cb1a40e1382cf0e0414154db
347 data-length: 123584 (pure !)
348 data-length: 123584 (rust !)
349 data-length: 123136 (no-pure no-rust !)
350 data-unused: 448 (pure !)
351 data-unused: 448 (rust !)
352 data-unused: 0 (no-pure no-rust !)
353
354 $ cat output.txt
355
General Comments 0
You need to be logged in to leave comments. Login now