# HG changeset patch # User Siddharth Agarwal # Date 1455259943 28800 # Node ID 37b818cad14664f7cf262a3cfb1f81e616dd1f4d # Parent 0c9e914029be47569f58cd39ce1f1763d2b03633 hook: for python hook ImportErrors, add note to run with --traceback I personally found it completely non-obvious that --traceback prints out stack traces for failed imports. diff -r 0c9e914029be -r 37b818cad146 mercurial/hook.py --- a/mercurial/hook.py Thu Feb 11 22:41:20 2016 -0800 +++ b/mercurial/hook.py Thu Feb 11 22:52:23 2016 -0800 @@ -64,9 +64,15 @@ ui.warn(_('exception from second failed import ' 'attempt:\n')) ui.traceback(e2) + + if not ui.tracebackflag: + tracebackhint = _( + 'run with --traceback for stack trace') + else: + tracebackhint = None raise error.HookLoadError( _('%s hook is invalid: import of "%s" failed') % - (hname, modname)) + (hname, modname), hint=tracebackhint) sys.path = oldpaths try: for p in funcname.split('.')[1:]: diff -r 0c9e914029be -r 37b818cad146 tests/test-hook.t --- a/tests/test-hook.t Thu Feb 11 22:41:20 2016 -0800 +++ b/tests/test-hook.t Thu Feb 11 22:52:23 2016 -0800 @@ -505,6 +505,7 @@ pulling from ../a searching for changes abort: preoutgoing.badmodule hook is invalid: import of "nomodule" failed + (run with --traceback for stack trace) [255] $ echo '[hooks]' > ../a/.hg/hgrc @@ -513,6 +514,7 @@ pulling from ../a searching for changes abort: preoutgoing.unreachable hook is invalid: import of "hooktests.container" failed + (run with --traceback for stack trace) [255] $ echo '[hooks]' > ../a/.hg/hgrc