# HG changeset patch # User Pierre-Yves David # Date 2017-05-25 14:50:23 # Node ID 19df975eb555e0cdfa7dca031f6e62b9b80516ff # Parent 9e46627baa3c03efba207d7fd4280150d73b2391 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, 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) 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):