--- 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