mercurial/hook.py
changeset 9851 9e7b2c49d25d
parent 9658 852b1f3032d2
child 10103 37679dbf2ee3
equal deleted inserted replaced
9850:004bf1d6e6af 9851:9e7b2c49d25d
    35                 sys.path.append(path)
    35                 sys.path.append(path)
    36                 modname = name
    36                 modname = name
    37         try:
    37         try:
    38             obj = __import__(modname)
    38             obj = __import__(modname)
    39         except ImportError:
    39         except ImportError:
       
    40             e1 = sys.exc_type, sys.exc_value, sys.exc_traceback
    40             try:
    41             try:
    41                 # extensions are loaded with hgext_ prefix
    42                 # extensions are loaded with hgext_ prefix
    42                 obj = __import__("hgext_%s" % modname)
    43                 obj = __import__("hgext_%s" % modname)
    43             except ImportError:
    44             except ImportError:
       
    45                 e2 = sys.exc_type, sys.exc_value, sys.exc_traceback
       
    46                 if ui.tracebackflag:
       
    47                     ui.warn(_('exception from first failed import attempt:\n'))
       
    48                 ui.traceback(e1)
       
    49                 if ui.tracebackflag:
       
    50                     ui.warn(_('exception from second failed import attempt:\n'))
       
    51                 ui.traceback(e2)
    44                 raise util.Abort(_('%s hook is invalid '
    52                 raise util.Abort(_('%s hook is invalid '
    45                                    '(import of "%s" failed)') %
    53                                    '(import of "%s" failed)') %
    46                                  (hname, modname))
    54                                  (hname, modname))
    47         sys.path = oldpaths
    55         sys.path = oldpaths
    48         try:
    56         try: