--- a/mercurial/extensions.py Mon Nov 29 13:09:04 2021 +0100
+++ b/mercurial/extensions.py Fri Nov 26 17:17:49 2021 +0100
@@ -314,10 +314,23 @@
else:
error_msg = _(b'failed to import extension "%s": %s')
error_msg %= (name, msg)
- ui.warn((b"*** %s\n") % error_msg)
- if isinstance(inst, error.Hint) and inst.hint:
- ui.warn(_(b"*** (%s)\n") % inst.hint)
- ui.traceback()
+
+ ext_options = ui.configsuboptions(b"extensions", name)[1]
+ if stringutil.parsebool(ext_options.get(b"required", b'no')):
+ hint = None
+ if isinstance(inst, error.Hint) and inst.hint:
+ hint = inst.hint
+ if hint is None:
+ hint = _(
+ b"loading of this extension was required, "
+ b"see `hg help config.extensions` for details"
+ )
+ raise error.Abort(error_msg, hint=hint)
+ else:
+ ui.warn((b"*** %s\n") % error_msg)
+ if isinstance(inst, error.Hint) and inst.hint:
+ ui.warn(_(b"*** (%s)\n") % inst.hint)
+ ui.traceback()
ui.log(
b'extension',