Mercurial > hg
changeset 32596:19df975eb555
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.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 25 May 2017 16:50:23 +0200 |
parents | 9e46627baa3c |
children | 9df4c2613fca |
files | mercurial/error.py mercurial/obsolete.py |
diffstat | 2 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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):