mercurial/debugcommands.py
branchstable
changeset 47817 855463b5fe49
parent 47815 b30a53ffbf9b
child 47875 0fb328bb2459
equal deleted inserted replaced
47816:32e21ac3adb1 47817:855463b5fe49
  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):