view tests/printrevset.py @ 44337:1d2b37def017

nodemap: double check the source docket when doing incremental update In theory, the index will have the information we expect it to have. However by security, it seems safer to double check that the incremental data are generated from the data currently on disk. Differential Revision: https://phab.mercurial-scm.org/D7890
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 15 Jan 2020 15:50:33 +0100
parents 2372284d9457
children a717de1cb624
line wrap: on
line source

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)',
        )
    )