##// END OF EJS Templates
revset: add fast path for _list() of integer revisions...
Yuya Nishihara -
r25344:ceaf04bb default
parent child Browse files
Show More
@@ -1922,10 +1922,17 b' def _list(repo, subset, x):'
1922 return baseset()
1922 return baseset()
1923 # remove duplicates here. it's difficult for caller to deduplicate sets
1923 # remove duplicates here. it's difficult for caller to deduplicate sets
1924 # because different symbols can point to the same rev.
1924 # because different symbols can point to the same rev.
1925 cl = repo.changelog
1925 ls = []
1926 ls = []
1926 seen = set()
1927 seen = set()
1927 for t in s.split('\0'):
1928 for t in s.split('\0'):
1928 r = repo[t].rev()
1929 try:
1930 # fast path for integer revision
1931 r = int(t)
1932 if str(r) != t or r not in cl:
1933 raise ValueError
1934 except ValueError:
1935 r = repo[t].rev()
1929 if r in seen:
1936 if r in seen:
1930 continue
1937 continue
1931 if (r in subset
1938 if (r in subset
@@ -1011,6 +1011,26 b' test unknown revision in `_list`'
1011 abort: unknown revision 'unknown'!
1011 abort: unknown revision 'unknown'!
1012 [255]
1012 [255]
1013
1013
1014 test integer range in `_list`
1015
1016 $ log '-1|-10'
1017 9
1018 0
1019
1020 $ log '-10|-11'
1021 abort: unknown revision '-11'!
1022 [255]
1023
1024 $ log '9|10'
1025 abort: unknown revision '10'!
1026 [255]
1027
1028 test '0000' != '0' in `_list`
1029
1030 $ log '0|0000'
1031 0
1032 -1
1033
1014 test that chained `or` operations make balanced addsets
1034 test that chained `or` operations make balanced addsets
1015
1035
1016 $ try '0:1|1:2|2:3|3:4|4:5'
1036 $ try '0:1|1:2|2:3|3:4|4:5'
General Comments 0
You need to be logged in to leave comments. Login now