Patchwork D2401: stack: introduce an option to disable the restriction on ancestor

login
register
mail settings
Submitter phabricator
Date April 5, 2018, 4:22 p.m.
Message ID <5865b9fd0ff9260b48492fb793f4c1b8@localhost.localdomain>
Download mbox | patch
Permalink /patch/30386/
State Not Applicable
Headers show

Comments

phabricator - April 5, 2018, 4:22 p.m.
lothiraldan updated this revision to Diff 7734.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2401?vs=6217&id=7734

REVISION DETAIL
  https://phab.mercurial-scm.org/D2401

AFFECTED FILES
  mercurial/configitems.py
  mercurial/stack.py

CHANGE DETAILS




To: lothiraldan, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/mercurial/stack.py b/mercurial/stack.py
--- a/mercurial/stack.py
+++ b/mercurial/stack.py
@@ -12,28 +12,34 @@ 
     scmutil,
 )
 
-baserevspec = "only(%s) and not public()"
+baserevspec = "not public()"
 
 def getstack(repo, rev=None):
     """return a sorted smartrev of the stack containing either rev if it is
     not None or the current working directory parent.
 
-    The stack will always contain all drafts changesets which are ancestors to
-    the revision.
+    The stack will always contain all drafts changesets.
 
     There are several config options to restrict the changesets that will be
     part of the stack:
 
     [stack]
     not-merge = (boolean) # The stack will contains only non-merge changesets
                           # if set to True (default: True)
+    restrict-ancestors = (boolean) # The stack will contain only the
+                                   # ancestors of the revision if set to True
+                                   # (default: True)
     """
     if rev is None:
         rev = '.'
 
-    revspecargs = [revsetlang.formatspec(baserevspec, rev)]
+    revspecargs = [baserevspec]
     revspec = ["%r"]
 
+    if repo.ui.configbool("stack", "restrict-ancestors"):
+        revspecargs.append(revsetlang.formatspec("only(%s)", rev))
+        revspec.append("%r")
+
     if repo.ui.configbool("stack", "not-merge"):
         revspecargs.append("not ::merge()")
         revspec.append("%r")
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -965,6 +965,9 @@ 
 coreconfigitem('stack', 'not-merge',
     default=True,
 )
+coreconfigitem('stack', 'restrict-ancestors',
+    default=True,
+)
 coreconfigitem('subrepos', 'allowed',
     default=dynamicdefault,  # to make backporting simpler
 )