Mercurial > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
33002:272a44cac57e | 33003:f63d111258da |
---|---|
901 2 | 901 2 |
902 7 | 902 7 |
903 6 | 903 6 |
904 5 | 904 5 |
905 | 905 |
906 (walk 2nd and 3rd ancestors) | |
907 | |
908 $ log 'reverse(ancestors(7, depth=3, startdepth=2))' | |
909 5 | |
910 4 | |
911 3 | |
912 2 | |
913 | |
914 (interleaved: '4' would be missing if higher-depth ancestors weren't scanned) | |
915 | |
916 $ log 'reverse(ancestors(7+8, depth=2, startdepth=2))' | |
917 5 | |
918 4 | |
919 2 | |
920 | |
921 (note that 'ancestors(x, depth=y, startdepth=z)' does not identical to | |
922 'ancestors(x, depth=y) - ancestors(x, depth=z-1)' because a node may have | |
923 multiple depths) | |
924 | |
925 $ log 'reverse(ancestors(7+8, depth=2) - ancestors(7+8, depth=1))' | |
926 5 | |
927 2 | |
928 | |
906 test bad arguments passed to ancestors() | 929 test bad arguments passed to ancestors() |
907 | 930 |
908 $ log 'ancestors(., depth=-1)' | 931 $ log 'ancestors(., depth=-1)' |
909 hg: parse error: negative depth | 932 hg: parse error: negative depth |
910 [255] | 933 [255] |