# HG changeset patch # User Pierre-Yves David # Date 1495723823 -7200 # 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 -r 9e46627baa3c -r 19df975eb555 mercurial/error.py --- 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) diff -r 9e46627baa3c -r 19df975eb555 mercurial/obsolete.py --- 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):