diff --git a/contrib/shrink-revlog.py b/contrib/shrink-revlog.py
index 33e04d3d17f6a7e1f31dcdbb111734b347b39d40_Y29udHJpYi9zaHJpbmstcmV2bG9nLnB5..1f667030b1396a1b7d5a7c5b5a11a1880be20860_Y29udHJpYi9zaHJpbmstcmV2bG9nLnB5 100644
--- a/contrib/shrink-revlog.py
+++ b/contrib/shrink-revlog.py
@@ -30,7 +30,10 @@
     while visit:
         cur = visit[-1]
         for p in edges[cur]:
-            if p not in finished:
+            # defend against node.nullrev because it's occasionally
+            # possible for a node to have parents (null, something)
+            # rather than (something, null)
+            if p not in finished and p != node.nullrev:
                 visit.append(p)
                 break
         else: