mercurial/repair.py
changeset 45871 a985c4fb23ca
parent 45869 63edc384d3b7
child 45872 ec73a6a75985
--- 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: