Mercurial > hgsubversion
annotate 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 |
rev | line source |
---|---|
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
1 import os |
93
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
2 import sys |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
3 import traceback |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
4 |
247
1272e87546ed
Move help, update into svncommands.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
246
diff
changeset
|
5 from util import svn_subcommands, svn_commands_nourl |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
6 # dirty trick to force demandimport to run my decorator anyway. |
246
074f27c68818
Move rebuildmeta into svncommands.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
244
diff
changeset
|
7 from svncommands import pull, diff, rebuildmeta |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
8 from utility_commands import print_wc_url |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
9 # shut up, pyflakes, we must import those |
244
28d0ee605308
Move diff to svncommands.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
243
diff
changeset
|
10 __x = [print_wc_url, pull, diff, rebuildmeta] |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
11 |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
12 |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
13 def svncmd(ui, repo, subcommand, *args, **opts): |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
14 if subcommand not in svn_subcommands: |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
15 candidates = [] |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
16 for c in svn_subcommands: |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
17 if c.startswith(subcommand): |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
18 candidates.append(c) |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
19 if len(candidates) == 1: |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
20 subcommand = candidates[0] |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
21 path = os.path.dirname(repo.path) |
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
22 try: |
196
77812f98e250
Add a naive hg svn version command that works as long as hgsubversion is run from a checkout.
Augie Fackler <durin42@gmail.com>
parents:
185
diff
changeset
|
23 commandfunc = svn_subcommands[subcommand] |
77812f98e250
Add a naive hg svn version command that works as long as hgsubversion is run from a checkout.
Augie Fackler <durin42@gmail.com>
parents:
185
diff
changeset
|
24 if commandfunc not in svn_commands_nourl: |
155
ba801f44d240
utility_commands: Implement rebuildmeta so that metadata can be rebuilt.
Augie Fackler <durin42@gmail.com>
parents:
124
diff
changeset
|
25 opts['svn_url'] = open(os.path.join(repo.path, 'svn', 'url')).read() |
196
77812f98e250
Add a naive hg svn version command that works as long as hgsubversion is run from a checkout.
Augie Fackler <durin42@gmail.com>
parents:
185
diff
changeset
|
26 return commandfunc(ui, args=args, |
77812f98e250
Add a naive hg svn version command that works as long as hgsubversion is run from a checkout.
Augie Fackler <durin42@gmail.com>
parents:
185
diff
changeset
|
27 hg_repo_path=path, |
77812f98e250
Add a naive hg svn version command that works as long as hgsubversion is run from a checkout.
Augie Fackler <durin42@gmail.com>
parents:
185
diff
changeset
|
28 repo=repo, |
77812f98e250
Add a naive hg svn version command that works as long as hgsubversion is run from a checkout.
Augie Fackler <durin42@gmail.com>
parents:
185
diff
changeset
|
29 **opts) |
93
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
30 except TypeError: |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
31 tb = traceback.extract_tb(sys.exc_info()[2]) |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
32 if len(tb) == 1: |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
33 ui.status('Bad arguments for subcommand %s\n' % subcommand) |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
34 else: |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
35 raise |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
36 except KeyError, e: |
93
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
37 tb = traceback.extract_tb(sys.exc_info()[2]) |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
38 if len(tb) == 1: |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
39 ui.status('Unknown subcommand %s\n' % subcommand) |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
40 else: |
f537eb456cf7
svncommand: Check traceback length to stop masking real exceptions.
Augie Fackler <durin42@gmail.com>
parents:
35
diff
changeset
|
41 raise |