--- a/mercurial/repair.py Sat Nov 07 19:24:12 2020 +0100
+++ b/mercurial/repair.py Sat Nov 07 21:34:09 2020 +0100
@@ -209,7 +209,7 @@
# transaction and makes assumptions that file storage is
# using append-only files. We'll need some kind of storage
# API to handle stripping for us.
- offset = len(tr._entries)
+ oldfiles = set(tr._offsetmap.keys())
tr.startgroup()
cl.strip(striprev, tr)
@@ -219,8 +219,11 @@
repo.file(fn).strip(striprev, tr)
tr.endgroup()
- for i in pycompat.xrange(offset, len(tr._entries)):
- file, troffset = tr._entries[i]
+ entries = tr.readjournal()
+
+ for file, troffset in entries:
+ if file in oldfiles:
+ continue
with repo.svfs(file, b'a', checkambig=True) as fp:
fp.truncate(troffset)
if troffset == 0: