diff 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
line wrap: on
line diff
--- 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