Mercurial > hg
view contrib/debugshell.py @ 51479:5bd31e68c7a3
stream-clone-test: add title to various test cases
These case are fine as is, but as we are adding title to all the other as we
simplify them, lets add title for all cases.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 08 Mar 2024 10:59:51 +0100 |
parents | 6000f5b25c9b |
children |
line wrap: on
line source
# debugshell extension """a python shell with repo, changelog & manifest objects""" import code import mercurial import sys from mercurial import ( demandimport, pycompat, registrar, ) cmdtable = {} command = registrar.command(cmdtable) def pdb(ui, repo, msg, **opts): objects = { 'mercurial': mercurial, 'repo': repo, 'cl': repo.changelog, 'mf': repo.manifestlog, } code.interact(msg, local=objects) def ipdb(ui, repo, msg, **opts): import IPython cl = repo.changelog mf = repo.manifestlog cl, mf # use variables to appease pyflakes IPython.embed() @command(b'debugshell|dbsh', []) def debugshell(ui, repo, **opts): bannermsg = "loaded repo : %s\n" "using source: %s" % ( pycompat.sysstr(repo.root), mercurial.__path__[0], ) pdbmap = {'pdb': 'code', 'ipdb': 'IPython'} debugger = ui.config(b"ui", b"debugger") if not debugger: debugger = 'pdb' else: debugger = pycompat.sysstr(debugger) # if IPython doesn't exist, fallback to code.interact try: with demandimport.deactivated(): __import__(pdbmap[debugger]) except ImportError: ui.warnnoi18n( b"%s debugger specified but %s module was not found\n" % (debugger, pdbmap[debugger]) ) debugger = b'pdb' getattr(sys.modules[__name__], debugger)(ui, repo, bannermsg, **opts)