hgext/children.py
author Pierre-Yves David <pierre-yves.david@fb.com>
Sat, 27 Feb 2016 18:02:12 +0100
changeset 28280 dc6032a1d888
parent 28093 7353cacd5d54
child 28799 ccab2923a093
permissions -rw-r--r--
rebase: remove experimental option from 'rebase' config section Changeset f0e9f38d250f introduced a guard against case where obsolete changesets are included in the rebase in a way this will result in divergence (because rebase create new successors for changeset which already have successors). In the same go a 'rebase.allowdivergence' option was introduced to control that behavior. We rename this config option to 'experimental.allowdivergence' for multiple reasons: * First this behavior is attached to changeset evolution, a feature still experimental. * Second, there was no 'rebase' section in config before we introduced this option. I would like to avoid proliferation of micro config section and therefore would like to avoid the creation of this new section just for an experimental feature. * Third, this guard (warning the user about a history rewriting operation that will create divergence) will very likely be generalised to all history rewriting operations, making this not rebase specific. * Finally, because this will likely be a general guard present a bit everywhere in the UI we'll likely end up with something better than a config option to control this behavior, so having the current config option living in experimental will allow us make it disappear in the future. So we banish this config option back to the experimental section where it belongs, killing the newly born 'rebase' config section in the process.

# Mercurial extension to provide the 'hg children' command
#
# Copyright 2007 by Intevation GmbH <intevation@intevation.de>
#
# Author(s):
# Thomas Arendsen Hein <thomas@intevation.de>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

'''command to display child changesets (DEPRECATED)

This extension is deprecated. You should use :hg:`log -r
"children(REV)"` instead.
'''

from __future__ import absolute_import

from mercurial.i18n import _
from mercurial import (
    cmdutil,
    commands,
)

templateopts = commands.templateopts

cmdtable = {}
command = cmdutil.command(cmdtable)
# Note for extension authors: ONLY specify testedwith = 'internal' for
# 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.
testedwith = 'internal'

@command('children',
    [('r', 'rev', '',
     _('show children of the specified revision'), _('REV')),
    ] + templateopts,
    _('hg children [-r REV] [FILE]'),
    inferrepo=True)
def children(ui, repo, file_=None, **opts):
    """show the children of the given or working directory revision

    Print the children of the working directory's revisions. If a
    revision is given via -r/--rev, the children of that revision will
    be printed. If a file argument is given, revision in which the
    file was last changed (after the working directory revision or the
    argument to --rev if given) is printed.

    Please use :hg:`log` instead::

        hg children => hg log -r 'children()'
        hg children -r REV => hg log -r 'children(REV)'

    See :hg:`help log` and :hg:`help revsets.children`.

    """
    rev = opts.get('rev')
    if file_:
        fctx = repo.filectx(file_, changeid=rev)
        childctxs = [fcctx.changectx() for fcctx in fctx.children()]
    else:
        ctx = repo[rev]
        childctxs = ctx.children()

    displayer = cmdutil.show_changeset(ui, repo, opts)
    for cctx in childctxs:
        displayer.show(cctx)
    displayer.close()