Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 38489:626d29c6e987
revset: leverage orset() to flatten ancestor() arguments
This also makes orset() accept an empty argument because nullary ancestor()
call is valid. That's not the case for orset(), but should be okay.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 16 Jun 2018 23:21:47 +0900 |
parents | b23ef2f06d98 |
children | 5d88fd1bc2af |
comparison
equal
deleted
inserted
replaced
38488:b23ef2f06d98 | 38489:626d29c6e987 |
---|---|
201 b = _orsetlist(repo, subset, xs[p:], order) | 201 b = _orsetlist(repo, subset, xs[p:], order) |
202 return a + b | 202 return a + b |
203 | 203 |
204 def orset(repo, subset, x, order): | 204 def orset(repo, subset, x, order): |
205 xs = getlist(x) | 205 xs = getlist(x) |
206 if not xs: | |
207 return baseset() | |
206 if order == followorder: | 208 if order == followorder: |
207 # slow path to take the subset order | 209 # slow path to take the subset order |
208 return subset & _orsetlist(repo, fullreposet(repo), xs, anyorder) | 210 return subset & _orsetlist(repo, fullreposet(repo), xs, anyorder) |
209 else: | 211 else: |
210 return _orsetlist(repo, subset, xs, order) | 212 return _orsetlist(repo, subset, xs, order) |
307 | 309 |
308 Accepts 0 or more changesets. | 310 Accepts 0 or more changesets. |
309 Will return empty list when passed no args. | 311 Will return empty list when passed no args. |
310 Greatest common ancestor of a single changeset is that changeset. | 312 Greatest common ancestor of a single changeset is that changeset. |
311 """ | 313 """ |
312 l = getlist(x) | |
313 rl = fullreposet(repo) | |
314 anc = None | 314 anc = None |
315 | 315 for r in orset(repo, fullreposet(repo), x, order=anyorder): |
316 # (getset(repo, rl, i) for i in l) generates a list of lists | 316 if anc is None: |
317 for revs in (getset(repo, rl, i) for i in l): | 317 anc = repo[r] |
318 for r in revs: | 318 else: |
319 if anc is None: | 319 anc = anc.ancestor(repo[r]) |
320 anc = repo[r] | |
321 else: | |
322 anc = anc.ancestor(repo[r]) | |
323 | 320 |
324 if anc is not None and anc.rev() in subset: | 321 if anc is not None and anc.rev() in subset: |
325 return baseset([anc.rev()]) | 322 return baseset([anc.rev()]) |
326 return baseset() | 323 return baseset() |
327 | 324 |