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.
--- a/mercurial/error.py Wed May 31 20:07:08 2017 -0700
+++ b/mercurial/error.py Thu May 25 16:50:23 2017 +0200
@@ -138,6 +138,14 @@
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, msg, hint=None, version=None):
+ self.version = version
+ super(UnknownVersion, self).__init__(msg, hint=hint)
+
class LockError(IOError):
def __init__(self, errno, strerror, filename, desc):
IOError.__init__(self, errno, strerror, filename)
--- a/mercurial/obsolete.py Wed May 31 20:07:08 2017 -0700
+++ b/mercurial/obsolete.py Thu May 25 16:50:23 2017 +0200
@@ -446,8 +446,8 @@
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):