diff --git a/mercurial/configitems.py b/mercurial/configitems.py --- a/mercurial/configitems.py +++ b/mercurial/configitems.py @@ -372,6 +372,9 @@ coreconfigitem('devel', 'user.obsmarker' coreconfigitem('devel', 'warn-config-unknown', default=None, ) +coreconfigitem('devel', 'debug.extensions', + default=False, +) coreconfigitem('devel', 'debug.peer-request', default=False, ) diff --git a/mercurial/extensions.py b/mercurial/extensions.py --- a/mercurial/extensions.py +++ b/mercurial/extensions.py @@ -123,10 +123,11 @@ def _importext(name, path=None, reportfu def _reportimporterror(ui, err, failed, next): # note: this ui.debug happens before --debug is processed, # Use --config ui.debug=1 to see them. - ui.debug('could not import %s (%s): trying %s\n' - % (failed, stringutil.forcebytestr(err), next)) - if ui.debugflag: - ui.traceback() + if ui.configbool('devel', 'debug.extensions'): + ui.debug('could not import %s (%s): trying %s\n' + % (failed, stringutil.forcebytestr(err), next)) + if ui.debugflag: + ui.traceback() def _rejectunicode(name, xs): if isinstance(xs, (list, set, tuple)): diff --git a/tests/test-bad-extension.t b/tests/test-bad-extension.t --- a/tests/test-bad-extension.t +++ b/tests/test-bad-extension.t @@ -72,10 +72,9 @@ names of extensions failed to load can b $ hg --config extensions.badexts=showbadexts.py showbadexts 2>&1 | grep '^BADEXTS' BADEXTS: badext badext2 -show traceback for ImportError of hgext.name if debug is set -(note that --debug option isn't applied yet when loading extensions) +show traceback for ImportError of hgext.name if devel.debug.extensions is set - $ (hg help help --traceback --config ui.debug=yes 2>&1) \ + $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ > | grep -v '^ ' \ > | egrep 'extension..[^p]|^Exception|Traceback|ImportError|not import' *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow