You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2012/09/26 01:11:02 UTC
svn commit: r1390209 - in /subversion/branches/10Gb/subversion:
include/svn_ra_svn.h libsvn_ra_svn/client.c libsvn_ra_svn/marshal.c
Author: stefan2
Date: Tue Sep 25 23:11:01 2012
New Revision: 1390209
URL: http://svn.apache.org/viewvc?rev=1390209&view=rev
Log:
On the 10Gb branch: Switch all client-side ra_svn commands to the
templated form that we already use on the server-side.
* subversion/include/svn_ra_svn.h
(svn_ra_svn_cmd_t): add client-side commands
* subversion/libsvn_ra_svn/marshal.c
(vwrite_cmd_set_path,
vwrite_cmd_link_path,
vwrite_cmd_change_rev_prop2,
vwrite_cmd_change_rev_prop,
vwrite_cmd_rev_prop,
vwrite_cmd_get_file,
vwrite_cmd_update,
vwrite_cmd_switch,
vwrite_cmd_status,
vwrite_cmd_diff,
vwrite_cmd_check_path,
vwrite_cmd_stat,
vwrite_cmd_get_file_revs,
vwrite_cmd_lock,
vwrite_cmd_unlock,
vwrite_cmd_get_locks,
vwrite_cmd_replay,
vwrite_cmd_replay_range,
vwrite_cmd_get_deleted_rev): parameter processing for new commands
(cmd_template): add entries for the client-side commands
* subversion/libsvn_ra_svn/client.c
(ra_svn_set_path,
ra_svn_delete_path,
ra_svn_link_path,
ra_svn_abort_report,
ra_svn_reparent,
ra_svn_rev_proplist,
ra_svn_rev_prop,
ra_svn_get_file,
ra_svn_update,
ra_svn_switch,
ra_svn_status,
ra_svn_diff,
ra_svn_check_path,
ra_svn_stat,
ra_svn_lock_compat,
ra_svn_get_lock,
ra_svn_get_locks,
ra_svn_replay,
ra_svn_replay_range,
ra_svn_get_deleted_rev): use templated commands
Modified:
subversion/branches/10Gb/subversion/include/svn_ra_svn.h
subversion/branches/10Gb/subversion/libsvn_ra_svn/client.c
subversion/branches/10Gb/subversion/libsvn_ra_svn/marshal.c
Modified: subversion/branches/10Gb/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/10Gb/subversion/include/svn_ra_svn.h?rev=1390209&r1=1390208&r2=1390209&view=diff
==============================================================================
--- subversion/branches/10Gb/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/10Gb/subversion/include/svn_ra_svn.h Tue Sep 25 23:11:01 2012
@@ -182,6 +182,36 @@ typedef enum svn_ra_svn_cmd_t
svn_ra_svn_cmd_apply_textdelta,
svn_ra_svn_cmd_close_edit,
svn_ra_svn_cmd_abort_edit,
+
+ svn_ra_svn_cmd_set_path,
+ svn_ra_svn_cmd_delete_path,
+ svn_ra_svn_cmd_link_path,
+ svn_ra_svn_cmd_finish_report,
+ svn_ra_svn_cmd_abort_report,
+
+ svn_ra_svn_cmd_reparent,
+ svn_ra_svn_cmd_get_latest_rev,
+ svn_ra_svn_cmd_get_dated_rev,
+ svn_ra_svn_cmd_change_rev_prop2,
+ svn_ra_svn_cmd_change_rev_prop,
+ svn_ra_svn_cmd_rev_proplist,
+ svn_ra_svn_cmd_rev_prop,
+ svn_ra_svn_cmd_get_file,
+ svn_ra_svn_cmd_update,
+ svn_ra_svn_cmd_switch,
+ svn_ra_svn_cmd_status,
+ svn_ra_svn_cmd_diff,
+ svn_ra_svn_cmd_check_path,
+ svn_ra_svn_cmd_stat,
+ svn_ra_svn_cmd_get_file_revs,
+ svn_ra_svn_cmd_lock,
+ svn_ra_svn_cmd_unlock,
+ svn_ra_svn_cmd_get_lock,
+ svn_ra_svn_cmd_get_locks,
+ svn_ra_svn_cmd_replay,
+ svn_ra_svn_cmd_replay_range,
+ svn_ra_svn_cmd_get_deleted_rev,
+
svn_ra_svn_cmd__last
} svn_ra_svn_cmd_t;
Modified: subversion/branches/10Gb/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/branches/10Gb/subversion/libsvn_ra_svn/client.c?rev=1390209&r1=1390208&r2=1390209&view=diff
==============================================================================
--- subversion/branches/10Gb/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/branches/10Gb/subversion/libsvn_ra_svn/client.c Tue Sep 25 23:11:01 2012
@@ -258,7 +258,7 @@ static svn_error_t *ra_svn_set_path(void
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_cmd(b->conn, pool, "set-path", "crb(?c)w",
+ SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, pool, svn_ra_svn_cmd_set_path,
path, rev, start_empty, lock_token,
svn_depth_to_word(depth)));
return SVN_NO_ERROR;
@@ -269,7 +269,8 @@ static svn_error_t *ra_svn_delete_path(v
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_cmd(b->conn, pool, "delete-path", "c", path));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, pool,
+ svn_ra_svn_cmd_delete_path, path));
return SVN_NO_ERROR;
}
@@ -283,9 +284,11 @@ static svn_error_t *ra_svn_link_path(voi
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_cmd(b->conn, pool, "link-path", "ccrb(?c)w",
- path, url, rev, start_empty, lock_token,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, pool,
+ svn_ra_svn_cmd_link_path,
+ path, url, rev, start_empty,
+ lock_token,
+ svn_depth_to_word(depth)));
return SVN_NO_ERROR;
}
@@ -294,7 +297,8 @@ static svn_error_t *ra_svn_finish_report
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_cmd(b->conn, b->pool, "finish-report", ""));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, b->pool,
+ svn_ra_svn_cmd_finish_report));
SVN_ERR(handle_auth_request(b->sess_baton, b->pool));
SVN_ERR(svn_ra_svn_drive_editor2(b->conn, b->pool, b->editor, b->edit_baton,
NULL, FALSE));
@@ -307,7 +311,8 @@ static svn_error_t *ra_svn_abort_report(
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_cmd(b->conn, b->pool, "abort-report", ""));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, b->pool,
+ svn_ra_svn_cmd_abort_report));
return SVN_NO_ERROR;
}
@@ -755,7 +760,8 @@ static svn_error_t *ra_svn_reparent(svn_
svn_ra_svn__session_baton_t *new_sess;
apr_uri_t uri;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "reparent", "c", url));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_reparent, url));
err = handle_auth_request(sess, pool);
if (! err)
{
@@ -804,7 +810,8 @@ static svn_error_t *ra_svn_get_latest_re
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "get-latest-rev", ""));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_get_latest_rev));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "r", rev));
return SVN_NO_ERROR;
@@ -817,7 +824,8 @@ static svn_error_t *ra_svn_get_dated_rev
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "get-dated-rev", "c",
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_get_dated_rev,
svn_time_to_cstring(tm, pool)));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "r", rev));
@@ -861,11 +869,14 @@ static svn_error_t *ra_svn_change_rev_pr
}
if (has_atomic_revprops)
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "change-rev-prop2", "rc(?s)(b?s)",
- rev, name, value, dont_care, old_value));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_change_rev_prop2,
+ rev, name, value, dont_care,
+ old_value));
else
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "change-rev-prop", "rc?s",
- rev, name, value));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_change_rev_prop,
+ rev, name, value));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, ""));
@@ -902,7 +913,8 @@ static svn_error_t *ra_svn_rev_proplist(
svn_ra_svn_conn_t *conn = sess_baton->conn;
apr_array_header_t *proplist;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "rev-proplist", "r", rev));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_rev_proplist, rev));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "l", &proplist));
SVN_ERR(svn_ra_svn_parse_proplist(proplist, pool, props));
@@ -916,7 +928,8 @@ static svn_error_t *ra_svn_rev_prop(svn_
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "rev-prop", "rc", rev, name));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_rev_prop, rev, name));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "(?s)", value));
return SVN_NO_ERROR;
@@ -1025,8 +1038,9 @@ static svn_error_t *ra_svn_get_file(svn_
svn_checksum_ctx_t *checksum_ctx;
apr_pool_t *iterpool;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "get-file", "c(?r)bb", path,
- rev, (props != NULL), (stream != NULL)));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_get_file, path, rev,
+ (props != NULL), (stream != NULL)));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "(?c)rl",
&expected_digest,
@@ -1256,9 +1270,10 @@ static svn_error_t *ra_svn_update(svn_ra
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start an update. */
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "update", "(?r)cbwb", rev, target,
- recurse, svn_depth_to_word(depth),
- send_copyfrom_args));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_update,
+ rev, target, recurse,
+ svn_depth_to_word(depth),
+ send_copyfrom_args));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1281,9 +1296,9 @@ static svn_error_t *ra_svn_switch(svn_ra
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start a switch. */
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "switch", "(?r)cbcw", rev,
- target, recurse, switch_url,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_switch,
+ rev, target, recurse, switch_url,
+ svn_depth_to_word(depth)));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1306,9 +1321,9 @@ static svn_error_t *ra_svn_status(svn_ra
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start a status operation. */
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "status", "cb(?r)w",
- target, recurse, rev,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_status,
+ target, recurse, rev,
+ svn_depth_to_word(depth)));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1334,10 +1349,10 @@ static svn_error_t *ra_svn_diff(svn_ra_s
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start a diff. */
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "diff", "(?r)cbbcbw", rev,
- target, recurse, ignore_ancestry,
- versus_url, text_deltas,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_diff,
+ rev, target, recurse, ignore_ancestry,
+ versus_url, text_deltas,
+ svn_depth_to_word(depth)));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1569,7 +1584,9 @@ static svn_error_t *ra_svn_check_path(sv
svn_ra_svn_conn_t *conn = sess_baton->conn;
const char *kind_word;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "check-path", "c(?r)", path, rev));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_check_path,
+ path, rev));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "w", &kind_word));
*kind = svn_node_kind_from_word(kind_word);
@@ -1598,7 +1615,8 @@ static svn_error_t *ra_svn_stat(svn_ra_s
apr_array_header_t *list = NULL;
svn_dirent_t *the_dirent;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "stat", "c(?r)", path, rev));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_stat,
+ path, rev));
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
N_("'stat' not implemented")));
@@ -1776,9 +1794,10 @@ static svn_error_t *ra_svn_get_file_revs
rev_pool = svn_pool_create(pool);
chunk_pool = svn_pool_create(pool);
- SVN_ERR(svn_ra_svn_write_cmd(sess_baton->conn, pool, "get-file-revs",
- "c(?r)(?r)b", path, start, end,
- include_merged_revisions));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(sess_baton->conn, pool,
+ svn_ra_svn_cmd_get_file_revs,
+ path, start, end,
+ include_merged_revisions));
/* Servers before 1.1 don't support this command. Check for this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
@@ -1907,9 +1926,10 @@ static svn_error_t *ra_svn_lock_compat(s
path = key;
revnum = val;
- SVN_ERR(svn_ra_svn_write_cmd(conn, iterpool, "lock", "c(?c)b(?r)",
- path, comment,
- steal_lock, *revnum));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, iterpool,
+ svn_ra_svn_cmd_lock,
+ path, comment,
+ steal_lock, *revnum));
/* Servers before 1.2 doesn't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
@@ -1972,8 +1992,9 @@ static svn_error_t *ra_svn_unlock_compat
else
token = NULL;
- SVN_ERR(svn_ra_svn_write_cmd(conn, iterpool, "unlock", "c(?c)b",
- path, token, break_lock));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, iterpool,
+ svn_ra_svn_cmd_unlock,
+ path, token, break_lock));
/* Servers before 1.2 don't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, iterpool),
@@ -2260,7 +2281,8 @@ static svn_error_t *ra_svn_get_lock(svn_
svn_ra_svn_conn_t* conn = sess->conn;
apr_array_header_t *list;
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "get-lock", "c", path));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_get_lock, path));
/* Servers before 1.2 doesn't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
@@ -2312,8 +2334,9 @@ static svn_error_t *ra_svn_get_locks(svn
SVN_ERR(path_relative_to_root(session, &abs_path, full_url, pool));
abs_path = svn_fspath__canonicalize(abs_path, pool);
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "get-locks", "c(w)", path,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_get_locks, path,
+ svn_depth_to_word(depth)));
/* Servers before 1.2 doesn't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
@@ -2370,8 +2393,9 @@ static svn_error_t *ra_svn_replay(svn_ra
{
svn_ra_svn__session_baton_t *sess = session->priv;
- SVN_ERR(svn_ra_svn_write_cmd(sess->conn, pool, "replay", "rrb", revision,
- low_water_mark, send_deltas));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(sess->conn, pool,
+ svn_ra_svn_cmd_replay, revision,
+ low_water_mark, send_deltas));
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
N_("Server doesn't support the replay "
@@ -2400,9 +2424,10 @@ ra_svn_replay_range(svn_ra_session_t *se
svn_revnum_t rev;
svn_boolean_t drive_aborted = FALSE;
- SVN_ERR(svn_ra_svn_write_cmd(sess->conn, pool, "replay-range", "rrrb",
- start_revision, end_revision,
- low_water_mark, send_deltas));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(sess->conn, pool,
+ svn_ra_svn_cmd_replay_range,
+ start_revision, end_revision,
+ low_water_mark, send_deltas));
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
N_("Server doesn't support the "
@@ -2499,8 +2524,9 @@ ra_svn_get_deleted_rev(svn_ra_session_t
svn_ra_svn_conn_t *conn = sess_baton->conn;
/* Transmit the parameters. */
- SVN_ERR(svn_ra_svn_write_cmd(conn, pool, "get-deleted-rev", "crr",
- path, peg_revision, end_revision));
+ SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
+ svn_ra_svn_cmd_get_deleted_rev,
+ path, peg_revision, end_revision));
/* Servers before 1.6 don't support this command. Check for this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
Modified: subversion/branches/10Gb/subversion/libsvn_ra_svn/marshal.c
URL: http://svn.apache.org/viewvc/subversion/branches/10Gb/subversion/libsvn_ra_svn/marshal.c?rev=1390209&r1=1390208&r2=1390209&view=diff
==============================================================================
--- subversion/branches/10Gb/subversion/libsvn_ra_svn/marshal.c (original)
+++ subversion/branches/10Gb/subversion/libsvn_ra_svn/marshal.c Tue Sep 25 23:11:01 2012
@@ -853,6 +853,247 @@ vwrite_cmd_no_op(svn_ra_svn_conn_t *conn
return SVN_NO_ERROR;
}
+static svn_error_t *
+vwrite_cmd_set_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_link_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_change_rev_prop2(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_string_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_string_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_change_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_string_opt(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_get_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_update(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_switch(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_status(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_diff(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_check_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_stat(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_get_file_revs(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_lock(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_unlock(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_cstring_opt(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_get_locks(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_start_list(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_word(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_end_list(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_replay(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_replay_range(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_boolean(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+vwrite_cmd_get_deleted_rev(svn_ra_svn_conn_t *conn, apr_pool_t *pool, va_list ap)
+{
+ SVN_ERR(vwrite_tuple_cstring(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+ SVN_ERR(vwrite_tuple_revision(conn, pool, ap));
+
+ return SVN_NO_ERROR;
+}
+
+
typedef svn_error_t *
(*vwrite_tuple_func)(svn_ra_svn_conn_t *, apr_pool_t *, va_list);
@@ -881,8 +1122,39 @@ static const cmd_template_t cmd_template
{"( textdelta-end ( " , 18, vwrite_tuple_cstring },
{"( apply-textdelta ( " , 20, vwrite_cmd_apply_textdelta },
{"( close-edit ( " , 15, vwrite_cmd_no_op },
- {"( abort-edit ( " , 15, vwrite_cmd_no_op }
- };
+ {"( abort-edit ( " , 15, vwrite_cmd_no_op },
+
+ {"( set-path ( " , 13, vwrite_cmd_set_path },
+ {"( delete-path ( " , 16, vwrite_tuple_cstring },
+ {"( link-path ( " , 14, vwrite_cmd_link_path },
+ {"( finish-report ( " , 18, vwrite_cmd_no_op },
+ {"( abort-report ( " , 17, vwrite_cmd_no_op },
+
+ {"( reparent ( " , 13, vwrite_tuple_cstring },
+ {"( get-latest-rev ( " , 19, vwrite_cmd_no_op },
+ {"( get-dated-rev ( " , 18, vwrite_tuple_cstring },
+ {"( change-rev-prop2 ( ", 21, vwrite_cmd_change_rev_prop2 },
+ {"( change-rev-prop ( " , 20, vwrite_cmd_change_rev_prop },
+ {"( rev-proplist ( " , 17, vwrite_tuple_revision },
+ {"( rev-prop ( " , 13, vwrite_cmd_rev_prop },
+ {"( get-file ( " , 13, vwrite_cmd_get_file },
+ {"( update ( " , 11, vwrite_cmd_update },
+ {"( switch ( " , 11, vwrite_cmd_switch },
+ {"( status ( " , 11, vwrite_cmd_status },
+ {"( diff ( " , 9, vwrite_cmd_diff },
+ {"( check-path ( " , 15, vwrite_cmd_check_path },
+ {"( stat ( " , 9, vwrite_cmd_stat },
+ {"( get-file-revs ( " , 18, vwrite_cmd_get_file_revs },
+ {"( lock ( " , 9, vwrite_cmd_lock },
+ {"( unlock ( " , 11, vwrite_cmd_unlock },
+ {"( get-lock ( " , 13, vwrite_tuple_cstring },
+ {"( get-locks ( " , 14, vwrite_cmd_get_locks },
+ {"( replay ( " , 11, vwrite_cmd_replay },
+ {"( replay-range ( " , 17, vwrite_cmd_replay_range },
+ {"( get-deleted-rev ( " , 20, vwrite_cmd_get_deleted_rev }
+ };
+
+
static svn_error_t *vwrite_tuple(svn_ra_svn_conn_t *conn, apr_pool_t *pool,