[PATCH 1 of 6] require: subclass RequirementError, distinct corruption from missing requirements

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Jun 18 06:09:59 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1308357820 -7200
# Node ID 66ccbdcb709dc6cc23db7f19d54ebafd7efe103e
# Parent  8f12dac18d13d3cdd105508847fea2aecf88a09e
require: subclass RequirementError, distinct corruption from missing requirements

RequirementError is subclassed by:
    * CorruptRequirementError: dedicated to corrupted content,
    * MissingRequirementError: dedicated to missing requirements.

Having this distinction will allow improving the way missing requirement are
handled.

diff -r 8f12dac18d13 -r 66ccbdcb709d mercurial/error.py
--- a/mercurial/error.py	Sat Jun 18 01:08:54 2011 +0200
+++ b/mercurial/error.py	Sat Jun 18 02:43:40 2011 +0200
@@ -52,6 +52,14 @@
     pass
 
 class RequirementError(RepoError):
+    """Exception raised if something is wrong with requirement."""
+    pass
+
+class CorruptRequirementError(RequirementError):
+    """Exception raised if .hg/requires seems corrupted."""
+    pass
+
+class MissingRequirementError(RequirementError):
     """Exception raised if .hg/requires has an unknown entry."""
     pass
 
diff -r 8f12dac18d13 -r 66ccbdcb709d mercurial/scmutil.py
--- a/mercurial/scmutil.py	Sat Jun 18 01:08:54 2011 +0200
+++ b/mercurial/scmutil.py	Sat Jun 18 02:43:40 2011 +0200
@@ -699,7 +699,9 @@
     for r in requirements:
         if r not in supported:
             if not r or not r[0].isalnum():
-                raise error.RequirementError(_(".hg/requires file is corrupt"))
-            raise error.RequirementError(_("unknown repository format: "
-                "requires feature '%s' (upgrade Mercurial)") % r)
+                msg = _(".hg/requires file is corrupt")
+                raise error.CorruptRequirementError(msg)
+            msg = _("unknown repository format: requires feature '%s' "
+                    "(upgrade Mercurial)") % r
+            raise error.MissingRequirementError(msg)
     return requirements


More information about the Mercurial-devel mailing list