Patchwork D2395: stack: add a new module for stack-related commands

login
register
mail settings
Submitter phabricator
Date Feb. 23, 2018, 10:36 a.m.
Message ID <differential-rev-PHID-DREV-btpfzef35dbsc724ho7a-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/28267/
State Superseded
Headers show

Comments

phabricator - Feb. 23, 2018, 10:36 a.m.
lothiraldan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Bootstrap the module with a function that returns the stack for the current
  revision. The definition of the stack is ihnerited from histedit default
  revset and used by hg show stack.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/stack.py

CHANGE DETAILS




To: lothiraldan, #hg-reviewers
Cc: mercurial-devel
phabricator - Feb. 24, 2018, 2:36 a.m.
indygreg requested changes to this revision.
indygreg added a comment.
This revision now requires changes to proceed.


  Requires a minor style change. But I like where this is going...

INLINE COMMENTS

> stack.py:10
> +
> +from . import revsetlang, scmutil
> +

Nit: this doesn't following our import conventions. This should be:

  from . import (
      revsetlang,
      scmutil,
  )

REPOSITORY
  rHG Mercurial

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

To: lothiraldan, #hg-reviewers, indygreg
Cc: indygreg, mercurial-devel
phabricator - March 8, 2018, 6:28 a.m.
indygreg requested changes to this revision.
indygreg added a comment.
This revision now requires changes to proceed.


  I assume this stack will get a post-sprint refresh. So I'm going to wait on that before reviewing.

REPOSITORY
  rHG Mercurial

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

To: lothiraldan, #hg-reviewers, indygreg
Cc: indygreg, mercurial-devel
phabricator - March 12, 2018, 10:42 a.m.
lothiraldan added a comment.


  I don't remember a particular point that needed to be cleaned before merging this series. I think the next steps are to introduce a Stack object, update core commands to works with stacks and introduce new commands related to stacks according to my memories and sprint notes.
  
  Do you have specific in mind that needs to be cleaned that I can't remember?

REPOSITORY
  rHG Mercurial

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

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

Patch

diff --git a/mercurial/stack.py b/mercurial/stack.py
new file mode 100644
--- /dev/null
+++ b/mercurial/stack.py
@@ -0,0 +1,24 @@ 
+# stack.py - Mercurial functions for stack definition
+#
+#  Copyright Matt Mackall <mpm@selenic.com> and other
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+
+from __future__ import absolute_import
+
+from . import revsetlang, scmutil
+
+def getstack(repo, rev=None):
+    """return a 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 and are not merges.
+    """
+    if rev is None:
+        rev = '.'
+
+    revspec = 'reverse(only(%s) and not public() and not ::merge())'
+    revset = revsetlang.formatspec(revspec, rev)
+    return scmutil.revrange(repo, [revset])