diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -144,20 +144,16 @@ def getoptions(repo):
     """Returns dicts showing state of obsolescence features."""
 
     createmarkersvalue = _getoptionvalue(repo, createmarkersopt)
-    unstablevalue = _getoptionvalue(repo, allowunstableopt)
-    divergencevalue = _getoptionvalue(repo, allowdivergenceopt)
-    exchangevalue = _getoptionvalue(repo, exchangeopt)
-
-    # createmarkers must be enabled if other options are enabled
-    if (
-        unstablevalue or divergencevalue or exchangevalue
-    ) and not createmarkersvalue:
-        raise error.Abort(
-            _(
-                b"'createmarkers' obsolete option must be enabled "
-                b"if other obsolete options are enabled"
-            )
-        )
+    if createmarkersvalue:
+        unstablevalue = _getoptionvalue(repo, allowunstableopt)
+        divergencevalue = _getoptionvalue(repo, allowdivergenceopt)
+        exchangevalue = _getoptionvalue(repo, exchangeopt)
+    else:
+        # if we cannot create obsolescence markers, we shouldn't exchange them
+        # or perform operations that lead to instability or divergence
+        unstablevalue = False
+        divergencevalue = False
+        exchangevalue = False
 
     return {
         createmarkersopt: createmarkersvalue,
diff --git a/tests/test-clone.t b/tests/test-clone.t
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -580,6 +580,24 @@ iterable in addbranchrevs()
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ rm -r ua
 
+Local clones don't get confused by unusual experimental.evolution options
+
+  $ hg clone \
+  >   --config experimental.evolution=allowunstable,allowdivergence,exchange \
+  >   a ua
+  updating to branch default
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ rm -r ua
+
+  $ hg clone \
+  >   --config experimental.evolution.createmarkers=no \
+  >   --config experimental.evolution.allowunstable=yes \
+  >   --config experimental.evolution.allowdivergence=yes \
+  >   --config experimental.evolution.exchange=yes \
+  >   a ua
+  updating to branch default
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ rm -r ua
 
 Test clone with special '@' bookmark:
   $ cd a