# HG changeset patch # User Yuya Nishihara # Date 1529158907 -32400 # Node ID 626d29c6e98792f019758d5a4d44793d42b12fae # Parent b23ef2f06d98ace33837c3e68b58380198ed0105 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. diff -r b23ef2f06d98 -r 626d29c6e987 mercurial/revset.py --- a/mercurial/revset.py Sat Jun 16 23:12:41 2018 +0900 +++ b/mercurial/revset.py Sat Jun 16 23:21:47 2018 +0900 @@ -203,6 +203,8 @@ def orset(repo, subset, x, order): xs = getlist(x) + if not xs: + return baseset() if order == followorder: # slow path to take the subset order return subset & _orsetlist(repo, fullreposet(repo), xs, anyorder) @@ -309,17 +311,12 @@ Will return empty list when passed no args. Greatest common ancestor of a single changeset is that changeset. """ - l = getlist(x) - rl = fullreposet(repo) anc = None - - # (getset(repo, rl, i) for i in l) generates a list of lists - for revs in (getset(repo, rl, i) for i in l): - for r in revs: - if anc is None: - anc = repo[r] - else: - anc = anc.ancestor(repo[r]) + for r in orset(repo, fullreposet(repo), x, order=anyorder): + if anc is None: + anc = repo[r] + else: + anc = anc.ancestor(repo[r]) if anc is not None and anc.rev() in subset: return baseset([anc.rev()])