Mercurial > hg
changeset 37000:40583c7afd63
stack: add a new module for stack-related commands
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.
Differential Revision: https://phab.mercurial-scm.org/D2395
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Fri, 19 Jan 2018 15:25:06 +0100 |
parents | e349ad5cbb71 |
children | 407934a97bc7 |
files | mercurial/stack.py |
diffstat | 1 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/stack.py Fri Jan 19 15:25:06 2018 +0100 @@ -0,0 +1,27 @@ +# 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])