--- 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)