Mercurial > hgsubversion
changeset 248:a9134fa28d15
Move svncommand code into __init__.py.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Wed, 08 Apr 2009 19:12:23 +0200 |
parents | 1272e87546ed |
children | a065bf61caa1 |
files | __init__.py svncommand.py |
diffstat | 2 files changed, 32 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/__init__.py +++ b/__init__.py @@ -16,7 +16,7 @@ import os from mercurial import commands from mercurial import hg -from mercurial import util as mutil +from mercurial import util as hgutil from svn import core @@ -25,6 +25,8 @@ import svncommands import tag_repo import util +from util import svn_subcommands, svn_commands_nourl + def reposetup(ui, repo): if not util.is_svn_repo(repo): return @@ -34,13 +36,39 @@ def reposetup(ui, repo): def svn(ui, repo, subcommand, *args, **opts): '''see detailed help for list of subcommands''' + + # guess command if prefix + if subcommand not in svn_subcommands: + candidates = [] + for c in svn_subcommands: + if c.startswith(subcommand): + candidates.append(c) + if len(candidates) == 1: + subcommand = candidates[0] + + path = os.path.dirname(repo.path) try: - return svncommand.svncmd(ui, repo, subcommand, *args, **opts) + commandfunc = svn_subcommands[subcommand] + if commandfunc not in svn_commands_nourl: + opts['svn_url'] = open(os.path.join(repo.path, 'svn', 'url')).read() + return commandfunc(ui, args=args, hg_repo_path=path, repo=repo, **opts) except core.SubversionException, e: if e.apr_err == core.SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED: - raise mutil.Abort('It appears svn does not trust the ssl cert for this site.\n' + raise hgutil.Abort('It appears svn does not trust the ssl cert for this site.\n' 'Please try running svn ls on that url first.') raise + except TypeError: + tb = traceback.extract_tb(sys.exc_info()[2]) + if len(tb) == 1: + ui.status('Bad arguments for subcommand %s\n' % subcommand) + else: + raise + except KeyError, e: + tb = traceback.extract_tb(sys.exc_info()[2]) + if len(tb) == 1: + ui.status('Unknown subcommand %s\n' % subcommand) + else: + raise def svn_fetch(ui, svn_url, hg_repo_path=None, **opts): @@ -61,7 +89,7 @@ def svn_fetch(ui, svn_url, hg_repo_path= res = svncommands.pull(ui, svn_url, hg_repo_path, **opts) except core.SubversionException, e: if e.apr_err == core.SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED: - raise mutil.Abort('It appears svn does not trust the ssl cert for this site.\n' + raise hgutil.Abort('It appears svn does not trust the ssl cert for this site.\n' 'Please try running svn ls on that url first.') raise if (res is None or res == 0) and should_update:
deleted file mode 100644 --- a/svncommand.py +++ /dev/null @@ -1,41 +0,0 @@ -import os -import sys -import traceback - -from util import svn_subcommands, svn_commands_nourl -# dirty trick to force demandimport to run my decorator anyway. -from svncommands import pull, diff, rebuildmeta -from utility_commands import print_wc_url -# shut up, pyflakes, we must import those -__x = [print_wc_url, pull, diff, rebuildmeta] - - -def svncmd(ui, repo, subcommand, *args, **opts): - if subcommand not in svn_subcommands: - candidates = [] - for c in svn_subcommands: - if c.startswith(subcommand): - candidates.append(c) - if len(candidates) == 1: - subcommand = candidates[0] - path = os.path.dirname(repo.path) - try: - commandfunc = svn_subcommands[subcommand] - if commandfunc not in svn_commands_nourl: - opts['svn_url'] = open(os.path.join(repo.path, 'svn', 'url')).read() - return commandfunc(ui, args=args, - hg_repo_path=path, - repo=repo, - **opts) - except TypeError: - tb = traceback.extract_tb(sys.exc_info()[2]) - if len(tb) == 1: - ui.status('Bad arguments for subcommand %s\n' % subcommand) - else: - raise - except KeyError, e: - tb = traceback.extract_tb(sys.exc_info()[2]) - if len(tb) == 1: - ui.status('Unknown subcommand %s\n' % subcommand) - else: - raise