[PATCH 03 of 35] convert: declare commands using decorator
Gregory Szorc
gregory.szorc at gmail.com
Mon May 5 05:51:08 UTC 2014
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1399263424 25200
# Sun May 04 21:17:04 2014 -0700
# Branch stable
# Node ID 80930eaa89d13d73063412ec2843034c8058a684
# Parent 24436ea8cf91fa45945a4d9b82d6841f1537afd3
convert: declare commands using decorator
diff --git a/hgext/convert/__init__.py b/hgext/convert/__init__.py
--- a/hgext/convert/__init__.py
+++ b/hgext/convert/__init__.py
@@ -5,23 +5,44 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
'''import revisions from foreign VCS repositories into Mercurial'''
import convcmd
import cvsps
import subversion
-from mercurial import commands, templatekw
+from mercurial import cmdutil, commands, templatekw
from mercurial.i18n import _
+cmdtable = {}
+command = cmdutil.command(cmdtable)
testedwith = 'internal'
# Commands definition was moved elsewhere to ease demandload job.
+ at command('convert',
+ [('', 'authors', '',
+ _('username mapping filename (DEPRECATED, use --authormap instead)'),
+ _('FILE')),
+ ('s', 'source-type', '', _('source repository type'), _('TYPE')),
+ ('d', 'dest-type', '', _('destination repository type'), _('TYPE')),
+ ('r', 'rev', '', _('import up to source revision REV'), _('REV')),
+ ('A', 'authormap', '', _('remap usernames using this file'), _('FILE')),
+ ('', 'filemap', '', _('remap file names using contents of file'),
+ _('FILE')),
+ ('', 'splicemap', '', _('splice synthesized history into place'),
+ _('FILE')),
+ ('', 'branchmap', '', _('change branch names while converting'),
+ _('FILE')),
+ ('', 'branchsort', None, _('try to sort changesets by branches')),
+ ('', 'datesort', None, _('try to sort changesets by date')),
+ ('', 'sourcesort', None, _('preserve source changesets order')),
+ ('', 'closesort', None, _('try to reorder closed revisions'))],
+ _('hg convert [OPTION]... SOURCE [DEST [REVMAP]]'))
def convert(ui, src, dest=None, revmapfile=None, **opts):
"""convert a foreign SCM repository to a Mercurial one.
Accepted source formats [identifiers]:
- Mercurial [hg]
- CVS [cvs]
- Darcs [darcs]
@@ -277,85 +298,53 @@ def convert(ui, src, dest=None, revmapfi
:convert.hg.tagsbranch: branch name for tag revisions, defaults to
``default``.
:convert.hg.usebranchnames: preserve branch names. The default is
True.
"""
return convcmd.convert(ui, src, dest, revmapfile, **opts)
+ at command('debugsvnlog', [], 'hg debugsvnlog')
def debugsvnlog(ui, **opts):
return subversion.debugsvnlog(ui, **opts)
+ at command('debugcvsps',
+ [
+ # Main options shared with cvsps-2.1
+ ('b', 'branches', [], _('only return changes on specified branches')),
+ ('p', 'prefix', '', _('prefix to remove from file names')),
+ ('r', 'revisions', [],
+ _('only return changes after or between specified tags')),
+ ('u', 'update-cache', None, _("update cvs log cache")),
+ ('x', 'new-cache', None, _("create new cvs log cache")),
+ ('z', 'fuzz', 60, _('set commit time fuzz in seconds')),
+ ('', 'root', '', _('specify cvsroot')),
+ # Options specific to builtin cvsps
+ ('', 'parents', '', _('show parent changesets')),
+ ('', 'ancestors', '', _('show current changeset in ancestor branches')),
+ # Options that are ignored for compatibility with cvsps-2.1
+ ('A', 'cvs-direct', None, _('ignored for compatibility')),
+ ],
+ _('hg debugcvsps [OPTION]... [PATH]...'))
def debugcvsps(ui, *args, **opts):
'''create changeset information from CVS
This command is intended as a debugging tool for the CVS to
Mercurial converter, and can be used as a direct replacement for
cvsps.
Hg debugcvsps reads the CVS rlog for current directory (or any
named directory) in the CVS repository, and converts the log to a
series of changesets based on matching commit log entries and
dates.'''
return cvsps.debugcvsps(ui, *args, **opts)
commands.norepo += " convert debugsvnlog debugcvsps"
-cmdtable = {
- "convert":
- (convert,
- [('', 'authors', '',
- _('username mapping filename (DEPRECATED, use --authormap instead)'),
- _('FILE')),
- ('s', 'source-type', '',
- _('source repository type'), _('TYPE')),
- ('d', 'dest-type', '',
- _('destination repository type'), _('TYPE')),
- ('r', 'rev', '',
- _('import up to source revision REV'), _('REV')),
- ('A', 'authormap', '',
- _('remap usernames using this file'), _('FILE')),
- ('', 'filemap', '',
- _('remap file names using contents of file'), _('FILE')),
- ('', 'splicemap', '',
- _('splice synthesized history into place'), _('FILE')),
- ('', 'branchmap', '',
- _('change branch names while converting'), _('FILE')),
- ('', 'branchsort', None, _('try to sort changesets by branches')),
- ('', 'datesort', None, _('try to sort changesets by date')),
- ('', 'sourcesort', None, _('preserve source changesets order')),
- ('', 'closesort', None, _('try to reorder closed revisions'))],
- _('hg convert [OPTION]... SOURCE [DEST [REVMAP]]')),
- "debugsvnlog":
- (debugsvnlog,
- [],
- 'hg debugsvnlog'),
- "debugcvsps":
- (debugcvsps,
- [
- # Main options shared with cvsps-2.1
- ('b', 'branches', [], _('only return changes on specified branches')),
- ('p', 'prefix', '', _('prefix to remove from file names')),
- ('r', 'revisions', [],
- _('only return changes after or between specified tags')),
- ('u', 'update-cache', None, _("update cvs log cache")),
- ('x', 'new-cache', None, _("create new cvs log cache")),
- ('z', 'fuzz', 60, _('set commit time fuzz in seconds')),
- ('', 'root', '', _('specify cvsroot')),
- # Options specific to builtin cvsps
- ('', 'parents', '', _('show parent changesets')),
- ('', 'ancestors', '',
- _('show current changeset in ancestor branches')),
- # Options that are ignored for compatibility with cvsps-2.1
- ('A', 'cvs-direct', None, _('ignored for compatibility')),
- ],
- _('hg debugcvsps [OPTION]... [PATH]...')),
-}
-
def kwconverted(ctx, name):
rev = ctx.extra().get('convert_revision', '')
if rev.startswith('svn:'):
if name == 'svnrev':
return str(subversion.revsplit(rev)[2])
elif name == 'svnpath':
return subversion.revsplit(rev)[1]
elif name == 'svnuuid':
More information about the Mercurial-devel
mailing list