# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2020-12-30 10:50:25 # Node ID 82f3ee1a505f450a42b441b5e8c2960774ff8f59 # Parent 5dfa837d933e97b3e8df75130fcf5f00e83ccebc actions: store deltareuse mode of whole operation in UpgradeOperation UpgradeOperation should provide easy access to all the things related to the current operation. Clients should not need to compute them. Differential Revision: https://phab.mercurial-scm.org/D9666 diff --git a/mercurial/upgrade_utils/actions.py b/mercurial/upgrade_utils/actions.py --- a/mercurial/upgrade_utils/actions.py +++ b/mercurial/upgrade_utils/actions.py @@ -12,6 +12,7 @@ from .. import ( error, localrepo, requirements, + revlog, util, ) @@ -646,6 +647,17 @@ class UpgradeOperation(object): i for i in all_optimizations if i not in self.upgrade_actions ] + # delta reuse mode of this upgrade operation + self.delta_reuse_mode = revlog.revlog.DELTAREUSEALWAYS + if b're-delta-all' in self._upgrade_actions_names: + self.delta_reuse_mode = revlog.revlog.DELTAREUSENEVER + elif b're-delta-parent' in self._upgrade_actions_names: + self.delta_reuse_mode = revlog.revlog.DELTAREUSESAMEREVS + elif b're-delta-multibase' in self._upgrade_actions_names: + self.delta_reuse_mode = revlog.revlog.DELTAREUSESAMEREVS + elif b're-delta-fulladd' in self._upgrade_actions_names: + self.delta_reuse_mode = revlog.revlog.DELTAREUSEFULLADD + def _write_labeled(self, l, label): """ Utility function to aid writing of a list under one label diff --git a/mercurial/upgrade_utils/engine.py b/mercurial/upgrade_utils/engine.py --- a/mercurial/upgrade_utils/engine.py +++ b/mercurial/upgrade_utils/engine.py @@ -446,24 +446,13 @@ def upgrade(ui, srcrepo, dstrepo, upgrad ) ) - if upgrade_op.has_upgrade_action(b're-delta-all'): - deltareuse = revlog.revlog.DELTAREUSENEVER - elif upgrade_op.has_upgrade_action(b're-delta-parent'): - deltareuse = revlog.revlog.DELTAREUSESAMEREVS - elif upgrade_op.has_upgrade_action(b're-delta-multibase'): - deltareuse = revlog.revlog.DELTAREUSESAMEREVS - elif upgrade_op.has_upgrade_action(b're-delta-fulladd'): - deltareuse = revlog.revlog.DELTAREUSEFULLADD - else: - deltareuse = revlog.revlog.DELTAREUSEALWAYS - with dstrepo.transaction(b'upgrade') as tr: _clonerevlogs( ui, srcrepo, dstrepo, tr, - deltareuse, + upgrade_op.delta_reuse_mode, upgrade_op.has_upgrade_action(b're-delta-multibase'), revlogs=upgrade_op.revlogs_to_process, )