view tests/printrevset.py @ 45956:40f79997e81f

rust: fix non-utf8 char in requirements.rs Apparently Phabricator detect `rust/hg-core/src/requirements.rs` file as non utf8 ‽, and mark it as binary. During application it ended up being non-utf8 and this made Rust (and as a result heptapod) very angry:: error: couldn't read hg-core/src/requirements.rs: stream did not contain valid UTF-8 --> hg-core/src/lib.rs:11:9 | 11 | pub mod requirements; | ^^^^^^^^^^^^ error: aborting due to previous error error: could not compile `hg-core`. The after "fixing", the file content has no character matching the following regexp: [^0-9-a-zA-Z /(|).,{}!\[\]:"&=>?_*-;<`'#] So we should be fine, unless Phabricator does something funny again. Differential Revision: https://phab.mercurial-scm.org/D9444
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 28 Nov 2020 14:29:50 +0100
parents c1d0f83d62c4
children 6000f5b25c9b
line wrap: on
line source

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

from mercurial.utils import stringutil


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


def uisetup(ui):
    def printrevset(orig, repo, wopts):
        revs, filematcher = orig(repo, wopts)
        if wopts.opts.get(b'print_revset'):
            expr = logrevset(repo, wopts)
            if expr:
                tree = revsetlang.parse(expr)
                tree = revsetlang.analyze(tree)
            else:
                tree = []
            ui = repo.ui
            ui.write(b'%s\n' % stringutil.pprint(wopts.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)',
        )
    )