diff --git a/mercurial/stack.py b/mercurial/stack.py new file mode 100644 --- /dev/null +++ b/mercurial/stack.py @@ -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])