# HG changeset patch # User Boris Feld # Date 1516371906 -3600 # Node ID 40583c7afd63601e3ffac513e367d9f67f821e54 # Parent e349ad5cbb7195607a300439a12a5316795125f8 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 diff -r e349ad5cbb71 -r 40583c7afd63 mercurial/stack.py --- /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 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])