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 '