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