changeset 7082:6c0d12b12025 stable

evolve: move the common check for in-memory merge feature to compat module
author Anton Shestakov <av6@dwimlabs.net>
date Mon, 03 Feb 2025 16:08:38 +0100
parents 37086bb5544b
children f3b21a979a7d
files hgext3rd/evolve/compat.py hgext3rd/evolve/evolvecmd.py hgext3rd/evolve/rewriteutil.py
diffstat 3 files changed, 9 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/evolve/compat.py
+++ b/hgext3rd/evolve/compat.py
@@ -40,6 +40,13 @@
 except (AttributeError, ImportError):
     mergestate = mergemod.mergestate  # pytype: disable=module-attr
 
+try:
+    mergestatemod.memmergestate
+    hasmemmergestate = True
+except AttributeError:
+    # hg <= 5.5 (19590b126764)
+    hasmemmergestate = False
+
 from . import (
     exthelper,
 )
--- a/hgext3rd/evolve/evolvecmd.py
+++ b/hgext3rd/evolve/evolvecmd.py
@@ -911,12 +911,8 @@
     return commitmsg
 
 def use_in_memory_merge(repo):
-    try:
-        from mercurial import mergestate as mergestatemod
-        mergestatemod.memmergestate
-    except (AttributeError, ImportError):
+    if not compat.hasmemmergestate:
         # no in-memory evolve if Mercurial lacks the required code
-        # hg <= 5.5 (19590b126764)
         return False
     config_value = repo.ui.config(b'experimental', b'evolution.in-memory')
     if config_value == b'force':
--- a/hgext3rd/evolve/rewriteutil.py
+++ b/hgext3rd/evolve/rewriteutil.py
@@ -233,14 +233,6 @@
             revs = sorted(revs)
     return repomarks, revs
 
-try:
-    from mercurial import mergestate
-    mergestate.memmergestate
-    hasmemmergestate = True
-except (ImportError, AttributeError):
-    # hg <= 5.5 (19590b126764)
-    hasmemmergestate = False
-
 def rewrite(repo, old, head, newbases, commitopts):
     """Return (nodeid, created) where nodeid is the identifier of the
     changeset generated by the rewrite process, and created is True if
@@ -251,7 +243,7 @@
     # mergestate and use that. We don't want that to happen, so we'll require
     # users of old Mercurial versions to run `hg touch` etc without
     # mergestate.
-    if not hasmemmergestate:
+    if not compat.hasmemmergestate:
         ms = compat.mergestate.read(repo)
         mergeutil.checkunresolved(ms)