Mercurial > hg
diff tests/test-revset.t @ 33003:f63d111258da
revset: add startdepth limit to ancestors() as internal option
This is necessary to implement the set{gen} (set subscript) operator. For
example, set{-n} will be translated to ancestors(set, depth=n, startdepth=n).
https://www.mercurial-scm.org/wiki/RevsetOperatorPlan#ideas_from_mpm
The UI is undecided and I doubt if the startdepth option would be actually
useful, so the option is hidden for now. 'depth' could be extended to take
min:max range, in which case, integer depth should select a single generation.
ancestors(set, depth=:y) # scan up to y-th generation
ancestors(set, depth=x:) # skip until (x-1)-th generation
ancestors(set, depth=x) # select only x-th generation
Any ideas are welcomed.
# reverse(ancestors(tip)) using hg repo
3) 0.075951
4) 0.076175
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 18 Jun 2017 00:40:58 +0900 |
parents | 272a44cac57e |
children | e999b59d6eb1 |
line wrap: on
line diff
--- a/tests/test-revset.t Sun Jun 18 00:22:41 2017 +0900 +++ b/tests/test-revset.t Sun Jun 18 00:40:58 2017 +0900 @@ -903,6 +903,29 @@ 6 5 + (walk 2nd and 3rd ancestors) + + $ log 'reverse(ancestors(7, depth=3, startdepth=2))' + 5 + 4 + 3 + 2 + + (interleaved: '4' would be missing if higher-depth ancestors weren't scanned) + + $ log 'reverse(ancestors(7+8, depth=2, startdepth=2))' + 5 + 4 + 2 + + (note that 'ancestors(x, depth=y, startdepth=z)' does not identical to + 'ancestors(x, depth=y) - ancestors(x, depth=z-1)' because a node may have + multiple depths) + + $ log 'reverse(ancestors(7+8, depth=2) - ancestors(7+8, depth=1))' + 5 + 2 + test bad arguments passed to ancestors() $ log 'ancestors(., depth=-1)'