Show More
@@ -24,6 +24,7 b' 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 | |
@@ -48,21 +49,6 b' def _create_auth_baton(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 | |||
@@ -73,25 +59,30 b' class SvnRaTransport(object):' | |||||
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.c |
|
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 |
|
|
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 |
|
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 |
|
|
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')) |
General Comments 0
You need to be logged in to leave comments.
Login now