[Updated] D10737: errors: make InterventionRequired subclass Abort

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Thu May 20 13:21:55 UTC 2021


Closed by commit rHGd9c71bbe20f7: errors: make InterventionRequired subclass Abort (authored by martinvonz).
This revision was automatically updated to reflect the committed changes.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D10737?vs=28085&id=28142

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D10737/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D10737

AFFECTED FILES
  mercurial/error.py
  mercurial/scmutil.py

CHANGE DETAILS

diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -203,17 +203,13 @@
         if inst.hint:
             ui.error(_(b"(%s)\n") % inst.hint)
         detailed_exit_code = 50
-    except error.InterventionRequired as inst:
-        ui.error(b"%s\n" % inst)
-        if inst.hint:
-            ui.error(_(b"(%s)\n") % inst.hint)
-        detailed_exit_code = 240
-        coarse_exit_code = 1
     except error.WdirUnsupported:
         ui.error(_(b"abort: working directory revision cannot be specified\n"))
     except error.Abort as inst:
         if inst.detailed_exit_code is not None:
             detailed_exit_code = inst.detailed_exit_code
+        if inst.coarse_exit_code is not None:
+            coarse_exit_code = inst.coarse_exit_code
         ui.error(inst.format())
     except error.WorkerError as inst:
         # Don't print a message -- the worker already should have
diff --git a/mercurial/error.py b/mercurial/error.py
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -54,10 +54,13 @@
 class Abort(Hint, Exception):
     """Raised if a command needs to print an error and exit."""
 
-    def __init__(self, message, hint=None, detailed_exit_code=None):
+    def __init__(
+        self, message, hint=None, coarse_exit_code=None, detailed_exit_code=None
+    ):
         # type: (bytes, Optional[bytes]) -> None
         self.message = message
         self.hint = hint
+        self.coarse_exit_code = coarse_exit_code
         self.detailed_exit_code = detailed_exit_code
         # Pass the message into the Exception constructor to help extensions
         # that look for exc.args[0].
@@ -192,10 +195,22 @@
     __bytes__ = _tobytes
 
 
-class InterventionRequired(Hint, Exception):
+class InterventionRequired(Abort):
     """Exception raised when a command requires human intervention."""
 
-    __bytes__ = _tobytes
+    def __init__(self, message, hint=None):
+        super(InterventionRequired, self).__init__(
+            message, hint=hint, coarse_exit_code=1, detailed_exit_code=240
+        )
+
+    def format(self):
+        # type: () -> bytes
+        from .i18n import _
+
+        message = _(b"%s\n") % self.message
+        if self.hint:
+            message += _(b"(%s)\n") % self.hint
+        return message
 
 
 class ConflictResolutionRequired(InterventionRequired):



To: martinvonz, #hg-reviewers, pulkit
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20210520/113948ef/attachment-0002.html>


More information about the Mercurial-patches mailing list