##// END OF EJS Templates
copies: speed up copy detection...
copies: speed up copy detection On some large repos, copy detection could spend > 10min using fctx.ancestor() to determine if file revisions were actually related. Because ancestor must traverse history to the root to determine the GCA, it was doing a lot more work than necessary. With this replacement, same status -r a:b takes ~3 seconds.

File last commit:

r10152:56284451 default
r10262:eb243551 stable
Show More
children.py
44 lines | 1.3 KiB | text/x-python | PythonLexer
# 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, incorporated herein by reference.
'''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)
cmdtable = {
"children":
(children,
[('r', 'rev', '', _('show children of the specified revision')),
] + templateopts,
_('hg children [-r REV] [FILE]')),
}