tests/printrevset.py
author Yuya Nishihara <yuya@tcha.org>
Fri, 11 Sep 2020 15:13:35 +0900
changeset 45472 07324227f6b7
parent 43076 2372284d9457
child 45564 a717de1cb624
permissions -rw-r--r--
log: fix -fr'wdir()' PATH to follow newly added file Testing filelog doesn't make sense in this case because the file existence is tested against the specified changectxs. If the filelog is empty and if startctxs != [wctx], 'f not in c' should be triggered.

from __future__ import absolute_import
from mercurial import (
    cmdutil,
    commands,
    extensions,
    logcmdutil,
    revsetlang,
    smartset,
)

from mercurial.utils import stringutil


def logrevset(repo, pats, opts):
    revs = logcmdutil._initialrevs(repo, opts)
    if not revs:
        return None
    match, pats, slowpath = logcmdutil._makematcher(repo, revs, pats, opts)
    return logcmdutil._makerevset(repo, match, pats, slowpath, opts)


def uisetup(ui):
    def printrevset(orig, repo, pats, opts):
        revs, filematcher = orig(repo, pats, opts)
        if opts.get(b'print_revset'):
            expr = logrevset(repo, pats, opts)
            if expr:
                tree = revsetlang.parse(expr)
                tree = revsetlang.analyze(tree)
            else:
                tree = []
            ui = repo.ui
            ui.write(b'%s\n' % stringutil.pprint(opts.get(b'rev', [])))
            ui.write(revsetlang.prettyformat(tree) + b'\n')
            ui.write(stringutil.prettyrepr(revs) + b'\n')
            revs = smartset.baseset()  # display no revisions
        return revs, filematcher

    extensions.wrapfunction(logcmdutil, 'getrevs', printrevset)
    aliases, entry = cmdutil.findcmd(b'log', commands.table)
    entry[1].append(
        (
            b'',
            b'print-revset',
            False,
            b'print generated revset and exit (DEPRECATED)',
        )
    )