2150 # User-specified revs might be unsorted, but don't sort before |
2150 # User-specified revs might be unsorted, but don't sort before |
2151 # _makelogrevset because it might depend on the order of revs |
2151 # _makelogrevset because it might depend on the order of revs |
2152 if not (revs.isdescending() or revs.istopo()): |
2152 if not (revs.isdescending() or revs.istopo()): |
2153 revs.sort(reverse=True) |
2153 revs.sort(reverse=True) |
2154 if expr: |
2154 if expr: |
2155 # Revset matchers often operate faster on revisions in changelog |
|
2156 # order, because most filters deal with the changelog. |
|
2157 revs.reverse() |
|
2158 matcher = revset.match(repo.ui, expr, order=revset.followorder) |
2155 matcher = revset.match(repo.ui, expr, order=revset.followorder) |
2159 revs = matcher(repo, revs) |
2156 revs = matcher(repo, revs) |
2160 revs.reverse() |
|
2161 if limit is not None: |
2157 if limit is not None: |
2162 limitedrevs = [] |
2158 limitedrevs = [] |
2163 for idx, rev in enumerate(revs): |
2159 for idx, rev in enumerate(revs): |
2164 if idx >= limit: |
2160 if idx >= limit: |
2165 break |
2161 break |
2180 revs = _logrevs(repo, opts) |
2176 revs = _logrevs(repo, opts) |
2181 if not revs: |
2177 if not revs: |
2182 return revset.baseset([]), None, None |
2178 return revset.baseset([]), None, None |
2183 expr, filematcher = _makelogrevset(repo, pats, opts, revs) |
2179 expr, filematcher = _makelogrevset(repo, pats, opts, revs) |
2184 if expr: |
2180 if expr: |
2185 # Revset matchers often operate faster on revisions in changelog |
|
2186 # order, because most filters deal with the changelog. |
|
2187 if not opts.get('rev'): |
|
2188 revs.reverse() |
|
2189 matcher = revset.match(repo.ui, expr, order=revset.followorder) |
2181 matcher = revset.match(repo.ui, expr, order=revset.followorder) |
2190 revs = matcher(repo, revs) |
2182 revs = matcher(repo, revs) |
2191 if not opts.get('rev'): |
|
2192 revs.reverse() |
|
2193 if limit is not None: |
2183 if limit is not None: |
2194 limitedrevs = [] |
2184 limitedrevs = [] |
2195 for idx, r in enumerate(revs): |
2185 for idx, r in enumerate(revs): |
2196 if limit <= idx: |
2186 if limit <= idx: |
2197 break |
2187 break |