Rev 962: Wrap more ra functions. in file:///data/jelmer/bzr-svn/pyrex/
Jelmer Vernooij
jelmer at samba.org
Thu Mar 13 17:08:29 GMT 2008
At file:///data/jelmer/bzr-svn/pyrex/
------------------------------------------------------------
revno: 962
revision-id:jelmer at samba.org-20080313170828-3ni4evu6st0ifys1
parent: jelmer at samba.org-20080313161822-zj67g3wkpt2m2duf
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Thu 2008-03-13 18:08:28 +0100
message:
Wrap more ra functions.
modified:
ra.pyx ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
transport.py transport.py-20060406231150-b3472d06b3a0818d
=== modified file 'ra.pyx'
--- a/ra.pyx 2008-03-13 16:18:22 +0000
+++ b/ra.pyx 2008-03-13 17:08:28 +0000
@@ -14,18 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-cdef extern from "svn_version.h":
- ctypedef struct svn_version_t:
- int major
- int minor
- int patch
- char *tag
-
-cdef extern from "svn_error.h":
- ctypedef struct svn_error_t
-
-cdef extern from "svn_auth.h":
- ctypedef struct svn_auth_baton_t
+# APR stuff
cdef extern from "apr_errno.h":
ctypedef int apr_status_t
@@ -69,10 +58,111 @@
void apr_hash_this(apr_hash_index_t *hi, void **key,
long *klen, void **val)
+
+
+cdef extern from "svn_version.h":
+ ctypedef struct svn_version_t:
+ int major
+ int minor
+ int patch
+ char *tag
+
+cdef extern from "svn_error.h":
+ ctypedef struct svn_error_t
+
+cdef extern from "svn_auth.h":
+ ctypedef struct svn_auth_baton_t
+
+cdef extern from "svn_string.h":
+ ctypedef struct svn_string_t:
+ char *data
+ long len
+
+cdef extern from "svn_delta.h":
+ ctypedef struct svn_txdelta_window_t
+ ctypedef svn_error_t *(*svn_txdelta_window_handler_t) (svn_txdelta_window_t *window, void *baton)
+
+ ctypedef struct svn_delta_editor_t:
+ svn_error_t *(*set_target_revision)(void *edit_baton, long target_revision, apr_pool_t *pool)
+ svn_error_t *(*open_root)(void *edit_baton, long base_revision,
+ apr_pool_t *dir_pool, void **root_baton)
+
+ svn_error_t *(*delete_entry)(char *path, long revision,
+ void *parent_baton, apr_pool_t *pool)
+
+ svn_error_t *(*add_directory)(char *path,
+ void *parent_baton,
+ char *copyfrom_path,
+ long copyfrom_revision,
+ apr_pool_t *dir_pool,
+ void **child_baton)
+
+ svn_error_t *(*open_directory)(char *path, void *parent_baton,
+ long base_revision,
+ apr_pool_t *dir_pool,
+ void **child_baton)
+
+ svn_error_t *(*change_dir_prop)(void *dir_baton,
+ char *name,
+ svn_string_t *value,
+ apr_pool_t *pool)
+
+ svn_error_t *(*close_directory)(void *dir_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *(*absent_directory)(char *path, void *parent_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *(*add_file)(char *path,
+ void *parent_baton,
+ char *copy_path,
+ long copy_revision,
+ apr_pool_t *file_pool,
+ void **file_baton)
+
+ svn_error_t *(*open_file)(char *path,
+ void *parent_baton,
+ long base_revision,
+ apr_pool_t *file_pool,
+ void **file_baton)
+
+ svn_error_t *(*apply_textdelta)(void *file_baton,
+ char *base_checksum,
+ apr_pool_t *pool,
+ svn_txdelta_window_handler_t *handler,
+ void **handler_baton)
+ svn_error_t *(*change_file_prop)(void *file_baton,
+ char *name,
+ svn_string_t *value,
+ apr_pool_t *pool)
+
+ svn_error_t *(*close_file)(void *file_baton,
+ char *text_checksum,
+ apr_pool_t *pool)
+
+ svn_error_t *(*absent_file)(char *path,
+ void *parent_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *(*close_edit)(void *edit_baton, apr_pool_t *pool)
+
+ svn_error_t *(*abort_edit)(void *edit_baton, apr_pool_t *pool)
+
+
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):
+ 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) except *
+ ctypedef struct svn_commit_info_t:
+ long revision
+ char *date
+ char *author
+ char *post_commit_err
+ ctypedef svn_error_t *(*svn_commit_callback2_t) (svn_commit_info_t *commit_info, baton, apr_pool_t *pool) except *
+
+
+cdef svn_error_t *py_commit_callback(svn_commit_info_t *commit_info, baton, apr_pool_t *pool) except *:
+ baton(commit_info.revision, commit_info.date, commit_info.author, commit_info.post_commit_err)
+
+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) except *:
cdef apr_hash_index_t *idx
if changed_paths == NULL:
py_changed_paths = None
@@ -153,6 +243,76 @@
receiver_baton,
apr_pool_t *pool)
+ svn_error_t *svn_ra_do_update(svn_ra_session_t *session,
+ svn_ra_reporter2_t **reporter,
+ void **report_baton,
+ long revision_to_update_to,
+ char *update_target,
+ int recurse,
+ svn_delta_editor_t *update_editor,
+ update_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *svn_ra_do_switch(svn_ra_session_t *session,
+ svn_ra_reporter2_t **reporter,
+ void **report_baton,
+ long revision_to_switch_to,
+ char *switch_target,
+ int recurse,
+ char *switch_url,
+ svn_delta_editor_t *switch_editor,
+ switch_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *svn_ra_replay(svn_ra_session_t *session,
+ long revision,
+ long low_water_mark,
+ int send_deltas,
+ svn_delta_editor_t *editor,
+ edit_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *svn_ra_rev_proplist(svn_ra_session_t *session,
+ long rev,
+ apr_hash_t **props,
+ apr_pool_t *pool)
+
+ svn_error_t *svn_ra_get_commit_editor2(svn_ra_session_t *session,
+ svn_delta_editor_t **editor,
+ void **edit_baton,
+ char *log_msg,
+ svn_commit_callback2_t callback,
+ callback_baton,
+ apr_hash_t *lock_tokens,
+ int keep_locks,
+ apr_pool_t *pool)
+
+
+cdef class Reporter:
+ """Change reporter."""
+ cdef svn_ra_reporter2_t *reporter
+ cdef void *report_baton
+ cdef apr_pool_t *pool
+
+ def set_path(self, path, revision, start_empty, lock_token):
+ _check_error(self.reporter.set_path(self.report_baton, path, revision,
+ start_empty, lock_token, self.pool))
+
+ def delete_path(self, path):
+ _check_error(self.reporter.delete_path(self.report_baton, path,
+ self.pool))
+
+ def link_path(self, path, url, revision, start_empty, lock_token):
+ _check_error(self.reporter.link_path(self.report_baton, path, url,
+ revision, start_empty, lock_token, self.pool))
+
+ def finish_report(self):
+ _check_error(self.reporter.finish_report(self.report_baton, self.pool))
+
+ def abort_report(self):
+ _check_error(self.reporter.abort_report(self.report_baton, self.pool))
+
+
def version():
"""Get libsvn_ra version information.
@@ -237,6 +397,71 @@
apr_pool_destroy(temp_pool)
return root
+ def do_update(self, revision_to_update_to, update_target, recurse,
+ update_editor):
+ cdef svn_ra_reporter2_t *reporter
+ cdef void *report_baton
+ cdef apr_pool_t *temp_pool
+ cdef svn_delta_editor_t *editor
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_do_update(self.ra, &reporter, &report_baton,
+ revision_to_update_to, update_target, recurse,
+ editor, update_editor, temp_pool))
+ apr_pool_destroy(temp_pool)
+ ret = Reporter()
+ ret.reporter = reporter
+ ret.report_baton = report_baton
+ ret.pool = temp_pool
+ return ret
+
+ def do_switch(self, revision_to_update_to, update_target, recurse,
+ update_editor):
+ cdef svn_ra_reporter2_t *reporter
+ cdef void *report_baton
+ cdef apr_pool_t *temp_pool
+ cdef svn_delta_editor_t *editor
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_do_update(self.ra, &reporter, &report_baton,
+ revision_to_update_to, update_target, recurse,
+ editor, update_editor, temp_pool))
+ apr_pool_destroy(temp_pool)
+ return Reporter(reporter, report_baton, temp_pool)
+
+ def replay(self, revision, low_water_mark, send_deltas, update_editor):
+ cdef svn_ra_reporter2_t *reporter
+ cdef void *report_baton
+ cdef apr_pool_t *temp_pool
+ cdef svn_delta_editor_t *editor
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_replay(self.ra, revision, low_water_mark,
+ send_deltas, editor, update_editor, temp_pool))
+ apr_pool_destroy(temp_pool)
+ return Reporter(reporter, report_baton, temp_pool)
+
+ def rev_proplist(self, rev):
+ cdef apr_pool_t *temp_pool
+ cdef apr_hash_t *props
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_rev_proplist(self.ra, rev, &props, temp_pool))
+ py_props = {}
+ # FIXME: Convert props to py_props
+ apr_pool_destroy(temp_pool)
+ return py_props
+
+ def get_commit_editor(self, log_msg, commit_callback, lock_tokens,
+ keep_locks):
+ cdef apr_pool_t *temp_pool
+ cdef svn_delta_editor_t *editor
+ cdef void *edit_baton
+ cdef apr_hash_t *hash_lock_tokens
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_get_commit_editor2(self.ra, &editor,
+ &edit_baton, log_msg, py_commit_callback, commit_callback,
+ hash_lock_tokens, keep_locks, temp_pool))
+ apr_pool_destroy(temp_pool)
+ return None # FIXME: convert editor
+
+
def __dealloc__(self):
if self.pool != NULL:
apr_pool_destroy(self.pool)
=== modified file 'transport.py'
--- a/transport.py 2008-03-13 15:56:02 +0000
+++ b/transport.py 2008-03-13 17:08:28 +0000
@@ -251,41 +251,6 @@
if 'transport' in debug.debug_flags:
mutter(text)
- class Reporter:
- def __init__(self, transport, (reporter, report_baton)):
- self._reporter = reporter
- self._baton = report_baton
- self._transport = transport
-
- @convert_svn_error
- def set_path(self, path, revnum, start_empty, lock_token, pool=None):
- svn.ra.reporter2_invoke_set_path(self._reporter, self._baton,
- path, revnum, start_empty, lock_token, pool)
-
- @convert_svn_error
- def delete_path(self, path, pool=None):
- svn.ra.reporter2_invoke_delete_path(self._reporter, self._baton,
- path, pool)
-
- @convert_svn_error
- def link_path(self, path, url, revision, start_empty, lock_token,
- pool=None):
- svn.ra.reporter2_invoke_link_path(self._reporter, self._baton,
- path, url, revision, start_empty, lock_token,
- pool)
-
- @convert_svn_error
- def finish_report(self, pool=None):
- svn.ra.reporter2_invoke_finish_report(self._reporter,
- self._baton, pool)
- self._transport._unmark_busy()
-
- @convert_svn_error
- def abort_report(self, pool=None):
- svn.ra.reporter2_invoke_abort_report(self._reporter,
- self._baton, pool)
- self._transport._unmark_busy()
-
def has(self, relpath):
"""See Transport.has()."""
# TODO: Raise TransportNotPossible here instead and
@@ -340,9 +305,7 @@
self._open_real_transport()
self.mutter('svn switch -r %d -> %r' % (switch_rev, switch_url))
self._mark_busy()
- edit, edit_baton = self._make_editor(editor, pool)
- return self.Reporter(self, svn.ra.do_switch(self._ra, switch_rev, "",
- recurse, switch_url, edit, edit_baton, pool))
+ return self._ra.do_switch(switch_rev, "", recurse, switch_url, editor)
@convert_svn_error
@needs_busy
@@ -503,31 +466,27 @@
raise
@convert_svn_error
- def replay(self, revision, low_water_mark, send_deltas, editor, pool=None):
+ def replay(self, revision, low_water_mark, send_deltas, editor):
self._open_real_transport()
self.mutter('svn replay -r%r:%r' % (low_water_mark, revision))
self._mark_busy()
- edit, edit_baton = self._make_editor(editor, pool)
- svn.ra.replay(self._ra, revision, low_water_mark, send_deltas,
- edit, edit_baton, pool)
+ self._ra.replay(revision, low_water_mark, send_deltas, editor)
@convert_svn_error
- def do_update(self, revnum, recurse, editor, pool=None):
+ def do_update(self, revnum, recurse, editor):
self._open_real_transport()
self.mutter('svn update -r %r' % revnum)
self._mark_busy()
- edit, edit_baton = self._make_editor(editor, pool)
- return self.Reporter(self, svn.ra.do_update(self._ra, revnum, "",
- recurse, edit, edit_baton, pool))
+ return self._ra.do_update(revnum, "", recurse, editor))
@convert_svn_error
def has_capability(self, cap):
return svn.ra.has_capability(self._ra, cap)
@convert_svn_error
- def revprop_list(self, revnum, pool=None):
+ def revprop_list(self, revnum):
self.mutter('svn revprop-list -r %r' % revnum)
- return svn.ra.rev_proplist(self._ra, revnum, pool)
+ return self._ra.rev_proplist(revnum)
@convert_svn_error
def get_commit_editor(self, revprops, done_cb, lock_token, keep_locks):
More information about the bazaar-commits
mailing list