##// END OF EJS Templates
revset: deal with empty sets in range endpoints...
Matt Mackall -
r11456:88abbb04 stable
parent child Browse files
Show More
@@ -129,11 +129,24 b' def symbolset(repo, subset, x):'
129 return stringset(repo, subset, x)
129 return stringset(repo, subset, x)
130
130
131 def rangeset(repo, subset, x, y):
131 def rangeset(repo, subset, x, y):
132 m = getset(repo, subset, x)[0]
132 m = getset(repo, subset, x)
133 n = getset(repo, subset, y)[-1]
133 if not m:
134 m = getset(repo, range(len(repo)), x)
135
136 n = getset(repo, subset, y)
137 if not n:
138 n = getset(repo, range(len(repo)), y)
139
140 if not m or not n:
141 return []
142 m, n = m[0], n[-1]
143
134 if m < n:
144 if m < n:
135 return range(m, n + 1)
145 r = range(m, n + 1)
136 return range(m, n - 1, -1)
146 else:
147 r = range(m, n - 1, -1)
148 s = set(subset)
149 return [x for x in r if x in s]
137
150
138 def andset(repo, subset, x, y):
151 def andset(repo, subset, x, y):
139 return getset(repo, getset(repo, subset, x), y)
152 return getset(repo, getset(repo, subset, x), y)
@@ -222,11 +235,15 b' def ancestor(repo, subset, x):'
222
235
223 def ancestors(repo, subset, x):
236 def ancestors(repo, subset, x):
224 args = getset(repo, range(len(repo)), x)
237 args = getset(repo, range(len(repo)), x)
238 if not args:
239 return []
225 s = set(repo.changelog.ancestors(*args)) | set(args)
240 s = set(repo.changelog.ancestors(*args)) | set(args)
226 return [r for r in subset if r in s]
241 return [r for r in subset if r in s]
227
242
228 def descendants(repo, subset, x):
243 def descendants(repo, subset, x):
229 args = getset(repo, range(len(repo)), x)
244 args = getset(repo, range(len(repo)), x)
245 if not args:
246 return []
230 s = set(repo.changelog.descendants(*args)) | set(args)
247 s = set(repo.changelog.descendants(*args)) | set(args)
231 return [r for r in subset if r in s]
248 return [r for r in subset if r in s]
232
249
@@ -126,3 +126,10 b" log '4::8'"
126 log '4:8'
126 log '4:8'
127
127
128 log 'sort(!merge() & (modifies(b) | user(bob) | keyword(bug) | keyword(issue) & 1::9), "-date")'
128 log 'sort(!merge() & (modifies(b) | user(bob) | keyword(bug) | keyword(issue) & 1::9), "-date")'
129
130 log 'not 0 and 0:2'
131 log 'not 1 and 0:2'
132 log 'not 2 and 0:2'
133 log '(1 and 2)::'
134 log '(1 and 2):'
135 log '(1 and 2):3'
@@ -198,3 +198,15 b' 8'
198 4
198 4
199 2
199 2
200 5
200 5
201 % log 'not 0 and 0:2'
202 1
203 2
204 % log 'not 1 and 0:2'
205 0
206 2
207 % log 'not 2 and 0:2'
208 0
209 1
210 % log '(1 and 2)::'
211 % log '(1 and 2):'
212 % log '(1 and 2):3'
General Comments 0
You need to be logged in to leave comments. Login now