Rev 1427: Implement bindings for get_location_segments. in http://people.samba.org/bzr/jelmer/bzr-svn/trunk
Jelmer Vernooij
jelmer at samba.org
Fri Jul 4 04:49:46 BST 2008
At http://people.samba.org/bzr/jelmer/bzr-svn/trunk
------------------------------------------------------------
revno: 1427
revision-id: jelmer at samba.org-20080704034940-cw4rsythqng27hwh
parent: jelmer at samba.org-20080704033212-31bzsqayn5jka0v6
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Fri 2008-07-04 05:49:40 +0200
message:
Implement bindings for get_location_segments.
modified:
ra.c ra.pyx-20080313140933-qybkqaxe3m4mcll7-1
=== modified file 'ra.c'
--- a/ra.c 2008-07-04 02:18:02 +0000
+++ b/ra.c 2008-07-04 03:49:40 +0000
@@ -1647,6 +1647,50 @@
return NULL;
#endif
}
+
+#if SVN_VER_MAJOR >= 1 && SVN_VER_MINOR >= 5
+static svn_error_t *py_location_segment_receiver(svn_location_segment_t *segment, void *baton, apr_pool_t *pool)
+{
+ PyObject *fn = baton, *ret;
+
+ ret = PyObject_CallFunction(fn, "llz", segment->range_start, segment->range_end, segment->path);
+ if (ret == NULL)
+ return py_svn_error();
+ Py_XDECREF(ret);
+ return NULL;
+}
+#endif
+
+static PyObject *ra_get_location_segments(PyObject *self, PyObject *args)
+{
+#if SVN_VER_MAJOR >= 1 && SVN_VER_MINOR >= 5
+ RemoteAccessObject *ra = (RemoteAccessObject *)self;
+ svn_revnum_t peg_revision, start_revision, end_revision;
+ char *path;
+ PyObject *py_rcvr;
+ apr_pool_t *temp_pool;
+
+ if (!PyArg_ParseTuple(args, "slllO", &path, &peg_revision, &start_revision,
+ &end_revision, &py_rcvr))
+ return NULL;
+
+ temp_pool = Pool(NULL);
+ if (temp_pool == NULL)
+ return NULL;
+
+ RUN_RA_WITH_POOL(temp_pool, ra, svn_ra_get_location_segments(ra->ra,
+ path, peg_revision, start_revision, end_revision,
+ py_location_segment_receiver,
+ py_rcvr, temp_pool));
+
+ apr_pool_destroy(temp_pool);
+ Py_RETURN_NONE;
+#else
+ PyErr_SetString(PyExc_NotImplementedError, "mergeinfo is only supported in Subversion >= 1.5");
+ return NULL;
+#endif
+}
+
static PyObject *ra_get_file_revs(PyObject *self, PyObject *args)
{
@@ -1711,6 +1755,7 @@
{ "lock", ra_lock, METH_VARARGS, NULL },
{ "unlock", ra_unlock, METH_VARARGS, NULL },
{ "mergeinfo", ra_mergeinfo, METH_VARARGS, NULL },
+ { "get_location_segments", ra_get_location_segments, METH_VARARGS, NULL },
{ "has_capability", ra_has_capability, METH_VARARGS, NULL },
{ "check_path", ra_check_path, METH_VARARGS, NULL },
{ "get_lock", ra_get_lock, METH_VARARGS, NULL },
More information about the bazaar-commits
mailing list