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])