mercurial/debugcommands.py
changeset 50928 d718eddf01d9
parent 50718 0ab3956540a6
child 50929 18c8c18993f0
equal deleted inserted replaced
50927:7a8ea1397816 50928:d718eddf01d9
  1280 
  1280 
  1281     data = {}
  1281     data = {}
  1282     if opts.get(b'old'):
  1282     if opts.get(b'old'):
  1283 
  1283 
  1284         def doit(pushedrevs, remoteheads, remote=remote):
  1284         def doit(pushedrevs, remoteheads, remote=remote):
  1285             if not util.safehasattr(remote, 'branches'):
  1285             if not hasattr(remote, 'branches'):
  1286                 # enable in-client legacy support
  1286                 # enable in-client legacy support
  1287                 remote = localrepo.locallegacypeer(remote.local())
  1287                 remote = localrepo.locallegacypeer(remote.local())
  1288                 if remote_revs:
  1288                 if remote_revs:
  1289                     r = remote._repo.filtered(b'debug-discovery-remote-filter')
  1289                     r = remote._repo.filtered(b'debug-discovery-remote-filter')
  1290                     remote._repo = r
  1290                     remote._repo = r
  1480     fm = ui.formatter(b'debugextensions', opts)
  1480     fm = ui.formatter(b'debugextensions', opts)
  1481     for extname, extmod in sorted(exts, key=operator.itemgetter(0)):
  1481     for extname, extmod in sorted(exts, key=operator.itemgetter(0)):
  1482         isinternal = extensions.ismoduleinternal(extmod)
  1482         isinternal = extensions.ismoduleinternal(extmod)
  1483         extsource = None
  1483         extsource = None
  1484 
  1484 
  1485         if util.safehasattr(extmod, '__file__'):
  1485         if hasattr(extmod, '__file__'):
  1486             extsource = pycompat.fsencode(extmod.__file__)
  1486             extsource = pycompat.fsencode(extmod.__file__)
  1487         elif getattr(sys, 'oxidized', False):
  1487         elif getattr(sys, 'oxidized', False):
  1488             extsource = pycompat.sysexecutable
  1488             extsource = pycompat.sysexecutable
  1489         if isinternal:
  1489         if isinternal:
  1490             exttestedwith = []  # never expose magic string to users
  1490             exttestedwith = []  # never expose magic string to users
  1720 
  1720 
  1721     fm = ui.formatter(b'debugformat', opts)
  1721     fm = ui.formatter(b'debugformat', opts)
  1722     if fm.isplain():
  1722     if fm.isplain():
  1723 
  1723 
  1724         def formatvalue(value):
  1724         def formatvalue(value):
  1725             if util.safehasattr(value, 'startswith'):
  1725             if hasattr(value, 'startswith'):
  1726                 return value
  1726                 return value
  1727             if value:
  1727             if value:
  1728                 return b'yes'
  1728                 return b'yes'
  1729             else:
  1729             else:
  1730                 return b'no'
  1730                 return b'no'
  1945 @command(b'debugindexstats', [])
  1945 @command(b'debugindexstats', [])
  1946 def debugindexstats(ui, repo):
  1946 def debugindexstats(ui, repo):
  1947     """show stats related to the changelog index"""
  1947     """show stats related to the changelog index"""
  1948     repo.changelog.shortest(repo.nullid, 1)
  1948     repo.changelog.shortest(repo.nullid, 1)
  1949     index = repo.changelog.index
  1949     index = repo.changelog.index
  1950     if not util.safehasattr(index, 'stats'):
  1950     if not hasattr(index, 'stats'):
  1951         raise error.Abort(_(b'debugindexstats only works with native code'))
  1951         raise error.Abort(_(b'debugindexstats only works with native code'))
  1952     for k, v in sorted(index.stats().items()):
  1952     for k, v in sorted(index.stats().items()):
  1953         ui.write(b'%s: %d\n' % (k, v))
  1953         ui.write(b'%s: %d\n' % (k, v))
  1954 
  1954 
  1955 
  1955 
  1981         err,
  1981         err,
  1982     )
  1982     )
  1983 
  1983 
  1984     # Python
  1984     # Python
  1985     pythonlib = None
  1985     pythonlib = None
  1986     if util.safehasattr(os, '__file__'):
  1986     if hasattr(os, '__file__'):
  1987         pythonlib = os.path.dirname(pycompat.fsencode(os.__file__))
  1987         pythonlib = os.path.dirname(pycompat.fsencode(os.__file__))
  1988     elif getattr(sys, 'oxidized', False):
  1988     elif getattr(sys, 'oxidized', False):
  1989         pythonlib = pycompat.sysexecutable
  1989         pythonlib = pycompat.sysexecutable
  1990 
  1990 
  1991     fm.write(
  1991     fm.write(
  2063         b'+'.join(hgver.split(b'+')[1:]),
  2063         b'+'.join(hgver.split(b'+')[1:]),
  2064     )
  2064     )
  2065 
  2065 
  2066     # compiled modules
  2066     # compiled modules
  2067     hgmodules = None
  2067     hgmodules = None
  2068     if util.safehasattr(sys.modules[__name__], '__file__'):
  2068     if hasattr(sys.modules[__name__], '__file__'):
  2069         hgmodules = os.path.dirname(pycompat.fsencode(__file__))
  2069         hgmodules = os.path.dirname(pycompat.fsencode(__file__))
  2070     elif getattr(sys, 'oxidized', False):
  2070     elif getattr(sys, 'oxidized', False):
  2071         hgmodules = pycompat.sysexecutable
  2071         hgmodules = pycompat.sysexecutable
  2072 
  2072 
  2073     fm.write(
  2073     fm.write(
  2647         repo.unfiltered(), b'debugnodemap', file_, pycompat.byteskwargs(opts)
  2647         repo.unfiltered(), b'debugnodemap', file_, pycompat.byteskwargs(opts)
  2648     )
  2648     )
  2649     if isinstance(r, (manifest.manifestrevlog, filelog.filelog)):
  2649     if isinstance(r, (manifest.manifestrevlog, filelog.filelog)):
  2650         r = r._revlog
  2650         r = r._revlog
  2651     if opts['dump_new']:
  2651     if opts['dump_new']:
  2652         if util.safehasattr(r.index, "nodemap_data_all"):
  2652         if hasattr(r.index, "nodemap_data_all"):
  2653             data = r.index.nodemap_data_all()
  2653             data = r.index.nodemap_data_all()
  2654         else:
  2654         else:
  2655             data = nodemap.persistent_data(r.index)
  2655             data = nodemap.persistent_data(r.index)
  2656         ui.write(data)
  2656         ui.write(data)
  2657     elif opts['dump_disk']:
  2657     elif opts['dump_disk']: