rewriteutil: move allowdivergence check to foldcheck()
foldcheck() calls precheck() first and then performs more fold-specific checks.
--- a/hgext3rd/evolve/cmdrewrite.py Sat Sep 07 13:03:29 2019 +0700
+++ b/hgext3rd/evolve/cmdrewrite.py Tue Sep 10 15:43:20 2019 +0700
@@ -762,14 +762,6 @@
ui.write_err(_('single revision specified, nothing to fold\n'))
return 1
- if not ui.configbool('experimental', 'evolution.allowdivergence'):
- for rev in revs:
- if repo[rev].obsolete():
- msg = _('folding obsolete revisions may cause divergence')
- hint = _('set experimental.evolution.allowdivergence=yes'
- ' to allow folding them')
- raise error.Abort(msg, hint=hint)
-
# Sort so combined commit message of `hg fold --exact -r . -r .^` is
# in topological order.
revs.sort()
--- a/hgext3rd/evolve/rewriteutil.py Sat Sep 07 13:03:29 2019 +0700
+++ b/hgext3rd/evolve/rewriteutil.py Tue Sep 10 15:43:20 2019 +0700
@@ -117,6 +117,13 @@
if len(baseparents) > 2:
raise error.Abort(_("cannot fold revisions that merge with more than "
"one external changeset (not in revisions)"))
+ if not repo.ui.configbool('experimental', 'evolution.allowdivergence'):
+ obsolete = repo.revs('%ld and obsolete()', revs)
+ if obsolete:
+ msg = _('folding obsolete revisions may cause divergence')
+ hint = _('set experimental.evolution.allowdivergence=yes'
+ ' to allow folding them')
+ raise error.Abort(msg, hint=hint)
# root's p1 is already used as the target ctx p1
baseparents -= {root.p1().rev()}
p2 = repo[baseparents.first()]