diff -r e69c82bf3a01 -r 2cd00052ae4d mercurial/obsolete.py --- a/mercurial/obsolete.py Wed Jul 28 13:47:21 2021 +0300 +++ b/mercurial/obsolete.py Wed Jul 28 13:45:07 2021 +0300 @@ -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,