Mercurial > public > mercurial-scm > hg
diff mercurial/upgrade_utils/actions.py @ 46048:f4f956342cf1
upgrade: move requirements checking in a dedicated function
This is a simple an isolated check that can go next to the associated code.
Differential Revision: https://phab.mercurial-scm.org/D9482
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 01 Dec 2020 15:45:23 +0100 |
parents | 4b89cf08d8dc |
children | a2a59cde9b9f |
line wrap: on
line diff
--- a/mercurial/upgrade_utils/actions.py Tue Dec 01 15:11:06 2020 +0100 +++ b/mercurial/upgrade_utils/actions.py Tue Dec 01 15:45:23 2020 +0100 @@ -9,6 +9,7 @@ from ..i18n import _ from .. import ( + error, localrepo, requirements, util, @@ -664,3 +665,21 @@ # e.g. adding generaldelta could schedule parent redeltas. return newactions + + +def check_source_requirements(repo): + """Ensure that no existing requirements prevent the repository upgrade""" + + required = requiredsourcerequirements(repo) + missingreqs = required - repo.requirements + if missingreqs: + msg = _(b'cannot upgrade repository; requirement missing: %s') + missingreqs = b', '.join(sorted(missingreqs)) + raise error.Abort(msg % missingreqs) + + blocking = blocksourcerequirements(repo) + blockingreqs = blocking & repo.requirements + if blockingreqs: + m = _(b'cannot upgrade repository; unsupported source requirement: %s') + blockingreqs = b', '.join(sorted(blockingreqs)) + raise error.Abort(m % blockingreqs)