comparison mercurial/revlog.py @ 19326:7014526d67a8

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.
author Durham Goode <durham@fb.com>
date Mon, 17 Jun 2013 19:44:00 -0700
parents 4cfdec944edf
children fd1bb7c1be78
comparison
equal deleted inserted replaced
19325:ec896f9e8894 19326:7014526d67a8
989 transaction - the transaction object used for rollback 989 transaction - the transaction object used for rollback
990 link - the linkrev data to add 990 link - the linkrev data to add
991 p1, p2 - the parent nodeids of the revision 991 p1, p2 - the parent nodeids of the revision
992 cachedelta - an optional precomputed delta 992 cachedelta - an optional precomputed delta
993 """ 993 """
994 if link == nullrev:
995 raise RevlogError(_("attempted to add linkrev -1 to %s")
996 % self.indexfile)
994 node = hash(text, p1, p2) 997 node = hash(text, p1, p2)
995 if node in self.nodemap: 998 if node in self.nodemap:
996 return node 999 return node
997 1000
998 dfh = None 1001 dfh = None