diff mercurial/revlogutils/rewrite.py @ 50520:85c5b4b507af

store: use StoreEntry API instead of parsing filename when fixing issue6528 This is more explicit and more robust. We also introduce a small output change as it make things simpler and this is a affecting a debug-command.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 15 May 2023 09:00:28 +0200
parents 521fec115dad
children e50d1fe7ebb4
line wrap: on
line diff
--- a/mercurial/revlogutils/rewrite.py	Mon May 15 09:00:13 2023 +0200
+++ b/mercurial/revlogutils/rewrite.py	Mon May 15 09:00:28 2023 +0200
@@ -828,8 +828,8 @@
             entry
             for entry in repo.store.datafiles()
             if (
-                entry.unencoded_path.endswith(b'.i')
-                and entry.is_revlog
+                entry.is_revlog
+                and entry.is_revlog_main
                 and entry.revlog_type == store.FILEFLAGS_FILELOG
             )
         )
@@ -842,10 +842,9 @@
         found_nothing = True
 
         for entry in files:
-            path = entry.unencoded_path
             progress.increment()
-            filename = _get_filename_from_filelog_index(path)
-            fl = _filelog_from_filename(repo, filename)
+            filename = entry.target_id
+            fl = _filelog_from_filename(repo, entry.target_id)
 
             # Set of filerevs (or hex filenodes if `to_report`) that need fixing
             to_fix = set()
@@ -861,8 +860,8 @@
                         node = binascii.hexlify(fl.node(filerev))
                         raise error.Abort(msg % (filename, node))
                 if affected:
-                    msg = b"found affected revision %d for filelog '%s'\n"
-                    ui.warn(msg % (filerev, path))
+                    msg = b"found affected revision %d for file '%s'\n"
+                    ui.warn(msg % (filerev, filename))
                     found_nothing = False
                     if not dry_run:
                         if to_report: