comparison 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
comparison
equal deleted inserted replaced
46047:4b89cf08d8dc 46048:f4f956342cf1
7 7
8 from __future__ import absolute_import 8 from __future__ import absolute_import
9 9
10 from ..i18n import _ 10 from ..i18n import _
11 from .. import ( 11 from .. import (
12 error,
12 localrepo, 13 localrepo,
13 requirements, 14 requirements,
14 util, 15 util,
15 ) 16 )
16 17
662 663
663 # FUTURE consider adding some optimizations here for certain transitions. 664 # FUTURE consider adding some optimizations here for certain transitions.
664 # e.g. adding generaldelta could schedule parent redeltas. 665 # e.g. adding generaldelta could schedule parent redeltas.
665 666
666 return newactions 667 return newactions
668
669
670 def check_source_requirements(repo):
671 """Ensure that no existing requirements prevent the repository upgrade"""
672
673 required = requiredsourcerequirements(repo)
674 missingreqs = required - repo.requirements
675 if missingreqs:
676 msg = _(b'cannot upgrade repository; requirement missing: %s')
677 missingreqs = b', '.join(sorted(missingreqs))
678 raise error.Abort(msg % missingreqs)
679
680 blocking = blocksourcerequirements(repo)
681 blockingreqs = blocking & repo.requirements
682 if blockingreqs:
683 m = _(b'cannot upgrade repository; unsupported source requirement: %s')
684 blockingreqs = b', '.join(sorted(blockingreqs))
685 raise error.Abort(m % blockingreqs)