707 def revfix(repo, val, defval): |
707 def revfix(repo, val, defval): |
708 if not val and val != 0 and defval is not None: |
708 if not val and val != 0 and defval is not None: |
709 return defval |
709 return defval |
710 return repo[val].rev() |
710 return repo[val].rev() |
711 |
711 |
712 l = revset.baseset([]) |
712 subsets = [] |
713 |
713 |
714 revsetaliases = [alias for (alias, _) in |
714 revsetaliases = [alias for (alias, _) in |
715 repo.ui.configitems("revsetalias")] |
715 repo.ui.configitems("revsetalias")] |
716 |
716 |
717 for spec in revs: |
717 for spec in revs: |
723 # clash with a hash prefix. |
723 # clash with a hash prefix. |
724 if spec in revsetaliases: |
724 if spec in revsetaliases: |
725 raise error.RepoLookupError |
725 raise error.RepoLookupError |
726 |
726 |
727 if isinstance(spec, int): |
727 if isinstance(spec, int): |
728 l = l + revset.baseset([spec]) |
728 subsets.append(revset.baseset([spec])) |
729 continue |
729 continue |
730 |
730 |
731 if _revrangesep in spec: |
731 if _revrangesep in spec: |
732 start, end = spec.split(_revrangesep, 1) |
732 start, end = spec.split(_revrangesep, 1) |
733 if start in revsetaliases or end in revsetaliases: |
733 if start in revsetaliases or end in revsetaliases: |
736 start = revfix(repo, start, 0) |
736 start = revfix(repo, start, 0) |
737 end = revfix(repo, end, len(repo) - 1) |
737 end = revfix(repo, end, len(repo) - 1) |
738 if end == nullrev and start < 0: |
738 if end == nullrev and start < 0: |
739 start = nullrev |
739 start = nullrev |
740 rangeiter = repo.changelog.revs(start, end) |
740 rangeiter = repo.changelog.revs(start, end) |
741 if not l: |
741 l = revset.baseset(rangeiter) |
742 # by far the most common case: revs = ["-1:0"] |
742 subsets.append(l) |
743 l = revset.baseset(rangeiter) |
|
744 continue |
|
745 l = l + revset.baseset(rangeiter) |
|
746 continue |
743 continue |
747 elif spec and spec in repo: # single unquoted rev |
744 elif spec and spec in repo: # single unquoted rev |
748 rev = revfix(repo, spec, None) |
745 rev = revfix(repo, spec, None) |
749 l = l + revset.baseset([rev]) |
746 subsets.append(revset.baseset([rev])) |
750 continue |
747 continue |
751 except error.RepoLookupError: |
748 except error.RepoLookupError: |
752 pass |
749 pass |
753 |
750 |
754 # fall through to new-style queries if old-style fails |
751 # fall through to new-style queries if old-style fails |
755 m = revset.match(repo.ui, spec, repo) |
752 m = revset.match(repo.ui, spec, repo) |
756 if l: |
753 subsets.append(m(repo)) |
757 l = l + m(repo) |
754 |
758 else: |
755 return revset._combinesets(subsets) |
759 l = m(repo) |
|
760 |
|
761 return l |
|
762 |
756 |
763 def expandpats(pats): |
757 def expandpats(pats): |
764 '''Expand bare globs when running on windows. |
758 '''Expand bare globs when running on windows. |
765 On posix we assume it already has already been done by sh.''' |
759 On posix we assume it already has already been done by sh.''' |
766 if not util.expandglobs: |
760 if not util.expandglobs: |