You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2012/02/21 05:59:16 UTC
svn commit: r1291593 - in /subversion/trunk/subversion:
libsvn_client/client.h libsvn_client/ra.c libsvn_client/util.c
libsvn_ra_svn/client.c libsvn_ra_svn/editorp.c libsvn_ra_svn/ra_svn.h
Author: hwright
Date: Tue Feb 21 04:59:16 2012
New Revision: 1291593
URL: http://svn.apache.org/viewvc?rev=1291593&view=rev
Log:
Ev2 shims: Implement shim callback registration for ra_svn, and register
callbacks from libsvn_client. Said callbacks don't actually do anything yet,
which doesn't help with correctness, but at least the majority of the tests
now FAIL, rather than simply crash.
* subversion/libsvn_ra_svn/editorp.c
(svn_ra_svn_get_editor): Use the connection's stashed shim callbacks.
* subversion/libsvn_ra_svn/client.c
(ra_svn_register_editor_shim_callbacks): New.
(ra_svn_vtable): Add new member to the initializer.
* subversion/libsvn_ra_svn/ra_svn.h
(svn_ra_svn_conn_st): Add new shim_callbacks member.
* subversion/libsvn_client/ra.c
(svn_client__open_ra_session_internal): Register the library shim callbacks
with the ra_session.
* subversion/libsvn_client/util.c
(fetch_props_func, fetch_kind_func, fetch_base_func): New.
(svn_client__get_shim_callbacks): New.
* subversion/libsvn_client/client.h
(svn_client__get_shim_callbacks): New.
Modified:
subversion/trunk/subversion/libsvn_client/client.h
subversion/trunk/subversion/libsvn_client/ra.c
subversion/trunk/subversion/libsvn_client/util.c
subversion/trunk/subversion/libsvn_ra_svn/client.c
subversion/trunk/subversion/libsvn_ra_svn/editorp.c
subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h
Modified: subversion/trunk/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=1291593&r1=1291592&r2=1291593&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Tue Feb 21 04:59:16 2012
@@ -1073,6 +1073,9 @@ svn_client__get_normalized_stream(svn_st
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/* Return a set of callbacks to use with the Ev2 shims. */
+svn_delta_shim_callbacks_t *
+svn_client__get_shim_callbacks(apr_pool_t *result_pool);
/* Return true if KIND is a revision kind that is dependent on the working
* copy. Otherwise, return false. */
Modified: subversion/trunk/subversion/libsvn_client/ra.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/ra.c?rev=1291593&r1=1291592&r2=1291593&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/ra.c (original)
+++ subversion/trunk/subversion/libsvn_client/ra.c Tue Feb 21 04:59:16 2012
@@ -40,6 +40,7 @@
#include "svn_private_config.h"
#include "private/svn_wc_private.h"
+#include "private/svn_ra_private.h"
#include "private/svn_client_private.h"
@@ -368,6 +369,9 @@ svn_client__open_ra_session_internal(svn
uuid, cbtable, cb, ctx->config, pool));
}
+ SVN_ERR(svn_ra__register_editor_shim_callbacks(*ra_session,
+ svn_client__get_shim_callbacks(pool)));
+
return SVN_NO_ERROR;
}
#undef SVN_CLIENT__MAX_REDIRECT_ATTEMPTS
Modified: subversion/trunk/subversion/libsvn_client/util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/util.c?rev=1291593&r1=1291592&r2=1291593&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/util.c (original)
+++ subversion/trunk/subversion/libsvn_client/util.c Tue Feb 21 04:59:16 2012
@@ -240,3 +240,48 @@ svn_client__assert_homogeneous_target_ty
return SVN_NO_ERROR;
}
+
+static svn_error_t *
+fetch_props_func(apr_hash_t **props,
+ void *baton,
+ const char *path,
+ svn_revnum_t base_revision,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+fetch_kind_func(svn_kind_t *kind,
+ void *baton,
+ const char *path,
+ svn_revnum_t base_revision,
+ apr_pool_t *scratch_pool)
+{
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+fetch_base_func(const char **filename,
+ void *baton,
+ const char *path,
+ svn_revnum_t base_revision,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ return SVN_NO_ERROR;
+}
+
+svn_delta_shim_callbacks_t *
+svn_client__get_shim_callbacks(apr_pool_t *result_pool)
+{
+ svn_delta_shim_callbacks_t *callbacks =
+ svn_delta_shim_callbacks_default(result_pool);
+
+ callbacks->fetch_props_func = fetch_props_func;
+ callbacks->fetch_kind_func = fetch_kind_func;
+ callbacks->fetch_base_func = fetch_base_func;
+
+ return callbacks;
+}
Modified: subversion/trunk/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/client.c?rev=1291593&r1=1291592&r2=1291593&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/client.c Tue Feb 21 04:59:16 2012
@@ -2496,6 +2496,18 @@ ra_svn_get_deleted_rev(svn_ra_session_t
return svn_ra_svn_read_cmd_response(conn, pool, "r", revision_deleted);
}
+static svn_error_t *
+ra_svn_register_editor_shim_callbacks(svn_ra_session_t *session,
+ svn_delta_shim_callbacks_t *callbacks)
+{
+ svn_ra_svn__session_baton_t *sess_baton = session->priv;
+ svn_ra_svn_conn_t *conn = sess_baton->conn;
+
+ conn->shim_callbacks = callbacks;
+
+ return SVN_NO_ERROR;
+}
+
static const svn_ra__vtable_t ra_svn_vtable = {
svn_ra_svn_version,
@@ -2532,7 +2544,8 @@ static const svn_ra__vtable_t ra_svn_vta
ra_svn_replay,
ra_svn_has_capability,
ra_svn_replay_range,
- ra_svn_get_deleted_rev
+ ra_svn_get_deleted_rev,
+ ra_svn_register_editor_shim_callbacks
};
svn_error_t *
Modified: subversion/trunk/subversion/libsvn_ra_svn/editorp.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/editorp.c?rev=1291593&r1=1291592&r2=1291593&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/editorp.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/editorp.c Tue Feb 21 04:59:16 2012
@@ -408,8 +408,6 @@ void svn_ra_svn_get_editor(const svn_del
{
svn_delta_editor_t *ra_svn_editor = svn_delta_default_editor(pool);
ra_svn_edit_baton_t *eb;
- svn_delta_shim_callbacks_t *shim_callbacks =
- svn_delta_shim_callbacks_default(pool);
eb = apr_palloc(pool, sizeof(*eb));
eb->conn = conn;
@@ -439,7 +437,7 @@ void svn_ra_svn_get_editor(const svn_del
*edit_baton = eb;
svn_error_clear(svn_editor__insert_shims(editor, edit_baton, *editor,
- *edit_baton, shim_callbacks,
+ *edit_baton, conn->shim_callbacks,
pool, pool));
}
Modified: subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h?rev=1291593&r1=1291592&r2=1291593&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/ra_svn.h Tue Feb 21 04:59:16 2012
@@ -87,6 +87,7 @@ struct svn_ra_svn_conn_st {
apr_hash_t *capabilities;
int compression_level;
char *remote_ip;
+ svn_delta_shim_callbacks_t *shim_callbacks;
apr_pool_t *pool;
};