Patchwork [2,of,3,evolve-ext,V2] evolve: factor out check for creating unstable commits

login
register
mail settings
Submitter Siddharth Agarwal
Date March 20, 2016, 5:02 a.m.
Message ID <62cee591d6b306cfa8d1.1458450146@dev666.prn1.facebook.com>
Download mbox | patch
Permalink /patch/13979/
State Changes Requested
Delegated to: Laurent Charignon
Headers show

Comments

Siddharth Agarwal - March 20, 2016, 5:02 a.m.
# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 1458449988 25200
#      Sat Mar 19 21:59:48 2016 -0700
# Branch stable
# Node ID 62cee591d6b306cfa8d1f30acbcc4cae972d79ff
# Parent  6a025b84e174d08fdb485d1f049be17077c671c8
evolve: factor out check for creating unstable commits

This check is pretty non-trivial, and we do it in two places already. We're
going to do it in a third place soon.

Patch

diff --git a/hgext/evolve.py b/hgext/evolve.py
--- a/hgext/evolve.py
+++ b/hgext/evolve.py
@@ -2349,9 +2349,8 @@  def cmdprune(ui, repo, *revs, **opts):
         if not precs:
             raise error.Abort('nothing to prune')
 
-        if not obsolete.isenabled(repo, obsolete.allowunstableopt):
-            if repo.revs("(%ld::) - %ld", revs, revs):
-                raise error.Abort(_("cannot prune in the middle of a stack"))
+        if _willcreatedisallowedunstable(repo, revs):
+            raise error.Abort(_("cannot prune in the middle of a stack"))
 
         # defines successors changesets
         sucs = scmutil.revrange(repo, succs)
@@ -3011,13 +3010,15 @@  def _foldcheck(repo, revs):
         raise error.Abort(_("cannot fold non-linear revisions "
                            "(multiple heads given)"))
     head = repo[heads.first()]
-    disallowunstable = not obsolete.isenabled(repo, obsolete.allowunstableopt)
-    if disallowunstable:
-        if repo.revs("(%ld::) - %ld", revs, revs):
-            raise error.Abort(_("cannot fold chain not ending with a head "\
-                               "or with branching"))
+    if _willcreatedisallowedunstable(repo, revs):
+        raise error.Abort(_("cannot fold chain not ending with a head "\
+                            "or with branching"))
     return root, head
 
+def _willcreatedisallowedunstable(repo, revs):
+    allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt)
+    return not allowunstable and bool(repo.revs("(%ld::) - %ld", revs, revs))
+
 @eh.wrapcommand('graft')
 def graftwrapper(orig, ui, repo, *revs, **kwargs):
     kwargs = dict(kwargs)