hgext/children.py
author Yuya Nishihara <yuya@tcha.org>
Fri, 31 Aug 2018 21:10:28 +0900
changeset 39414 da84cca65036
parent 37357 7c8524efd847
child 40293 c303d65d2e34
permissions -rw-r--r--
shelve: fix crash on unshelve without .shelve metadata file Follow up for c67c94c0e7ae and 38373da1af02. The inline comment says "we should keep track of the unshelve node in case we need to reuse it." Perhaps such case isn't tested, and this patch does NOT add a test for the reuse of the unbundled revision. Also, I have no idea what should be done if new revision is unbundled because of "node not in repo".
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     1
# Mercurial extension to provide the 'hg children' command
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     2
#
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     3
# Copyright 2007 by Intevation GmbH <intevation@intevation.de>
8228
eee2319c5895 add blank line after copyright notices and after header
Martin Geisler <mg@lazybytes.net>
parents: 8225
diff changeset
     4
#
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     5
# Author(s):
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     6
# Thomas Arendsen Hein <thomas@intevation.de>
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     7
#
8225
46293a0c7e9f updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents: 8076
diff changeset
     8
# This software may be used and distributed according to the terms of the
10263
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 9253
diff changeset
     9
# GNU General Public License version 2 or any later version.
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    10
16668
f393d20fb2ba children: mark extension as deprecated
Augie Fackler <raf@durin42.com>
parents: 11321
diff changeset
    11
'''command to display child changesets (DEPRECATED)
f393d20fb2ba children: mark extension as deprecated
Augie Fackler <raf@durin42.com>
parents: 11321
diff changeset
    12
16670
052047753f7d children: use hg reST role for example
Martin Geisler <mg@lazybytes.net>
parents: 16668
diff changeset
    13
This extension is deprecated. You should use :hg:`log -r
052047753f7d children: use hg reST role for example
Martin Geisler <mg@lazybytes.net>
parents: 16668
diff changeset
    14
"children(REV)"` instead.
16668
f393d20fb2ba children: mark extension as deprecated
Augie Fackler <raf@durin42.com>
parents: 11321
diff changeset
    15
'''
8873
e872ef2e6758 help: add/fix docstrings for a bunch of extensions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 8277
diff changeset
    16
28093
7353cacd5d54 children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27716
diff changeset
    17
from __future__ import absolute_import
7353cacd5d54 children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27716
diff changeset
    18
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    19
from mercurial.i18n import _
28093
7353cacd5d54 children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27716
diff changeset
    20
from mercurial import (
7353cacd5d54 children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27716
diff changeset
    21
    cmdutil,
35928
c8e2d6ed1f9e cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents: 35028
diff changeset
    22
    logcmdutil,
35028
11a372d80496 py3: handle keyword arguments in hgext/children.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34945
diff changeset
    23
    pycompat,
32376
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29852
diff changeset
    24
    registrar,
37357
7c8524efd847 children: support specifying revision by revset
Martin von Zweigbergk <martinvonz@google.com>
parents: 37267
diff changeset
    25
    scmutil,
28093
7353cacd5d54 children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27716
diff changeset
    26
)
7353cacd5d54 children: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27716
diff changeset
    27
32414
04baab18d60a commands: move templates of common command options to cmdutil (API)
Yuya Nishihara <yuya@tcha.org>
parents: 32376
diff changeset
    28
templateopts = cmdutil.templateopts
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    29
21248
48e859e30cbf children: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 17773
diff changeset
    30
cmdtable = {}
32376
46ba2cdda476 registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29852
diff changeset
    31
command = registrar.command(cmdtable)
29852
d5883fd055c6 extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents: 28799
diff changeset
    32
# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
25186
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24482
diff changeset
    33
# extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24482
diff changeset
    34
# be specifying the version(s) of Mercurial they are tested with, or
80c5b2666a96 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents: 24482
diff changeset
    35
# leave the attribute unspecified.
29852
d5883fd055c6 extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents: 28799
diff changeset
    36
testedwith = 'ships-with-hg-core'
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    37
21248
48e859e30cbf children: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 17773
diff changeset
    38
@command('children',
37267
923362010525 children: use repo['.'] instead of repo['']
Martin von Zweigbergk <martinvonz@google.com>
parents: 35928
diff changeset
    39
    [('r', 'rev', '.',
21248
48e859e30cbf children: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 17773
diff changeset
    40
     _('show children of the specified revision'), _('REV')),
48e859e30cbf children: declare command using decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 17773
diff changeset
    41
    ] + templateopts,
21780
2d3fb8476d7a children: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21248
diff changeset
    42
    _('hg children [-r REV] [FILE]'),
2d3fb8476d7a children: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21248
diff changeset
    43
    inferrepo=True)
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    44
def children(ui, repo, file_=None, **opts):
8026
683d8ebcf434 expand "dir" to "directory" in help texts
Martin Geisler <mg@lazybytes.net>
parents: 7986
diff changeset
    45
    """show the children of the given or working directory revision
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    46
9253
d6d811d90976 children: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9055
diff changeset
    47
    Print the children of the working directory's revisions. If a
d6d811d90976 children: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9055
diff changeset
    48
    revision is given via -r/--rev, the children of that revision will
d6d811d90976 children: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9055
diff changeset
    49
    be printed. If a file argument is given, revision in which the
d6d811d90976 children: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9055
diff changeset
    50
    file was last changed (after the working directory revision or the
d6d811d90976 children: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents: 9055
diff changeset
    51
    argument to --rev if given) is printed.
27716
3501bd89dad2 children: update help with replacement
timeless <timeless@mozdev.org>
parents: 25186
diff changeset
    52
3501bd89dad2 children: update help with replacement
timeless <timeless@mozdev.org>
parents: 25186
diff changeset
    53
    Please use :hg:`log` instead::
3501bd89dad2 children: update help with replacement
timeless <timeless@mozdev.org>
parents: 25186
diff changeset
    54
34945
d2554ef04d26 children: fix the log expansion of `hg children` in doc
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32414
diff changeset
    55
        hg children => hg log -r "children(.)"
28799
ccab2923a093 children: use double quotes for arguments
timeless <timeless@mozdev.org>
parents: 28093
diff changeset
    56
        hg children -r REV => hg log -r "children(REV)"
27716
3501bd89dad2 children: update help with replacement
timeless <timeless@mozdev.org>
parents: 25186
diff changeset
    57
3501bd89dad2 children: update help with replacement
timeless <timeless@mozdev.org>
parents: 25186
diff changeset
    58
    See :hg:`help log` and :hg:`help revsets.children`.
3501bd89dad2 children: update help with replacement
timeless <timeless@mozdev.org>
parents: 25186
diff changeset
    59
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    60
    """
35028
11a372d80496 py3: handle keyword arguments in hgext/children.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34945
diff changeset
    61
    opts = pycompat.byteskwargs(opts)
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    62
    rev = opts.get('rev')
37357
7c8524efd847 children: support specifying revision by revset
Martin von Zweigbergk <martinvonz@google.com>
parents: 37267
diff changeset
    63
    ctx = scmutil.revsingle(repo, rev)
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    64
    if file_:
37357
7c8524efd847 children: support specifying revision by revset
Martin von Zweigbergk <martinvonz@google.com>
parents: 37267
diff changeset
    65
        fctx = repo.filectx(file_, changeid=ctx.rev())
24482
3eb9045396b0 children: don't pass filectx to displayer
Yuya Nishihara <yuya@tcha.org>
parents: 21780
diff changeset
    66
        childctxs = [fcctx.changectx() for fcctx in fctx.children()]
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    67
    else:
24482
3eb9045396b0 children: don't pass filectx to displayer
Yuya Nishihara <yuya@tcha.org>
parents: 21780
diff changeset
    68
        childctxs = ctx.children()
4783
8b90d763ea90 Add extension to provide the 'hg children' command (with tests)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    69
35928
c8e2d6ed1f9e cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents: 35028
diff changeset
    70
    displayer = logcmdutil.changesetdisplayer(ui, repo, opts)
24482
3eb9045396b0 children: don't pass filectx to displayer
Yuya Nishihara <yuya@tcha.org>
parents: 21780
diff changeset
    71
    for cctx in childctxs:
7369
87158be081b8 cmdutil: use change contexts for cset-printer and cset-templater
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents: 6747
diff changeset
    72
        displayer.show(cctx)
10152
56284451a22c Added support for templatevar "footer" to cmdutil.py
Robert Bachmann <rbachm@gmail.com>
parents: 9253
diff changeset
    73
    displayer.close()