Mercurial > hg
changeset 20798:170d6d591a7d
scmutil: fix revrange when multiple revs are specified
revrange was trying to add a list to a revset class, but revset classes only
support adding with other revset classes. So wrap the lists in basesets.
author | Durham Goode <durham@fb.com> |
---|---|
date | Thu, 20 Mar 2014 09:55:44 -0700 |
parents | e286ab22e461 |
children | 069bf1b821c8 |
files | mercurial/scmutil.py tests/test-revset.t |
diffstat | 2 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Thu Mar 20 00:01:59 2014 -0400 +++ b/mercurial/scmutil.py Thu Mar 20 09:55:44 2014 -0700 @@ -499,7 +499,7 @@ try: if isinstance(spec, int): seen.add(spec) - l = l + [spec] + l = l + revset.baseset([spec]) continue if _revrangesep in spec: @@ -520,14 +520,14 @@ seen.update(newrevs) else: seen = newrevs - l = l + sorted(newrevs, reverse=start > end) + l = l + revset.baseset(sorted(newrevs, reverse=start > end)) continue elif spec and spec in repo: # single unquoted rev rev = revfix(repo, spec, None) if rev in seen: continue seen.add(rev) - l = l + [rev] + l = l + revset.baseset([rev]) continue except error.RepoLookupError: pass @@ -536,7 +536,7 @@ m = revset.match(repo.ui, spec, repo) if seen or l: dl = [r for r in m(repo, revset.spanset(repo)) if r not in seen] - l = l + dl + l = l + revset.baseset(dl) seen.update(dl) else: l = m(repo, revset.spanset(repo))
--- a/tests/test-revset.t Thu Mar 20 00:01:59 2014 -0400 +++ b/tests/test-revset.t Thu Mar 20 09:55:44 2014 -0700 @@ -734,6 +734,16 @@ hg: parse error: ^ expects a number 0, 1, or 2 [255] +multiple revspecs + + $ hg log -r 'tip~1:tip' -r 'tip~2:tip~1' --template '{rev}\n' + 8 + 9 + 4 + 5 + 6 + 7 + aliases: $ echo '[revsetalias]' >> .hg/hgrc