mercurial/obsolete.py
changeset 49424 360c156e1f81
parent 49306 2e726c934fcd
child 50929 18c8c18993f0
--- a/mercurial/obsolete.py	Tue Aug 16 11:19:54 2022 -0400
+++ b/mercurial/obsolete.py	Wed Aug 17 02:43:44 2022 +0200
@@ -70,6 +70,7 @@
 
 import binascii
 import struct
+import weakref
 
 from .i18n import _
 from .pycompat import getattr
@@ -561,10 +562,18 @@
         # caches for various obsolescence related cache
         self.caches = {}
         self.svfs = svfs
-        self.repo = repo
+        self._repo = weakref.ref(repo)
         self._defaultformat = defaultformat
         self._readonly = readonly
 
+    @property
+    def repo(self):
+        r = self._repo()
+        if r is None:
+            msg = "using the obsstore of a deallocated repo"
+            raise error.ProgrammingError(msg)
+        return r
+
     def __iter__(self):
         return iter(self._all)