mercurial/scmutil.py
changeset 25385 a26a55406c0a
parent 25384 99d3ca7d67e4
child 25386 a5a95642144b
equal deleted inserted replaced
25384:99d3ca7d67e4 25385:a26a55406c0a
   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: