7 |
7 |
8 from common import NoRepo, converter_source, converter_sink |
8 from common import NoRepo, converter_source, converter_sink |
9 from cvs import convert_cvs |
9 from cvs import convert_cvs |
10 from git import convert_git |
10 from git import convert_git |
11 from hg import convert_mercurial |
11 from hg import convert_mercurial |
|
12 from subversion import convert_svn |
12 |
13 |
13 import os, shutil |
14 import os, shutil |
14 from mercurial import hg, ui, util, commands |
15 from mercurial import hg, ui, util, commands |
15 |
16 |
16 commands.norepo += " convert" |
17 commands.norepo += " convert" |
17 |
18 |
18 converters = [convert_cvs, convert_git, convert_mercurial] |
19 converters = [convert_cvs, convert_git, convert_svn, convert_mercurial] |
19 |
20 |
20 def convertsource(ui, path, rev=None): |
21 def convertsource(ui, path, rev=None): |
21 for c in converters: |
22 for c in converters: |
22 try: |
23 if not hasattr(c, 'getcommit'): |
23 converter = c(ui, path, rev=rev) |
24 continue |
24 if not isinstance(converter, converter_source): |
25 try: |
25 raise util.Abort('%s: cannot read from this repository type' % path) |
26 return c(ui, path, rev=rev) |
26 return converter |
|
27 except NoRepo: |
27 except NoRepo: |
28 pass |
28 pass |
29 raise util.Abort('%s: unknown repository type' % path) |
29 raise util.Abort('%s: unknown repository type' % path) |
30 |
30 |
31 def convertsink(ui, path): |
31 def convertsink(ui, path): |
32 if not os.path.isdir(path): |
32 if not os.path.isdir(path): |
33 raise util.Abort("%s: not a directory" % path) |
33 raise util.Abort("%s: not a directory" % path) |
34 for c in converters: |
34 for c in converters: |
35 try: |
35 if not hasattr(c, 'putcommit'): |
36 converter = c(ui, path) |
36 continue |
37 if not isinstance(converter, converter_sink): |
37 try: |
38 raise util.Abort('%s: cannot write to this repository type' % path) |
38 return c(ui, path) |
39 return converter |
|
40 except NoRepo: |
39 except NoRepo: |
41 pass |
40 pass |
42 raise util.Abort('%s: unknown repository type' % path) |
41 raise util.Abort('%s: unknown repository type' % path) |
43 |
42 |
44 class convert(object): |
43 class convert(object): |