Mercurial > public > mercurial-scm > hg
diff mercurial/upgrade_utils/engine.py @ 48790:5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
This seems rather important if we want people to start using it.
Differential Revision: https://phab.mercurial-scm.org/D12198
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 17 Feb 2022 06:32:03 +0100 |
parents | 6e4999cb085e |
children | 6e559391f96e |
line wrap: on
line diff
--- 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)