Patchwork D9482: upgrade: move requirements checking in a dedicated function

login
register
mail settings
Submitter phabricator
Date Dec. 1, 2020, 10:11 p.m.
Message ID <differential-rev-PHID-DREV-yebwzywjn2d5zq7jbr2i-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/47764/
State Superseded
Headers show

Comments

phabricator - Dec. 1, 2020, 10:11 p.m.
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This is a simple an isolated check that can go next to the associated code.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D9482

AFFECTED FILES
  mercurial/upgrade.py
  mercurial/upgrade_utils/actions.py

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/mercurial/upgrade_utils/actions.py b/mercurial/upgrade_utils/actions.py
--- a/mercurial/upgrade_utils/actions.py
+++ b/mercurial/upgrade_utils/actions.py
@@ -9,6 +9,7 @@ 
 
 from ..i18n import _
 from .. import (
+    error,
     localrepo,
     requirements,
     util,
@@ -642,3 +643,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)
diff --git a/mercurial/upgrade.py b/mercurial/upgrade.py
--- a/mercurial/upgrade.py
+++ b/mercurial/upgrade.py
@@ -72,26 +72,7 @@ 
                 revlogs.discard(upgrade)
 
     # Ensure the repository can be upgraded.
-    missingreqs = (
-        upgrade_actions.requiredsourcerequirements(repo) - repo.requirements
-    )
-    if missingreqs:
-        raise error.Abort(
-            _(b'cannot upgrade repository; requirement missing: %s')
-            % _(b', ').join(sorted(missingreqs))
-        )
-
-    blockedreqs = (
-        upgrade_actions.blocksourcerequirements(repo) & repo.requirements
-    )
-    if blockedreqs:
-        raise error.Abort(
-            _(
-                b'cannot upgrade repository; unsupported source '
-                b'requirement: %s'
-            )
-            % _(b', ').join(sorted(blockedreqs))
-        )
+    upgrade_actions.check_source_requirements(repo)
 
     # FUTURE there is potentially a need to control the wanted requirements via
     # command arguments or via an extension hook point.