Mercurial > hg
comparison tests/test-copies-in-changeset.t @ 45634:9a6b409b8ebc
changing-files: rework the way we store changed files in side-data
We need to store new data so this is a good opportunity to rework this fully.
1) We directly store the list of affected file in the side data:
* This avoid having to fetch and parse the `files` list in the revision in
addition to the sidedata. Making the data more self sufficient.
* This work around situation where that `files` field contains wrong
information, and open the way to other bug fixing (eg: issue6219)
* The format (fixed initial index, sorted files) allow for fast lookup of
filename within the structure.
* This unify the storage of affected files and copies sources and destination,
limiting the number filename stored redundantly.
* This prepare for the fact we should drop the `files` as soon as we do any
change affecting the revision schema.
* This rely on compression to avoid a significant increase of the changelog.d.
More testing on this will be done before we freeze the final format.
2) We can store additional data:
* The new "merged" field,
* A future "salvaged" set recording files that might have been deleted but have
were still present in the final result.
Differential Revision: https://phab.mercurial-scm.org/D9090
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 15 Sep 2020 10:55:17 +0200 |
parents | ea9563e9e65a |
children | f90a5c211251 |
comparison
equal
deleted
inserted
replaced
45632:7d0e54056586 | 45634:9a6b409b8ebc |
---|---|
77 p1copies: 0\x00a (esc) | 77 p1copies: 0\x00a (esc) |
78 1\x00a (esc) | 78 1\x00a (esc) |
79 2\x00a (esc) | 79 2\x00a (esc) |
80 #else | 80 #else |
81 $ hg debugsidedata -c -v -- -1 | 81 $ hg debugsidedata -c -v -- -1 |
82 2 sidedata entries | 82 1 sidedata entries |
83 entry-0010 size 11 | 83 entry-0014 size 44 |
84 '0\x00a\n1\x00a\n2\x00a' | 84 '\x00\x00\x00\x04\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00abcd' |
85 entry-0012 size 5 | |
86 '0\n1\n2' | |
87 #endif | 85 #endif |
88 | 86 |
89 $ hg showcopies | 87 $ hg showcopies |
90 a -> b | 88 a -> b |
91 a -> c | 89 a -> c |
115 | 113 |
116 p1copies: 1\x00b (esc) | 114 p1copies: 1\x00b (esc) |
117 | 115 |
118 #else | 116 #else |
119 $ hg debugsidedata -c -v -- -1 | 117 $ hg debugsidedata -c -v -- -1 |
120 3 sidedata entries | 118 1 sidedata entries |
121 entry-0010 size 3 | 119 entry-0014 size 25 |
122 '1\x00b' | 120 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x00bb2' |
123 entry-0012 size 1 | |
124 '1' | |
125 entry-0013 size 1 | |
126 '0' | |
127 #endif | 121 #endif |
128 | 122 |
129 $ hg showcopies | 123 $ hg showcopies |
130 b -> b2 | 124 b -> b2 |
131 | 125 |
163 p1copies: 0\x00b2 (esc) | 157 p1copies: 0\x00b2 (esc) |
164 | 158 |
165 #else | 159 #else |
166 $ hg debugsidedata -c -v -- -1 | 160 $ hg debugsidedata -c -v -- -1 |
167 1 sidedata entries | 161 1 sidedata entries |
168 entry-0010 size 4 | 162 entry-0014 size 25 |
169 '0\x00b2' | 163 '\x00\x00\x00\x02\x00\x00\x00\x00\x02\x00\x00\x00\x00\x16\x00\x00\x00\x03\x00\x00\x00\x00b2c' |
170 #endif | 164 #endif |
171 | 165 |
172 $ hg showcopies | 166 $ hg showcopies |
173 b2 -> c | 167 b2 -> c |
174 | 168 |
219 2\x00f (esc) | 213 2\x00f (esc) |
220 p2copies: 1\x00d (esc) | 214 p2copies: 1\x00d (esc) |
221 | 215 |
222 #else | 216 #else |
223 $ hg debugsidedata -c -v -- -1 | 217 $ hg debugsidedata -c -v -- -1 |
224 3 sidedata entries | 218 1 sidedata entries |
225 entry-0010 size 7 | 219 entry-0014 size 64 |
226 '0\x00a\n2\x00f' | 220 '\x00\x00\x00\x06\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x06\x00\x00\x00\x04\x00\x00\x00\x00\x07\x00\x00\x00\x05\x00\x00\x00\x01\x06\x00\x00\x00\x06\x00\x00\x00\x02adfghi' |
227 entry-0011 size 3 | |
228 '1\x00d' | |
229 entry-0012 size 5 | |
230 '0\n1\n2' | |
231 #endif | 221 #endif |
232 | 222 |
233 $ hg showcopies | 223 $ hg showcopies |
234 a -> g | 224 a -> g |
235 d -> h | 225 d -> h |
248 p1copies: 0\x00a (esc) | 238 p1copies: 0\x00a (esc) |
249 p2copies: | 239 p2copies: |
250 #else | 240 #else |
251 $ hg ci -m 'copy a to j' | 241 $ hg ci -m 'copy a to j' |
252 $ hg debugsidedata -c -v -- -1 | 242 $ hg debugsidedata -c -v -- -1 |
253 2 sidedata entries | 243 1 sidedata entries |
254 entry-0010 size 3 | 244 entry-0014 size 24 |
255 '0\x00a' | 245 '\x00\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00aj' |
256 entry-0012 size 1 | |
257 '0' | |
258 #endif | 246 #endif |
259 $ hg debugdata j 0 | 247 $ hg debugdata j 0 |
260 \x01 (esc) | 248 \x01 (esc) |
261 copy: a | 249 copy: a |
262 copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 | 250 copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 |
279 | 267 |
280 #else | 268 #else |
281 $ hg ci --amend -m 'copy a to j, v2' | 269 $ hg ci --amend -m 'copy a to j, v2' |
282 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob) | 270 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-*-amend.hg (glob) |
283 $ hg debugsidedata -c -v -- -1 | 271 $ hg debugsidedata -c -v -- -1 |
284 2 sidedata entries | 272 1 sidedata entries |
285 entry-0010 size 3 | 273 entry-0014 size 24 |
286 '0\x00a' | 274 '\x00\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00aj' |
287 entry-0012 size 1 | |
288 '0' | |
289 #endif | 275 #endif |
290 $ hg showcopies --config experimental.copies.read-from=filelog-only | 276 $ hg showcopies --config experimental.copies.read-from=filelog-only |
291 a -> j | 277 a -> j |
292 The entries should be written to extras even if they're empty (so the client | 278 The entries should be written to extras even if they're empty (so the client |
293 won't have to fall back to reading from filelogs) | 279 won't have to fall back to reading from filelogs) |
302 p1copies: | 288 p1copies: |
303 p2copies: | 289 p2copies: |
304 #else | 290 #else |
305 $ hg ci -m 'modify j' | 291 $ hg ci -m 'modify j' |
306 $ hg debugsidedata -c -v -- -1 | 292 $ hg debugsidedata -c -v -- -1 |
293 1 sidedata entries | |
294 entry-0014 size 14 | |
295 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00j' | |
307 #endif | 296 #endif |
308 | 297 |
309 Test writing only to filelog | 298 Test writing only to filelog |
310 | 299 |
311 $ hg cp a k | 300 $ hg cp a k |
316 files: k | 305 files: k |
317 | 306 |
318 #else | 307 #else |
319 $ hg ci -m 'copy a to k' | 308 $ hg ci -m 'copy a to k' |
320 $ hg debugsidedata -c -v -- -1 | 309 $ hg debugsidedata -c -v -- -1 |
321 2 sidedata entries | 310 1 sidedata entries |
322 entry-0010 size 3 | 311 entry-0014 size 24 |
323 '0\x00a' | 312 '\x00\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ak' |
324 entry-0012 size 1 | |
325 '0' | |
326 #endif | 313 #endif |
327 | 314 |
328 $ hg debugdata k 0 | 315 $ hg debugdata k 0 |
329 \x01 (esc) | 316 \x01 (esc) |
330 copy: a | 317 copy: a |
437 plain-cl-delta: yes yes yes | 424 plain-cl-delta: yes yes yes |
438 compression: zlib zlib zlib | 425 compression: zlib zlib zlib |
439 compression-level: default default default | 426 compression-level: default default default |
440 $ hg debugsidedata -c -- 0 | 427 $ hg debugsidedata -c -- 0 |
441 1 sidedata entries | 428 1 sidedata entries |
442 entry-0012 size 1 | 429 entry-0014 size 14 |
443 $ hg debugsidedata -c -- 1 | 430 $ hg debugsidedata -c -- 1 |
444 1 sidedata entries | 431 1 sidedata entries |
445 entry-0013 size 1 | 432 entry-0014 size 14 |
446 $ hg debugsidedata -m -- 0 | 433 $ hg debugsidedata -m -- 0 |
447 $ cat << EOF > .hg/hgrc | 434 $ cat << EOF > .hg/hgrc |
448 > [format] | 435 > [format] |
449 > exp-use-side-data = yes | 436 > exp-use-side-data = yes |
450 > exp-use-copies-side-data-changeset = no | 437 > exp-use-copies-side-data-changeset = no |
461 copies-sdc: no no no | 448 copies-sdc: no no no |
462 plain-cl-delta: yes yes yes | 449 plain-cl-delta: yes yes yes |
463 compression: zlib zlib zlib | 450 compression: zlib zlib zlib |
464 compression-level: default default default | 451 compression-level: default default default |
465 $ hg debugsidedata -c -- 0 | 452 $ hg debugsidedata -c -- 0 |
453 1 sidedata entries | |
454 entry-0014 size 14 | |
466 $ hg debugsidedata -c -- 1 | 455 $ hg debugsidedata -c -- 1 |
456 1 sidedata entries | |
457 entry-0014 size 14 | |
467 $ hg debugsidedata -m -- 0 | 458 $ hg debugsidedata -m -- 0 |
468 | 459 |
469 upgrading | 460 upgrading |
470 | 461 |
471 $ cat << EOF > .hg/hgrc | 462 $ cat << EOF > .hg/hgrc |
485 plain-cl-delta: yes yes yes | 476 plain-cl-delta: yes yes yes |
486 compression: zlib zlib zlib | 477 compression: zlib zlib zlib |
487 compression-level: default default default | 478 compression-level: default default default |
488 $ hg debugsidedata -c -- 0 | 479 $ hg debugsidedata -c -- 0 |
489 1 sidedata entries | 480 1 sidedata entries |
490 entry-0012 size 1 | 481 entry-0014 size 14 |
491 $ hg debugsidedata -c -- 1 | 482 $ hg debugsidedata -c -- 1 |
492 1 sidedata entries | 483 1 sidedata entries |
493 entry-0013 size 1 | 484 entry-0014 size 14 |
494 $ hg debugsidedata -m -- 0 | 485 $ hg debugsidedata -m -- 0 |
495 | 486 |
496 #endif | 487 #endif |
497 | 488 |
498 $ cd .. | 489 $ cd .. |