mercurial/localrepo.py
changeset 42669 36c692eb28d3
parent 42621 99ebde4fec99
child 42685 863e9e7f8850
--- a/mercurial/localrepo.py	Tue Jul 30 21:36:15 2019 +0530
+++ b/mercurial/localrepo.py	Sun Jul 21 07:59:16 2019 -0700
@@ -1893,6 +1893,12 @@
                       **pycompat.strkwargs(tr.hookargs))
         def releasefn(tr, success):
             repo = reporef()
+            if repo is None:
+                # If the repo has been GC'd (and this release function is being
+                # called from transaction.__del__), there's not much we can do,
+                # so just leave the unfinished transaction there and let the
+                # user run `hg recover`.
+                return
             if success:
                 # this should be explicitly invoked here, because
                 # in-memory changes aren't written out at closing