Rev 1016: Wrap some more functions. in file:///data/jelmer/bzr-svn/pyrex/
Jelmer Vernooij
jelmer at samba.org
Wed Mar 19 22:46:48 GMT 2008
At file:///data/jelmer/bzr-svn/pyrex/
------------------------------------------------------------
revno: 1016
revision-id: jelmer at samba.org-20080319224647-52s9u285ylc2qnz3
parent: jelmer at samba.org-20080318234801-1wweh8z48k8t4w8k
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Wed 2008-03-19 23:46:47 +0100
message:
Wrap some more functions.
modified:
ra.pyx ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
repos.pyx repos.pyx-20080314114432-g2b5lqe776tkbl4k-1
=== modified file 'ra.pyx'
--- a/ra.pyx 2008-03-18 23:27:43 +0000
+++ b/ra.pyx 2008-03-19 22:46:47 +0000
@@ -579,13 +579,16 @@
py_editor.close_edit = py_editor_close_edit
py_editor.abort_edit = py_editor_abort_edit
+cdef class Auth
+
cdef class RemoteAccess:
"""Connection to a remote Subversion repository."""
cdef svn_ra_session_t *ra
cdef apr_pool_t *pool
cdef char *url
cdef object progress_func
- def __init__(self, char *url, progress_cb=None, config={}):
+ cdef Auth auth
+ def __init__(self, char *url, progress_cb=None, Auth auth=None, config={}):
"""Connect to a remote Subversion repository.
:param url: URL of the repository
@@ -595,11 +598,16 @@
cdef svn_error_t *error
cdef svn_ra_callbacks2_t *callbacks2
cdef apr_hash_t *config_hash
+ if auth is None:
+ auth = Auth()
+ self.auth = auth
self.url = url
self.pool = Pool(NULL)
assert self.pool != NULL
check_error(svn_ra_create_callbacks(&callbacks2, self.pool))
callbacks2.progress_func = py_progress_func
+ Py_INCREF(self.auth)
+ callbacks2.auth_baton = self.auth.auth_baton
self.progress_func = progress_cb
callbacks2.progress_baton = <void *>self.progress_func
config_hash = apr_hash_make(self.pool)
@@ -836,6 +844,7 @@
def __dealloc__(self):
if self.pool != NULL:
apr_pool_destroy(self.pool)
+ Py_DECREF(self.auth)
def __repr__(self):
return "%s(%r)" % (self.__class__.__name__, self.url)
@@ -850,7 +859,7 @@
cdef class Auth:
cdef svn_auth_baton_t *auth_baton
cdef apr_pool_t *pool
- def __init__(self, providers):
+ def __init__(self, providers=[]):
cdef apr_array_header_t *c_providers
cdef AuthProvider provider
cdef svn_auth_provider_object_t **el
@@ -869,7 +878,8 @@
return <char *>svn_auth_get_parameter(self.auth_baton, name)
def __dealloc__(self):
- apr_pool_destroy(self.pool)
+ if self.pool != NULL:
+ apr_pool_destroy(self.pool)
cdef svn_error_t *py_username_prompt(svn_auth_cred_username_t **cred, void *baton, char *realm, int may_save, apr_pool_t *pool):
fn = <object>baton
=== modified file 'repos.pyx'
--- a/repos.pyx 2008-03-16 14:17:23 +0000
+++ b/repos.pyx 2008-03-19 22:46:47 +0000
@@ -15,13 +15,27 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
from apr cimport apr_pool_t, apr_hash_t, apr_pool_destroy
-from types cimport svn_error_t, svn_boolean_t, svn_cancel_func_t, svn_stream_t
+from types cimport svn_error_t, svn_boolean_t, svn_cancel_func_t, svn_stream_t, svn_node_kind_t, svn_revnum_t, svn_filesize_t
from core cimport Pool, check_error, new_py_stream, py_cancel_func
cdef extern from "svn_fs.h":
ctypedef struct svn_fs_t
+ ctypedef struct svn_fs_root_t
svn_error_t *svn_fs_get_uuid(svn_fs_t *fs, char **uuid, apr_pool_t *pool)
+ svn_error_t *svn_fs_check_path(svn_node_kind_t *kind_p, svn_fs_root_t *root, char *path, apr_pool_t *pool)
+ svn_boolean_t svn_fs_is_txn_root(svn_fs_root_t *root)
+ svn_boolean_t svn_fs_is_revision_root(svn_fs_root_t *root)
+ svn_error_t *svn_fs_youngest_rev(svn_revnum_t *youngest_p, svn_fs_t *fs, apr_pool_t *pool)
+ svn_error_t *svn_fs_revision_root(svn_fs_root_t **root_p, svn_fs_t *fs, svn_revnum_t rev, apr_pool_t *pool)
+ svn_error_t *svn_fs_make_dir(svn_fs_root_t *root, char *path, apr_pool_t *pool)
+ svn_error_t *svn_fs_delete(svn_fs_root_t *root, char *path, apr_pool_t *pool)
+ svn_error_t *svn_fs_copy(svn_fs_root_t *from_root, char *from_path, svn_fs_root_t *to_root, char *to_path, apr_pool_t *pool)
+ svn_error_t *svn_fs_file_length(svn_filesize_t *length_p, svn_fs_root_t *root, char *path, apr_pool_t *pool)
+ svn_error_t *svn_fs_file_md5_checksum(unsigned char digest[], svn_fs_root_t *root, char *path, apr_pool_t *pool)
+ svn_error_t *svn_fs_file_contents(svn_stream_t **contents, svn_fs_root_t *root, char *path, apr_pool_t *pool)
+ void svn_fs_close_root(svn_fs_root_t *root)
+
cdef extern from "svn_repos.h":
ctypedef struct svn_repos_t
@@ -90,6 +104,75 @@
def fs(self):
return FileSystem(self)
+cdef class FileSystemRoot:
+ cdef svn_fs_root_t *root
+ cdef apr_pool_t *pool
+
+ def __dealloc__(self):
+ if self.pool != NULL:
+ apr_pool_destroy(self.pool)
+
+ def check_path(self, char *path):
+ cdef svn_node_kind_t kind
+ cdef apr_pool_t *pool
+ pool = Pool(NULL)
+ check_error(svn_fs_check_path(&kind, self.root, path, pool))
+ apr_pool_destroy(pool)
+ return kind
+
+ def make_dir(self, char *path):
+ cdef apr_pool_t *pool
+ pool = Pool(self.pool)
+ check_error(svn_fs_make_dir(self.root, path, pool))
+ apr_pool_destroy(pool)
+
+ def delete(self, char *path):
+ cdef apr_pool_t *pool
+ pool = Pool(self.pool)
+ check_error(svn_fs_delete(self.root, path, pool))
+ apr_pool_destroy(pool)
+
+ def copy(self, char *from_path, FileSystemRoot to_root, char *to_path):
+ cdef apr_pool_t *pool
+ pool = Pool(self.pool)
+ check_error(svn_fs_copy(self.root, from_path, to_root.root, to_path, pool))
+ apr_pool_destroy(pool)
+
+ def file_length(self, char *path):
+ cdef apr_pool_t *pool
+ cdef svn_filesize_t length
+ pool = Pool(self.pool)
+ check_error(svn_fs_file_length(&length, self.root, path, pool))
+ apr_pool_destroy(pool)
+ return length
+
+ def file_md5_checksum(self, char *path):
+ cdef char digest[64]
+ cdef apr_pool_t *pool
+ pool = Pool(NULL)
+ check_error(svn_fs_file_md5_checksum(<unsigned char*>digest, self.root, path, pool))
+ ret = digest
+ apr_pool_destroy(pool)
+ return ret
+
+ def file_contents(self, char *path):
+ cdef apr_pool_t *pool
+ cdef svn_stream_t *stream
+ pool = Pool(self.pool)
+ check_error(svn_fs_file_contents(&stream, self.root, path, pool))
+ apr_pool_destroy(pool)
+ return None # FIXME
+
+ def is_txn_root(self):
+ return svn_fs_is_txn_root(self.root)
+
+ def is_revision_root(self):
+ return svn_fs_is_revision_root(self.root)
+
+ def close(self):
+ svn_fs_close_root(self.root)
+
+
cdef class FileSystem:
cdef svn_fs_t *fs
cdef apr_pool_t *pool
@@ -105,6 +188,22 @@
check_error(svn_fs_get_uuid(self.fs, &uuid, self.pool))
return uuid
+ def youngest_revision(self):
+ cdef apr_pool_t *pool
+ cdef svn_revnum_t youngest
+ pool = Pool(NULL)
+ check_error(svn_fs_youngest_rev(&youngest, self.fs, pool))
+ apr_pool_destroy(pool)
+ return youngest
+
+ def revision_root(self, svn_revnum_t rev):
+ cdef FileSystemRoot ret
+ ret = FileSystemRoot()
+ ret.pool = Pool(NULL)
+ check_error(svn_fs_revision_root(&ret.root, self.fs, rev, ret.pool))
+ return ret
+
+
LOAD_UUID_DEFAULT = 0
LOAD_UUID_IGNORE = 1
LOAD_UUID_FORCE = 2
More information about the bazaar-commits
mailing list