##// END OF EJS Templates
changelogv2: introduce a "changelogv2" feature...
marmoute -
r48037:6c84fc9c default
parent child Browse files
Show More
@@ -295,7 +295,10 b' class cg1unpacker(object):'
295 295 # Only useful if we're adding sidedata categories. If both peers have
296 296 # the same categories, then we simply don't do anything.
297 297 adding_sidedata = (
298 requirements.REVLOGV2_REQUIREMENT in repo.requirements
298 (
299 requirements.REVLOGV2_REQUIREMENT in repo.requirements
300 or requirements.CHANGELOGV2_REQUIREMENT in repo.requirements
301 )
299 302 and self.version == b'04'
300 303 and srctype == b'pull'
301 304 )
@@ -1723,6 +1726,7 b' def allsupportedversions(repo):'
1723 1726 want_v4 = (
1724 1727 repo.ui.configbool(b'experimental', b'changegroup4')
1725 1728 or requirements.REVLOGV2_REQUIREMENT in repo.requirements
1729 or requirements.CHANGELOGV2_REQUIREMENT in repo.requirements
1726 1730 )
1727 1731 if not want_v4:
1728 1732 versions.discard(b'04')
@@ -1341,6 +1341,21 b' coreconfigitem('
1341 1341 default=lambda: [b'zstd', b'zlib'],
1342 1342 alias=[(b'experimental', b'format.compression')],
1343 1343 )
1344 # Experimental TODOs:
1345 #
1346 # * Same as for evlogv2 (but for the reduction of the number of files)
1347 # * drop the storage of the base
1348 # * Improvement to investigate
1349 # - storing .hgtags fnode
1350 # - storing `rank` of changesets
1351 # - storing branch related identifier
1352
1353 coreconfigitem(
1354 b'format',
1355 b'exp-use-changelog-v2',
1356 default=None,
1357 experimental=True,
1358 )
1344 1359 coreconfigitem(
1345 1360 b'format',
1346 1361 b'usefncache',
@@ -737,7 +737,10 b' def makelocalrepository(baseui, path, in'
737 737 storevfs = store.vfs
738 738 storevfs.options = resolvestorevfsoptions(ui, requirements, features)
739 739
740 if requirementsmod.REVLOGV2_REQUIREMENT in requirements:
740 if (
741 requirementsmod.REVLOGV2_REQUIREMENT in requirements
742 or requirementsmod.CHANGELOGV2_REQUIREMENT in requirements
743 ):
741 744 features.add(repository.REPO_FEATURE_SIDE_DATA)
742 745 # the revlogv2 docket introduced race condition that we need to fix
743 746 features.discard(repository.REPO_FEATURE_STREAM_CLONE)
@@ -1021,6 +1024,8 b' def resolverevlogstorevfsoptions(ui, req'
1021 1024 options[b'revlogv1'] = True
1022 1025 if requirementsmod.REVLOGV2_REQUIREMENT in requirements:
1023 1026 options[b'revlogv2'] = True
1027 if requirementsmod.CHANGELOGV2_REQUIREMENT in requirements:
1028 options[b'changelogv2'] = True
1024 1029
1025 1030 if requirementsmod.GENERALDELTA_REQUIREMENT in requirements:
1026 1031 options[b'generaldelta'] = True
@@ -1220,6 +1225,7 b' class localrepository(object):'
1220 1225 requirementsmod.TREEMANIFEST_REQUIREMENT,
1221 1226 requirementsmod.COPIESSDC_REQUIREMENT,
1222 1227 requirementsmod.REVLOGV2_REQUIREMENT,
1228 requirementsmod.CHANGELOGV2_REQUIREMENT,
1223 1229 requirementsmod.SPARSEREVLOG_REQUIREMENT,
1224 1230 requirementsmod.NODEMAP_REQUIREMENT,
1225 1231 bookmarks.BOOKMARKS_IN_STORE_REQUIREMENT,
@@ -3529,6 +3535,10 b' def newreporequirements(ui, createopts):'
3529 3535 if ui.configbool(b'experimental', b'treemanifest'):
3530 3536 requirements.add(requirementsmod.TREEMANIFEST_REQUIREMENT)
3531 3537
3538 changelogv2 = ui.config(b'format', b'exp-use-changelog-v2')
3539 if changelogv2 == b'enable-unstable-format-and-corrupt-my-data':
3540 requirements.add(requirementsmod.CHANGELOGV2_REQUIREMENT)
3541
3532 3542 revlogv2 = ui.config(b'experimental', b'revlogv2')
3533 3543 if revlogv2 == b'enable-unstable-format-and-corrupt-my-data':
3534 3544 requirements.discard(requirementsmod.REVLOGV1_REQUIREMENT)
@@ -30,6 +30,10 b" REVLOGV1_REQUIREMENT = b'revlogv1'"
30 30
31 31 # Increment the sub-version when the revlog v2 format changes to lock out old
32 32 # clients.
33 CHANGELOGV2_REQUIREMENT = b'exp-changelog-v2'
34
35 # Increment the sub-version when the revlog v2 format changes to lock out old
36 # clients.
33 37 REVLOGV2_REQUIREMENT = b'exp-revlogv2.2'
34 38
35 39 # A repository with the sparserevlog feature will have delta chains that
@@ -42,6 +42,7 b' from .revlogutils.constants import ('
42 42 FLAG_GENERALDELTA,
43 43 FLAG_INLINE_DATA,
44 44 INDEX_HEADER,
45 KIND_CHANGELOG,
45 46 REVLOGV0,
46 47 REVLOGV1,
47 48 REVLOGV1_FLAGS,
@@ -458,7 +459,9 b' class revlog(object):'
458 459 mmapindexthreshold = None
459 460 opts = self.opener.options
460 461
461 if b'revlogv2' in opts:
462 if b'changelogv2' in opts and self.revlog_kind == KIND_CHANGELOG:
463 new_header = REVLOGV2
464 elif b'revlogv2' in opts:
462 465 new_header = REVLOGV2
463 466 elif b'revlogv1' in opts:
464 467 new_header = REVLOGV1 | FLAG_INLINE_DATA
@@ -373,6 +373,15 b' class revlogv2(requirementformatvariant)'
373 373
374 374
375 375 @registerformatvariant
376 class changelogv2(requirementformatvariant):
377 name = b'changelog-v2'
378 _requirement = requirements.CHANGELOGV2_REQUIREMENT
379 default = False
380 description = _(b'An iteration of the revlog focussed on changelog needs.')
381 upgrademessage = _(b'quite experimental')
382
383
384 @registerformatvariant
376 385 class removecldeltachain(formatvariant):
377 386 name = b'plain-cl-delta'
378 387
@@ -1660,6 +1660,7 b' We upgrade a repository that is not usin'
1660 1660 persistent-nodemap: yes yes no (rust !)
1661 1661 copies-sdc: no yes no
1662 1662 revlog-v2: no yes no
1663 changelog-v2: no no no
1663 1664 plain-cl-delta: yes yes yes
1664 1665 compression: * (glob)
1665 1666 compression-level: default default default
@@ -1699,6 +1700,7 b' We upgrade a repository that is not usin'
1699 1700 persistent-nodemap: yes yes no (rust !)
1700 1701 copies-sdc: no yes no
1701 1702 revlog-v2: no yes no
1703 changelog-v2: no no no
1702 1704 plain-cl-delta: yes yes yes
1703 1705 compression: * (glob)
1704 1706 compression-level: default default default
@@ -43,6 +43,7 b' Check that copies are recorded correctly'
43 43 persistent-nodemap: yes yes no (rust !)
44 44 copies-sdc: yes yes no
45 45 revlog-v2: yes yes no
46 changelog-v2: no no no
46 47 plain-cl-delta: yes yes yes
47 48 compression: zlib zlib zlib (no-zstd !)
48 49 compression: zstd zstd zstd (zstd !)
@@ -59,6 +60,7 b' Check that copies are recorded correctly'
59 60 persistent-nodemap: yes yes no (rust !)
60 61 copies-sdc: no no no
61 62 revlog-v2: no no no
63 changelog-v2: no no no
62 64 plain-cl-delta: yes yes yes
63 65 compression: zlib zlib zlib (no-zstd !)
64 66 compression: zstd zstd zstd (zstd !)
@@ -432,6 +434,7 b' downgrading'
432 434 persistent-nodemap: yes yes no (rust !)
433 435 copies-sdc: yes yes no
434 436 revlog-v2: yes yes no
437 changelog-v2: no no no
435 438 plain-cl-delta: yes yes yes
436 439 compression: zlib zlib zlib (no-zstd !)
437 440 compression: zstd zstd zstd (zstd !)
@@ -461,6 +464,7 b' downgrading'
461 464 persistent-nodemap: yes yes no (rust !)
462 465 copies-sdc: no no no
463 466 revlog-v2: yes yes no
467 changelog-v2: no no no
464 468 plain-cl-delta: yes yes yes
465 469 compression: zlib zlib zlib (no-zstd !)
466 470 compression: zstd zstd zstd (zstd !)
@@ -487,6 +491,7 b' upgrading'
487 491 persistent-nodemap: yes yes no (rust !)
488 492 copies-sdc: yes yes no
489 493 revlog-v2: yes yes no
494 changelog-v2: no no no
490 495 plain-cl-delta: yes yes yes
491 496 compression: zlib zlib zlib (no-zstd !)
492 497 compression: zstd zstd zstd (zstd !)
@@ -64,6 +64,7 b' As a result, -1 passed from Rust for the'
64 64 persistent-nodemap: yes
65 65 copies-sdc: no
66 66 revlog-v2: no
67 changelog-v2: no
67 68 plain-cl-delta: yes
68 69 compression: zlib (no-zstd !)
69 70 compression: zstd (zstd !)
@@ -583,6 +584,7 b' downgrading'
583 584 persistent-nodemap: yes no no
584 585 copies-sdc: no no no
585 586 revlog-v2: no no no
587 changelog-v2: no no no
586 588 plain-cl-delta: yes yes yes
587 589 compression: zlib zlib zlib (no-zstd !)
588 590 compression: zstd zstd zstd (zstd !)
@@ -630,6 +632,7 b' upgrading'
630 632 persistent-nodemap: no yes no
631 633 copies-sdc: no no no
632 634 revlog-v2: no no no
635 changelog-v2: no no no
633 636 plain-cl-delta: yes yes yes
634 637 compression: zlib zlib zlib (no-zstd !)
635 638 compression: zstd zstd zstd (zstd !)
@@ -60,6 +60,7 b' Check that we can upgrade to sidedata'
60 60 persistent-nodemap: yes yes no (rust !)
61 61 copies-sdc: no no no
62 62 revlog-v2: no no no
63 changelog-v2: no no no
63 64 plain-cl-delta: yes yes yes
64 65 compression: zlib zlib zlib (no-zstd !)
65 66 compression: zstd zstd zstd (zstd !)
@@ -75,6 +76,7 b' Check that we can upgrade to sidedata'
75 76 persistent-nodemap: yes yes no (rust !)
76 77 copies-sdc: no no no
77 78 revlog-v2: no yes no
79 changelog-v2: no no no
78 80 plain-cl-delta: yes yes yes
79 81 compression: zlib zlib zlib (no-zstd !)
80 82 compression: zstd zstd zstd (zstd !)
@@ -96,6 +98,7 b' Check that we can downgrade from sidedat'
96 98 persistent-nodemap: yes yes no (rust !)
97 99 copies-sdc: no no no
98 100 revlog-v2: yes no no
101 changelog-v2: no no no
99 102 plain-cl-delta: yes yes yes
100 103 compression: zlib zlib zlib (no-zstd !)
101 104 compression: zstd zstd zstd (zstd !)
@@ -111,6 +114,7 b' Check that we can downgrade from sidedat'
111 114 persistent-nodemap: yes yes no (rust !)
112 115 copies-sdc: no no no
113 116 revlog-v2: yes no no
117 changelog-v2: no no no
114 118 plain-cl-delta: yes yes yes
115 119 compression: zlib zlib zlib (no-zstd !)
116 120 compression: zstd zstd zstd (zstd !)
@@ -1,7 +1,7 b''
1 1 Test transaction safety
2 2 =======================
3 3
4 #testcases revlogv1 revlogv2
4 #testcases revlogv1 revlogv2 changelogv2
5 5
6 6 #if revlogv1
7 7
@@ -21,6 +21,15 b' Test transaction safety'
21 21
22 22 #endif
23 23
24 #if changelogv2
25
26 $ cat << EOF >> $HGRCPATH
27 > [format]
28 > exp-use-changelog-v2=enable-unstable-format-and-corrupt-my-data
29 > EOF
30
31 #endif
32
24 33 This test basic case to make sure external process do not see transaction
25 34 content until it is committed.
26 35
@@ -65,6 +65,7 b' An upgrade of a repository created with '
65 65 persistent-nodemap: yes (rust !)
66 66 copies-sdc: no
67 67 revlog-v2: no
68 changelog-v2: no
68 69 plain-cl-delta: yes
69 70 compression: zlib
70 71 compression-level: default
@@ -79,6 +80,7 b' An upgrade of a repository created with '
79 80 persistent-nodemap: yes yes no (rust !)
80 81 copies-sdc: no no no
81 82 revlog-v2: no no no
83 changelog-v2: no no no
82 84 plain-cl-delta: yes yes yes
83 85 compression: zlib zlib zlib (no-zstd !)
84 86 compression: zlib zlib zstd (zstd !)
@@ -94,6 +96,7 b' An upgrade of a repository created with '
94 96 persistent-nodemap: yes yes no (rust !)
95 97 copies-sdc: no no no
96 98 revlog-v2: no no no
99 changelog-v2: no no no
97 100 plain-cl-delta: yes yes yes
98 101 compression: zlib zlib zlib (no-zstd !)
99 102 compression: zlib zlib zstd (zstd !)
@@ -109,6 +112,7 b' An upgrade of a repository created with '
109 112 [formatvariant.name.mismatchdefault|persistent-nodemap:][formatvariant.repo.mismatchdefault| yes][formatvariant.config.special| yes][formatvariant.default| no] (rust !)
110 113 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
111 114 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
115 [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
112 116 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
113 117 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !)
114 118 [formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !)
@@ -166,6 +170,12 b' An upgrade of a repository created with '
166 170 "repo": false
167 171 },
168 172 {
173 "config": false,
174 "default": false,
175 "name": "changelog-v2",
176 "repo": false
177 },
178 {
169 179 "config": true,
170 180 "default": true,
171 181 "name": "plain-cl-delta",
@@ -324,6 +334,7 b' Various sub-optimal detections work'
324 334 persistent-nodemap: no
325 335 copies-sdc: no
326 336 revlog-v2: no
337 changelog-v2: no
327 338 plain-cl-delta: yes
328 339 compression: zlib
329 340 compression-level: default
@@ -338,6 +349,7 b' Various sub-optimal detections work'
338 349 persistent-nodemap: no yes no (rust !)
339 350 copies-sdc: no no no
340 351 revlog-v2: no no no
352 changelog-v2: no no no
341 353 plain-cl-delta: yes yes yes
342 354 compression: zlib zlib zlib (no-zstd !)
343 355 compression: zlib zlib zstd (zstd !)
@@ -353,6 +365,7 b' Various sub-optimal detections work'
353 365 persistent-nodemap: no yes no (rust !)
354 366 copies-sdc: no no no
355 367 revlog-v2: no no no
368 changelog-v2: no no no
356 369 plain-cl-delta: yes yes yes
357 370 compression: zlib zlib zlib (no-zstd !)
358 371 compression: zlib zlib zstd (zstd !)
@@ -368,6 +381,7 b' Various sub-optimal detections work'
368 381 [formatvariant.name.mismatchconfig|persistent-nodemap:][formatvariant.repo.mismatchconfig| no][formatvariant.config.special| yes][formatvariant.default| no] (rust !)
369 382 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
370 383 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
384 [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
371 385 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
372 386 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !)
373 387 [formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !)
@@ -1349,6 +1363,7 b' upgrade'
1349 1363 persistent-nodemap: yes yes no (rust !)
1350 1364 copies-sdc: no no no
1351 1365 revlog-v2: no no no
1366 changelog-v2: no no no
1352 1367 plain-cl-delta: yes yes yes
1353 1368 compression: zlib zlib zlib (no-zstd !)
1354 1369 compression: zstd zlib zstd (zstd !)
@@ -1389,6 +1404,7 b' downgrade'
1389 1404 persistent-nodemap: yes yes no (rust !)
1390 1405 copies-sdc: no no no
1391 1406 revlog-v2: no no no
1407 changelog-v2: no no no
1392 1408 plain-cl-delta: yes yes yes
1393 1409 compression: zlib zlib zlib (no-zstd !)
1394 1410 compression: zlib zlib zstd (zstd !)
@@ -1432,6 +1448,7 b' upgrade from hgrc'
1432 1448 persistent-nodemap: yes yes no (rust !)
1433 1449 copies-sdc: no no no
1434 1450 revlog-v2: no no no
1451 changelog-v2: no no no
1435 1452 plain-cl-delta: yes yes yes
1436 1453 compression: zlib zlib zlib (no-zstd !)
1437 1454 compression: zstd zstd zstd (zstd !)
@@ -1481,6 +1498,7 b' upgrade'
1481 1498 persistent-nodemap: yes yes no (rust !)
1482 1499 copies-sdc: no no no
1483 1500 revlog-v2: yes no no
1501 changelog-v2: no no no
1484 1502 plain-cl-delta: yes yes yes
1485 1503 compression: zlib zlib zlib (no-zstd !)
1486 1504 compression: zstd zstd zstd (zstd !)
@@ -1527,6 +1545,7 b' downgrade'
1527 1545 persistent-nodemap: yes yes no (rust !)
1528 1546 copies-sdc: no no no
1529 1547 revlog-v2: no no no
1548 changelog-v2: no no no
1530 1549 plain-cl-delta: yes yes yes
1531 1550 compression: zlib zlib zlib (no-zstd !)
1532 1551 compression: zstd zstd zstd (zstd !)
@@ -1574,6 +1593,7 b' upgrade from hgrc'
1574 1593 persistent-nodemap: yes yes no (rust !)
1575 1594 copies-sdc: no no no
1576 1595 revlog-v2: yes yes no
1596 changelog-v2: no no no
1577 1597 plain-cl-delta: yes yes yes
1578 1598 compression: zlib zlib zlib (no-zstd !)
1579 1599 compression: zstd zstd zstd (zstd !)
General Comments 0
You need to be logged in to leave comments. Login now