1428 if not len(repo): |
1428 if not len(repo): |
1429 return iter([]), None, None |
1429 return iter([]), None, None |
1430 # Default --rev value depends on --follow but --follow behaviour |
1430 # Default --rev value depends on --follow but --follow behaviour |
1431 # depends on revisions resolved from --rev... |
1431 # depends on revisions resolved from --rev... |
1432 follow = opts.get('follow') or opts.get('follow_first') |
1432 follow = opts.get('follow') or opts.get('follow_first') |
|
1433 possiblyunsorted = False # whether revs might need sorting |
1433 if opts.get('rev'): |
1434 if opts.get('rev'): |
1434 revs = scmutil.revrange(repo, opts['rev']) |
1435 revs = scmutil.revrange(repo, opts['rev']) |
|
1436 # Don't sort here because _makegraphlogrevset might depend on the |
|
1437 # order of revs |
|
1438 possiblyunsorted = True |
1435 else: |
1439 else: |
1436 if follow and len(repo) > 0: |
1440 if follow and len(repo) > 0: |
1437 revs = repo.revs('reverse(:.)') |
1441 revs = repo.revs('reverse(:.)') |
1438 else: |
1442 else: |
1439 revs = list(repo.changelog) |
1443 revs = list(repo.changelog) |
1440 revs.reverse() |
1444 revs.reverse() |
1441 if not revs: |
1445 if not revs: |
1442 return iter([]), None, None |
1446 return iter([]), None, None |
1443 expr, filematcher = _makegraphlogrevset(repo, pats, opts, revs) |
1447 expr, filematcher = _makegraphlogrevset(repo, pats, opts, revs) |
|
1448 if possiblyunsorted: |
|
1449 revs.sort(reverse=True) |
1444 if expr: |
1450 if expr: |
1445 matcher = revset.match(repo.ui, expr) |
1451 matcher = revset.match(repo.ui, expr) |
1446 revs = increasingrevs(repo, revs, matcher) |
1452 revs = increasingrevs(repo, revs, matcher) |
1447 if not opts.get('hidden'): |
1453 if not opts.get('hidden'): |
1448 # --hidden is still experimental and not worth a dedicated revset |
1454 # --hidden is still experimental and not worth a dedicated revset |