1832 """ |
1832 """ |
1833 limit = loglimit(opts) |
1833 limit = loglimit(opts) |
1834 # Default --rev value depends on --follow but --follow behaviour |
1834 # Default --rev value depends on --follow but --follow behaviour |
1835 # depends on revisions resolved from --rev... |
1835 # depends on revisions resolved from --rev... |
1836 follow = opts.get('follow') or opts.get('follow_first') |
1836 follow = opts.get('follow') or opts.get('follow_first') |
1837 possiblyunsorted = False # whether revs might need sorting |
|
1838 if opts.get('rev'): |
1837 if opts.get('rev'): |
1839 revs = scmutil.revrange(repo, opts['rev']) |
1838 revs = scmutil.revrange(repo, opts['rev']) |
1840 # Don't sort here because _makelogrevset might depend on the |
|
1841 # order of revs |
|
1842 possiblyunsorted = True |
|
1843 else: |
1839 else: |
1844 if follow and len(repo) > 0: |
1840 if follow and len(repo) > 0: |
1845 revs = repo.revs('reverse(:.)') |
1841 revs = repo.revs('reverse(:.)') |
1846 else: |
1842 else: |
1847 revs = revset.spanset(repo) |
1843 revs = revset.spanset(repo) |
1848 revs.reverse() |
1844 revs.reverse() |
1849 if not revs: |
1845 if not revs: |
1850 return revset.baseset(), None, None |
1846 return revset.baseset(), None, None |
1851 expr, filematcher = _makelogrevset(repo, pats, opts, revs) |
1847 expr, filematcher = _makelogrevset(repo, pats, opts, revs) |
1852 if possiblyunsorted: |
1848 if opts.get('rev'): |
|
1849 # User-specified revs might be unsorted, but don't sort before |
|
1850 # _makelogrevset because it might depend on the order of revs |
1853 revs.sort(reverse=True) |
1851 revs.sort(reverse=True) |
1854 if expr: |
1852 if expr: |
1855 # Revset matchers often operate faster on revisions in changelog |
1853 # Revset matchers often operate faster on revisions in changelog |
1856 # order, because most filters deal with the changelog. |
1854 # order, because most filters deal with the changelog. |
1857 revs.reverse() |
1855 revs.reverse() |