revlog: add exception when linkrev == nullrev

When we deployed the latest crew mercurial to our users, a few of them
had issues where a filelog would have an entry with a -1 linkrev. This
caused operations like rebase and amend to create a bundle containing the
entire repository, which took a long time.

I don't know what the issue is, but adding this check should prevent repos
from getting in this state, and should help us pinpoint the issue next time
it happens.
This commit is contained in:
Durham Goode 2013-06-17 19:44:00 -07:00
parent ce4ccac760
commit e750755eba

View File

@ -991,6 +991,9 @@ class revlog(object):
p1, p2 - the parent nodeids of the revision
cachedelta - an optional precomputed delta
"""
if link == nullrev:
raise RevlogError(_("attempted to add linkrev -1 to %s")
% self.indexfile)
node = hash(text, p1, p2)
if node in self.nodemap:
return node