Mercurial > hg > mercurial-crew-with-dirclash
comparison hgext/convert/transport.py @ 4965:4106dde15aed
Merge with crew
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sat, 21 Jul 2007 16:44:38 -0500 |
parents | cdd33a048289 |
children | 117dab48ca99 |
comparison
equal
deleted
inserted
replaced
4964:ee983d0dbea8 | 4965:4106dde15aed |
---|---|
22 import os | 22 import os |
23 from tempfile import mktemp | 23 from tempfile import mktemp |
24 | 24 |
25 from svn.core import SubversionException, Pool | 25 from svn.core import SubversionException, Pool |
26 import svn.ra | 26 import svn.ra |
27 import svn.client | |
27 import svn.core | 28 import svn.core |
28 | 29 |
29 # Some older versions of the Python bindings need to be | 30 # Some older versions of the Python bindings need to be |
30 # explicitly initialized. But what we want to do probably | 31 # explicitly initialized. But what we want to do probably |
31 # won't work worth a darn against those libraries anyway! | 32 # won't work worth a darn against those libraries anyway! |
32 svn.ra.initialize() | 33 svn.ra.initialize() |
33 | 34 |
34 svn_config = svn.core.svn_config_get_config(None) | 35 svn_config = svn.core.svn_config_get_config(None) |
46 svn.client.get_ssl_client_cert_pw_file_provider(pool), | 47 svn.client.get_ssl_client_cert_pw_file_provider(pool), |
47 svn.client.get_ssl_server_trust_file_provider(pool), | 48 svn.client.get_ssl_server_trust_file_provider(pool), |
48 ] | 49 ] |
49 return svn.core.svn_auth_open(providers, pool) | 50 return svn.core.svn_auth_open(providers, pool) |
50 | 51 |
51 | |
52 # # The SVN libraries don't like trailing slashes... | |
53 # return url.rstrip('/') | |
54 | |
55 | |
56 class SvnRaCallbacks(svn.ra.callbacks2_t): | |
57 """Remote access callbacks implementation for bzr-svn.""" | |
58 def __init__(self, pool): | |
59 svn.ra.callbacks2_t.__init__(self) | |
60 self.auth_baton = _create_auth_baton(pool) | |
61 self.pool = pool | |
62 | |
63 def open_tmp_file(self, pool): | |
64 return mktemp(prefix='tailor-svn') | |
65 | |
66 class NotBranchError(SubversionException): | 52 class NotBranchError(SubversionException): |
67 pass | 53 pass |
68 | 54 |
69 class SvnRaTransport(object): | 55 class SvnRaTransport(object): |
70 """ | 56 """ |
71 Open an ra connection to a Subversion repository. | 57 Open an ra connection to a Subversion repository. |
72 """ | 58 """ |
73 def __init__(self, url="", ra=None): | 59 def __init__(self, url="", ra=None): |
74 self.pool = Pool() | 60 self.pool = Pool() |
75 self.svn_url = url | 61 self.svn_url = url |
62 self.username = '' | |
63 self.password = '' | |
76 | 64 |
77 # Only Subversion 1.4 has reparent() | 65 # Only Subversion 1.4 has reparent() |
78 if ra is None or not hasattr(svn.ra, 'reparent'): | 66 if ra is None or not hasattr(svn.ra, 'reparent'): |
79 self.callbacks = SvnRaCallbacks(self.pool) | 67 self.client = svn.client.create_context(self.pool) |
68 ab = _create_auth_baton(self.pool) | |
69 if False: | |
70 svn.core.svn_auth_set_parameter( | |
71 ab, svn.core.SVN_AUTH_PARAM_DEFAULT_USERNAME, self.username) | |
72 svn.core.svn_auth_set_parameter( | |
73 ab, svn.core.SVN_AUTH_PARAM_DEFAULT_PASSWORD, self.password) | |
74 self.client.auth_baton = ab | |
75 self.client.config = svn_config | |
80 try: | 76 try: |
81 ver = svn.ra.version() | 77 self.ra = svn.client.open_ra_session( |
82 try: # Older SVN bindings | 78 self.svn_url.encode('utf8'), |
83 self.ra = svn.ra.open2(self.svn_url.encode('utf8'), self.callbacks, None, svn_config, None) | 79 self.client, self.pool) |
84 except TypeError, e: | |
85 self.ra = svn.ra.open2(self.svn_url.encode('utf8'), self.callbacks, svn_config, None) | |
86 except SubversionException, (_, num): | 80 except SubversionException, (_, num): |
87 if num == svn.core.SVN_ERR_RA_ILLEGAL_URL: | 81 if num in (svn.core.SVN_ERR_RA_ILLEGAL_URL, |
88 raise NotBranchError(url) | 82 svn.core.SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED, |
89 if num == svn.core.SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED: | 83 svn.core.SVN_ERR_BAD_URL): |
90 raise NotBranchError(url) | |
91 if num == svn.core.SVN_ERR_BAD_URL: | |
92 raise NotBranchError(url) | 84 raise NotBranchError(url) |
93 raise | 85 raise |
94 | |
95 else: | 86 else: |
96 self.ra = ra | 87 self.ra = ra |
97 svn.ra.reparent(self.ra, self.svn_url.encode('utf8')) | 88 svn.ra.reparent(self.ra, self.svn_url.encode('utf8')) |
98 | 89 |
99 class Reporter: | 90 class Reporter: |