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)