##// END OF EJS Templates
revlogv2: allow upgrading to v2...
Raphaël Gomès -
r47439:fd55a9eb default
parent child Browse files
Show More
@@ -1299,6 +1299,12 b' coreconfigitem('
1299 1299 )
1300 1300 coreconfigitem(
1301 1301 b'format',
1302 b'exp-revlogv2.2',
1303 default=False,
1304 experimental=True,
1305 )
1306 coreconfigitem(
1307 b'format',
1302 1308 b'exp-use-copies-side-data-changeset',
1303 1309 default=False,
1304 1310 experimental=True,
@@ -3447,9 +3447,13 b' def newreporequirements(ui, createopts):'
3447 3447
3448 3448 # experimental config: format.exp-use-side-data
3449 3449 if ui.configbool(b'format', b'exp-use-side-data'):
3450 requirements.discard(requirementsmod.REVLOGV1_REQUIREMENT)
3451 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT)
3450 3452 requirements.add(requirementsmod.SIDEDATA_REQUIREMENT)
3451 3453 # experimental config: format.exp-use-copies-side-data-changeset
3452 3454 if ui.configbool(b'format', b'exp-use-copies-side-data-changeset'):
3455 requirements.discard(requirementsmod.REVLOGV1_REQUIREMENT)
3456 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT)
3453 3457 requirements.add(requirementsmod.SIDEDATA_REQUIREMENT)
3454 3458 requirements.add(requirementsmod.COPIESSDC_REQUIREMENT)
3455 3459 if ui.configbool(b'experimental', b'treemanifest'):
@@ -3457,7 +3461,7 b' def newreporequirements(ui, createopts):'
3457 3461
3458 3462 revlogv2 = ui.config(b'experimental', b'revlogv2')
3459 3463 if revlogv2 == b'enable-unstable-format-and-corrupt-my-data':
3460 requirements.remove(requirementsmod.REVLOGV1_REQUIREMENT)
3464 requirements.discard(requirementsmod.REVLOGV1_REQUIREMENT)
3461 3465 # generaldelta is implied by revlogv2.
3462 3466 requirements.discard(requirementsmod.GENERALDELTA_REQUIREMENT)
3463 3467 requirements.add(requirementsmod.REVLOGV2_REQUIREMENT)
@@ -328,7 +328,7 b' class sparserevlog(requirementformatvari'
328 328 class sidedata(requirementformatvariant):
329 329 name = b'sidedata'
330 330
331 _requirement = requirements.SIDEDATA_REQUIREMENT
331 _requirement = requirements.REVLOGV2_REQUIREMENT
332 332
333 333 default = False
334 334
@@ -339,6 +339,11 b' class sidedata(requirementformatvariant)'
339 339
340 340 upgrademessage = _(b'Allows storage of extra data alongside a revision.')
341 341
342 @classmethod
343 def fromrepo(cls, repo):
344 assert cls._requirement is not None
345 return cls._requirement in repo.requirements
346
342 347
343 348 @registerformatvariant
344 349 class persistentnodemap(requirementformatvariant):
@@ -371,6 +376,15 b' class copiessdc(requirementformatvariant'
371 376
372 377
373 378 @registerformatvariant
379 class revlogv2(requirementformatvariant):
380 name = b'revlog-v2'
381 _requirement = requirements.REVLOGV2_REQUIREMENT
382 default = False
383 description = _(b'Version 2 of the revlog.')
384 upgrademessage = _(b'very experimental')
385
386
387 @registerformatvariant
374 388 class removecldeltachain(formatvariant):
375 389 name = b'plain-cl-delta'
376 390
@@ -857,8 +871,6 b' def requiredsourcerequirements(repo):'
857 871 """
858 872 return {
859 873 # Introduced in Mercurial 0.9.2.
860 requirements.REVLOGV1_REQUIREMENT,
861 # Introduced in Mercurial 0.9.2.
862 874 requirements.STORE_REQUIREMENT,
863 875 }
864 876
@@ -881,9 +893,21 b' def blocksourcerequirements(repo):'
881 893 }
882 894
883 895
896 def check_revlog_version(reqs):
897 """Check that the requirements contain at least one Revlog version"""
898 all_revlogs = {
899 requirements.REVLOGV1_REQUIREMENT,
900 requirements.REVLOGV2_REQUIREMENT,
901 }
902 if not all_revlogs.intersection(reqs):
903 msg = _(b'cannot upgrade repository; missing a revlog version')
904 raise error.Abort(msg)
905
906
884 907 def check_source_requirements(repo):
885 908 """Ensure that no existing requirements prevent the repository upgrade"""
886 909
910 check_revlog_version(repo.requirements)
887 911 required = requiredsourcerequirements(repo)
888 912 missingreqs = required - repo.requirements
889 913 if missingreqs:
@@ -915,6 +939,8 b' def supportremovedrequirements(repo):'
915 939 requirements.COPIESSDC_REQUIREMENT,
916 940 requirements.NODEMAP_REQUIREMENT,
917 941 requirements.SHARESAFE_REQUIREMENT,
942 requirements.REVLOGV2_REQUIREMENT,
943 requirements.REVLOGV1_REQUIREMENT,
918 944 }
919 945 for name in compression.compengines:
920 946 engine = compression.compengines[name]
@@ -937,13 +963,14 b' def supporteddestrequirements(repo):'
937 963 requirements.DOTENCODE_REQUIREMENT,
938 964 requirements.FNCACHE_REQUIREMENT,
939 965 requirements.GENERALDELTA_REQUIREMENT,
940 requirements.REVLOGV1_REQUIREMENT,
966 requirements.REVLOGV1_REQUIREMENT, # allowed in case of downgrade
941 967 requirements.STORE_REQUIREMENT,
942 968 requirements.SPARSEREVLOG_REQUIREMENT,
943 969 requirements.SIDEDATA_REQUIREMENT,
944 970 requirements.COPIESSDC_REQUIREMENT,
945 971 requirements.NODEMAP_REQUIREMENT,
946 972 requirements.SHARESAFE_REQUIREMENT,
973 requirements.REVLOGV2_REQUIREMENT,
947 974 }
948 975 for name in compression.compengines:
949 976 engine = compression.compengines[name]
@@ -973,6 +1000,8 b' def allowednewrequirements(repo):'
973 1000 requirements.COPIESSDC_REQUIREMENT,
974 1001 requirements.NODEMAP_REQUIREMENT,
975 1002 requirements.SHARESAFE_REQUIREMENT,
1003 requirements.REVLOGV1_REQUIREMENT,
1004 requirements.REVLOGV2_REQUIREMENT,
976 1005 }
977 1006 for name in compression.compengines:
978 1007 engine = compression.compengines[name]
@@ -985,7 +1014,7 b' def allowednewrequirements(repo):'
985 1014
986 1015 def check_requirements_changes(repo, new_reqs):
987 1016 old_reqs = repo.requirements
988
1017 check_revlog_version(repo.requirements)
989 1018 support_removal = supportremovedrequirements(repo)
990 1019 no_remove_reqs = old_reqs - new_reqs - support_removal
991 1020 if no_remove_reqs:
@@ -1469,6 +1469,7 b' We upgrade a repository that is not usin'
1469 1469 sidedata: no yes no
1470 1470 persistent-nodemap: no no no
1471 1471 copies-sdc: no yes no
1472 revlog-v2: no yes no
1472 1473 plain-cl-delta: yes yes yes
1473 1474 compression: * (glob)
1474 1475 compression-level: default default default
@@ -1477,7 +1478,8 b' We upgrade a repository that is not usin'
1477 1478
1478 1479 requirements
1479 1480 preserved: * (glob)
1480 added: exp-copies-sidedata-changeset, exp-sidedata-flag
1481 removed: revlogv1
1482 added: exp-copies-sidedata-changeset, exp-revlogv2.2, exp-sidedata-flag
1481 1483
1482 1484 processed revlogs:
1483 1485 - all-filelogs
@@ -1507,6 +1509,7 b' We upgrade a repository that is not usin'
1507 1509 sidedata: no yes no
1508 1510 persistent-nodemap: no no no
1509 1511 copies-sdc: no yes no
1512 revlog-v2: no yes no
1510 1513 plain-cl-delta: yes yes yes
1511 1514 compression: * (glob)
1512 1515 compression-level: default default default
@@ -1515,7 +1518,8 b' We upgrade a repository that is not usin'
1515 1518
1516 1519 requirements
1517 1520 preserved: * (glob)
1518 added: exp-copies-sidedata-changeset, exp-sidedata-flag
1521 removed: revlogv1
1522 added: exp-copies-sidedata-changeset, exp-revlogv2.2, exp-sidedata-flag
1519 1523
1520 1524 processed revlogs:
1521 1525 - all-filelogs
@@ -42,6 +42,7 b' Check that copies are recorded correctly'
42 42 sidedata: yes yes no
43 43 persistent-nodemap: no no no
44 44 copies-sdc: yes yes no
45 revlog-v2: yes yes no
45 46 plain-cl-delta: yes yes yes
46 47 compression: zlib zlib zlib
47 48 compression-level: default default default
@@ -56,6 +57,7 b' Check that copies are recorded correctly'
56 57 sidedata: no no no
57 58 persistent-nodemap: no no no
58 59 copies-sdc: no no no
60 revlog-v2: no no no
59 61 plain-cl-delta: yes yes yes
60 62 compression: zlib zlib zlib
61 63 compression-level: default default default
@@ -427,6 +429,7 b' downgrading (keeping some sidedata)'
427 429 sidedata: yes yes no
428 430 persistent-nodemap: no no no
429 431 copies-sdc: yes yes no
432 revlog-v2: yes yes no
430 433 plain-cl-delta: yes yes yes
431 434 compression: zlib zlib zlib
432 435 compression-level: default default default
@@ -453,6 +456,7 b' downgrading (keeping some sidedata)'
453 456 sidedata: yes yes no
454 457 persistent-nodemap: no no no
455 458 copies-sdc: no no no
459 revlog-v2: yes yes no
456 460 plain-cl-delta: yes yes yes
457 461 compression: zlib zlib zlib
458 462 compression-level: default default default
@@ -481,6 +485,7 b' upgrading'
481 485 sidedata: yes yes no
482 486 persistent-nodemap: no no no
483 487 copies-sdc: yes yes no
488 revlog-v2: yes yes no
484 489 plain-cl-delta: yes yes yes
485 490 compression: zlib zlib zlib
486 491 compression-level: default default default
@@ -59,6 +59,7 b' As a result, -1 passed from Rust for the'
59 59 sidedata: no
60 60 persistent-nodemap: yes
61 61 copies-sdc: no
62 revlog-v2: no
62 63 plain-cl-delta: yes
63 64 compression: zlib
64 65 compression-level: default
@@ -578,6 +579,7 b' downgrading'
578 579 sidedata: no no no
579 580 persistent-nodemap: yes no no
580 581 copies-sdc: no no no
582 revlog-v2: no no no
581 583 plain-cl-delta: yes yes yes
582 584 compression: zlib zlib zlib
583 585 compression-level: default default default
@@ -623,6 +625,7 b' upgrading'
623 625 sidedata: no no no
624 626 persistent-nodemap: no yes no
625 627 copies-sdc: no no no
628 revlog-v2: no no no
626 629 plain-cl-delta: yes yes yes
627 630 compression: zlib zlib zlib
628 631 compression-level: default default default
@@ -59,6 +59,7 b' Check that we can upgrade to sidedata'
59 59 sidedata: no no no
60 60 persistent-nodemap: no no no
61 61 copies-sdc: no no no
62 revlog-v2: no no no
62 63 plain-cl-delta: yes yes yes
63 64 compression: zlib zlib zlib
64 65 compression-level: default default default
@@ -72,6 +73,7 b' Check that we can upgrade to sidedata'
72 73 sidedata: no yes no
73 74 persistent-nodemap: no no no
74 75 copies-sdc: no no no
76 revlog-v2: no yes no
75 77 plain-cl-delta: yes yes yes
76 78 compression: zlib zlib zlib
77 79 compression-level: default default default
@@ -91,6 +93,7 b' Check that we can downgrade from sidedat'
91 93 sidedata: yes no no
92 94 persistent-nodemap: no no no
93 95 copies-sdc: no no no
96 revlog-v2: yes no no
94 97 plain-cl-delta: yes yes yes
95 98 compression: zlib zlib zlib
96 99 compression-level: default default default
@@ -104,6 +107,7 b' Check that we can downgrade from sidedat'
104 107 sidedata: yes no no
105 108 persistent-nodemap: no no no
106 109 copies-sdc: no no no
110 revlog-v2: yes no no
107 111 plain-cl-delta: yes yes yes
108 112 compression: zlib zlib zlib
109 113 compression-level: default default default
@@ -21,7 +21,7 b' store and revlogv1 are required in sourc'
21 21 > EOF
22 22
23 23 $ hg -R no-revlogv1 debugupgraderepo
24 abort: cannot upgrade repository; requirement missing: revlogv1
24 abort: cannot upgrade repository; missing a revlog version
25 25 [255]
26 26
27 27 Cannot upgrade shared repositories
@@ -61,6 +61,7 b' An upgrade of a repository created with '
61 61 sidedata: no
62 62 persistent-nodemap: no
63 63 copies-sdc: no
64 revlog-v2: no
64 65 plain-cl-delta: yes
65 66 compression: zlib
66 67 compression-level: default
@@ -74,6 +75,7 b' An upgrade of a repository created with '
74 75 sidedata: no no no
75 76 persistent-nodemap: no no no
76 77 copies-sdc: no no no
78 revlog-v2: no no no
77 79 plain-cl-delta: yes yes yes
78 80 compression: zlib zlib zlib
79 81 compression-level: default default default
@@ -87,6 +89,7 b' An upgrade of a repository created with '
87 89 sidedata: no no no
88 90 persistent-nodemap: no no no
89 91 copies-sdc: no no no
92 revlog-v2: no no no
90 93 plain-cl-delta: yes yes yes
91 94 compression: zlib zlib zlib
92 95 compression-level: default default default
@@ -100,6 +103,7 b' An upgrade of a repository created with '
100 103 [formatvariant.name.uptodate|sidedata: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
101 104 [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
102 105 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
106 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
103 107 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
104 108 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib]
105 109 [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default]
@@ -154,6 +158,12 b' An upgrade of a repository created with '
154 158 "repo": false
155 159 },
156 160 {
161 "config": false,
162 "default": false,
163 "name": "revlog-v2",
164 "repo": false
165 },
166 {
157 167 "config": true,
158 168 "default": true,
159 169 "name": "plain-cl-delta",
@@ -306,6 +316,7 b' Various sub-optimal detections work'
306 316 sidedata: no
307 317 persistent-nodemap: no
308 318 copies-sdc: no
319 revlog-v2: no
309 320 plain-cl-delta: yes
310 321 compression: zlib
311 322 compression-level: default
@@ -319,6 +330,7 b' Various sub-optimal detections work'
319 330 sidedata: no no no
320 331 persistent-nodemap: no no no
321 332 copies-sdc: no no no
333 revlog-v2: no no no
322 334 plain-cl-delta: yes yes yes
323 335 compression: zlib zlib zlib
324 336 compression-level: default default default
@@ -332,6 +344,7 b' Various sub-optimal detections work'
332 344 sidedata: no no no
333 345 persistent-nodemap: no no no
334 346 copies-sdc: no no no
347 revlog-v2: no no no
335 348 plain-cl-delta: yes yes yes
336 349 compression: zlib zlib zlib
337 350 compression-level: default default default
@@ -345,6 +358,7 b' Various sub-optimal detections work'
345 358 [formatvariant.name.uptodate|sidedata: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
346 359 [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
347 360 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
361 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
348 362 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
349 363 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib]
350 364 [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default]
@@ -1288,6 +1302,7 b' upgrade'
1288 1302 sidedata: no no no
1289 1303 persistent-nodemap: no no no
1290 1304 copies-sdc: no no no
1305 revlog-v2: no no no
1291 1306 plain-cl-delta: yes yes yes
1292 1307 compression: zstd zlib zlib
1293 1308 compression-level: default default default
@@ -1324,6 +1339,7 b' downgrade'
1324 1339 sidedata: no no no
1325 1340 persistent-nodemap: no no no
1326 1341 copies-sdc: no no no
1342 revlog-v2: no no no
1327 1343 plain-cl-delta: yes yes yes
1328 1344 compression: zlib zlib zlib
1329 1345 compression-level: default default default
@@ -1363,6 +1379,7 b' upgrade from hgrc'
1363 1379 sidedata: no no no
1364 1380 persistent-nodemap: no no no
1365 1381 copies-sdc: no no no
1382 revlog-v2: no no no
1366 1383 plain-cl-delta: yes yes yes
1367 1384 compression: zstd zstd zlib
1368 1385 compression-level: default default default
@@ -1386,10 +1403,11 b' upgrade'
1386 1403 upgrade will perform the following actions:
1387 1404
1388 1405 requirements
1389 preserved: dotencode, fncache, generaldelta, revlogv1, store (no-zstd !)
1390 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !)
1391 added: exp-sidedata-flag (zstd !)
1392 added: exp-sidedata-flag, sparserevlog (no-zstd !)
1406 preserved: dotencode, fncache, generaldelta, store (no-zstd !)
1407 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, sparserevlog, store (zstd !)
1408 removed: revlogv1
1409 added: exp-revlogv2.2, exp-sidedata-flag (zstd !)
1410 added: exp-revlogv2.2, exp-sidedata-flag, sparserevlog (no-zstd !)
1393 1411
1394 1412 processed revlogs:
1395 1413 - all-filelogs
@@ -1406,17 +1424,18 b' upgrade'
1406 1424 sidedata: yes no no
1407 1425 persistent-nodemap: no no no
1408 1426 copies-sdc: no no no
1427 revlog-v2: yes no no
1409 1428 plain-cl-delta: yes yes yes
1410 1429 compression: zlib zlib zlib (no-zstd !)
1411 1430 compression: zstd zstd zlib (zstd !)
1412 1431 compression-level: default default default
1413 1432 $ cat .hg/requires
1414 1433 dotencode
1434 exp-revlogv2.2
1415 1435 exp-sidedata-flag
1416 1436 fncache
1417 1437 generaldelta
1418 1438 revlog-compression-zstd (zstd !)
1419 revlogv1
1420 1439 sparserevlog
1421 1440 store
1422 1441 $ hg debugsidedata -c 0
@@ -1430,9 +1449,10 b' downgrade'
1430 1449 upgrade will perform the following actions:
1431 1450
1432 1451 requirements
1433 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd !)
1434 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !)
1435 removed: exp-sidedata-flag
1452 preserved: dotencode, fncache, generaldelta, sparserevlog, store (no-zstd !)
1453 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, sparserevlog, store (zstd !)
1454 removed: exp-revlogv2.2, exp-sidedata-flag
1455 added: revlogv1
1436 1456
1437 1457 processed revlogs:
1438 1458 - all-filelogs
@@ -1449,6 +1469,7 b' downgrade'
1449 1469 sidedata: no no no
1450 1470 persistent-nodemap: no no no
1451 1471 copies-sdc: no no no
1472 revlog-v2: no no no
1452 1473 plain-cl-delta: yes yes yes
1453 1474 compression: zlib zlib zlib (no-zstd !)
1454 1475 compression: zstd zstd zlib (zstd !)
@@ -1473,9 +1494,10 b' upgrade from hgrc'
1473 1494 upgrade will perform the following actions:
1474 1495
1475 1496 requirements
1476 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd !)
1477 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !)
1478 added: exp-sidedata-flag
1497 preserved: dotencode, fncache, generaldelta, sparserevlog, store (no-zstd !)
1498 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, sparserevlog, store (zstd !)
1499 removed: revlogv1
1500 added: exp-revlogv2.2, exp-sidedata-flag
1479 1501
1480 1502 processed revlogs:
1481 1503 - all-filelogs
@@ -1492,17 +1514,18 b' upgrade from hgrc'
1492 1514 sidedata: yes yes no
1493 1515 persistent-nodemap: no no no
1494 1516 copies-sdc: no no no
1517 revlog-v2: yes yes no
1495 1518 plain-cl-delta: yes yes yes
1496 1519 compression: zlib zlib zlib (no-zstd !)
1497 1520 compression: zstd zstd zlib (zstd !)
1498 1521 compression-level: default default default
1499 1522 $ cat .hg/requires
1500 1523 dotencode
1524 exp-revlogv2.2
1501 1525 exp-sidedata-flag
1502 1526 fncache
1503 1527 generaldelta
1504 1528 revlog-compression-zstd (zstd !)
1505 revlogv1
1506 1529 sparserevlog
1507 1530 store
1508 1531 $ hg debugsidedata -c 0
General Comments 0
You need to be logged in to leave comments. Login now