##// END OF EJS Templates
phase: add an archived phase...
phase: add an archived phase This phase allows for hidden changesets in the "user space". It differs from the "internal" phase which is intended for internal by-product only. There have been discussions at the 4.8 sprint to use such phase to speedup cleanup after history rewriting operation. Shipping it in the same release as the 'internal-phase' groups the associated `requires` entry. The important bit is to have support for this phase in the earliest version of mercurial possible. Adding the UI to manipulate this new phase later seems fine. The current plan for archived usage and user interface are as follow. On a repository with internal-phase on and evolution off: * history rewriting command set rewritten changeset in the archived phase. (This mean updating the cleanupnodes method). * keep `hg unbundle .hg/strip-backup/X.hg` as a way to restore changeset for now (backup bundle need to contains phase data) * [maybe] add a `hg strip --soft` advance flag (a light way to expose the feature without getting in the way of a better UI) Mercurial 4.8 freeze is too close to get the above in by then. We don't introduce a new repository `requirement` as we reuse the one introduced with the 'archived' phase during the 4.8 cycle.

File last commit:

r34670:03f7db5f default
r40463:49c7b701 stable
Show More
pager.py
81 lines | 2.6 KiB | text/x-python | PythonLexer
David Soria Parra
Use the pager given by the environment to display long output...
r6323 # pager.py - display output using a pager
#
# Copyright 2008 David Soria Parra <dsp@php.net>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
David Soria Parra
Use the pager given by the environment to display long output...
r6323 #
Brodie Rao
help: refer to user configuration file more consistently...
r12083 # To load the extension, add it to your configuration file:
David Soria Parra
Use the pager given by the environment to display long output...
r6323 #
# [extension]
Martin Geisler
hgext: enable extensions without "hgext." prefix in help texts
r10112 # pager =
David Soria Parra
Use the pager given by the environment to display long output...
r6323 #
timeless
pager: use single quotes in use warning
r29967 # Run 'hg help pager' to get info on configuration.
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
Augie Fackler
pager: move most help to a new help topic and deprecate extension
r31061 '''browse command output with an external pager (DEPRECATED)
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462
Augie Fackler
pager: move most help to a new help topic and deprecate extension
r31061 Forcibly enable paging for individual commands that don't typically
request pagination with the attend-<command> option. This setting
takes precedence over ignore options and defaults::
Matt Mackall
pager: add attend-<command> option...
r21281
[pager]
attend-cat = false
Christian Ebert
pager: make config info accessible with "hg help pager"
r6462 '''
Augie Fackler
pager: use absolute_import
r28320 from __future__ import absolute_import
David Soria Parra
Use the pager given by the environment to display long output...
r6323
Augie Fackler
pager: use absolute_import
r28320 from mercurial import (
cmdutil,
commands,
dispatch,
extensions,
Boris Feld
configitems: register the 'pager.attend' config
r34496 registrar,
Augie Fackler
pager: use absolute_import
r28320 )
David Soria Parra
Use the pager given by the environment to display long output...
r6323
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
Augie Fackler
extensions: document that `testedwith = 'internal'` is special...
r25186 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
# be specifying the version(s) of Mercurial they are tested with, or
# leave the attribute unspecified.
Augie Fackler
extensions: change magic "shipped with hg" string...
r29841 testedwith = 'ships-with-hg-core'
Augie Fackler
hgext: mark all first-party extensions as such
r16743
Boris Feld
configitems: register the 'pager.attend' config
r34496 configtable = {}
configitem = registrar.configitem(configtable)
configitem('pager', 'attend',
default=lambda: attended,
)
David Soria Parra
Use the pager given by the environment to display long output...
r6323 def uisetup(ui):
Jun Wu
pager: wrap ui._runpager...
r30722
Matt Mackall
extensions: use new wrapper functions
r7216 def pagecmd(orig, ui, options, cmd, cmdfunc):
Matt Mackall
pager: break auto out of command check loop
r21279 auto = options['pager'] == 'auto'
Augie Fackler
pager: move more behavior into core...
r30993 if auto and not ui.pageractive:
Matt Mackall
pager: break auto out of command check loop
r21279 usepager = False
Boris Feld
configitems: register the 'pager.attend' config
r34496 attend = ui.configlist('pager', 'attend')
Matt Mackall
pager: variable reorder
r21280 ignore = ui.configlist('pager', 'ignore')
David Soria Parra
pager: honour internal aliases...
r19940 cmds, _ = cmdutil.findcmd(cmd, commands.table)
for cmd in cmds:
Matt Mackall
pager: add attend-<command> option...
r21281 var = 'attend-%s' % cmd
Boris Feld
configitems: register the 'pager.attend-.*' options
r34670 if ui.config('pager', var, None):
usepager = ui.configbool('pager', var, True)
Matt Mackall
pager: add attend-<command> option...
r21281 break
Matt Mackall
pager: break auto out of command check loop
r21279 if (cmd in attend or
(cmd not in ignore and not attend)):
Matt Mackall
pager: break pager invocation out of command check loop
r21277 usepager = True
David Soria Parra
pager: honour internal aliases...
r19940 break
Matt Mackall
pager: break pager invocation out of command check loop
r21277
Augie Fackler
pager: move more behavior into core...
r30993 if usepager:
Augie Fackler
ui: add ignore-single-command functionality...
r30995 # Slight hack: the attend list is supposed to override
# the ignore list for the pager extension, but the
# core code doesn't know about attend, so we have to
# lobotomize the ignore list so that the extension's
# behavior is preserved.
ui.setconfig('pager', 'ignore', '', 'pager')
Augie Fackler
pager: move more behavior into core...
r30993 ui.pager('extension-via-attend-' + cmd)
Martin von Zweigbergk
pager: if old pager extensions is enabled, respect pager.attend...
r31406 else:
ui.disablepager()
Matt Mackall
extensions: use new wrapper functions
r7216 return orig(ui, options, cmd, cmdfunc)
David Soria Parra <dsp <at> php.net>
pager: Add a configuration to enable/disable the pager for certain commands...
r6417
Pierre-Yves David
pager: drop the 'color' dependant code...
r31122 extensions.wrapfunction(dispatch, '_runcommand', pagecmd)
Brodie Rao
pager: provide a default attend list...
r9841
Martin von Zweigbergk
pager: if old pager extensions is enabled, respect pager.attend...
r31406 attended = ['annotate', 'cat', 'diff', 'export', 'glog', 'log', 'qdiff']