1468 b'from-report', |
1468 b'from-report', |
1469 b'', |
1469 b'', |
1470 _(b'repair revisions listed in this report file'), |
1470 _(b'repair revisions listed in this report file'), |
1471 _(b'FILE'), |
1471 _(b'FILE'), |
1472 ), |
1472 ), |
|
1473 ( |
|
1474 b'', |
|
1475 b'paranoid', |
|
1476 False, |
|
1477 _(b'check that both detection methods do the same thing'), |
|
1478 ), |
1473 ] |
1479 ] |
1474 + cmdutil.dryrunopts, |
1480 + cmdutil.dryrunopts, |
1475 ) |
1481 ) |
1476 def debug_repair_issue6528(ui, repo, **opts): |
1482 def debug_repair_issue6528(ui, repo, **opts): |
1477 """find affected revisions and repair them. See issue6528 for more details. |
1483 """find affected revisions and repair them. See issue6528 for more details. |
1489 filename. |
1495 filename. |
1490 |
1496 |
1491 Note that this does *not* mean that this repairs future affected revisions, |
1497 Note that this does *not* mean that this repairs future affected revisions, |
1492 that needs a separate fix at the exchange level that hasn't been written yet |
1498 that needs a separate fix at the exchange level that hasn't been written yet |
1493 (as of 5.9rc0). |
1499 (as of 5.9rc0). |
|
1500 |
|
1501 There is a `--paranoid` flag to test that the fast implementation is correct |
|
1502 by checking it against the slow implementation. Since this matter is quite |
|
1503 urgent and testing every edge-case is probably quite costly, we use this |
|
1504 method to test on large repositories as a fuzzing method of sorts. |
1494 """ |
1505 """ |
1495 cmdutil.check_incompatible_arguments( |
1506 cmdutil.check_incompatible_arguments( |
1496 opts, 'to_report', ['from_report', 'dry_run'] |
1507 opts, 'to_report', ['from_report', 'dry_run'] |
1497 ) |
1508 ) |
1498 dry_run = opts.get('dry_run') |
1509 dry_run = opts.get('dry_run') |
1499 to_report = opts.get('to_report') |
1510 to_report = opts.get('to_report') |
1500 from_report = opts.get('from_report') |
1511 from_report = opts.get('from_report') |
|
1512 paranoid = opts.get('paranoid') |
1501 # TODO maybe add filelog pattern and revision pattern parameters to help |
1513 # TODO maybe add filelog pattern and revision pattern parameters to help |
1502 # narrow down the search for users that know what they're looking for? |
1514 # narrow down the search for users that know what they're looking for? |
1503 |
1515 |
1504 if requirements.REVLOGV1_REQUIREMENT not in repo.requirements: |
1516 if requirements.REVLOGV1_REQUIREMENT not in repo.requirements: |
1505 msg = b"can only repair revlogv1 repositories, v2 is not affected" |
1517 msg = b"can only repair revlogv1 repositories, v2 is not affected" |
1506 raise error.Abort(_(msg)) |
1518 raise error.Abort(_(msg)) |
1507 |
1519 |
1508 rewrite.repair_issue6528( |
1520 rewrite.repair_issue6528( |
1509 ui, repo, dry_run=dry_run, to_report=to_report, from_report=from_report |
1521 ui, |
|
1522 repo, |
|
1523 dry_run=dry_run, |
|
1524 to_report=to_report, |
|
1525 from_report=from_report, |
|
1526 paranoid=paranoid, |
1510 ) |
1527 ) |
1511 |
1528 |
1512 |
1529 |
1513 @command(b'debugformat', [] + cmdutil.formatteropts) |
1530 @command(b'debugformat', [] + cmdutil.formatteropts) |
1514 def debugformat(ui, repo, **opts): |
1531 def debugformat(ui, repo, **opts): |