rewriteutil: move allowdivergence check to foldcheck() stable
authorAnton Shestakov <av6@dwimlabs.net>
Tue, 10 Sep 2019 15:43:20 +0700
branchstable
changeset 4841 95d2b5440731
parent 4832 8a491546e81d
child 4842 ee0866a279da
rewriteutil: move allowdivergence check to foldcheck() foldcheck() calls precheck() first and then performs more fold-specific checks.
hgext3rd/evolve/cmdrewrite.py
hgext3rd/evolve/rewriteutil.py
--- 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()]