Rev 961: Work on wrapping log. in file:///data/jelmer/bzr-svn/pyrex/
Jelmer Vernooij
jelmer at samba.org
Thu Mar 13 16:18:23 GMT 2008
At file:///data/jelmer/bzr-svn/pyrex/
------------------------------------------------------------
revno: 961
revision-id:jelmer at samba.org-20080313161822-zj67g3wkpt2m2duf
parent: jelmer at samba.org-20080313155602-8etettgfmn3oxhqb
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Thu 2008-03-13 17:18:22 +0100
message:
Work on wrapping log.
modified:
ra.pyx ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
=== modified file 'ra.pyx'
--- a/ra.pyx 2008-03-13 15:56:02 +0000
+++ b/ra.pyx 2008-03-13 16:18:22 +0000
@@ -53,10 +53,36 @@
raise Exception("APR Error")
return ret
+cdef extern from "apr_tables.h":
+ ctypedef struct apr_array_header_t
+ apr_array_header_t *apr_array_make(apr_pool_t *p, int nelts, int elt_size)
+ void *apr_array_push(apr_array_header_t *arr)
+ void *apr_array_pop(apr_array_header_t *arr)
+
cdef extern from "apr_hash.h":
ctypedef struct apr_hash_t
+ ctypedef struct apr_hash_index_t
apr_hash_t *apr_hash_make(apr_pool_t *pool)
void apr_hash_set(apr_hash_t *ht, char *key, long klen, char *val)
+ apr_hash_index_t *apr_hash_first(apr_pool_t *p, apr_hash_t *ht)
+ apr_hash_index_t * apr_hash_next(apr_hash_index_t *hi)
+ void apr_hash_this(apr_hash_index_t *hi, void **key,
+ long *klen, void **val)
+
+cdef extern from "svn_types.h":
+ ctypedef svn_error_t *(*svn_log_message_receiver_t) (baton, apr_hash_t *changed_paths, long revision, char *author, char *date, char *message, apr_pool_t *pool)
+
+cdef svn_error_t *py_svn_log_wrapper(baton, apr_hash_t *changed_paths, long revision, char *author, char *date, char *message, apr_pool_t *pool):
+ cdef apr_hash_index_t *idx
+ if changed_paths == NULL:
+ py_changed_paths = None
+ else:
+ py_changed_paths = {}
+ idx = apr_hash_first(pool, changed_paths)
+ while idx:
+ # FIXME: apr_hash_this(idx, key, val
+ idx = apr_hash_next(idx)
+ baton(py_changed_paths, revision, author, date, message)
cdef extern from "svn_ra.h":
svn_version_t *svn_ra_version()
@@ -116,7 +142,16 @@
char **root,
apr_pool_t *pool)
-
+ svn_error_t *svn_ra_get_log(svn_ra_session_t *session,
+ apr_array_header_t *paths,
+ long start,
+ long end,
+ int limit,
+ int discover_changed_paths,
+ int strict_node_history,
+ svn_log_message_receiver_t receiver,
+ receiver_baton,
+ apr_pool_t *pool)
def version():
"""Get libsvn_ra version information.
@@ -183,6 +218,15 @@
apr_pool_destroy(temp_pool)
return latest_revnum
+ def get_log(self, paths, start, end, callback, limit=0,
+ discover_changed_paths=True, strict_node_history=True):
+ cdef apr_array_header_t *paths_array
+ cdef apr_pool_t *temp_pool
+ _check_error(svn_ra_get_log(self.ra, paths_array, start, end, limit,
+ discover_changed_paths, strict_node_history, py_svn_log_wrapper,
+ callback, temp_pool))
+ apr_pool_destroy(temp_pool)
+
def get_repos_root(self):
"""Obtain the URL of the root of this repository."""
cdef char *root
More information about the bazaar-commits
mailing list