Mercurial > public > mercurial-scm > hg
comparison mercurial/upgrade.py @ 48444:6e045497b20b
upgrade: move the revlog selection code lower down the chain
We about about to make revlog section smarter. Moving the code around will make
the next changesets clearer.
Differential Revision: https://phab.mercurial-scm.org/D11867
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 06 Dec 2021 11:59:48 +0100 |
parents | 16c18d5e5dc8 |
children | e7420f75d90d |
comparison
equal
deleted
inserted
replaced
48443:112184713852 | 48444:6e045497b20b |
---|---|
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 revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) | |
49 specentries = ( | 48 specentries = ( |
50 (upgrade_engine.UPGRADE_CHANGELOG, changelog), | 49 (upgrade_engine.UPGRADE_CHANGELOG, changelog), |
51 (upgrade_engine.UPGRADE_MANIFEST, manifest), | 50 (upgrade_engine.UPGRADE_MANIFEST, manifest), |
52 (upgrade_engine.UPGRADE_FILELOGS, filelogs), | 51 (upgrade_engine.UPGRADE_FILELOGS, filelogs), |
53 ) | 52 ) |
53 | |
54 # Ensure the repository can be upgraded. | |
55 upgrade_actions.check_source_requirements(repo) | |
56 | |
57 default_options = localrepo.defaultcreateopts(repo.ui) | |
58 newreqs = localrepo.newreporequirements(repo.ui, default_options) | |
59 newreqs.update(upgrade_actions.preservedrequirements(repo)) | |
60 | |
61 upgrade_actions.check_requirements_changes(repo, newreqs) | |
62 | |
63 # Find and validate all improvements that can be made. | |
64 alloptimizations = upgrade_actions.findoptimizations(repo) | |
65 | |
66 # Apply and Validate arguments. | |
67 optimizations = [] | |
68 for o in alloptimizations: | |
69 if o.name in optimize: | |
70 optimizations.append(o) | |
71 optimize.discard(o.name) | |
72 | |
73 if optimize: # anything left is unknown | |
74 raise error.Abort( | |
75 _(b'unknown optimization action requested: %s') | |
76 % b', '.join(sorted(optimize)), | |
77 hint=_(b'run without arguments to see valid optimizations'), | |
78 ) | |
79 | |
80 format_upgrades = upgrade_actions.find_format_upgrades(repo) | |
81 up_actions = upgrade_actions.determine_upgrade_actions( | |
82 repo, format_upgrades, optimizations, repo.requirements, newreqs | |
83 ) | |
84 removed_actions = upgrade_actions.find_format_downgrades(repo) | |
85 | |
86 removedreqs = repo.requirements - newreqs | |
87 addedreqs = newreqs - repo.requirements | |
88 | |
89 # check if we need to touch revlog and if so, which ones | |
90 | |
91 revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS) | |
54 specified = [(y, x) for (y, x) in specentries if x is not None] | 92 specified = [(y, x) for (y, x) in specentries if x is not None] |
55 if specified: | 93 if specified: |
56 # we have some limitation on revlogs to be recloned | 94 # we have some limitation on revlogs to be recloned |
57 if any(x for y, x in specified): | 95 if any(x for y, x in specified): |
58 revlogs = set() | 96 revlogs = set() |
62 else: | 100 else: |
63 # none are enabled | 101 # none are enabled |
64 for upgrade, __ in specified: | 102 for upgrade, __ in specified: |
65 revlogs.discard(upgrade) | 103 revlogs.discard(upgrade) |
66 | 104 |
67 # Ensure the repository can be upgraded. | 105 # check the consistency of the revlog selection with the planned action |
68 upgrade_actions.check_source_requirements(repo) | |
69 | |
70 default_options = localrepo.defaultcreateopts(repo.ui) | |
71 newreqs = localrepo.newreporequirements(repo.ui, default_options) | |
72 newreqs.update(upgrade_actions.preservedrequirements(repo)) | |
73 | |
74 upgrade_actions.check_requirements_changes(repo, newreqs) | |
75 | |
76 # Find and validate all improvements that can be made. | |
77 alloptimizations = upgrade_actions.findoptimizations(repo) | |
78 | |
79 # Apply and Validate arguments. | |
80 optimizations = [] | |
81 for o in alloptimizations: | |
82 if o.name in optimize: | |
83 optimizations.append(o) | |
84 optimize.discard(o.name) | |
85 | |
86 if optimize: # anything left is unknown | |
87 raise error.Abort( | |
88 _(b'unknown optimization action requested: %s') | |
89 % b', '.join(sorted(optimize)), | |
90 hint=_(b'run without arguments to see valid optimizations'), | |
91 ) | |
92 | |
93 format_upgrades = upgrade_actions.find_format_upgrades(repo) | |
94 up_actions = upgrade_actions.determine_upgrade_actions( | |
95 repo, format_upgrades, optimizations, repo.requirements, newreqs | |
96 ) | |
97 removed_actions = upgrade_actions.find_format_downgrades(repo) | |
98 | |
99 removedreqs = repo.requirements - newreqs | |
100 addedreqs = newreqs - repo.requirements | |
101 | 106 |
102 if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: | 107 if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS: |
103 incompatible = upgrade_actions.RECLONES_REQUIREMENTS & ( | 108 incompatible = upgrade_actions.RECLONES_REQUIREMENTS & ( |
104 removedreqs | addedreqs | 109 removedreqs | addedreqs |
105 ) | 110 ) |