[PATCH 4 of 4] revset: introduce a 'foo#stack[n]' subscript relation to access stack revisions

Yuya Nishihara yuya at tcha.org
Tue Sep 24 19:25:07 EDT 2019


On Tue, 24 Sep 2019 21:16:53 +0200, Pierre-Yves David wrote:
> On 9/23/19 2:58 PM, Yuya Nishihara wrote:
> > On Mon, 23 Sep 2019 10:39:52 +0700, Anton Shestakov wrote:
> >> # HG changeset patch
> >> # User Anton Shestakov <av6 at dwimlabs.net>
> >> # Date 1569139969 -25200
> >> #      Sun Sep 22 15:12:49 2019 +0700
> >> # Node ID ab8f097abacb8ce0f9cea2bce0924bb2fd3261a2
> >> # Parent  07af98a1e730c1ffa6911c9ab2cdcc06d4ffe52d
> >> # EXP-Topic stack-object
> >> revset: introduce a 'foo#stack[n]' subscript relation to access stack revisions
> >>
> >> The idea behind making n = 0 cases special is that stack base should be
> >> accessible, but only when users ask for it explicitly.
> > 
> >> +def stackrel(repo, subset, x, rel, z, order):
> >> +    a, b = getintrange(z,
> >> +                       _('relation subscript must be an integer or a range'),
> >> +                       _('relation subscript bounds must be integers'),
> >> +                       deffirst=None,
> >> +                       deflast=None)
> >> +
> >> +    s = getset(repo, fullreposet(repo), x)
> >> +    if not s:
> >> +        return baseset()
> >> +
> >> +    def getrange(st, a, b):
> >> +        start = 1 if a is None else a
> >> +        end = len(st.indexedrevs) if b is None else b + 1
> > 
> > I feel it's weird that stack[:] doesn't include stack[0].
> 
> [0] is the "root" of the stack, but not part of it. It is handy to have 
> it around when one want to insert and initial commit or test thing 
> without any of the stack changes, however it not part of the stack.
> 
> For example if you want to update all changesets in the stack you could 
> do `hg metaedit --rev '.#stack[:]' --user foobar`. You don't want to 
> select s0 it might even be a public changesets.

I understand that. My point is it may be confusing if foo[:] includes #foo[0],
but #bar[:] doesn't.


More information about the Mercurial-devel mailing list