diff mercurial/extensions.py @ 25364:de23a552fc23

extensions: show traceback on load failure if --traceback flag is set Before this patch, there was no handy way to investigate the reason why extension couldn't be loaded. If ui.debug is set, tracebacks of both "hgext.foo" and "foo" are displayed because the first ImportError could occur at very deep dependency module.
author Yuya Nishihara <yuya@tcha.org>
date Mon, 30 Mar 2015 16:23:35 +0900
parents e6e7d1cce04d
children 328739ea70c3
line wrap: on
line diff
--- a/mercurial/extensions.py	Sun May 31 14:40:28 2015 +0900
+++ b/mercurial/extensions.py	Mon Mar 30 16:23:35 2015 +0900
@@ -85,6 +85,8 @@
         except ImportError, err:
             ui.debug('could not import hgext.%s (%s): trying %s\n'
                      % (name, err, name))
+            if ui.debugflag:
+                ui.traceback()
             mod = importh(name)
     _extensions[shortname] = mod
     _order.append(shortname)
@@ -110,6 +112,7 @@
             else:
                 ui.warn(_("*** failed to import extension %s: %s\n")
                         % (name, inst))
+            ui.traceback()
 
     for name in _order[newindex:]:
         uisetup = getattr(_extensions[name], 'uisetup', None)