comparison __init__.py @ 253:c3d5c4ae9c7c

Work with simple command table instead of decorators.
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Fri, 10 Apr 2009 23:09:59 +0200
parents 23b02f892d9b
children 7932d098cb5f
comparison
equal deleted inserted replaced
252:4d3bcd2f26ed 253:c3d5c4ae9c7c
24 24
25 import svncommands 25 import svncommands
26 import tag_repo 26 import tag_repo
27 import util 27 import util
28 28
29 from util import svn_subcommands, svn_commands_nourl
30
31 def reposetup(ui, repo): 29 def reposetup(ui, repo):
32 if not util.is_svn_repo(repo): 30 if not util.is_svn_repo(repo):
33 return 31 return
34 32
35 repo.__class__ = tag_repo.generate_repo_class(ui, repo) 33 repo.__class__ = tag_repo.generate_repo_class(ui, repo)
37 35
38 def svn(ui, repo, subcommand, *args, **opts): 36 def svn(ui, repo, subcommand, *args, **opts):
39 '''see detailed help for list of subcommands''' 37 '''see detailed help for list of subcommands'''
40 38
41 # guess command if prefix 39 # guess command if prefix
42 if subcommand not in svn_subcommands: 40 if subcommand not in svncommands.table:
43 candidates = [] 41 candidates = []
44 for c in svn_subcommands: 42 for c in svncommands.table:
45 if c.startswith(subcommand): 43 if c.startswith(subcommand):
46 candidates.append(c) 44 candidates.append(c)
47 if len(candidates) == 1: 45 if len(candidates) == 1:
48 subcommand = candidates[0] 46 subcommand = candidates[0]
49 47
50 path = os.path.dirname(repo.path) 48 path = os.path.dirname(repo.path)
51 try: 49 try:
52 commandfunc = svn_subcommands[subcommand] 50 commandfunc = svncommands.table[subcommand]
53 if commandfunc not in svn_commands_nourl: 51 if commandfunc not in svncommands.nourl:
54 opts['svn_url'] = open(os.path.join(repo.path, 'svn', 'url')).read() 52 opts['svn_url'] = open(os.path.join(repo.path, 'svn', 'url')).read()
55 return commandfunc(ui, args=args, hg_repo_path=path, repo=repo, **opts) 53 return commandfunc(ui, args=args, hg_repo_path=path, repo=repo, **opts)
56 except core.SubversionException, e: 54 except core.SubversionException, e:
57 if e.apr_err == core.SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED: 55 if e.apr_err == core.SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED:
58 raise hgutil.Abort('It appears svn does not trust the ssl cert for this site.\n' 56 raise hgutil.Abort('It appears svn does not trust the ssl cert for this site.\n'
109 'remap file to exclude paths or include only certain paths'), 107 'remap file to exclude paths or include only certain paths'),
110 ('', 'force', False, 'force an operation to happen'), 108 ('', 'force', False, 'force an operation to happen'),
111 ('', 'username', '', 'username for authentication'), 109 ('', 'username', '', 'username for authentication'),
112 ('', 'password', '', 'password for authentication'), 110 ('', 'password', '', 'password for authentication'),
113 ], 111 ],
114 svncommands.generate_help(), 112 svncommands._helpgen(),
115 ), 113 ),
116 "svnclone": 114 "svnclone":
117 (svn_fetch, 115 (svn_fetch,
118 [('S', 'skipto-rev', '0', 'skip commits before this revision.'), 116 [('S', 'skipto-rev', '0', 'skip commits before this revision.'),
119 ('', 'stupid', False, 'be stupid and use diffy replay.'), 117 ('', 'stupid', False, 'be stupid and use diffy replay.'),