hgext/children.py
author Adrian Buehlmann <adrian@cadifra.com>
Tue, 08 May 2012 11:20:07 +0200
branchstable
changeset 16604 48e42f984074
parent 11321 40c06bbf58be
child 16668 f393d20fb2ba
permissions -rw-r--r--
parsers: statically initializing tp_new to PyType_GenericNew is not portable As detailed on http://docs.python.org/extending/newtypes.html (quote): "In this case, we can just use the default implementation provided by the API function PyType_GenericNew(). We’d like to just assign this to the tp_new slot, but we can’t, for portability sake. On some platforms or compilers, we can’t statically initialize a structure member with a function defined in another C module, so, instead, we’ll assign the tp_new slot in the module initialization function just before calling PyType_Ready()." Fixes "gcc (GCC) 3.4.5 (mingw-vista special r3)" complaining with: mercurial/parsers.c:1096: error: initializer element is not constant mercurial/parsers.c:1096: error: (near initialization for `indexType.tp_new')

# 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'''

from mercurial import cmdutil
from mercurial.commands import templateopts
from mercurial.i18n import _


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.
    """
    rev = opts.get('rev')
    if file_:
        ctx = repo.filectx(file_, changeid=rev)
    else:
        ctx = repo[rev]

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

cmdtable = {
    "children":
        (children,
         [('r', 'rev', '',
           _('show children of the specified revision'), _('REV')),
         ] + templateopts,
         _('hg children [-r REV] [FILE]')),
}