view tests/printrevset.py @ 39770:7aa440222323

localrepo: enable ellipsis flag on revlogs when repo is narrow If the narrow requirement is present, revlogs created for that repository will have the ellipsis flag enabled. This is the same behavior that the narrow extension exhibits. Except the ellipsis flag won't be enabled on repos/revlogs that don't have the narrow requirement. Differential Revision: https://phab.mercurial-scm.org/D4648
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 13 Sep 2018 15:57:18 -0700
parents a271466cb53a
children 2372284d9457
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)'))