svnwrap: Fix handling of auth providers so cached credentials can work.

Also fixed things so that svn 1.6 should enable platform-specific auth providers.
This commit is contained in:
Augie Fackler 2008-11-19 09:41:09 -06:00
parent effb740fae
commit 2df035818d

View File

@ -57,26 +57,35 @@ def _create_auth_baton(pool):
"""Create a Subversion authentication baton. """
# Give the client context baton a suite of authentication
# providers.h
providers = [
platform_specific = ['svn_auth_get_gnome_keyring_simple_provider',
'svn_auth_get_gnome_keyring_ssl_client_cert_pw_provider',
'svn_auth_get_keychain_simple_provider',
'svn_auth_get_keychain_ssl_client_cert_pw_provider',
'svn_auth_get_kwallet_simple_provider',
'svn_auth_get_kwallet_ssl_client_cert_pw_provider',
'svn_auth_get_ssl_client_cert_file_provider',
'svn_auth_get_windows_simple_provider',
'svn_auth_get_windows_ssl_server_trust_provider',
]
providers = []
for p in platform_specific:
if hasattr(core, p):
try:
providers.append(getattr(core, p)())
except RuntimeError:
pass
providers += [
client.get_simple_provider(),
client.get_username_provider(),
client.get_ssl_client_cert_file_provider(),
client.get_ssl_client_cert_pw_file_provider(),
client.get_ssl_server_trust_file_provider(),
client.get_simple_prompt_provider(user_pass_prompt, 2),
]
# Platform-dependant authentication methods
if hasattr(client, 'get_windows_simple_provider'): #pragma: no cover
try:
providers.append(client.get_windows_simple_provider())
except:
pass
if hasattr(client, 'get_keychain_simple_provider'): #pragma: no cover
try:
providers.append(client.get_keychain_simple_provider())
except:
pass
providers.extend([client.get_simple_prompt_provider(user_pass_prompt, 2),
])
return core.svn_auth_open(providers, pool)
@ -128,9 +137,6 @@ class SubversionRepo(object):
# while we're in here we'll recreate our pool
self.pool = core.Pool()
self.client_context = client.create_context()
core.svn_auth_set_parameter(self.auth_baton,
core.SVN_AUTH_PARAM_DEFAULT_USERNAME,
self.uname)
self.client_context.auth_baton = self.auth_baton
self.client_context.config = svn_config