mercurial/cmdutil.py
changeset 31023 aea06029919e
parent 30877 8d7e40524ae4
child 31078 a113284f54a0
equal deleted inserted replaced
31022:705ecab649ea 31023:aea06029919e
    39     pycompat,
    39     pycompat,
    40     repair,
    40     repair,
    41     revlog,
    41     revlog,
    42     revset,
    42     revset,
    43     scmutil,
    43     scmutil,
       
    44     smartset,
    44     templatekw,
    45     templatekw,
    45     templater,
    46     templater,
    46     util,
    47     util,
    47 )
    48 )
    48 stringio = util.stringio
    49 stringio = util.stringio
  2088     # depends on revisions resolved from --rev...
  2089     # depends on revisions resolved from --rev...
  2089     follow = opts.get('follow') or opts.get('follow_first')
  2090     follow = opts.get('follow') or opts.get('follow_first')
  2090     if opts.get('rev'):
  2091     if opts.get('rev'):
  2091         revs = scmutil.revrange(repo, opts['rev'])
  2092         revs = scmutil.revrange(repo, opts['rev'])
  2092     elif follow and repo.dirstate.p1() == nullid:
  2093     elif follow and repo.dirstate.p1() == nullid:
  2093         revs = revset.baseset()
  2094         revs = smartset.baseset()
  2094     elif follow:
  2095     elif follow:
  2095         revs = repo.revs('reverse(:.)')
  2096         revs = repo.revs('reverse(:.)')
  2096     else:
  2097     else:
  2097         revs = revset.spanset(repo)
  2098         revs = smartset.spanset(repo)
  2098         revs.reverse()
  2099         revs.reverse()
  2099     return revs
  2100     return revs
  2100 
  2101 
  2101 def getgraphlogrevs(repo, pats, opts):
  2102 def getgraphlogrevs(repo, pats, opts):
  2102     """Return (revs, expr, filematcher) where revs is an iterable of
  2103     """Return (revs, expr, filematcher) where revs is an iterable of
  2107     filtering the files to be detailed when displaying the revision.
  2108     filtering the files to be detailed when displaying the revision.
  2108     """
  2109     """
  2109     limit = loglimit(opts)
  2110     limit = loglimit(opts)
  2110     revs = _logrevs(repo, opts)
  2111     revs = _logrevs(repo, opts)
  2111     if not revs:
  2112     if not revs:
  2112         return revset.baseset(), None, None
  2113         return smartset.baseset(), None, None
  2113     expr, filematcher = _makelogrevset(repo, pats, opts, revs)
  2114     expr, filematcher = _makelogrevset(repo, pats, opts, revs)
  2114     if opts.get('rev'):
  2115     if opts.get('rev'):
  2115         # User-specified revs might be unsorted, but don't sort before
  2116         # User-specified revs might be unsorted, but don't sort before
  2116         # _makelogrevset because it might depend on the order of revs
  2117         # _makelogrevset because it might depend on the order of revs
  2117         if not (revs.isdescending() or revs.istopo()):
  2118         if not (revs.isdescending() or revs.istopo()):
  2123         limitedrevs = []
  2124         limitedrevs = []
  2124         for idx, rev in enumerate(revs):
  2125         for idx, rev in enumerate(revs):
  2125             if idx >= limit:
  2126             if idx >= limit:
  2126                 break
  2127                 break
  2127             limitedrevs.append(rev)
  2128             limitedrevs.append(rev)
  2128         revs = revset.baseset(limitedrevs)
  2129         revs = smartset.baseset(limitedrevs)
  2129 
  2130 
  2130     return revs, expr, filematcher
  2131     return revs, expr, filematcher
  2131 
  2132 
  2132 def getlogrevs(repo, pats, opts):
  2133 def getlogrevs(repo, pats, opts):
  2133     """Return (revs, expr, filematcher) where revs is an iterable of
  2134     """Return (revs, expr, filematcher) where revs is an iterable of
  2138     filtering the files to be detailed when displaying the revision.
  2139     filtering the files to be detailed when displaying the revision.
  2139     """
  2140     """
  2140     limit = loglimit(opts)
  2141     limit = loglimit(opts)
  2141     revs = _logrevs(repo, opts)
  2142     revs = _logrevs(repo, opts)
  2142     if not revs:
  2143     if not revs:
  2143         return revset.baseset([]), None, None
  2144         return smartset.baseset([]), None, None
  2144     expr, filematcher = _makelogrevset(repo, pats, opts, revs)
  2145     expr, filematcher = _makelogrevset(repo, pats, opts, revs)
  2145     if expr:
  2146     if expr:
  2146         matcher = revset.match(repo.ui, expr, order=revset.followorder)
  2147         matcher = revset.match(repo.ui, expr, order=revset.followorder)
  2147         revs = matcher(repo, revs)
  2148         revs = matcher(repo, revs)
  2148     if limit is not None:
  2149     if limit is not None:
  2149         limitedrevs = []
  2150         limitedrevs = []
  2150         for idx, r in enumerate(revs):
  2151         for idx, r in enumerate(revs):
  2151             if limit <= idx:
  2152             if limit <= idx:
  2152                 break
  2153                 break
  2153             limitedrevs.append(r)
  2154             limitedrevs.append(r)
  2154         revs = revset.baseset(limitedrevs)
  2155         revs = smartset.baseset(limitedrevs)
  2155 
  2156 
  2156     return revs, expr, filematcher
  2157     return revs, expr, filematcher
  2157 
  2158 
  2158 def _graphnodeformatter(ui, displayer):
  2159 def _graphnodeformatter(ui, displayer):
  2159     spec = ui.config('ui', 'graphnodetemplate')
  2160     spec = ui.config('ui', 'graphnodetemplate')