[PATCH 03 of 11] obsolete: raise richer exception on unknown version
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Sun May 28 12:32:04 EDT 2017
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1495723823 -7200
# Thu May 25 16:50:23 2017 +0200
# Node ID b97c492388f6b14c346600e1c1ed4e400f6b47ca
# Parent dbce9b63b68d45706d9c269543070e0eee88b376
# EXP-Topic obsstrip
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
# hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r b97c492388f6
obsolete: raise richer exception on unknown version
We raise a more precise subclass of Abort with details about the faulty
version. This will be used to detect this case and display some information
in debugbundle.
diff --git a/mercurial/error.py b/mercurial/error.py
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -138,6 +138,14 @@ class UnsupportedMergeRecords(Abort):
hint=_('see https://mercurial-scm.org/wiki/MergeStateRecords for '
'more information'))
+class UnknownVersion(Abort):
+ """generic exception for aborting from an encounter with an unknown version
+ """
+
+ def __init__(self, *args, **kwargs):
+ self.version = kwargs.pop('version')
+ super(UnknownVersion, self).__init__(*args, **kwargs)
+
class LockError(IOError):
def __init__(self, errno, strerror, filename, desc):
IOError.__init__(self, errno, strerror, filename)
diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -446,8 +446,8 @@ def _readmarkers(data):
diskversion = _unpack('>B', data[off:off + 1])[0]
off += 1
if diskversion not in formats:
- raise error.Abort(_('parsing obsolete marker: unknown version %r')
- % diskversion)
+ msg = _('parsing obsolete marker: unknown version %r') % diskversion
+ raise error.UnknownVersion(msg, version=diskversion)
return diskversion, formats[diskversion][0](data, off)
def encodemarkers(markers, addheader=False, version=_fm0version):
More information about the Mercurial-devel
mailing list