--- a/mercurial/upgrade_utils/engine.py Mon Jan 31 18:13:00 2022 +0300
+++ b/mercurial/upgrade_utils/engine.py Thu Feb 17 06:32:03 2022 +0100
@@ -486,6 +486,15 @@
upgrade_dirstate(ui, srcrepo, upgrade_op, b'v2', b'v1')
upgrade_op.removed_actions.remove(upgrade_actions.dirstatev2)
+ if upgrade_actions.dirstatetrackedkey in upgrade_op.upgrade_actions:
+ ui.status(_(b'create dirstate-tracked-key file\n'))
+ upgrade_tracked_key(ui, srcrepo, upgrade_op, add=True)
+ upgrade_op.upgrade_actions.remove(upgrade_actions.dirstatetrackedkey)
+ elif upgrade_actions.dirstatetrackedkey in upgrade_op.removed_actions:
+ ui.status(_(b'remove dirstate-tracked-key file\n'))
+ upgrade_tracked_key(ui, srcrepo, upgrade_op, add=False)
+ upgrade_op.removed_actions.remove(upgrade_actions.dirstatetrackedkey)
+
if not (upgrade_op.upgrade_actions or upgrade_op.removed_actions):
return
@@ -660,3 +669,15 @@
srcrepo.dirstate.write(None)
scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)
+
+
+def upgrade_tracked_key(ui, srcrepo, upgrade_op, add):
+ if add:
+ srcrepo.dirstate._use_tracked_key = True
+ srcrepo.dirstate._dirty = True
+ srcrepo.dirstate._dirty_tracked_set = True
+ srcrepo.dirstate.write(None)
+ if not add:
+ srcrepo.dirstate.delete_tracked_key()
+
+ scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)