comparison svncommand.py @ 247:1272e87546ed

Move help, update into svncommands.
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Wed, 08 Apr 2009 18:59:50 +0200
parents 074f27c68818
children
comparison
equal deleted inserted replaced
246:074f27c68818 247:1272e87546ed
1 import os 1 import os
2 import sys 2 import sys
3 import traceback 3 import traceback
4 4
5 from mercurial import hg 5 from util import svn_subcommands, svn_commands_nourl
6 from mercurial import node
7
8 import util
9 from util import register_subcommand, svn_subcommands, generate_help, svn_commands_nourl
10 # dirty trick to force demandimport to run my decorator anyway. 6 # dirty trick to force demandimport to run my decorator anyway.
11 from svncommands import pull, diff, rebuildmeta 7 from svncommands import pull, diff, rebuildmeta
12 from utility_commands import print_wc_url 8 from utility_commands import print_wc_url
13 # shut up, pyflakes, we must import those 9 # shut up, pyflakes, we must import those
14 __x = [print_wc_url, pull, diff, rebuildmeta] 10 __x = [print_wc_url, pull, diff, rebuildmeta]
41 tb = traceback.extract_tb(sys.exc_info()[2]) 37 tb = traceback.extract_tb(sys.exc_info()[2])
42 if len(tb) == 1: 38 if len(tb) == 1:
43 ui.status('Unknown subcommand %s\n' % subcommand) 39 ui.status('Unknown subcommand %s\n' % subcommand)
44 else: 40 else:
45 raise 41 raise
46
47
48 def help_command(ui, args=None, **opts):
49 """show help for a given subcommands or a help overview
50 """
51 if args:
52 subcommand = args[0]
53 if subcommand not in svn_subcommands:
54 candidates = []
55 for c in svn_subcommands:
56 if c.startswith(subcommand):
57 candidates.append(c)
58 if len(candidates) == 1:
59 subcommand = candidates[0]
60 elif len(candidates) > 1:
61 ui.status('Ambiguous command. Could have been:\n%s\n' %
62 ' '.join(candidates))
63 return
64 doc = svn_subcommands[subcommand].__doc__
65 if doc is None:
66 doc = "No documentation available for %s." % subcommand
67 ui.status(doc.strip(), '\n')
68 return
69 ui.status(generate_help())
70 help_command = register_subcommand('help')(help_command)
71
72 def update(ui, args, repo, clean=False, **opts):
73 """update to a specified Subversion revision number
74 """
75 assert len(args) == 1
76 rev = int(args[0])
77 path = os.path.join(repo.path, 'svn', 'rev_map')
78 answers = []
79 for k,v in util.parse_revmap(path).iteritems():
80 if k[0] == rev:
81 answers.append((v, k[1]))
82 if len(answers) == 1:
83 if clean:
84 return hg.clean(repo, answers[0][0])
85 return hg.update(repo, answers[0][0])
86 elif len(answers) == 0:
87 ui.status('Revision %s did not produce an hg revision.\n' % rev)
88 return 1
89 else:
90 ui.status('Ambiguous revision!\n')
91 ui.status('\n'.join(['%s on %s' % (node.hex(a[0]), a[1]) for a in
92 answers]+['']))
93 return 1
94 update = register_subcommand('up')(update)