Comments
Patch
@@ -580,6 +580,24 @@
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
@@ -144,20 +144,16 @@
"""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,