revlog: add exception when linkrev == nullrev
authorDurham Goode <durham@fb.com>
Mon, 17 Jun 2013 19:44:00 -0700
changeset 19326 7014526d67a8
parent 19325 ec896f9e8894
child 19327 cf1b0a58a0de
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.
mercurial/revlog.py
--- a/mercurial/revlog.py	Wed Jun 19 14:17:03 2013 -0500
+++ b/mercurial/revlog.py	Mon Jun 17 19:44:00 2013 -0700
@@ -991,6 +991,9 @@
         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