diff -r 1ce46f0ee218 -r 604c086ddde6 mercurial/logcmdutil.py --- a/mercurial/logcmdutil.py Tue May 14 09:13:39 2019 -0700 +++ b/mercurial/logcmdutil.py Wed May 01 09:34:47 2019 -0700 @@ -746,7 +746,12 @@ if opts.get('graph'): # User-specified revs might be unsorted, but don't sort before # _makerevset because it might depend on the order of revs - if not (revs.isdescending() or revs.istopo()): + if repo.ui.configbool('experimental', 'log.topo'): + if not revs.istopo(): + revs = dagop.toposort(revs, repo.changelog.parentrevs) + # TODO: try to iterate the set lazily + revs = revset.baseset(list(revs)) + elif not (revs.isdescending() or revs.istopo()): revs.sort(reverse=True) if expr: matcher = revset.match(None, expr)