Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlog.py @ 41312:189e06b2d719 stable
revlog: make sure we never use sparserevlog without general delta (issue6056)
We are getting user report where the delta code tries to use `sparse-revlog`
logic on repository where `generaldelta` is disabled. This can't work so we
ensure the two booleans have a consistent value.
Creating this kind of repository is not expected to be possible the current bug
report point at a clonebundle related bug that is still to be properly isolated
(Yuya Nishihara seems to a have done it).
Corrupting a repository to reproduce the issue is possible. A test using this
method is included in this fix.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Thu, 24 Jan 2019 18:22:47 -0500 |
parents | ab0d762d89ef |
children | 13a6dd952ffe |
line wrap: on
line diff
--- a/mercurial/revlog.py Wed Jan 30 18:15:38 2019 +0100 +++ b/mercurial/revlog.py Thu Jan 24 18:22:47 2019 -0500 @@ -497,6 +497,9 @@ else: raise error.RevlogError(_('unknown version (%d) in revlog %s') % (fmt, self.indexfile)) + # sparse-revlog can't be on without general-delta (issue6056) + if not self._generaldelta: + self._sparserevlog = False self._storedeltachains = True