Mercurial > public > mercurial-scm > hg
comparison mercurial/upgrade.py @ 48445:e7420f75d90d
upgrade: make the list of explicitly specified revlog a dict
This makes various logic simpler and will help making future patch clearer.
Differential Revision: https://phab.mercurial-scm.org/D11868
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 06 Dec 2021 14:40:13 +0100 |
parents | 6e045497b20b |
children | 1d0978cfe968 |
comparison
equal
deleted
inserted
replaced
48444:6e045497b20b | 48445:e7420f75d90d |
---|---|
43 """Upgrade a repository in place.""" | 43 """Upgrade a repository in place.""" |
44 if optimize is None: | 44 if optimize is None: |
45 optimize = {} | 45 optimize = {} |
46 repo = repo.unfiltered() | 46 repo = repo.unfiltered() |
47 | 47 |
48 specentries = ( | 48 specified_revlogs = {} |
49 (upgrade_engine.UPGRADE_CHANGELOG, changelog), | 49 if changelog is not None: |
50 (upgrade_engine.UPGRADE_MANIFEST, manifest), | 50 specified_revlogs[upgrade_engine.UPGRADE_CHANGELOG] = changelog |
51 (upgrade_engine.UPGRADE_FILELOGS, filelogs), | 51 if manifest is not None: |
52 ) | 52 specified_revlogs[upgrade_engine.UPGRADE_MANIFEST] = manifest |
53 if filelogs is not None: | |
54 specified_revlogs[upgrade_engine.UPGRADE_FILELOGS] = filelogs | |
53 | 55 |
54 # Ensure the repository can be upgraded. | 56 # Ensure the repository can be upgraded. |
55 upgrade_actions.check_source_requirements(repo) | 57 upgrade_actions.check_source_requirements(repo) |
56 | 58 |
57 default_options = localrepo.defaultcreateopts(repo.ui) | 59 default_options = localrepo.defaultcreateopts(repo.ui) |
87 addedreqs = newreqs - repo.requirements | 89 addedreqs = newreqs - repo.requirements |
88 | 90 |
89 # check if we need to touch revlog and if so, which ones | 91 # check if we need to touch revlog and if so, which ones |
90 | 92 |
91 revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) | 93 revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) |
92 specified = [(y, x) for (y, x) in specentries if x is not None] | 94 if specified_revlogs: |
93 if specified: | |
94 # we have some limitation on revlogs to be recloned | 95 # we have some limitation on revlogs to be recloned |
95 if any(x for y, x in specified): | 96 if any(specified_revlogs.values()): |
96 revlogs = set() | 97 revlogs = set() |
97 for upgrade, enabled in specified: | 98 for upgrade, enabled in specified_revlogs.items(): |
98 if enabled: | 99 if enabled: |
99 revlogs.add(upgrade) | 100 revlogs.add(upgrade) |
100 else: | 101 else: |
101 # none are enabled | 102 # none are enabled |
102 for upgrade, __ in specified: | 103 for upgrade in specified_revlogs.keys(): |
103 revlogs.discard(upgrade) | 104 revlogs.discard(upgrade) |
104 | 105 |
105 # check the consistency of the revlog selection with the planned action | 106 # check the consistency of the revlog selection with the planned action |
106 | 107 |
107 if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: | 108 if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: |