diff mercurial/upgrade_utils/engine.py @ 47659:f030c7d22032

walk: no longer ignore revlogs of files starting with `undo.` (issue6542) Changeset 0b569c75d180 introduced new code in store.walk to filter out undo files left behind by the transaction. However doing so is also filtering out legitimate revlog file starting with `undo.` So this changeset is mostly rolling back that change and adding tests tests to catch this kind of error in the future. As a result we the transaction undo files a considered again by various code (in practice mostly persistent nodemap related). We either live with it (low inconvenient) or explicitly work around it for now. This should be good enough to no longer block the 5.9rc release with this issue. We shall build something cleaner within the 6.0 cycle. Differential Revision: https://phab.mercurial-scm.org/D11201
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 19 Jul 2021 22:39:08 +0200
parents a43d256c041a
children aa2296893168
line wrap: on
line diff
--- a/mercurial/upgrade_utils/engine.py	Tue Jul 13 14:54:09 2021 +0530
+++ b/mercurial/upgrade_utils/engine.py	Mon Jul 19 22:39:08 2021 +0200
@@ -200,6 +200,17 @@
         if not rl_type & store.FILEFLAGS_REVLOG_MAIN:
             continue
 
+        # the store.walk function will wrongly pickup transaction backup and
+        # get confused. As a quick fix for 5.9 release, we ignore those.
+        # (this is not a module constants because it seems better to keep the
+        # hack together)
+        skip_undo = (
+            b'undo.backup.00changelog.i',
+            b'undo.backup.00manifest.i',
+        )
+        if unencoded in skip_undo:
+            continue
+
         rl = _revlogfrompath(srcrepo, rl_type, unencoded)
 
         info = rl.storageinfo(