diff -r 86958104b6ca -r 8f76a41ee465 mercurial/debugcommands.py --- a/mercurial/debugcommands.py Tue Jan 10 11:40:19 2023 +0100 +++ b/mercurial/debugcommands.py Thu Jan 19 11:12:20 2023 -0500 @@ -3786,8 +3786,21 @@ ui.writenoi18n(b' revision %s\n' % v[1]) -@command(b'debugshell', optionalrepo=True) -def debugshell(ui, repo): +@command( + b'debugshell', + [ + ( + b'c', + b'command', + b'', + _(b'program passed in as a string'), + _(b'COMMAND'), + ) + ], + _(b'[-c COMMAND]'), + optionalrepo=True, +) +def debugshell(ui, repo, **opts): """run an interactive Python interpreter The local namespace is provided with a reference to the ui and @@ -3815,6 +3828,12 @@ except ImportError: site = None # Keep PyCharm happy + command = opts.get('command') + if command: + compiled = code.compile_command(encoding.strfromlocal(command)) + code.InteractiveInterpreter(locals=imported_objects).runcode(compiled) + return + code.interact(local=imported_objects)