From patchwork Tue Mar 25 15:46:16 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: dispatch: only do __import__(debugger) when a debugger is requested From: =?utf-8?q?Jordi_Guti=C3=A9rrez_Hermoso?= X-Patchwork-Id: 4062 Message-Id: <397c258e34f9d7690bf2.1395762376@Iris> To: mercurial-devel@selenic.com Date: Tue, 25 Mar 2014 11:46:16 -0400 # HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1394219212 18000 # Fri Mar 07 14:06:52 2014 -0500 # Node ID 397c258e34f9d7690bf2a23fbc2ac7515874deea # Parent 3d1d16b19e7dd5e96e242daed86512429bc1d3f6 dispatch: only do __import__(debugger) when a debugger is requested When having ui.debugger=somedebugger in one's ~/.hgrc, this then somedebugger would be imported for every hg command. With this patch, this import only happens if the --debugger parameter is passed. diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -108,13 +108,17 @@ # if we are in HGPLAIN mode, then disable custom debugging debugger = ui.config("ui", "debugger") + debugmod = pdb if not debugger or ui.plain(): debugger = 'pdb' - - try: - debugmod = __import__(debugger) - except ImportError: - debugmod = pdb + elif '--debugger' in req.args: + # This import can be slow for fancy debuggers, so only + # do it when absolutely necessary, i.e. when actual + # debugging has been requested + try: + debugmod = __import__(debugger) + except ImportError: + pass # Leave debugmod = pdb debugtrace[debugger] = debugmod.set_trace debugmortem[debugger] = debugmod.post_mortem