Rev 964: Wrap last few ra functions. in file:///data/jelmer/bzr-svn/pyrex/
Jelmer Vernooij
jelmer at samba.org
Thu Mar 13 17:43:13 GMT 2008
At file:///data/jelmer/bzr-svn/pyrex/
------------------------------------------------------------
revno: 964
revision-id:jelmer at samba.org-20080313174312-k5yhzqrgmrd141oo
parent: jelmer at samba.org-20080313172936-2p4ayu4auh9yglq9
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Thu 2008-03-13 18:43:12 +0100
message:
Wrap last few ra functions.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
ra.pyx ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
transport.py transport.py-20060406231150-b3472d06b3a0818d
=== modified file 'fetch.py'
--- a/fetch.py 2008-03-04 16:16:48 +0000
+++ b/fetch.py 2008-03-13 17:43:12 +0000
@@ -577,7 +577,7 @@
self.fetch(revision_id, pb, find_ghosts=False)
def _fetch_replay(self, revids, pb=None):
- """Copy a set of related revisions using svn.ra.replay.
+ """Copy a set of related revisions using ra_replay.
:param revids: Revision ids to copy.
:param pb: Optional progress bar
@@ -585,7 +585,7 @@
raise NotImplementedError(self._copy_revisions_replay)
def _fetch_switch(self, revids, pb=None, lhs_parent=None):
- """Copy a set of related revisions using svn.ra.switch.
+ """Copy a set of related revisions using ra_switch.
:param revids: List of revision ids of revisions to copy,
newest first.
=== modified file 'ra.pyx'
--- a/ra.pyx 2008-03-13 17:29:36 +0000
+++ b/ra.pyx 2008-03-13 17:43:12 +0000
@@ -320,6 +320,37 @@
svn_node_kind_t *kind,
apr_pool_t *pool)
+ svn_error_t *svn_ra_has_capability(svn_ra_session_t *session,
+ int *has, char *capability, apr_pool_t *pool)
+
+ ctypedef svn_error_t *(*svn_ra_lock_callback_t)(baton, char *path,
+ int do_lock,
+ svn_lock_t *lock,
+ svn_error_t *ra_err,
+ apr_pool_t *pool)
+
+ svn_error_t * svn_ra_unlock(svn_ra_session_t *session,
+ apr_hash_t *path_tokens,
+ int break_lock,
+ svn_ra_lock_callback_t lock_func,
+ lock_baton,
+ apr_pool_t *pool)
+
+ svn_error_t *svn_ra_lock(svn_ra_session_t *session,
+ apr_hash_t *path_revs,
+ char *comment,
+ int steal_lock,
+ svn_ra_lock_callback_t lock_func,
+ lock_baton,
+ apr_pool_t *pool)
+
+
+cdef svn_error_t *py_lock_func (baton, char *path, int do_lock,
+ svn_lock_t *lock, svn_error_t *ra_err,
+ apr_pool_t *pool):
+ # FIXME: pass lock and ra_err, too
+ baton(path, do_lock)
+
cdef class Reporter:
"""Change reporter."""
@@ -489,8 +520,8 @@
cdef apr_hash_t *hash_lock_tokens
temp_pool = Pool(self.pool)
_check_error(svn_ra_get_commit_editor2(self.ra, &editor,
- &edit_baton, revprops[SVN_PROP_REVISION_LOG], py_commit_callback,
- commit_callback, hash_lock_tokens, keep_locks, temp_pool))
+ &edit_baton, revprops[SVN_PROP_REVISION_LOG], py_commit_callback,
+ commit_callback, hash_lock_tokens, keep_locks, temp_pool))
apr_pool_destroy(temp_pool)
return None # FIXME: convert editor
@@ -535,6 +566,33 @@
apr_pool_destroy(temp_pool)
return kind
+ def has_capability(self, capability):
+ cdef apr_pool_t *temp_pool
+ cdef int has
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_has_capability(self.ra, &has, capability,
+ temp_pool))
+ apr_pool_destroy(temp_pool)
+ return has
+
+ def unlock(self, path_tokens, break_lock, lock_func):
+ cdef apr_pool_t *temp_pool
+ cdef apr_hash_t *hash_path_tokens
+ temp_pool = Pool(self.pool)
+ # FIXME: Convert path_tokens to a apr_hash
+ _check_error(svn_ra_unlock(self.ra, hash_path_tokens, break_lock,
+ py_lock_func, lock_func, temp_pool))
+ apr_pool_destroy(temp_pool)
+
+ def lock(self, path_revs, comment, steal_lock, lock_func):
+ cdef apr_pool_t *temp_pool
+ cdef apr_hash_t *hash_path_revs
+ # FIXME: Create hash_path_revs
+ temp_pool = Pool(self.pool)
+ _check_error(svn_ra_lock(self.ra, hash_path_revs, comment, steal_lock,
+ py_lock_func, lock_func, temp_pool))
+ apr_pool_destroy(temp_pool)
+
def __dealloc__(self):
if self.pool != NULL:
apr_pool_destroy(self.pool)
=== modified file 'transport.py'
--- a/transport.py 2008-03-13 17:29:36 +0000
+++ b/transport.py 2008-03-13 17:43:12 +0000
@@ -279,35 +279,11 @@
@convert_svn_error
def get_log(self, path, from_revnum, to_revnum, limit, discover_changed_paths,
- strict_node_history, revprops, rcvr, pool=None):
+ strict_node_history, revprops, rcvr):
self.mutter('svn log %r:%r %r' % (from_revnum, to_revnum, path))
- if hasattr(svn.ra, 'get_log2'):
- return svn.ra.get_log2(self._ra, [self._request_path(path)],
- from_revnum, to_revnum, limit, discover_changed_paths,
- strict_node_history, False,
- revprops, rcvr, pool)
-
- class LogEntry:
- def __init__(self, changed_paths, rev, author, date, message):
- self.changed_paths = changed_paths
- self.revprops = {}
- if svn.core.SVN_PROP_REVISION_AUTHOR in revprops:
- self.revprops[svn.core.SVN_PROP_REVISION_AUTHOR] = author
- if svn.core.SVN_PROP_REVISION_LOG in revprops:
- self.revprops[svn.core.SVN_PROP_REVISION_LOG] = message
- if svn.core.SVN_PROP_REVISION_DATE in revprops:
- self.revprops[svn.core.SVN_PROP_REVISION_DATE] = date
- # FIXME: Check other revprops
- # FIXME: Handle revprops is None
- self.revision = rev
- self.has_children = None
-
- def rcvr_convert(orig_paths, rev, author, date, message, pool):
- rcvr(LogEntry(orig_paths, rev, author, date, message), pool)
-
- return svn.ra.get_log(self._ra, [self._request_path(path)],
+ return self._ra.get_log([self._request_path(path)],
from_revnum, to_revnum, limit, discover_changed_paths,
- strict_node_history, rcvr_convert, pool)
+ strict_node_history, revprops, rcvr_convert)
def _open_real_transport(self):
if self._backing_url != self.svn_url:
@@ -333,9 +309,9 @@
self.svn_url = bzr_to_svn_url(url)
if self.svn_url == self._backing_url:
return
- if hasattr(svn.ra, 'reparent'):
+ if hasattr(self._ra, 'reparent'):
self.mutter('svn reparent %r' % url)
- self.ra.reparent(self.svn_url, self.pool)
+ self._ra.reparent(self.svn_url, self.pool)
else:
self.mutter('svn reparent (reconnect) %r' % url)
self._ra = svn.client.open_ra_session(self.svn_url.encode('utf8'),
@@ -349,13 +325,10 @@
path = self._request_path(path)
# ra_dav backends fail with strange errors if the path starts with a
# slash while other backends don't.
- if hasattr(svn.ra, 'get_dir2'):
- fields = 0
- if kind:
- fields += svn.core.SVN_DIRENT_KIND
- return self._ra.get_dir(path, revnum, fields)
- else:
- return svn.ra.get_dir(self._ra, path, revnum)
+ fields = 0
+ if kind:
+ fields += svn.core.SVN_DIRENT_KIND
+ return self._ra.get_dir(path, revnum, fields)
def _request_path(self, relpath):
if self._backing_url == self.svn_url:
@@ -396,7 +369,7 @@
def unlock(self, locks, break_lock=False):
def lock_cb(baton, path, do_lock, lock, ra_err, pool):
pass
- return svn.ra.unlock(self._ra, locks, break_lock, lock_cb)
+ return self._ra.unlock(locks, break_lock, lock_cb)
@convert_svn_error
def lock_write(self, path_revs, comment=None, steal_lock=False):
@@ -404,7 +377,7 @@
tokens = {}
def lock_cb(baton, path, do_lock, lock, ra_err, pool):
tokens[path] = lock
- svn.ra.lock(self._ra, path_revs, comment, steal_lock, lock_cb)
+ self._ra.lock(path_revs, comment, steal_lock, lock_cb)
return SvnLock(self, tokens)
@convert_svn_error
@@ -441,7 +414,7 @@
@convert_svn_error
def has_capability(self, cap):
- return svn.ra.has_capability(self._ra, cap)
+ return self._ra.has_capability(cap)
@convert_svn_error
def revprop_list(self, revnum):
More information about the bazaar-commits
mailing list