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') |