diff mercurial/hook.py @ 28109:b892e424f88c

hook: don't crash on syntax errors in python hooks We had some real-world cases where syntax errors in Python hooks would crash the whole process and leave it in an indeterminate state. Handle those better.
author Siddharth Agarwal <sid0@fb.com>
date Fri, 12 Feb 2016 14:50:10 -0800
parents 2a71d9483199
children 44bd37af54e5
line wrap: on
line diff
--- a/mercurial/hook.py	Fri Feb 12 11:44:35 2016 -0800
+++ b/mercurial/hook.py	Fri Feb 12 14:50:10 2016 -0800
@@ -49,12 +49,12 @@
         with demandimport.deactivated():
             try:
                 obj = __import__(modname)
-            except ImportError:
+            except (ImportError, SyntaxError):
                 e1 = sys.exc_info()
                 try:
                     # extensions are loaded with hgext_ prefix
                     obj = __import__("hgext_%s" % modname)
-                except ImportError:
+                except (ImportError, SyntaxError):
                     e2 = sys.exc_info()
                     if ui.tracebackflag:
                         ui.warn(_('exception from first failed import '