D6331: log: add config for making `hg log -G` always topo-sorted
yuja (Yuya Nishihara)
phabricator at mercurial-scm.org
Tue May 14 08:35:49 EDT 2019
yuja added a comment.
> +def _maybetoposort(repo, revs, opts):
> + if opts.get('graph') and repo.ui.configbool('experimental', 'log.topo'):
> + revs = dagop.toposort(revs, repo.changelog.parentrevs)
> + # TODO: try to iterate the set lazily
> + revs = revset.baseset(list(revs))
> + return revs
> +
>
> def getrevs(repo, pats, opts):
> """Return (revs, differ) where revs is a smartset
>
>
> @@ -727,7 +734,7 @@
>
> limit = getlimit(opts)
> revs = _initialrevs(repo, opts)
> if not revs:
>
> - return smartset.baseset(), None + return _maybetoposort(repo, smartset.baseset(), opts), None
Nit: no need to sort an empty set.
> @@ -756,7 +763,7 @@
>
> differ = changesetdiffer()
> differ._makefilematcher = filematcher
>
> - return revs, differ + return _maybetoposort(repo, revs, opts), differ
Maybe this can be merged with the `if opts.get('graph')` block above.
# I think "and opts.get('rev')" can be removed since revs.isdescending()
# would be true if --follow without --rev.
if opts.get('graph'):
if experimental.log.topo:
if not topo yet:
toposort(revs)
elif not (revs.isdescending() or revs.istopo()):
revs.sort(reverse=True)
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D6331
To: martinvonz, #hg-reviewers
Cc: yuja, mjpieters, mercurial-devel
More information about the Mercurial-devel
mailing list