Mercurial > hgsubversion
comparison svnwrap/svn_swig_wrapper.py @ 92:7486c6f6cccc
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.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Wed, 19 Nov 2008 09:41:09 -0600 |
parents | edeec6829d80 |
children | 0d3a2a7cefa3 |
comparison
equal
deleted
inserted
replaced
91:7d10165cf3d9 | 92:7486c6f6cccc |
---|---|
55 | 55 |
56 def _create_auth_baton(pool): | 56 def _create_auth_baton(pool): |
57 """Create a Subversion authentication baton. """ | 57 """Create a Subversion authentication baton. """ |
58 # Give the client context baton a suite of authentication | 58 # Give the client context baton a suite of authentication |
59 # providers.h | 59 # providers.h |
60 providers = [ | 60 platform_specific = ['svn_auth_get_gnome_keyring_simple_provider', |
61 'svn_auth_get_gnome_keyring_ssl_client_cert_pw_provider', | |
62 'svn_auth_get_keychain_simple_provider', | |
63 'svn_auth_get_keychain_ssl_client_cert_pw_provider', | |
64 'svn_auth_get_kwallet_simple_provider', | |
65 'svn_auth_get_kwallet_ssl_client_cert_pw_provider', | |
66 'svn_auth_get_ssl_client_cert_file_provider', | |
67 'svn_auth_get_windows_simple_provider', | |
68 'svn_auth_get_windows_ssl_server_trust_provider', | |
69 ] | |
70 | |
71 providers = [] | |
72 | |
73 for p in platform_specific: | |
74 if hasattr(core, p): | |
75 try: | |
76 providers.append(getattr(core, p)()) | |
77 except RuntimeError: | |
78 pass | |
79 | |
80 providers += [ | |
61 client.get_simple_provider(), | 81 client.get_simple_provider(), |
62 client.get_username_provider(), | 82 client.get_username_provider(), |
63 client.get_ssl_client_cert_file_provider(), | 83 client.get_ssl_client_cert_file_provider(), |
64 client.get_ssl_client_cert_pw_file_provider(), | 84 client.get_ssl_client_cert_pw_file_provider(), |
65 client.get_ssl_server_trust_file_provider(), | 85 client.get_ssl_server_trust_file_provider(), |
86 client.get_simple_prompt_provider(user_pass_prompt, 2), | |
66 ] | 87 ] |
67 # Platform-dependant authentication methods | 88 |
68 if hasattr(client, 'get_windows_simple_provider'): #pragma: no cover | |
69 try: | |
70 providers.append(client.get_windows_simple_provider()) | |
71 except: | |
72 pass | |
73 if hasattr(client, 'get_keychain_simple_provider'): #pragma: no cover | |
74 try: | |
75 providers.append(client.get_keychain_simple_provider()) | |
76 except: | |
77 pass | |
78 providers.extend([client.get_simple_prompt_provider(user_pass_prompt, 2), | |
79 ]) | |
80 return core.svn_auth_open(providers, pool) | 89 return core.svn_auth_open(providers, pool) |
81 | 90 |
82 | 91 |
83 class Revision(object): | 92 class Revision(object): |
84 """Wrapper for a Subversion revision. | 93 """Wrapper for a Subversion revision. |
126 unified diffs runs the remote server out of open files. | 135 unified diffs runs the remote server out of open files. |
127 """ | 136 """ |
128 # while we're in here we'll recreate our pool | 137 # while we're in here we'll recreate our pool |
129 self.pool = core.Pool() | 138 self.pool = core.Pool() |
130 self.client_context = client.create_context() | 139 self.client_context = client.create_context() |
131 core.svn_auth_set_parameter(self.auth_baton, | |
132 core.SVN_AUTH_PARAM_DEFAULT_USERNAME, | |
133 self.uname) | |
134 | 140 |
135 self.client_context.auth_baton = self.auth_baton | 141 self.client_context.auth_baton = self.auth_baton |
136 self.client_context.config = svn_config | 142 self.client_context.config = svn_config |
137 callbacks = RaCallbacks() | 143 callbacks = RaCallbacks() |
138 callbacks.auth_baton = self.auth_baton | 144 callbacks.auth_baton = self.auth_baton |