Mercurial > public > mercurial-scm > hg
comparison mercurial/upgrade.py @ 35302:ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Some requirement does not directly result from config and needs more advanced
logic to be preserved. The current example is 'largefiles'. We add a hook
point in the upgrade code so that extensions can handle these cases.
The 'largefiles' extension will use it in the next changeset.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Thu, 07 Dec 2017 01:51:54 +0100 |
parents | 8056481caa81 |
children | 0181f99819d2 |
comparison
equal
deleted
inserted
replaced
35301:d67bcfc0041f | 35302:ad2b35ebf670 |
---|---|
91 return { | 91 return { |
92 'dotencode', | 92 'dotencode', |
93 'fncache', | 93 'fncache', |
94 'generaldelta', | 94 'generaldelta', |
95 } | 95 } |
96 | |
97 def preservedrequirements(repo): | |
98 return set() | |
96 | 99 |
97 deficiency = 'deficiency' | 100 deficiency = 'deficiency' |
98 optimisation = 'optimization' | 101 optimisation = 'optimization' |
99 | 102 |
100 class improvement(object): | 103 class improvement(object): |
677 _(', ').join(sorted(blockedreqs))) | 680 _(', ').join(sorted(blockedreqs))) |
678 | 681 |
679 # FUTURE there is potentially a need to control the wanted requirements via | 682 # FUTURE there is potentially a need to control the wanted requirements via |
680 # command arguments or via an extension hook point. | 683 # command arguments or via an extension hook point. |
681 newreqs = localrepo.newreporequirements(repo) | 684 newreqs = localrepo.newreporequirements(repo) |
685 newreqs.update(preservedrequirements(repo)) | |
682 | 686 |
683 noremovereqs = (repo.requirements - newreqs - | 687 noremovereqs = (repo.requirements - newreqs - |
684 supportremovedrequirements(repo)) | 688 supportremovedrequirements(repo)) |
685 if noremovereqs: | 689 if noremovereqs: |
686 raise error.Abort(_('cannot upgrade repository; requirement would be ' | 690 raise error.Abort(_('cannot upgrade repository; requirement would be ' |