##// END OF EJS Templates
convert/subversion: get converter working against plain HTTP.
Bryan O'Sullivan -
r4938:4db03fa5 default
parent child Browse files
Show More
@@ -24,6 +24,7 b' from tempfile import mktemp'
24 24
25 25 from svn.core import SubversionException, Pool
26 26 import svn.ra
27 import svn.client
27 28 import svn.core
28 29
29 30 # Some older versions of the Python bindings need to be
@@ -48,21 +49,6 b' def _create_auth_baton(pool):'
48 49 ]
49 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 52 class NotBranchError(SubversionException):
67 53 pass
68 54
@@ -73,25 +59,30 b' class SvnRaTransport(object):'
73 59 def __init__(self, url="", ra=None):
74 60 self.pool = Pool()
75 61 self.svn_url = url
62 self.username = ''
63 self.password = ''
76 64
77 65 # Only Subversion 1.4 has reparent()
78 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 76 try:
81 ver = svn.ra.version()
82 try: # Older SVN bindings
83 self.ra = svn.ra.open2(self.svn_url.encode('utf8'), self.callbacks, None, svn_config, None)
84 except TypeError, e:
85 self.ra = svn.ra.open2(self.svn_url.encode('utf8'), self.callbacks, svn_config, None)
77 self.ra = svn.client.open_ra_session(
78 self.svn_url.encode('utf8'),
79 self.client, self.pool)
86 80 except SubversionException, (_, num):
87 if num == svn.core.SVN_ERR_RA_ILLEGAL_URL:
88 raise NotBranchError(url)
89 if num == svn.core.SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED:
90 raise NotBranchError(url)
91 if num == svn.core.SVN_ERR_BAD_URL:
81 if num in (svn.core.SVN_ERR_RA_ILLEGAL_URL,
82 svn.core.SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED,
83 svn.core.SVN_ERR_BAD_URL):
92 84 raise NotBranchError(url)
93 85 raise
94
95 86 else:
96 87 self.ra = ra
97 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