mercurial/debugcommands.py
changeset 50506 1b73868d17cf
parent 50423 f0d2b18f0274
child 50522 1a4f54574e3d
equal deleted inserted replaced
50505:39ed7b2953bb 50506:1b73868d17cf
    48     dirstateutils,
    48     dirstateutils,
    49     encoding,
    49     encoding,
    50     error,
    50     error,
    51     exchange,
    51     exchange,
    52     extensions,
    52     extensions,
       
    53     filelog,
    53     filemerge,
    54     filemerge,
    54     filesetlang,
    55     filesetlang,
    55     formatter,
    56     formatter,
    56     hg,
    57     hg,
    57     httppeer,
    58     httppeer,
    58     localrepo,
    59     localrepo,
    59     lock as lockmod,
    60     lock as lockmod,
    60     logcmdutil,
    61     logcmdutil,
       
    62     manifest,
    61     mergestate as mergestatemod,
    63     mergestate as mergestatemod,
    62     metadata,
    64     metadata,
    63     obsolete,
    65     obsolete,
    64     obsutil,
    66     obsutil,
    65     pathutil,
    67     pathutil,
  2598     ui.write(b'\n')
  2600     ui.write(b'\n')
  2599 
  2601 
  2600 
  2602 
  2601 @command(
  2603 @command(
  2602     b'debugnodemap',
  2604     b'debugnodemap',
  2603     [
  2605     (
  2604         (
  2606         cmdutil.debugrevlogopts
  2605             b'',
  2607         + [
  2606             b'dump-new',
  2608             (
  2607             False,
  2609                 b'',
  2608             _(b'write a (new) persistent binary nodemap on stdout'),
  2610                 b'dump-new',
  2609         ),
  2611                 False,
  2610         (b'', b'dump-disk', False, _(b'dump on-disk data on stdout')),
  2612                 _(b'write a (new) persistent binary nodemap on stdout'),
  2611         (
  2613             ),
  2612             b'',
  2614             (b'', b'dump-disk', False, _(b'dump on-disk data on stdout')),
  2613             b'check',
  2615             (
  2614             False,
  2616                 b'',
  2615             _(b'check that the data on disk data are correct.'),
  2617                 b'check',
  2616         ),
  2618                 False,
  2617         (
  2619                 _(b'check that the data on disk data are correct.'),
  2618             b'',
  2620             ),
  2619             b'metadata',
  2621             (
  2620             False,
  2622                 b'',
  2621             _(b'display the on disk meta data for the nodemap'),
  2623                 b'metadata',
  2622         ),
  2624                 False,
  2623     ],
  2625                 _(b'display the on disk meta data for the nodemap'),
  2624 )
  2626             ),
  2625 def debugnodemap(ui, repo, **opts):
  2627         ]
       
  2628     ),
       
  2629     _(b'-c|-m|FILE REV'),
       
  2630 )
       
  2631 def debugnodemap(ui, repo, file_=None, **opts):
  2626     """write and inspect on disk nodemap"""
  2632     """write and inspect on disk nodemap"""
       
  2633     if opts.get('changelog') or opts.get('manifest') or opts.get('dir'):
       
  2634         if file_ is not None:
       
  2635             raise error.CommandError(b'debugnodemap', _(b'invalid arguments'))
       
  2636     elif file_ is None:
       
  2637         opts['changelog'] = True
       
  2638     r = cmdutil.openstorage(
       
  2639         repo.unfiltered(), b'debugnodemap', file_, pycompat.byteskwargs(opts)
       
  2640     )
       
  2641     if isinstance(r, manifest.manifestrevlog) or isinstance(r, filelog.filelog):
       
  2642         r = r._revlog
  2627     if opts['dump_new']:
  2643     if opts['dump_new']:
  2628         unfi = repo.unfiltered()
  2644         if util.safehasattr(r.index, "nodemap_data_all"):
  2629         cl = unfi.changelog
  2645             data = r.index.nodemap_data_all()
  2630         if util.safehasattr(cl.index, "nodemap_data_all"):
       
  2631             data = cl.index.nodemap_data_all()
       
  2632         else:
  2646         else:
  2633             data = nodemap.persistent_data(cl.index)
  2647             data = nodemap.persistent_data(r.index)
  2634         ui.write(data)
  2648         ui.write(data)
  2635     elif opts['dump_disk']:
  2649     elif opts['dump_disk']:
  2636         unfi = repo.unfiltered()
  2650         nm_data = nodemap.persisted_data(r)
  2637         cl = unfi.changelog
       
  2638         nm_data = nodemap.persisted_data(cl)
       
  2639         if nm_data is not None:
  2651         if nm_data is not None:
  2640             docket, data = nm_data
  2652             docket, data = nm_data
  2641             ui.write(data[:])
  2653             ui.write(data[:])
  2642     elif opts['check']:
  2654     elif opts['check']:
  2643         unfi = repo.unfiltered()
  2655         nm_data = nodemap.persisted_data(r)
  2644         cl = unfi.changelog
       
  2645         nm_data = nodemap.persisted_data(cl)
       
  2646         if nm_data is not None:
  2656         if nm_data is not None:
  2647             docket, data = nm_data
  2657             docket, data = nm_data
  2648             return nodemap.check_data(ui, cl.index, data)
  2658             return nodemap.check_data(ui, r.index, data)
  2649     elif opts['metadata']:
  2659     elif opts['metadata']:
  2650         unfi = repo.unfiltered()
  2660         nm_data = nodemap.persisted_data(r)
  2651         cl = unfi.changelog
       
  2652         nm_data = nodemap.persisted_data(cl)
       
  2653         if nm_data is not None:
  2661         if nm_data is not None:
  2654             docket, data = nm_data
  2662             docket, data = nm_data
  2655             ui.write((b"uid: %s\n") % docket.uid)
  2663             ui.write((b"uid: %s\n") % docket.uid)
  2656             ui.write((b"tip-rev: %d\n") % docket.tip_rev)
  2664             ui.write((b"tip-rev: %d\n") % docket.tip_rev)
  2657             ui.write((b"tip-node: %s\n") % hex(docket.tip_node))
  2665             ui.write((b"tip-node: %s\n") % hex(docket.tip_node))