comparison mercurial/cmdutil.py @ 31023:aea06029919e

revset: import set classes directly from smartset module Follows up 1be65deb3d54.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 19 Feb 2017 18:16:09 +0900
parents 8d7e40524ae4
children a113284f54a0
comparison
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')