You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/09/05 08:27:00 UTC
svn commit: r1701348 [4/4] - in /subversion/branches/move-tracking-2: ./
build/ build/ac-macros/ build/generator/ subversion/
subversion/bindings/swig/include/ subversion/include/
subversion/include/private/ subversion/libsvn_auth_kwallet/ subversion/l...
Modified: subversion/branches/move-tracking-2/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnserve/serve.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnserve/serve.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnserve/serve.c Sat Sep 5 06:26:58 2015
@@ -830,7 +830,7 @@ static svn_error_t *must_have_access(svn
*/
static svn_error_t *set_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+ svn_ra_svn__list_t *params, void *baton)
{
report_driver_baton_t *b = baton;
const char *path, *lock_token, *depth_word;
@@ -840,8 +840,8 @@ static svn_error_t *set_path(svn_ra_svn_
svn_boolean_t start_empty;
SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "crb?(?c)?w",
- &path, &rev, &start_empty, &lock_token,
- &depth_word));
+ &path, &rev, &start_empty, &lock_token,
+ &depth_word));
if (depth_word)
depth = svn_depth_from_word(depth_word);
path = svn_relpath_canonicalize(path, pool);
@@ -857,7 +857,7 @@ static svn_error_t *set_path(svn_ra_svn_
}
static svn_error_t *delete_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+ svn_ra_svn__list_t *params, void *baton)
{
report_driver_baton_t *b = baton;
const char *path;
@@ -870,7 +870,7 @@ static svn_error_t *delete_path(svn_ra_s
}
static svn_error_t *link_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+ svn_ra_svn__list_t *params, void *baton)
{
report_driver_baton_t *b = baton;
const char *path, *url, *lock_token, *fs_path, *depth_word;
@@ -901,7 +901,7 @@ static svn_error_t *link_path(svn_ra_svn
}
static svn_error_t *finish_report(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+ svn_ra_svn__list_t *params, void *baton)
{
report_driver_baton_t *b = baton;
@@ -912,8 +912,11 @@ static svn_error_t *finish_report(svn_ra
return SVN_NO_ERROR;
}
-static svn_error_t *abort_report(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+abort_report(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
report_driver_baton_t *b = baton;
@@ -922,12 +925,12 @@ static svn_error_t *abort_report(svn_ra_
return SVN_NO_ERROR;
}
-static const svn_ra_svn_cmd_entry_t report_commands[] = {
+static const svn_ra_svn__cmd_entry_t report_commands[] = {
{ "set-path", set_path },
{ "delete-path", delete_path },
{ "link-path", link_path },
- { "finish-report", finish_report, TRUE },
- { "abort-report", abort_report, TRUE },
+ { "finish-report", finish_report, NULL, TRUE },
+ { "abort-report", abort_report, NULL, TRUE },
{ NULL }
};
@@ -1092,8 +1095,11 @@ get_props(apr_hash_t **props,
}
/* Set BATON->FS_PATH for the repository URL found in PARAMS. */
-static svn_error_t *reparent(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+reparent(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *url;
@@ -1111,8 +1117,11 @@ static svn_error_t *reparent(svn_ra_svn_
return SVN_NO_ERROR;
}
-static svn_error_t *get_latest_rev(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_latest_rev(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1125,8 +1134,11 @@ static svn_error_t *get_latest_rev(svn_r
return SVN_NO_ERROR;
}
-static svn_error_t *get_dated_rev(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_dated_rev(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1171,8 +1183,11 @@ static svn_error_t *do_change_rev_prop(s
return SVN_NO_ERROR;
}
-static svn_error_t *change_rev_prop2(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+change_rev_prop2(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1208,8 +1223,11 @@ static svn_error_t *change_rev_prop2(svn
return SVN_NO_ERROR;
}
-static svn_error_t *change_rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+change_rev_prop(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1225,8 +1243,11 @@ static svn_error_t *change_rev_prop(svn_
return SVN_NO_ERROR;
}
-static svn_error_t *rev_proplist(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+rev_proplist(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1250,8 +1271,11 @@ static svn_error_t *rev_proplist(svn_ra_
return SVN_NO_ERROR;
}
-static svn_error_t *rev_prop(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+rev_prop(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1291,14 +1315,15 @@ static svn_error_t *commit_done(const sv
/* Add the LOCK_TOKENS (if any) to the filesystem access context,
* checking path authorizations using the state in SB as we go.
- * LOCK_TOKENS is an array of svn_ra_svn_item_t structs. Return a
+ * LOCK_TOKENS is an array of svn_ra_svn__item_t structs. Return a
* client error if LOCK_TOKENS is not a list of lists. If a lock
* violates the authz configuration, return SVN_ERR_RA_NOT_AUTHORIZED
* to the client. Use POOL for temporary allocations only.
*/
-static svn_error_t *add_lock_tokens(const apr_array_header_t *lock_tokens,
- server_baton_t *sb,
- apr_pool_t *pool)
+static svn_error_t *
+add_lock_tokens(const svn_ra_svn__list_t *lock_tokens,
+ server_baton_t *sb,
+ apr_pool_t *pool)
{
int i;
svn_fs_access_t *fs_access;
@@ -1312,24 +1337,23 @@ static svn_error_t *add_lock_tokens(cons
for (i = 0; i < lock_tokens->nelts; ++i)
{
const char *path, *token, *full_path;
- svn_ra_svn_item_t *path_item, *token_item;
- svn_ra_svn_item_t *item = &APR_ARRAY_IDX(lock_tokens, i,
- svn_ra_svn_item_t);
+ svn_ra_svn__item_t *path_item, *token_item;
+ svn_ra_svn__item_t *item = &SVN_RA_SVN__LIST_ITEM(lock_tokens, i);
if (item->kind != SVN_RA_SVN_LIST)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Lock tokens aren't a list of lists");
- path_item = &APR_ARRAY_IDX(item->u.list, 0, svn_ra_svn_item_t);
+ path_item = &SVN_RA_SVN__LIST_ITEM(&item->u.list, 0);
if (path_item->kind != SVN_RA_SVN_STRING)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Lock path isn't a string");
- token_item = &APR_ARRAY_IDX(item->u.list, 1, svn_ra_svn_item_t);
+ token_item = &SVN_RA_SVN__LIST_ITEM(&item->u.list, 1);
if (token_item->kind != SVN_RA_SVN_STRING)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Lock token isn't a string");
- path = path_item->u.string->data;
+ path = path_item->u.string.data;
full_path = svn_fspath__join(sb->repository->fs_path->data,
svn_relpath_canonicalize(path, pool),
pool);
@@ -1338,7 +1362,7 @@ static svn_error_t *add_lock_tokens(cons
return error_create_and_log(SVN_ERR_RA_NOT_AUTHORIZED, NULL, NULL,
sb);
- token = token_item->u.string->data;
+ token = token_item->u.string.data;
SVN_ERR(svn_fs_access_add_lock_token2(fs_access, path, token));
}
@@ -1361,10 +1385,11 @@ lock_cb(void *baton,
}
/* Unlock the paths with lock tokens in LOCK_TOKENS, ignoring any errors.
- LOCK_TOKENS contains svn_ra_svn_item_t elements, assumed to be lists. */
-static svn_error_t *unlock_paths(const apr_array_header_t *lock_tokens,
- server_baton_t *sb,
- apr_pool_t *pool)
+ LOCK_TOKENS contains svn_ra_svn__item_t elements, assumed to be lists. */
+static svn_error_t *
+unlock_paths(const svn_ra_svn__list_t *lock_tokens,
+ server_baton_t *sb,
+ apr_pool_t *pool)
{
int i;
apr_pool_t *subpool = svn_pool_create(pool);
@@ -1373,18 +1398,18 @@ static svn_error_t *unlock_paths(const a
for (i = 0; i < lock_tokens->nelts; ++i)
{
- svn_ra_svn_item_t *item, *path_item, *token_item;
+ svn_ra_svn__item_t *item, *path_item, *token_item;
const char *path, *token, *full_path;
- item = &APR_ARRAY_IDX(lock_tokens, i, svn_ra_svn_item_t);
- path_item = &APR_ARRAY_IDX(item->u.list, 0, svn_ra_svn_item_t);
- token_item = &APR_ARRAY_IDX(item->u.list, 1, svn_ra_svn_item_t);
+ item = &SVN_RA_SVN__LIST_ITEM(lock_tokens, i);
+ path_item = &SVN_RA_SVN__LIST_ITEM(&item->u.list, 0);
+ token_item = &SVN_RA_SVN__LIST_ITEM(&item->u.list, 1);
- path = path_item->u.string->data;
+ path = path_item->u.string.data;
full_path = svn_fspath__join(sb->repository->fs_path->data,
svn_relpath_canonicalize(path, subpool),
subpool);
- token = token_item->u.string->data;
+ token = token_item->u.string.data;
svn_hash_sets(targets, full_path, token);
}
@@ -1401,17 +1426,20 @@ static svn_error_t *unlock_paths(const a
return SVN_NO_ERROR;
}
-static svn_error_t *commit(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+commit(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *log_msg,
*date = NULL,
*author = NULL,
*post_commit_err = NULL;
- apr_array_header_t *lock_tokens;
+ svn_ra_svn__list_t *lock_tokens;
svn_boolean_t keep_locks;
- apr_array_header_t *revprop_list;
+ svn_ra_svn__list_t *revprop_list;
apr_hash_t *revprop_table;
const svn_delta_editor_t *editor;
void *edit_baton;
@@ -1513,8 +1541,11 @@ static svn_error_t *commit(svn_ra_svn_co
return SVN_NO_ERROR;
}
-static svn_error_t *get_file(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_file(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *path, *full_path, *hex_digest;
@@ -1637,8 +1668,11 @@ static svn_error_t *get_file(svn_ra_svn_
return SVN_NO_ERROR;
}
-static svn_error_t *get_dir(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_dir(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *path, *full_path;
@@ -1651,8 +1685,8 @@ static svn_error_t *get_dir(svn_ra_svn_c
svn_boolean_t want_props, want_contents;
apr_uint64_t wants_inherited_props;
apr_uint64_t dirent_fields;
- apr_array_header_t *dirent_fields_list = NULL;
- svn_ra_svn_item_t *elt;
+ svn_ra_svn__list_t *dirent_fields_list = NULL;
+ svn_ra_svn__item_t *elt;
int i;
authz_baton_t ab;
@@ -1677,7 +1711,7 @@ static svn_error_t *get_dir(svn_ra_svn_c
for (i = 0; i < dirent_fields_list->nelts; ++i)
{
- elt = &APR_ARRAY_IDX(dirent_fields_list, i, svn_ra_svn_item_t);
+ elt = &SVN_RA_SVN__LIST_ITEM(dirent_fields_list, i);
if (elt->kind != SVN_RA_SVN_WORD)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
@@ -1838,8 +1872,11 @@ static svn_error_t *get_dir(svn_ra_svn_c
return svn_ra_svn__write_tuple(conn, pool, "!))");
}
-static svn_error_t *update(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+update(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1893,8 +1930,11 @@ static svn_error_t *update(svn_ra_svn_co
return SVN_NO_ERROR;
}
-static svn_error_t *switch_cmd(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+switch_cmd(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1943,8 +1983,11 @@ static svn_error_t *switch_cmd(svn_ra_sv
(ignore_ancestry != svn_tristate_false));
}
-static svn_error_t *status(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+status(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -1979,8 +2022,11 @@ static svn_error_t *status(svn_ra_svn_co
depth, FALSE, FALSE);
}
-static svn_error_t *diff(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+diff(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -2045,12 +2091,16 @@ static svn_error_t *diff(svn_ra_svn_conn
ASSUMPTION: When performing a 'merge' with two URLs at different
revisions, the client will call this command more than once. */
-static svn_error_t *get_mergeinfo(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_mergeinfo(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
- apr_array_header_t *paths, *canonical_paths;
+ svn_ra_svn__list_t *paths;
+ apr_array_header_t *canonical_paths;
svn_mergeinfo_catalog_t mergeinfo;
int i;
apr_hash_index_t *hi;
@@ -2071,13 +2121,13 @@ static svn_error_t *get_mergeinfo(svn_ra
canonical_paths = apr_array_make(pool, paths->nelts, sizeof(const char *));
for (i = 0; i < paths->nelts; i++)
{
- svn_ra_svn_item_t *item = &APR_ARRAY_IDX(paths, i, svn_ra_svn_item_t);
+ svn_ra_svn__item_t *item = &SVN_RA_SVN__LIST_ITEM(paths, i);
const char *full_path;
if (item->kind != SVN_RA_SVN_STRING)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
_("Path is not a string"));
- full_path = svn_relpath_canonicalize(item->u.string->data, pool);
+ full_path = svn_relpath_canonicalize(item->u.string.data, pool);
full_path = svn_fspath__join(b->repository->fs_path->data, full_path, pool);
APR_ARRAY_PUSH(canonical_paths, const char *) = full_path;
}
@@ -2200,17 +2250,21 @@ static svn_error_t *log_receiver(void *b
return SVN_NO_ERROR;
}
-static svn_error_t *log_cmd(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+log_cmd(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
svn_error_t *err, *write_err;
server_baton_t *b = baton;
svn_revnum_t start_rev, end_rev;
const char *full_path;
svn_boolean_t send_changed_paths, strict_node, include_merged_revisions;
- apr_array_header_t *paths, *full_paths, *revprop_items, *revprops;
+ apr_array_header_t *full_paths, *revprops;
+ svn_ra_svn__list_t *paths, *revprop_items;
char *revprop_word;
- svn_ra_svn_item_t *elt;
+ svn_ra_svn__item_t *elt;
int i;
apr_uint64_t limit, include_merged_revs_param;
log_baton_t lb;
@@ -2243,11 +2297,11 @@ static svn_error_t *log_cmd(svn_ra_svn_c
sizeof(char *));
for (i = 0; i < revprop_items->nelts; i++)
{
- elt = &APR_ARRAY_IDX(revprop_items, i, svn_ra_svn_item_t);
+ elt = &SVN_RA_SVN__LIST_ITEM(revprop_items, i);
if (elt->kind != SVN_RA_SVN_STRING)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
_("Log revprop entry not a string"));
- APR_ARRAY_PUSH(revprops, const char *) = elt->u.string->data;
+ APR_ARRAY_PUSH(revprops, const char *) = elt->u.string.data;
}
}
else
@@ -2265,11 +2319,11 @@ static svn_error_t *log_cmd(svn_ra_svn_c
full_paths = apr_array_make(pool, paths->nelts, sizeof(const char *));
for (i = 0; i < paths->nelts; i++)
{
- elt = &APR_ARRAY_IDX(paths, i, svn_ra_svn_item_t);
+ elt = &SVN_RA_SVN__LIST_ITEM(paths, i);
if (elt->kind != SVN_RA_SVN_STRING)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
_("Log path entry not a string"));
- full_path = svn_relpath_canonicalize(elt->u.string->data, pool),
+ full_path = svn_relpath_canonicalize(elt->u.string.data, pool),
full_path = svn_fspath__join(b->repository->fs_path->data, full_path,
pool);
APR_ARRAY_PUSH(full_paths, const char *) = full_path;
@@ -2303,8 +2357,11 @@ static svn_error_t *log_cmd(svn_ra_svn_c
return SVN_NO_ERROR;
}
-static svn_error_t *check_path(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+check_path(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -2333,8 +2390,11 @@ static svn_error_t *check_path(svn_ra_sv
return SVN_NO_ERROR;
}
-static svn_error_t *stat_cmd(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+stat_cmd(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_revnum_t rev;
@@ -2380,14 +2440,18 @@ static svn_error_t *stat_cmd(svn_ra_svn_
return SVN_NO_ERROR;
}
-static svn_error_t *get_locations(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_locations(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
svn_error_t *err, *write_err;
server_baton_t *b = baton;
svn_revnum_t revision;
- apr_array_header_t *location_revisions, *loc_revs_proto;
- svn_ra_svn_item_t *elt;
+ apr_array_header_t *location_revisions;
+ svn_ra_svn__list_t *loc_revs_proto;
+ svn_ra_svn__item_t *elt;
int i;
const char *relative_path;
svn_revnum_t peg_revision;
@@ -2411,7 +2475,7 @@ static svn_error_t *get_locations(svn_ra
sizeof(svn_revnum_t));
for (i = 0; i < loc_revs_proto->nelts; i++)
{
- elt = &APR_ARRAY_IDX(loc_revs_proto, i, svn_ra_svn_item_t);
+ elt = &SVN_RA_SVN__LIST_ITEM(loc_revs_proto, i);
if (elt->kind != SVN_RA_SVN_NUMBER)
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Get-locations location revisions entry "
@@ -2479,10 +2543,11 @@ static svn_error_t *gls_receiver(svn_loc
segment->path);
}
-static svn_error_t *get_location_segments(svn_ra_svn_conn_t *conn,
- apr_pool_t *pool,
- apr_array_header_t *params,
- void *baton)
+static svn_error_t *
+get_location_segments(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
svn_error_t *err, *write_err;
server_baton_t *b = baton;
@@ -2644,8 +2709,11 @@ static svn_error_t *file_rev_handler(voi
return SVN_NO_ERROR;
}
-static svn_error_t *get_file_revs(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_file_revs(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_error_t *err, *write_err;
@@ -2697,8 +2765,11 @@ static svn_error_t *get_file_revs(svn_ra
return SVN_NO_ERROR;
}
-static svn_error_t *lock(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+lock(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *path;
@@ -2771,11 +2842,14 @@ clear_lock_result_hash(apr_hash_t *resul
}
}
-static svn_error_t *lock_many(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+lock_many(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
- apr_array_header_t *path_revs;
+ svn_ra_svn__list_t *path_revs;
const char *comment;
svn_boolean_t steal_lock;
int i;
@@ -2802,8 +2876,7 @@ static svn_error_t *lock_many(svn_ra_svn
{
const char *path, *full_path;
svn_revnum_t current_rev;
- svn_ra_svn_item_t *item = &APR_ARRAY_IDX(path_revs, i,
- svn_ra_svn_item_t);
+ svn_ra_svn__item_t *item = &SVN_RA_SVN__LIST_ITEM(path_revs, i);
svn_fs_lock_target_t *target;
svn_pool_clear(subpool);
@@ -2812,7 +2885,7 @@ static svn_error_t *lock_many(svn_ra_svn
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Lock requests should be list of lists");
- SVN_ERR(svn_ra_svn__parse_tuple(item->u.list, subpool, "c(?r)", &path,
+ SVN_ERR(svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?r)", &path,
¤t_rev));
full_path = svn_fspath__join(b->repository->fs_path->data,
@@ -2866,14 +2939,13 @@ static svn_error_t *lock_many(svn_ra_svn
{
const char *path, *full_path;
svn_revnum_t current_rev;
- svn_ra_svn_item_t *item = &APR_ARRAY_IDX(path_revs, i,
- svn_ra_svn_item_t);
+ svn_ra_svn__item_t *item = &SVN_RA_SVN__LIST_ITEM(path_revs, i);
struct lock_result_t *result;
svn_pool_clear(subpool);
- write_err = svn_ra_svn__parse_tuple(item->u.list, subpool, "c(?r)", &path,
- ¤t_rev);
+ write_err = svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?r)",
+ &path, ¤t_rev);
if (write_err)
break;
@@ -2927,8 +2999,11 @@ static svn_error_t *lock_many(svn_ra_svn
return SVN_NO_ERROR;
}
-static svn_error_t *unlock(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+unlock(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *path, *token, *full_path;
@@ -2954,12 +3029,15 @@ static svn_error_t *unlock(svn_ra_svn_co
return SVN_NO_ERROR;
}
-static svn_error_t *unlock_many(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+unlock_many(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
svn_boolean_t break_lock;
- apr_array_header_t *unlock_tokens;
+ svn_ra_svn__list_t *unlock_tokens;
int i;
apr_pool_t *subpool;
svn_error_t *err = SVN_NO_ERROR, *write_err = SVN_NO_ERROR;
@@ -2979,8 +3057,7 @@ static svn_error_t *unlock_many(svn_ra_s
/* Parse the unlock requests from PATH_REVS into TARGETS. */
for (i = 0; i < unlock_tokens->nelts; i++)
{
- svn_ra_svn_item_t *item = &APR_ARRAY_IDX(unlock_tokens, i,
- svn_ra_svn_item_t);
+ svn_ra_svn__item_t *item = &SVN_RA_SVN__LIST_ITEM(unlock_tokens, i);
const char *path, *full_path, *token;
svn_pool_clear(subpool);
@@ -2989,7 +3066,7 @@ static svn_error_t *unlock_many(svn_ra_s
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Unlock request should be a list of lists");
- SVN_ERR(svn_ra_svn__parse_tuple(item->u.list, subpool, "c(?c)", &path,
+ SVN_ERR(svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?c)", &path,
&token));
if (!token)
token = "";
@@ -3042,14 +3119,13 @@ static svn_error_t *unlock_many(svn_ra_s
for (i = 0; i < unlock_tokens->nelts; ++i)
{
const char *path, *token, *full_path;
- svn_ra_svn_item_t *item = &APR_ARRAY_IDX(unlock_tokens, i,
- svn_ra_svn_item_t);
+ svn_ra_svn__item_t *item = &SVN_RA_SVN__LIST_ITEM(unlock_tokens, i);
struct lock_result_t *result;
svn_pool_clear(subpool);
- write_err = svn_ra_svn__parse_tuple(item->u.list, subpool, "c(?c)", &path,
- &token);
+ write_err = svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?c)",
+ &path, &token);
if (write_err)
break;
@@ -3096,8 +3172,11 @@ static svn_error_t *unlock_many(svn_ra_s
return SVN_NO_ERROR;
}
-static svn_error_t *get_lock(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_lock(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *path;
@@ -3124,8 +3203,11 @@ static svn_error_t *get_lock(svn_ra_svn_
return SVN_NO_ERROR;
}
-static svn_error_t *get_locks(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+get_locks(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
server_baton_t *b = baton;
const char *path;
@@ -3213,8 +3295,11 @@ static svn_error_t *replay_one_revision(
return svn_ra_svn__write_cmd_finish_replay(conn, pool);
}
-static svn_error_t *replay(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+replay(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
svn_revnum_t rev, low_water_mark;
svn_boolean_t send_deltas;
@@ -3233,8 +3318,11 @@ static svn_error_t *replay(svn_ra_svn_co
return SVN_NO_ERROR;
}
-static svn_error_t *replay_range(svn_ra_svn_conn_t *conn, apr_pool_t *pool,
- apr_array_header_t *params, void *baton)
+static svn_error_t *
+replay_range(svn_ra_svn_conn_t *conn,
+ apr_pool_t *pool,
+ svn_ra_svn__list_t *params,
+ void *baton)
{
svn_revnum_t start_rev, end_rev, rev, low_water_mark;
svn_boolean_t send_deltas;
@@ -3281,7 +3369,7 @@ static svn_error_t *replay_range(svn_ra_
static svn_error_t *
get_deleted_rev(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- apr_array_header_t *params,
+ svn_ra_svn__list_t *params,
void *baton)
{
server_baton_t *b = baton;
@@ -3305,7 +3393,7 @@ get_deleted_rev(svn_ra_svn_conn_t *conn,
static svn_error_t *
get_inherited_props(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- apr_array_header_t *params,
+ svn_ra_svn__list_t *params,
void *baton)
{
server_baton_t *b = baton;
@@ -3369,7 +3457,7 @@ get_inherited_props(svn_ra_svn_conn_t *c
return SVN_NO_ERROR;
}
-static const svn_ra_svn_cmd_entry_t main_commands[] = {
+static const svn_ra_svn__cmd_entry_t main_commands[] = {
{ "reparent", reparent },
{ "get-latest-rev", get_latest_rev },
{ "get-dated-rev", get_dated_rev },
@@ -3774,7 +3862,7 @@ construct_server_baton(server_baton_t **
svn_error_t *err, *io_err;
apr_uint64_t ver;
const char *client_url, *ra_client_string, *client_string;
- apr_array_header_t *caplist;
+ svn_ra_svn__list_t *caplist;
apr_pool_t *conn_pool = svn_ra_svn__get_pool(conn);
server_baton_t *b = apr_pcalloc(conn_pool, sizeof(*b));
fs_warning_baton_t *warn_baton;
@@ -3840,7 +3928,7 @@ construct_server_baton(server_baton_t **
return SVN_NO_ERROR;
client_url = svn_uri_canonicalize(client_url, conn_pool);
- SVN_ERR(svn_ra_svn_set_capabilities(conn, caplist));
+ SVN_ERR(svn_ra_svn__set_capabilities(conn, caplist));
/* All released versions of Subversion support edit-pipeline,
* so we do not accept connections from clients that do not. */
@@ -3851,20 +3939,20 @@ construct_server_baton(server_baton_t **
they get handed to the start-commit hook). While we could add a
new interface to re-retrieve them from conn and convert the
result to a list, it's simpler to just convert caplist by hand
- here, since we already have it and turning 'svn_ra_svn_item_t's
+ here, since we already have it and turning 'svn_ra_svn__item_t's
into 'const char *'s is pretty easy.
We only record capabilities we care about. The client may report
more (because it doesn't know what the server cares about). */
{
int i;
- svn_ra_svn_item_t *item;
+ svn_ra_svn__item_t *item;
b->repository->capabilities = apr_array_make(conn_pool, 1,
sizeof(const char *));
for (i = 0; i < caplist->nelts; i++)
{
- item = &APR_ARRAY_IDX(caplist, i, svn_ra_svn_item_t);
+ item = &SVN_RA_SVN__LIST_ITEM(caplist, i);
/* ra_svn_set_capabilities() already type-checked for us */
if (strcmp(item->u.word, SVN_RA_SVN_CAP_MERGEINFO) == 0)
{
@@ -3983,7 +4071,7 @@ serve_interruptable(svn_boolean_t *termi
{
svn_boolean_t terminate = FALSE;
svn_error_t *err = NULL;
- const svn_ra_svn_cmd_entry_t *command;
+ const svn_ra_svn__cmd_entry_t *command;
apr_pool_t *iterpool = svn_pool_create(pool);
/* Prepare command parser. */
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py Sat Sep 5 06:26:58 2015
@@ -601,8 +601,8 @@ def dump_quiet(sbox):
sbox.build(create_wc = False)
- exit_code, output, errput = svntest.main.run_svnadmin("dump", sbox.repo_dir,
- '--quiet')
+ exit_code, dump, errput = svntest.main.run_svnadmin("dump", sbox.repo_dir,
+ '--quiet')
svntest.verify.compare_and_display_lines(
"Output of 'svnadmin dump --quiet' is unexpected.",
'STDERR', [], errput)
@@ -1227,7 +1227,7 @@ def fsfs_recover_handle_missing_revs_or_
#----------------------------------------------------------------------
-@Skip(svntest.main.tests_use_prepacakaged_repository)
+@Skip(svntest.main.tests_use_prepackaged_repository)
def create_in_repo_subdir(sbox):
"'svnadmin create /path/to/repo/subdir'"
@@ -3131,6 +3131,77 @@ def fsfs_pack_non_sharded(sbox):
['svnadmin: Warning - this repository is not sharded. Packing has no effect.\n'],
[], "pack", sbox.repo_dir)
+def load_revprops(sbox):
+ "svnadmin load-revprops"
+
+ sbox.build(create_wc=False, empty=True)
+
+ dump_path = os.path.join(os.path.dirname(sys.argv[0]),
+ 'svnadmin_tests_data',
+ 'skeleton_repos.dump')
+ dump_contents = open(dump_path, 'rb').readlines()
+ load_and_verify_dumpstream(sbox, None, [], None, False, dump_contents)
+
+ svntest.actions.run_and_verify_svnlook(['Initial setup...\n', '\n'],
+ [], 'log', '-r1', sbox.repo_dir)
+
+ # After loading the dump, amend one of the log message in the repository.
+ input_file = sbox.get_tempname()
+ svntest.main.file_write(input_file, 'Modified log message...\n')
+
+ svntest.actions.run_and_verify_svnadmin([], [], 'setlog', '--bypass-hooks',
+ '-r1', sbox.repo_dir, input_file)
+ svntest.actions.run_and_verify_svnlook(['Modified log message...\n', '\n'],
+ [], 'log', '-r1', sbox.repo_dir)
+
+ # Load the same dump, but with 'svnadmin load-revprops'. Doing so should
+ # restore the log message to its original state.
+ svntest.main.run_command_stdin(svntest.main.svnadmin_binary, None, 0,
+ True, dump_contents, 'load-revprops',
+ sbox.repo_dir)
+
+ svntest.actions.run_and_verify_svnlook(['Initial setup...\n', '\n'],
+ [], 'log', '-r1', sbox.repo_dir)
+
+def dump_revprops(sbox):
+ "svnadmin dump-revprops"
+
+ sbox.build(create_wc=False)
+
+ # Dump revprops only.
+ exit_code, dump_contents, errput = \
+ svntest.actions.run_and_verify_svnadmin(None, [], "dump-revprops", "-q",
+ sbox.repo_dir)
+
+ # We expect the dump to contain no path changes
+ for line in dump_contents:
+ if line.find("Node-path: ") > -1:
+ logger.warn("Error: path change found in revprops-only dump.")
+ raise svntest.Failure
+
+ # Remember the current log message for r1
+ exit_code, log_msg, errput = \
+ svntest.actions.run_and_verify_svnlook(None, [], 'log', '-r1',
+ sbox.repo_dir)
+
+ # Now, change the log message in the repository.
+ input_file = sbox.get_tempname()
+ svntest.main.file_write(input_file, 'Modified log message...\n')
+
+ svntest.actions.run_and_verify_svnadmin([], [], 'setlog', '--bypass-hooks',
+ '-r1', sbox.repo_dir, input_file)
+ svntest.actions.run_and_verify_svnlook(['Modified log message...\n', '\n'],
+ [], 'log', '-r1', sbox.repo_dir)
+
+ # Load the same dump with 'svnadmin load-revprops'. Doing so should
+ # restore the log message to its original state.
+ svntest.main.run_command_stdin(svntest.main.svnadmin_binary, None, 0,
+ True, dump_contents, 'load-revprops',
+ sbox.repo_dir)
+
+ svntest.actions.run_and_verify_svnlook(log_msg, [], 'log', '-r1',
+ sbox.repo_dir)
+
########################################################################
# Run the tests
@@ -3189,6 +3260,8 @@ test_list = [ None,
load_no_svndate_r0,
hotcopy_read_only,
fsfs_pack_non_sharded,
+ load_revprops,
+ dump_revprops
]
if __name__ == '__main__':
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/actions.py?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/actions.py Sat Sep 5 06:26:58 2015
@@ -249,6 +249,28 @@ def run_and_verify_svnadmin2(expected_st
return exit_code, out, err
+def run_and_verify_svnfsfs(expected_stdout,
+ expected_stderr, *varargs):
+ """Like run_and_verify_svnfsfs2, but the expected exit code is
+ assumed to be 0 if no output is expected on stderr, and 1 otherwise."""
+
+ expected_exit = 0
+ if expected_stderr is not None and expected_stderr != []:
+ expected_exit = 1
+ return run_and_verify_svnfsfs2(expected_stdout, expected_stderr,
+ expected_exit, *varargs)
+
+def run_and_verify_svnfsfs2(expected_stdout, expected_stderr,
+ expected_exit, *varargs):
+ """Run svnfsfs command and check its output and exit code."""
+
+ exit_code, out, err = main.run_svnfsfs(*varargs)
+ verify.verify_outputs("Unexpected output", out, err,
+ expected_stdout, expected_stderr)
+ verify.verify_exit_code("Unexpected return code", exit_code, expected_exit)
+ return exit_code, out, err
+
+
def run_and_verify_svnversion(wc_dir, trail_url,
expected_stdout, expected_stderr, *varargs):
"""like run_and_verify_svnversion2, but the expected exit code is
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py Sat Sep 5 06:26:58 2015
@@ -1423,7 +1423,7 @@ def make_log_msg():
# Functions which check the test configuration
# (useful for conditional XFails)
-def tests_use_prepacakaged_repository():
+def tests_use_prepackaged_repository():
return options.fsfs_version is not None
def tests_verify_dump_load_cross_check():
@@ -1892,13 +1892,7 @@ def _internal_run_tests(test_list, testn
return exit_code
-def create_default_options():
- """Set the global options to the defaults, as provided by the argument
- parser."""
- _parse_options([])
-
-
-def _create_parser():
+def _create_parser(usage=None):
"""Return a parser for our test suite."""
def set_log_level(option, opt, value, parser, level=None):
if level:
@@ -1908,9 +1902,18 @@ def _create_parser():
# called from --set-log-level
logger.setLevel(getattr(logging, value, None) or int(value))
- # set up the parser
+ # Set up the parser.
+ # If you add new options, consider adding them in
+ #
+ # .../build/run_tests.py:main()
+ #
+ # and handling them in
+ #
+ # .../build/run_tests.py:TestHarness._init_py_tests()
+ #
_default_http_library = 'serf'
- usage = 'usage: %prog [options] [<test> ...]'
+ if usage is None:
+ usage = 'usage: %prog [options] [<test> ...]'
parser = optparse.OptionParser(usage=usage)
parser.add_option('-l', '--list', action='store_true', dest='list_tests',
help='Print test doc strings instead of running them')
@@ -1925,6 +1928,9 @@ def _create_parser():
parser.add_option('-p', '--parallel', action='store_const',
const=default_num_threads, dest='parallel',
help='Run the tests in parallel')
+ parser.add_option('--parallel-instances', action='store',
+ type='int', dest='parallel',
+ help='Run the given number of tests in parallel')
parser.add_option('-c', action='store_true', dest='is_child_process',
help='Flag if we are running this python test as a ' +
'child process')
@@ -2010,31 +2016,30 @@ def _create_parser():
return parser
-def _parse_options(arglist=sys.argv[1:]):
+def parse_options(arglist=sys.argv[1:], usage=None):
"""Parse the arguments in arg_list, and set the global options object with
the results"""
global options
- parser = _create_parser()
+ parser = _create_parser(usage)
(options, args) = parser.parse_args(arglist)
- # some sanity checking
+ # Normalize url to have no trailing slash
+ if options.url:
+ if options.url[-1:] == '/':
+ options.test_area_url = options.url[:-1]
+ else:
+ options.test_area_url = options.url
+
+ # Some sanity checking
if options.fsfs_packing and not options.fsfs_sharding:
parser.error("--fsfs-packing requires --fsfs-sharding")
- # If you change the below condition then change
- # ../../../../build/run_tests.py too.
if options.server_minor_version not in range(3, SVN_VER_MINOR+1):
parser.error("test harness only supports server minor versions 3-%d"
% SVN_VER_MINOR)
- if options.url:
- if options.url[-1:] == '/': # Normalize url to have no trailing slash
- options.test_area_url = options.url[:-1]
- else:
- options.test_area_url = options.url
-
# Make sure the server-minor-version matches the fsfs-version parameter.
if options.fsfs_version:
if options.fsfs_version == 6:
@@ -2184,7 +2189,7 @@ def execute_tests(test_list, serial_only
if not options:
# Override which tests to run from the commandline
- (parser, args) = _parse_options()
+ (parser, args) = parse_options()
test_selection = args
else:
parser = _create_parser()
@@ -2336,25 +2341,29 @@ def execute_tests(test_list, serial_only
# We are simply listing the tests so always exit with success.
return 0
- # don't run tests in parallel when the tests don't support it or there
- # are only a few tests to run.
+ # don't run tests in parallel when the tests don't support it or
+ # there are only a few tests to run.
+ options_parallel = options.parallel
if serial_only or len(testnums) < 2:
options.parallel = 0
- if not options.is_child_process:
- # Build out the default configuration directory
- create_config_dir(default_config_dir,
- ssl_cert=options.ssl_cert,
- ssl_url=options.test_area_url,
- http_proxy=options.http_proxy,
- exclusive_wc_locks=options.exclusive_wc_locks)
-
- # Setup the pristine repository
- svntest.actions.setup_pristine_greek_repository()
-
- # Run the tests.
- exit_code = _internal_run_tests(test_list, testnums, options.parallel,
- options.srcdir, progress_func)
+ try:
+ if not options.is_child_process:
+ # Build out the default configuration directory
+ create_config_dir(default_config_dir,
+ ssl_cert=options.ssl_cert,
+ ssl_url=options.test_area_url,
+ http_proxy=options.http_proxy,
+ exclusive_wc_locks=options.exclusive_wc_locks)
+
+ # Setup the pristine repository
+ svntest.actions.setup_pristine_greek_repository()
+
+ # Run the tests.
+ exit_code = _internal_run_tests(test_list, testnums, options.parallel,
+ options.srcdir, progress_func)
+ finally:
+ options.parallel = options_parallel
# Remove all scratchwork: the 'pristine' repository, greek tree, etc.
# This ensures that an 'import' will happen the next time we run.
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c Sat Sep 5 06:26:58 2015
@@ -388,10 +388,11 @@ load_index(const svn_test_opts_t *opts,
SVN_ERR(svn_fs_fs__dump_index(svn_repos_fs(repos), rev, receive_index,
entries, NULL, NULL, pool));
- /* Replace it with an empty index.
- * Note that the API requires at least one entry. Give it a dummy. */
+ /* Replace it with an index that declares the whole revision contents as
+ * "unused". */
+ entry = *APR_ARRAY_IDX(entries, entries->nelts-1, svn_fs_fs__p2l_entry_t *);
+ entry.size += entry.offset;
entry.offset = 0;
- entry.size = 0;
entry.type = SVN_FS_FS__ITEM_TYPE_UNUSED;
entry.item.number = SVN_FS_FS__ITEM_INDEX_UNUSED;
entry.item.revision = SVN_INVALID_REVNUM;
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c Sat Sep 5 06:26:58 2015
@@ -1524,7 +1524,7 @@ tunnel_run_checkout(const svn_test_opts_
svn_ra_callbacks2_t *cbtable;
svn_ra_session_t *session;
const char tunnel_repos_name[] = "test-run_checkout";
- svn_ra_reporter3_t *reporter;
+ const svn_ra_reporter3_t *reporter;
void *report_baton;
b->magic = TUNNEL_MAGIC;
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c Sat Sep 5 06:26:58 2015
@@ -35,8 +35,10 @@
#include "svn_delta.h"
#include "svn_config.h"
#include "svn_props.h"
+#include "svn_sorts.h"
#include "svn_version.h"
#include "private/svn_repos_private.h"
+#include "private/svn_dep_compat.h"
/* be able to look into svn_config_t */
#include "../../libsvn_subr/config_impl.h"
@@ -48,13 +50,6 @@
/* Used to terminate lines in large multi-line string literals. */
#define NL APR_EOL_STR
-#ifndef MAX
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#endif
-#ifndef MIN
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#endif
-
/* Compare strings, like strcmp but either or both may be NULL which
* compares equal to NULL and not equal to any non-NULL string. */
static int
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/io-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/io-test.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/io-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/io-test.c Sat Sep 5 06:26:58 2015
@@ -784,6 +784,44 @@ test_install_stream_to_longpath(apr_pool
}
static svn_error_t *
+test_install_stream_over_readonly_file(apr_pool_t *pool)
+{
+ const char *tmp_dir;
+ const char *final_abspath;
+ svn_stream_t *stream;
+ svn_stringbuf_t *actual_content;
+
+ /* Create an empty directory. */
+ SVN_ERR(svn_dirent_get_absolute(&tmp_dir, "test_install_stream_over_readonly_file",
+ pool));
+ SVN_ERR(svn_io_remove_dir2(tmp_dir, TRUE, NULL, NULL, pool));
+ SVN_ERR(svn_io_make_dir_recursively(tmp_dir, pool));
+ svn_test_add_dir_cleanup(tmp_dir);
+
+ final_abspath = svn_dirent_join(tmp_dir, "stream1", pool);
+
+ /* Create empty read-only file. */
+ SVN_ERR(svn_io_file_create_empty(final_abspath, pool));
+ SVN_ERR(svn_io_set_file_read_only(final_abspath, FALSE, pool));
+
+ SVN_ERR(svn_stream__create_for_install(&stream, tmp_dir, pool, pool));
+ SVN_ERR(svn_stream_puts(stream, "stream1 content"));
+ SVN_ERR(svn_stream_close(stream));
+ SVN_ERR(svn_stream__install_stream(stream,
+ final_abspath,
+ TRUE,
+ pool));
+
+ SVN_ERR(svn_stringbuf_from_file2(&actual_content,
+ final_abspath,
+ pool));
+
+ SVN_TEST_STRING_ASSERT(actual_content->data, "stream1 content");
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
test_file_size_get(apr_pool_t *pool)
{
const char *tmp_dir, *path;
@@ -823,6 +861,64 @@ test_file_size_get(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_file_rename2(apr_pool_t *pool)
+{
+ const char *tmp_dir;
+ const char *foo_path;
+ const char *bar_path;
+ svn_stringbuf_t *actual_content;
+ svn_node_kind_t actual_kind;
+
+ /* Create an empty directory. */
+ SVN_ERR(svn_dirent_get_absolute(&tmp_dir, "test_file_rename2", pool));
+ SVN_ERR(svn_io_remove_dir2(tmp_dir, TRUE, NULL, NULL, pool));
+ SVN_ERR(svn_io_make_dir_recursively(tmp_dir, pool));
+ svn_test_add_dir_cleanup(tmp_dir);
+
+ foo_path = svn_dirent_join(tmp_dir, "foo", pool);
+ bar_path = svn_dirent_join(tmp_dir, "bar", pool);
+
+ /* Test 1: Simple file rename. */
+ SVN_ERR(svn_io_file_create(foo_path, "file content", pool));
+
+ SVN_ERR(svn_io_file_rename2(foo_path, bar_path, FALSE, pool));
+
+ SVN_ERR(svn_stringbuf_from_file2(&actual_content, bar_path, pool));
+ SVN_TEST_STRING_ASSERT(actual_content->data, "file content");
+
+ SVN_ERR(svn_io_check_path(foo_path, &actual_kind, pool));
+ SVN_TEST_ASSERT(actual_kind == svn_node_none);
+ SVN_ERR(svn_io_remove_file2(bar_path, FALSE, pool));
+
+ /* Test 2: Rename file with flush_to_disk flag. */
+ SVN_ERR(svn_io_file_create(foo_path, "file content", pool));
+
+ SVN_ERR(svn_io_file_rename2(foo_path, bar_path, TRUE, pool));
+
+ SVN_ERR(svn_stringbuf_from_file2(&actual_content, bar_path, pool));
+ SVN_TEST_STRING_ASSERT(actual_content->data, "file content");
+ SVN_ERR(svn_io_check_path(foo_path, &actual_kind, pool));
+ SVN_TEST_ASSERT(actual_kind == svn_node_none);
+
+ SVN_ERR(svn_io_remove_file2(bar_path, FALSE, pool));
+
+ /* Test 3: Rename file over existing read-only file. */
+ SVN_ERR(svn_io_file_create(foo_path, "file content", pool));
+ SVN_ERR(svn_io_file_create(bar_path, "bar content", pool));
+ SVN_ERR(svn_io_set_file_read_only(bar_path, FALSE, pool));
+
+ SVN_ERR(svn_io_file_rename2(foo_path, bar_path, FALSE, pool));
+
+ SVN_ERR(svn_stringbuf_from_file2(&actual_content, bar_path, pool));
+ SVN_TEST_STRING_ASSERT(actual_content->data, "file content");
+ SVN_ERR(svn_io_check_path(foo_path, &actual_kind, pool));
+ SVN_TEST_ASSERT(actual_kind == svn_node_none);
+ SVN_ERR(svn_io_remove_file2(bar_path, FALSE, pool));
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
static int max_threads = 3;
@@ -846,8 +942,12 @@ static struct svn_test_descriptor_t test
"test ignore-enoent"),
SVN_TEST_PASS2(test_install_stream_to_longpath,
"test svn_stream__install_stream to long path"),
+ SVN_TEST_PASS2(test_install_stream_over_readonly_file,
+ "test svn_stream__install_stream over RO file"),
SVN_TEST_PASS2(test_file_size_get,
"test svn_io_file_size_get"),
+ SVN_TEST_PASS2(test_file_rename2,
+ "test svn_io_file_rename2"),
SVN_TEST_NULL
};
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c Sat Sep 5 06:26:58 2015
@@ -32,6 +32,75 @@
#include "../svn_test.h"
+struct stream_baton_t
+{
+ svn_filesize_t capacity_left;
+ char current;
+ apr_size_t max_read;
+};
+
+/* Implements svn_stream_t.read_fn. */
+static svn_error_t *
+read_handler(void *baton,
+ char *buffer,
+ apr_size_t *len)
+{
+ struct stream_baton_t *btn = baton;
+ int i;
+
+ /* Cap the read request to what we actually support. */
+ if (btn->max_read < *len)
+ *len = btn->max_read;
+ if (btn->capacity_left < *len)
+ *len = (apr_size_t)btn->capacity_left;
+
+ /* Produce output */
+ for (i = 0; i < *len; ++i)
+ {
+ buffer[i] = btn->current + 1;
+ btn->current = (btn->current + 1) & 0x3f;
+
+ btn->capacity_left--;
+ }
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+data_available_handler(void *baton,
+ svn_boolean_t *data_available)
+{
+ struct stream_baton_t *btn = baton;
+ *data_available = btn->capacity_left > 0;
+
+ return SVN_NO_ERROR;
+}
+
+/* Return a stream that produces CAPACITY characters in chunks of at most
+ * MAX_READ chars. The first char will be '\1' followed by '\2' etc. up
+ * to '\x40' and then repeating the cycle until the end of the stream.
+ * Allocate the result in RESULT_POOL. */
+static svn_stream_t *
+create_test_read_stream(svn_filesize_t capacity,
+ apr_size_t max_read,
+ apr_pool_t *result_pool)
+{
+ svn_stream_t *stream;
+ struct stream_baton_t *baton;
+
+ baton = apr_pcalloc(result_pool, sizeof(*baton));
+ baton->capacity_left = capacity;
+ baton->current = 0;
+ baton->max_read = max_read;
+
+ stream = svn_stream_create(baton, result_pool);
+ svn_stream_set_read2(stream, read_handler, NULL);
+ svn_stream_set_data_available(stream, data_available_handler);
+
+ return stream;
+}
+
+/*------------------------ Tests --------------------------- */
static svn_error_t *
test_stream_from_string(apr_pool_t *pool)
@@ -803,6 +872,70 @@ test_stream_compressed_read_full(apr_poo
return SVN_NO_ERROR;
}
+/* Utility function verifying that LINE contains LENGTH characters read
+ * from a stream returned by create_test_read_stream(). C is the first
+ * character expected in LINE. */
+static svn_error_t *
+expect_line_content(svn_stringbuf_t *line,
+ char start,
+ apr_size_t length)
+{
+ apr_size_t i;
+ char c = start - 1;
+
+ SVN_TEST_ASSERT(line->len == length);
+ for (i = 0; i < length; ++i)
+ {
+ SVN_TEST_ASSERT(line->data[i] == c + 1);
+ c = (c + 1) & 0x3f;
+ }
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_stream_buffered_wrapper(apr_pool_t *pool)
+{
+ apr_pool_t *iterpool = svn_pool_create(pool);
+ svn_stringbuf_t *line;
+ svn_boolean_t eof = FALSE;
+ apr_size_t read = 0;
+
+ /* At least a few stream chunks (16k) worth of data. */
+ const apr_size_t stream_length = 100000;
+
+ /* Our source stream delivers data in very small chunks only.
+ * This requires multiple reads per line while readline will hold marks
+ * etc. */
+ svn_stream_t *stream = create_test_read_stream(stream_length, 19, pool);
+ stream = svn_stream_wrap_buffered_read(stream, pool);
+
+ /* We told the stream not to supports seeking to the start. */
+ SVN_TEST_ASSERT_ERROR(svn_stream_seek(stream, NULL),
+ SVN_ERR_STREAM_SEEK_NOT_SUPPORTED);
+
+ /* Read all lines. Check EOF detection. */
+ while (!eof)
+ {
+ /* The local pool ensures that marks get cleaned up. */
+ svn_pool_clear(iterpool);
+ SVN_ERR(svn_stream_readline(stream, &line, "\n", &eof, iterpool));
+
+ /* Verify that we read the correct data and the full stream. */
+ if (read == 0)
+ SVN_ERR(expect_line_content(line, 1, '\n' - 1));
+ else if (eof)
+ SVN_ERR(expect_line_content(line, '\n' + 1, stream_length - read));
+ else
+ SVN_ERR(expect_line_content(line, '\n' + 1, 63));
+
+ /* Update bytes read. */
+ read += line->len + 1;
+ }
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
static int max_threads = 1;
@@ -834,6 +967,8 @@ static struct svn_test_descriptor_t test
"test svn_stringbuf_from_stream"),
SVN_TEST_PASS2(test_stream_compressed_read_full,
"test compression for streams without partial read"),
+ SVN_TEST_PASS2(test_stream_buffered_wrapper,
+ "test buffering read stream wrapper"),
SVN_TEST_NULL
};
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/wc-queries-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/wc-queries-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/wc-queries-test.c Sat Sep 5 06:26:58 2015
@@ -52,7 +52,7 @@ WC_QUERIES_SQL_DECLARE_STATEMENT_INFO(wc
/* The first query after the normal wc queries */
#define STMT_SCHEMA_FIRST STMT_CREATE_SCHEMA
-#define SQLITE_ERR(x) \
+#define SQLITE_ERR(x) do \
{ \
int sqlite_err__temp = (x); \
if (sqlite_err__temp != SQLITE_OK) \
Propchange: subversion/branches/move-tracking-2/tools/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Sep 5 06:26:58 2015
@@ -82,4 +82,4 @@
/subversion/branches/verify-at-commit/tools:1462039-1462408
/subversion/branches/verify-keep-going/tools:1439280-1546110
/subversion/branches/wc-collate-path/tools:1402685-1480384
-/subversion/trunk/tools:1606692-1697326
+/subversion/trunk/tools:1606692-1701347
Modified: subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svnbuild.sh?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svnbuild.sh (original)
+++ subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svnbuild.sh Sat Sep 5 06:26:58 2015
@@ -25,4 +25,4 @@ set -x
export JAVA_HOME=/usr/local/jdk-1.7.0
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
-(cd .. && gmake BRANCH="$branch" THREADING="no")
+(cd .. && gmake BRANCH="$branch" THREADING="no" ENABLE_PERL_BINDINGS="no")
Modified: subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh (original)
+++ subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh Sat Sep 5 06:26:58 2015
@@ -24,7 +24,7 @@ set -x
branch="$(basename $(svn info . | grep ^URL | cut -d' ' -f2))"
export MALLOC_OPTIONS=S
-(cd .. && gmake BRANCH="$branch" THREADING="no" svn-check-bindings)
+(cd .. && gmake BRANCH="$branch" THREADING="no" ENABLE_PERL_BINDINGS="no" svn-check-bindings)
grep -q "^Result: PASS$" tests.log.bindings.pl || exit 1
grep -q "^OK$" tests.log.bindings.py || exit 1
tail -n 1 tests.log.bindings.rb | grep -q ", 0 failures, 0 errors" || exit 1
Propchange: subversion/branches/move-tracking-2/tools/buildbot/slaves/svn-x64-macosx/
('svn:ignore' removed)
Modified: subversion/branches/move-tracking-2/tools/buildbot/slaves/svn-x64-macosx/setenv.sh
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/buildbot/slaves/svn-x64-macosx/setenv.sh?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/buildbot/slaves/svn-x64-macosx/setenv.sh (original)
+++ subversion/branches/move-tracking-2/tools/buildbot/slaves/svn-x64-macosx/setenv.sh Sat Sep 5 06:26:58 2015
@@ -19,7 +19,6 @@
## variables:
##
## PATH The search path
-## SVNBB_OPENSSL OpenSSL installation prefix
## SVNBB_BDB Berkeley DB installation prefix
## SVNBB_SWIG Swig installation prefix
## SVNBB_SERF Serf installation prefix
@@ -30,13 +29,12 @@
## SVNBB_APR_20_DEV Path of APR-2.0
## SVNBB_JUNIT The path of the junit.jar
## SVNBB_PARALLEL Optional: parallelization; defaults to 2
-## LIBTOOL_CONFIG Optional: libtool configuration path
##
## The invoking script will set local variable named ${scripts} that
## is the absolute path the parent of this file.
# Modify this to suit your deployment
-environment=$(cd "${scripts}/.." && pwd)/environment.sh
+environment=$(cd "${scripts}/../.." && pwd)/environment.sh
eval $(${environment})
SVNBB_PARALLEL="${SVNBB_PARALLEL-2}"
Modified: subversion/branches/move-tracking-2/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/client-side/bash_completion?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/client-side/bash_completion (original)
+++ subversion/branches/move-tracking-2/tools/client-side/bash_completion Sat Sep 5 06:26:58 2015
@@ -183,6 +183,7 @@ _svn()
optsParam="$optsParam|--native-eol|-l|--limit|-c|--change"
optsParam="$optsParam|--depth|--set-depth|--with-revprop"
optsParam="$optsParam|--cl|--changelist|--accept|--show-revs"
+ optsParam="$optsParam|--show-item"
# svn:* and other (env SVN_BASH_*_PROPS) properties
local svnProps revProps allProps psCmds propCmds
@@ -504,6 +505,10 @@ _svn()
[[ $previous = '--show-revs' ]] && values='merged eligible'
+ [[ $previous = '--show-item' ]] && values="kind url relative-url \
+ repos-root-url repos-uuid revision last-changed-revision \
+ last-changed-date last-changed-author wc-root"
+
if [[ $previous = '--username' ]] ; then
values="$SVN_BASH_USERNAME"
if [[ $SVN_BASH_COMPL_EXT == *username* ]] ; then
Propchange: subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Sep 5 06:26:58 2015
@@ -0,0 +1,7 @@
+svn-mergeinfo-normalizer
+svn-mergeinfo-normalizer.exe
+.libs
+*.o
+*.lo
+*~
+.*~
Modified: subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c (original)
+++ subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/missing-branches.c Sat Sep 5 06:26:58 2015
@@ -362,4 +362,4 @@ svn_min__branch_deleted_list(svn_min__br
svn_sort__array(result, svn_sort_compare_paths);
return result;
-}
\ No newline at end of file
+}
Modified: subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn Sat Sep 5 06:26:58 2015
@@ -151,8 +151,8 @@ APR_UTIL_URL = https://svn.apache.org/re
HTTPD_URL = https://archive.apache.org/dist/httpd/$(HTTPD_DIST)
NEON_URL = http://webdav.org/neon/$(NEON_DIST)
#SERF_URL = http://serf.googlecode.com/files/$(SERF_DIST)
-SERF_URL = https://serf.googlecode.com/svn/tags/$(SERF_VER)
-SERF_OLD_URL = https://serf.googlecode.com/svn/tags/$(SERF_OLD_VER)
+SERF_URL = https://svn.apache.org/repos/asf/serf/tags/$(SERF_VER)
+SERF_OLD_URL = https://svn.apache.org/repos/asf/serf/tags/$(SERF_OLD_VER)
SQLITE_URL = https://www.sqlite.org/2014/$(SQLITE_DIST)
CYRUS_SASL_URL = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST)
LIBMAGIC_URL = ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST)
@@ -1461,6 +1461,7 @@ $(SVN_OBJDIR)/.bindings-installed: $(SVN
# run svn regression tests
HTTPD_CHECK_CONF=$(PREFIX)/httpd/conf/httpd-svn-check-$(WC).conf
HTTPD_CHECK_USERS=$(PREFIX)/httpd/conf/httpd-svn-check-users
+HTTPD_CHECK_GROUPS=$(PREFIX)/httpd/conf/httpd-svn-check-groups
HTTPD_CHECK_PORT=8081
MOD_DONTDOTHAT_CONF=$(PREFIX)/httpd/conf/dontdothat
@@ -1470,11 +1471,17 @@ $(MOD_DONTDOTHAT_CONF):
echo >>$@.tmp '/ = deny'
mv -f $@.tmp $@
-$(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF)
+$(HTTPD_CHECK_GROUPS):
+ mkdir -p $(dir $@)
+ printf "random: jrandom\nconstant: jconstant\n" > $@
+
+$(HTTPD_CHECK_CONF): $(MOD_DONTDOTHAT_CONF) $(HTTPD_CHECK_GROUPS)
mkdir -p $(dir $@)
$(PREFIX)/httpd/bin/htpasswd -bc $(HTTPD_CHECK_USERS).tmp jrandom rayjandom
$(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp jconstant rayjandom
$(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp __dumpster__ __loadster__
+ $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JRANDOM rayjandom
+ $(PREFIX)/httpd/bin/htpasswd -b $(HTTPD_CHECK_USERS).tmp JCONSTANT rayjandom
mv -f $(HTTPD_CHECK_USERS).tmp $(HTTPD_CHECK_USERS)
echo > $@.tmp '# httpd config for make check'
echo >>$@.tmp 'ServerRoot "$(PREFIX)/httpd"'
@@ -1539,8 +1546,8 @@ endif
echo >>$@.tmp '# Location for tests using mod_dontdothat'
echo >>$@.tmp '<Location /ddt-test-work/repositories>'
echo >> $@.tmp 'DAV svn'
- echo >> $@.tmp 'SVNParentPath "$(SVN_WC)/subversion/tests/cmdline/svn-test-work/repositories"'
- echo >> $@.tmp 'AuthzSVNAccessFile "$(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz"'
+ echo >> $@.tmp 'SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/repositories'
+ echo >> $@.tmp 'AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
echo >> $@.tmp 'AuthType Basic'
echo >> $@.tmp 'AuthName "Subversion Repository"'
echo >> $@.tmp 'AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
@@ -1551,6 +1558,169 @@ ifeq ($(USE_HTTPV1),yes)
endif
echo >> $@.tmp 'DontDoThatConfigFile "$(MOD_DONTDOTHAT_CONF)"'
echo >> $@.tmp '</Location>'
+
+ echo >>$@.tmp '# Several locations for mod_authz_svn test follow'
+ echo >>$@.tmp '<Location /authz-test-work/anon>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' <IfModule mod_authz_core.c>'
+ echo >>$@.tmp ' Require all granted'
+ echo >>$@.tmp ' </IfModule>'
+ echo >>$@.tmp ' <IfModule !mod_authz_core.c>'
+ echo >>$@.tmp ' Allow from all'
+ echo >>$@.tmp ' </IfModule>'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<Location /authz-test-work/mixed>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' Require valid-user'
+ echo >>$@.tmp ' Satisfy Any'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<Location /authz-test-work/mixed-noauthwhenanon>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' Require valid-user'
+ echo >>$@.tmp ' AuthzSVNNoAuthWhenAnonymousAllowed On'
+ echo >>$@.tmp ' SVNPathAuthz On'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<Location /authz-test-work/authn>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' Require valid-user'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<Location /authz-test-work/authn-anonoff>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' Require valid-user'
+ echo >>$@.tmp ' AuthzSVNAnonymous Off'
+ echo >>$@.tmp ' SVNPathAuthz On'
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<Location /authz-test-work/authn-lcuser>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' Require valid-user'
+ echo >>$@.tmp ' AuthzForceUsernameCase Lower'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<Location /authz-test-work/authn-group>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' AuthGroupFile $(HTTPD_CHECK_GROUPS)'
+ echo >>$@.tmp ' Require group random'
+ echo >>$@.tmp ' AuthzSVNAuthoritative Off'
+ echo >>$@.tmp ' SVNPathAuthz On'
+ echo >>$@.tmp '</Location>'
+ echo >>$@.tmp '<IfModule mod_authz_core.c>'
+ echo >>$@.tmp ' <Location /authz-test-work/sallrany>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $($SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' AuthzSendForbiddenOnFailure On'
+ echo >>$@.tmp ' Satisfy All'
+ echo >>$@.tmp ' <RequireAny>'
+ echo >>$@.tmp ' Require valid-user'
+ echo >>$@.tmp ' Require expr req("ALLOW") == "1"'
+ echo >>$@.tmp ' </RequireAny>'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp ' </Location>'
+ echo >>$@.tmp ' <Location /authz-test-work/sallrall>'
+ echo >>$@.tmp ' DAV svn'
+ echo >>$@.tmp ' SVNParentPath $(SVN_WC)/subversion/tests/cmdline/svn-test-work/local_tmp'
+ echo >>$@.tmp ' AuthzSVNAccessFile $(SVN_WC)/subversion/tests/cmdline/svn-test-work/authz'
+ifeq ($(USE_HTTPV1),yes)
+ echo >>$@.tmp ' SVNAdvertiseV2Protocol off'
+endif
+ echo >>$@.tmp ' SVNListParentPath On'
+ echo >>$@.tmp ' AuthType Basic'
+ echo >>$@.tmp ' AuthName "Subversion Repository"'
+ echo >>$@.tmp ' AuthUserFile $(HTTPD_CHECK_USERS)'
+ echo >>$@.tmp ' AuthzSendForbiddenOnFailure On'
+ echo >>$@.tmp ' Satisfy All'
+ echo >>$@.tmp ' <RequireAll>'
+ echo >>$@.tmp ' Require valid-user'
+ echo >>$@.tmp ' Require expr req("ALLOW") == "1"'
+ echo >>$@.tmp ' </RequireAll>'
+ifeq ($(USE_AUTHZ_SHORT_CIRCUIT),yes)
+ echo >>$@.tmp ' SVNPathAuthz short_circuit'
+endif
+ echo >>$@.tmp ' </Location>'
+ echo >>$@.tmp '</IfModule>'
echo >>$@.tmp 'RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$$ /svn-test-work/repositories/$$1'
echo >>$@.tmp 'RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$$ /svn-test-work/repositories/$$1'
echo >>$@.tmp 'Include "conf/$(SVN_REL_WC)*-custom.conf"'
Modified: subversion/branches/move-tracking-2/tools/dist/backport.pl
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/backport.pl?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/backport.pl (original)
+++ subversion/branches/move-tracking-2/tools/dist/backport.pl Sat Sep 5 06:26:58 2015
@@ -245,7 +245,7 @@ sub nominate_usage {
print <<EOF;
nominate.pl: a tool for adding entries to STATUS.
-Usage: $0 "foo r42 bar r43 qux 45." "\$Some_justification"
+Usage: $0 "r42, r43, r45" "\$Some_justification"
Will add:
* r42, r43, r45
@@ -256,6 +256,15 @@ Will add:
+1: $availid
to STATUS. Backport branches are detected automatically.
+The revisions argument may contain arbitrary text (besides the revision
+numbers); it will be ignored. For example,
+ $0 "Committed revision 42." "\$Some_justification"
+will nominate r42.
+
+The justification can be an arbitrarily-long string; if it is wider than the
+available width, this script will wrap it for you (and allow you to review
+the result before committing).
+
The STATUS file in the current directory is used (unless argv[0] is "n", in
which case the STATUS file in the directory of argv[0] is used; the intent
is to create a symlink named "n" in the branch wc root).
Modified: subversion/branches/move-tracking-2/tools/dist/templates/rc-news.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/templates/rc-news.ezt?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/templates/rc-news.ezt (original)
+++ subversion/branches/move-tracking-2/tools/dist/templates/rc-news.ezt Sat Sep 5 06:26:58 2015
@@ -16,7 +16,7 @@
in the [version_base] release.</p>
<p>To get this release from the nearest mirror, please visit our
- <a href="/download/#[anchor]">download page</a>.</p>
+ <a href="/download.cgi#[anchor]">download page</a>.</p>
</div> <!-- #news-[date] -->
Modified: subversion/branches/move-tracking-2/tools/dist/templates/rc-release-ann.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/templates/rc-release-ann.ezt?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/templates/rc-release-ann.ezt (original)
+++ subversion/branches/move-tracking-2/tools/dist/templates/rc-release-ann.ezt Sat Sep 5 06:26:58 2015
@@ -1,7 +1,7 @@
I'm happy to announce the release of Apache Subversion [version].
Please choose the mirror closest to you by visiting:
- http://subversion.apache.org/download/#[anchor]
+ http://subversion.apache.org/download.cgi#[anchor]
The SHA1 checksums are:
Modified: subversion/branches/move-tracking-2/tools/dist/templates/stable-news.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/templates/stable-news.ezt?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/templates/stable-news.ezt (original)
+++ subversion/branches/move-tracking-2/tools/dist/templates/stable-news.ezt Sat Sep 5 06:26:58 2015
@@ -13,7 +13,7 @@
>change log</a> for more information about this release.</p>
<p>To get this release from the nearest mirror, please visit our
- <a href="/download/#[anchor]">download page</a>.</p>
+ <a href="/download.cgi#[anchor]">download page</a>.</p>
</div> <!-- #news-[date] -->
Modified: subversion/branches/move-tracking-2/tools/dist/templates/stable-release-ann.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/templates/stable-release-ann.ezt?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/templates/stable-release-ann.ezt (original)
+++ subversion/branches/move-tracking-2/tools/dist/templates/stable-release-ann.ezt Sat Sep 5 06:26:58 2015
@@ -1,7 +1,7 @@
I'm happy to announce the release of Apache Subversion [version].
Please choose the mirror closest to you by visiting:
- http://subversion.apache.org/download/#[anchor]
+ http://subversion.apache.org/download.cgi#[anchor]
The SHA1 checksums are:
Modified: subversion/branches/move-tracking-2/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/win-tests.py?rev=1701348&r1=1701347&r2=1701348&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/win-tests.py (original)
+++ subversion/branches/move-tracking-2/win-tests.py Sat Sep 5 06:26:58 2015
@@ -993,21 +993,32 @@ if not test_javahl and not test_swig:
httpd_version = gen_obj._libraries['httpd'].version
else:
httpd_version = None
+
+ opts, args = run_tests.create_parser().parse_args([])
+ opts.url = base_url
+ opts.fs_type = fs_type
+ opts.http_library = 'serf'
+ opts.server_minor_version = server_minor_version
+ opts.verbose = not quiet
+ opts.cleanup = cleanup
+ opts.enable_sasl = enable_sasl
+ opts.parallel = parallel
+ opts.config_file = config_file
+ opts.fsfs_sharding = fsfs_sharding
+ opts.fsfs_packing = fsfs_packing
+ opts.list_tests = list_tests
+ opts.svn_bin = svn_bin
+ opts.mode_filter = mode_filter
+ opts.milestone_filter = milestone_filter
+ opts.httpd_version = httpd_version
+ opts.set_log_level = log_level
+ opts.ssl_cert = ssl_cert
+ opts.exclusive_wc_locks = exclusive_wc_locks
+ opts.memcached_server = memcached_server
+ opts.skip_c_tests = skip_c_tests
+ opts.dump_load_cross_check = dump_load_cross_check
th = run_tests.TestHarness(abs_srcdir, abs_builddir,
- log_file,
- fail_log_file,
- base_url, fs_type, 'serf',
- server_minor_version, not quiet,
- cleanup, enable_sasl, parallel, config_file,
- fsfs_sharding, fsfs_packing,
- list_tests, svn_bin, mode_filter,
- milestone_filter,
- httpd_version=httpd_version,
- set_log_level=log_level, ssl_cert=ssl_cert,
- exclusive_wc_locks=exclusive_wc_locks,
- memcached_server=memcached_server,
- skip_c_tests=skip_c_tests,
- dump_load_cross_check=dump_load_cross_check)
+ log_file, fail_log_file, opts)
old_cwd = os.getcwd()
try:
os.chdir(abs_builddir)
Propchange: subversion/branches/move-tracking-2/win-tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Sep 5 06:26:58 2015
@@ -86,4 +86,4 @@
/subversion/branches/verify-at-commit/win-tests.py:1462039-1462408
/subversion/branches/verify-keep-going/win-tests.py:1439280-1546110
/subversion/branches/wc-collate-path/win-tests.py:1402685-1480384
-/subversion/trunk/win-tests.py:1606692-1692852
+/subversion/trunk/win-tests.py:1606692-1701347