You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/09/06 22:02:24 UTC
svn commit: r993141 [20/25] - in /subversion/branches/performance: ./
build/ac-macros/ build/generator/ contrib/server-side/ notes/ notes/wc-ng/
subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/...
Modified: subversion/branches/performance/subversion/svn/commit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/commit-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/commit-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/commit-cmd.c Mon Sep 6 20:02:15 2010
@@ -119,6 +119,9 @@ svn_cl__commit(apr_getopt_t *os,
opt_state->keep_changelists,
opt_state->changelists,
opt_state->revprop_table,
+ ! opt_state->quiet
+ ? svn_cl__print_commit_info : NULL,
+ NULL,
ctx,
pool);
if (err)
Modified: subversion/branches/performance/subversion/svn/copy-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/copy-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/copy-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/copy-cmd.c Mon Sep 6 20:02:15 2010
@@ -139,7 +139,9 @@ svn_cl__copy(apr_getopt_t *os,
err = svn_client_copy6(sources, dst_path, TRUE,
opt_state->parents, opt_state->ignore_externals,
- opt_state->revprop_table, ctx, pool);
+ opt_state->revprop_table,
+ svn_cl__print_commit_info, NULL,
+ ctx, pool);
if (ctx->log_msg_func3)
SVN_ERR(svn_cl__cleanup_log_msg(ctx->log_msg_baton3, err, pool));
Modified: subversion/branches/performance/subversion/svn/delete-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/delete-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/delete-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/delete-cmd.c Mon Sep 6 20:02:15 2010
@@ -47,6 +47,8 @@ svn_cl__delete(apr_getopt_t *os,
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
svn_error_t *err;
+ svn_boolean_t is_url;
+ int i;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -55,7 +57,19 @@ svn_cl__delete(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)))
+ /* Check that all targets are of the same type. */
+ is_url = svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *));
+ for (i = 1; i < targets->nelts; i++)
+ {
+ const char *target = APR_ARRAY_IDX(targets, i, const char *);
+ if (is_url != svn_path_is_url(target))
+ return svn_error_return(
+ svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Cannot mix repository and working copy "
+ "targets")));
+ }
+
+ if (! is_url)
{
ctx->log_msg_func3 = NULL;
if (opt_state->message || opt_state->filedata || opt_state->revprop_table)
@@ -75,7 +89,8 @@ svn_cl__delete(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
err = svn_client_delete4(targets, opt_state->force, opt_state->keep_local,
- opt_state->revprop_table, ctx, pool);
+ opt_state->revprop_table, svn_cl__print_commit_info,
+ NULL, ctx, pool);
if (err)
err = svn_cl__may_need_force(err);
Modified: subversion/branches/performance/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/diff-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/diff-cmd.c Mon Sep 6 20:02:15 2010
@@ -284,9 +284,9 @@ svn_cl__diff(apr_getopt_t *os,
}
if (url_present && working_copy_present)
- return svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
- _("Target lists to diff may not contain "
- "both working copy paths and URLs"));
+ return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Cannot mix repository and working copy "
+ "targets"));
if (opt_state->start_revision.kind == svn_opt_revision_unspecified
&& working_copy_present)
Modified: subversion/branches/performance/subversion/svn/export-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/export-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/export-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/export-cmd.c Mon Sep 6 20:02:15 2010
@@ -87,6 +87,11 @@ svn_cl__export(apr_getopt_t *os,
SVN_ERR(svn_opt__split_arg_at_peg_revision(&to, NULL, to, pool));
}
+ if (svn_path_is_url(to))
+ return svn_error_return(svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR,
+ NULL,
+ _("'%s' is not a local path"),
+ to));
if (! opt_state->quiet)
SVN_ERR(svn_cl__notifier_mark_export(ctx->notify_baton2));
Modified: subversion/branches/performance/subversion/svn/import-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/import-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/import-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/import-cmd.c Mon Sep 6 20:02:15 2010
@@ -100,6 +100,11 @@ svn_cl__import(apr_getopt_t *os,
url = APR_ARRAY_IDX(targets, 1, const char *);
}
+ if (svn_path_is_url(path))
+ return svn_error_return(svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR,
+ NULL,
+ _("'%s' is not a local path"),
+ path));
if (! svn_path_is_url(url))
return svn_error_createf
(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
@@ -119,6 +124,8 @@ svn_cl__import(apr_getopt_t *os,
opt_state->no_ignore,
opt_state->force,
opt_state->revprop_table,
+ svn_cl__print_commit_info,
+ NULL,
ctx,
pool), pool));
Modified: subversion/branches/performance/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/log-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/log-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/log-cmd.c Mon Sep 6 20:02:15 2010
@@ -27,6 +27,7 @@
#include "svn_client.h"
#include "svn_compat.h"
+#include "svn_dirent_uri.h"
#include "svn_string.h"
#include "svn_path.h"
#include "svn_error.h"
@@ -351,6 +352,7 @@ log_entry_receiver(void *baton,
if (err->apr_err == SVN_ERR_FS_NOT_FOUND)
{
svn_error_clear(err);
+ parent = svn_uri_dirname(parent, pool);
continue;
}
if (err->apr_err == SVN_ERR_RA_ILLEGAL_URL ||
@@ -362,8 +364,6 @@ log_entry_receiver(void *baton,
}
return svn_error_return(err);
}
-
- parent = svn_uri_dirname(parent, pool);
}
svn_pool_destroy(iterpool);
}
@@ -647,10 +647,13 @@ svn_cl__log(apr_getopt_t *os,
{
target = APR_ARRAY_IDX(targets, i, const char *);
- if (svn_path_is_url(target))
- return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
- _("Only relative paths can be specified "
- "after a URL"));
+ if (svn_path_is_url(target) || target[0] == '/')
+ return svn_error_return(svn_error_createf(
+ SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Only relative paths can be specified"
+ " after a URL for 'svn log', "
+ "but '%s' is not a relative path"),
+ target));
}
}
Modified: subversion/branches/performance/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/main.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/main.c (original)
+++ subversion/branches/performance/subversion/svn/main.c Mon Sep 6 20:02:15 2010
@@ -368,7 +368,7 @@ const apr_getopt_option_t svn_cl__option
N_("override diff-cmd specified in config file\n"
" "
"[alias: --idiff]")},
- {"git-diff", opt_use_git_diff_format, 0,
+ {"git", opt_use_git_diff_format, 0,
N_("use git's extended diff format\n")},
/* Long-opt Aliases
@@ -543,7 +543,7 @@ const svn_opt_subcommand_desc2_t svn_cl_
" committed, are immediately removed from the working copy\n"
" unless the --keep-local option is given.\n"
" PATHs that are, or contain, unversioned or modified items will\n"
- " not be removed unless the --force option is given.\n"
+ " not be removed unless the --force or --keep-local option is given.\n"
"\n"
" 2. Each item specified by a URL is deleted from the repository\n"
" via an immediate commit.\n"),
@@ -934,20 +934,14 @@ const svn_opt_subcommand_desc2_t svn_cl_
" A mimetype beginning with 'text/' (or an absent mimetype) is\n"
" treated as text. Anything else is treated as binary.\n"
" svn:externals - A newline separated list of module specifiers,\n"
- " each of which consists of a relative directory path, optional\n"
- " revision flags and an URL. The ordering of the three elements\n"
- " implements different behavior. Subversion 1.4 and earlier only\n"
- " support the following formats and the URLs cannot have peg\n"
- " revisions:\n"
- " foo http://example.com/repos/zig\n"
- " foo/bar -r 1234 http://example.com/repos/zag\n"
- " Subversion 1.5 and greater support the above formats and the\n"
- " following formats where the URLs may have peg revisions:\n"
- " http://example.com/repos/zig@42 foo\n"
- " -r 1234 http://example.com/repos/zig foo/bar\n"
- " Relative URLs are supported in Subversion 1.5 and greater for\n"
- " all above formats and are indicated by starting the URL with one\n"
- " of the following strings\n"
+ " each of which consists of a URL and a relative directory path,\n"
+ " similar to the syntax of the 'svn checkout' command:\n"
+ " http://example.com/repos/zag foo/bar\n"
+ " An optional peg revision may be appended to the URL to pin the\n"
+ " external to a known revision:\n"
+ " http://example.com/repos/zig@42 foo\n"
+ " Relative URLs are indicated by starting the URL with one\n"
+ " of the following strings:\n"
" ../ to the parent directory of the extracted external\n"
" ^/ to the repository root\n"
" // to the scheme\n"
@@ -956,6 +950,13 @@ const svn_opt_subcommand_desc2_t svn_cl_
" 'relative_url relative_path' with peg revision support.\n"
" Lines in externals definitions starting with the '#' character\n"
" are considered comments and are ignored.\n"
+ " Subversion 1.4 and earlier only support the following formats\n"
+ " where peg revisions can only be specified using a -r modifier\n"
+ " and where URLs cannot be relative:\n"
+ " foo http://example.com/repos/zig\n"
+ " foo/bar -r 1234 http://example.com/repos/zag\n"
+ " Use of these formats is discouraged. They should only be used if\n"
+ " interoperability with 1.4 clients is desired.\n"
" svn:needs-lock - If present, indicates that the file should be locked\n"
" before it is modified. Makes the working copy file read-only\n"
" when it is not locked. Use 'svn propdel svn:needs-lock PATH...'\n"
@@ -1782,6 +1783,7 @@ main(int argc, const char *argv[])
break;
case opt_use_git_diff_format:
opt_state.use_git_diff_format = TRUE;
+ break;
default:
/* Hmmm. Perhaps this would be a good place to squirrel away
opts that commands like svn diff might need. Hmmm indeed. */
@@ -2228,10 +2230,6 @@ main(int argc, const char *argv[])
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
- /* Set up our commit callback. We leave the callback NULL. */
- if (!opt_state.quiet)
- ctx->commit_callback2 = svn_cl__print_commit_info;
-
/* Set up our cancellation support. */
ctx->cancel_func = svn_cl__check_cancel;
apr_signal(SIGINT, signal_handler);
Modified: subversion/branches/performance/subversion/svn/merge-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/merge-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/merge-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/merge-cmd.c Mon Sep 6 20:02:15 2010
@@ -337,6 +337,11 @@ svn_cl__merge(apr_getopt_t *os,
}
else
{
+ if (svn_path_is_url(sourcepath1) != svn_path_is_url(sourcepath2))
+ return svn_error_return(svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR,
+ NULL,
+ _("Merge sources must both be "
+ "either paths or URLs")));
err = svn_client_merge3(sourcepath1,
&first_range_start,
sourcepath2,
Modified: subversion/branches/performance/subversion/svn/mkdir-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/mkdir-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/mkdir-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/mkdir-cmd.c Mon Sep 6 20:02:15 2010
@@ -76,7 +76,8 @@ svn_cl__mkdir(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
err = svn_client_mkdir4(targets, opt_state->parents,
- opt_state->revprop_table, ctx, pool);
+ opt_state->revprop_table, svn_cl__print_commit_info,
+ NULL, ctx, pool);
if (ctx->log_msg_func3)
err = svn_cl__cleanup_log_msg(ctx->log_msg_baton3, err, pool);
Modified: subversion/branches/performance/subversion/svn/move-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/move-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/move-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/move-cmd.c Mon Sep 6 20:02:15 2010
@@ -86,7 +86,7 @@ svn_cl__move(apr_getopt_t *os,
err = svn_client_move6(targets, dst_path, opt_state->force,
TRUE, opt_state->parents, opt_state->revprop_table,
- ctx, pool);
+ svn_cl__print_commit_info, NULL, ctx, pool);
if (err)
err = svn_cl__may_need_force(err);
Modified: subversion/branches/performance/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/notify.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/notify.c (original)
+++ subversion/branches/performance/subversion/svn/notify.c Mon Sep 6 20:02:15 2010
@@ -274,7 +274,15 @@ notify(void *baton, const svn_wc_notify_
statchar_buf[0] = 'U';
}
- if (statchar_buf[0] != ' ')
+ if (n->prop_state == svn_wc_notify_state_conflicted)
+ {
+ nb->prop_conflicts++;
+ statchar_buf[1] = 'C';
+ }
+ else if (n->prop_state == svn_wc_notify_state_changed)
+ statchar_buf[1] = 'U';
+
+ if (statchar_buf[0] != ' ' || statchar_buf[1] != ' ')
{
if ((err = svn_cmdline_printf(pool, "%s %s\n",
statchar_buf, path_local)))
@@ -302,49 +310,106 @@ notify(void *baton, const svn_wc_notify_
minus = "-";
}
- /* ### APR_INT64_T_FMT isn't translator-friendly */
+ /* ### We're creating the localized strings without
+ * ### APR_INT64_T_FMT since it isn't translator-friendly */
if (n->hunk_fuzz)
{
- s = _("> applied hunk @@ -%lu,%lu +%lu,%lu @@ "
- "with offset %s");
- if ((err = svn_cmdline_printf(pool,
- apr_pstrcat(pool, s,
- "%"APR_UINT64_T_FMT
- " and fuzz %d\n",
- NULL),
- n->hunk_original_start,
- n->hunk_original_length,
- n->hunk_modified_start,
- n->hunk_modified_length,
- minus, off, n->hunk_fuzz)))
+
+ if (n->prop_name)
+ {
+ s = _("> applied hunk ## -%lu,%lu +%lu,%lu ## "
+ "with offset %s");
+
+ err = svn_cmdline_printf(pool,
+ apr_pstrcat(pool, s,
+ "%"APR_UINT64_T_FMT
+ " and fuzz %d (%s)\n",
+ NULL),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length,
+ minus, off, n->hunk_fuzz,
+ n->prop_name);
+ }
+ else
+ {
+ s = _("> applied hunk @@ -%lu,%lu +%lu,%lu @@ "
+ "with offset %s");
+
+ err = svn_cmdline_printf(pool,
+ apr_pstrcat(pool, s,
+ "%"APR_UINT64_T_FMT
+ " and fuzz %d\n",
+ NULL),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length,
+ minus, off, n->hunk_fuzz);
+ }
+
+ if (err)
goto print_error;
}
else
{
- s = _("> applied hunk @@ -%lu,%lu +%lu,%lu @@ "
- "with offset %s");
- if ((err = svn_cmdline_printf(pool,
+
+ if (n->prop_name)
+ {
+ s = _("> applied hunk ## -%lu,%lu +%lu,%lu ## "
+ "with offset %s");
+ err = svn_cmdline_printf(pool,
apr_pstrcat(pool, s,
- "%"APR_UINT64_T_FMT"\n",
+ "%"APR_UINT64_T_FMT" (%s)\n",
NULL),
n->hunk_original_start,
n->hunk_original_length,
n->hunk_modified_start,
n->hunk_modified_length,
- minus, off)))
+ minus, off, n->prop_name);
+ }
+ else
+ {
+ s = _("> applied hunk @@ -%lu,%lu +%lu,%lu @@ "
+ "with offset %s");
+ err = svn_cmdline_printf(pool,
+ apr_pstrcat(pool, s,
+ "%"APR_UINT64_T_FMT"\n",
+ NULL),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length,
+ minus, off);
+ }
+
+ if (err)
goto print_error;
}
}
else if (n->hunk_fuzz)
{
- if ((err = svn_cmdline_printf(pool,
+ if (n->prop_name)
+ err = svn_cmdline_printf(pool,
+ _("> applied hunk ## -%lu,%lu +%lu,%lu ## "
+ "with fuzz %d (%s)\n"),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length,
+ n->hunk_fuzz,
+ n->prop_name);
+ else
+ err = svn_cmdline_printf(pool,
_("> applied hunk @@ -%lu,%lu +%lu,%lu @@ "
"with fuzz %d\n"),
n->hunk_original_start,
n->hunk_original_length,
n->hunk_modified_start,
n->hunk_modified_length,
- n->hunk_fuzz)))
+ n->hunk_fuzz);
+ if (err)
goto print_error;
}
@@ -352,26 +417,50 @@ notify(void *baton, const svn_wc_notify_
case svn_wc_notify_patch_rejected_hunk:
nb->received_some_change = TRUE;
- if ((err = svn_cmdline_printf(pool,
- _("> rejected hunk "
- "@@ -%lu,%lu +%lu,%lu @@\n"),
- n->hunk_original_start,
- n->hunk_original_length,
- n->hunk_modified_start,
- n->hunk_modified_length)))
+
+ if (n->prop_name)
+ err = svn_cmdline_printf(pool,
+ _("> rejected hunk "
+ "## -%lu,%lu +%lu,%lu ## (%s)\n"),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length,
+ n->prop_name);
+ else
+ err = svn_cmdline_printf(pool,
+ _("> rejected hunk "
+ "@@ -%lu,%lu +%lu,%lu @@\n"),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length);
+ if (err)
goto print_error;
break;
case svn_wc_notify_patch_hunk_already_applied:
nb->received_some_change = TRUE;
- if ((err = svn_cmdline_printf(pool,
- _("> hunk "
- "@@ -%lu,%lu +%lu,%lu @@ "
- "already applied\n"),
- n->hunk_original_start,
- n->hunk_original_length,
- n->hunk_modified_start,
- n->hunk_modified_length)))
+ if (n->prop_name)
+ err = svn_cmdline_printf(pool,
+ _("> hunk "
+ "## -%lu,%lu +%lu,%lu ## "
+ "already applied (%s)\n"),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length,
+ n->prop_name);
+ else
+ err = svn_cmdline_printf(pool,
+ _("> hunk "
+ "@@ -%lu,%lu +%lu,%lu @@ "
+ "already applied\n"),
+ n->hunk_original_start,
+ n->hunk_original_length,
+ n->hunk_modified_start,
+ n->hunk_modified_length);
+ if (err)
goto print_error;
break;
@@ -792,6 +881,12 @@ notify(void *baton, const svn_wc_notify_
goto print_error;
break;
+ case svn_wc_notify_url_redirect:
+ err = svn_cmdline_printf(pool, _("Redirecting to URL '%s'\n"),
+ n->url);
+ if (err)
+ goto print_error;
+
default:
break;
}
Modified: subversion/branches/performance/subversion/svn/propdel-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/propdel-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/propdel-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/propdel-cmd.c Mon Sep 6 20:02:15 2010
@@ -141,6 +141,7 @@ svn_cl__propdel(apr_getopt_t *os,
opt_state->depth,
FALSE, SVN_INVALID_REVNUM,
opt_state->changelists, NULL,
+ svn_cl__print_commit_info, NULL,
ctx, subpool),
NULL, opt_state->quiet,
SVN_ERR_UNVERSIONED_RESOURCE,
Modified: subversion/branches/performance/subversion/svn/propedit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/propedit-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/propedit-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/propedit-cmd.c Mon Sep 6 20:02:15 2010
@@ -98,6 +98,9 @@ svn_cl__propedit(apr_getopt_t *os,
opt_state->targets,
ctx, pool));
+ /* We do our own notifications */
+ ctx->notify_func2 = NULL;
+
if (opt_state->revprop) /* operate on a revprop */
{
svn_revnum_t rev;
@@ -280,9 +283,6 @@ svn_cl__propedit(apr_getopt_t *os,
: svn_dirent_local_style(target, subpool);
cib.target_local = target_local;
- ctx->commit_callback2 = commit_info_handler;
- ctx->commit_baton = &cib;
-
/* ...and re-set the property's value accordingly. */
if (edited_propval && !svn_string_compare(propval, edited_propval))
{
@@ -299,6 +299,7 @@ svn_cl__propedit(apr_getopt_t *os,
err = svn_client_propset4(pname_utf8, edited_propval, target,
svn_depth_empty, opt_state->force,
base_rev, NULL, opt_state->revprop_table,
+ commit_info_handler, &cib,
ctx, subpool);
if (ctx->log_msg_func3)
SVN_ERR(svn_cl__cleanup_log_msg(ctx->log_msg_baton3,
Modified: subversion/branches/performance/subversion/svn/propset-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/propset-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/propset-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/propset-cmd.c Mon Sep 6 20:02:15 2010
@@ -182,7 +182,8 @@ svn_cl__propset(apr_getopt_t *os,
pname_utf8, propval, target,
opt_state->depth, opt_state->force,
SVN_INVALID_REVNUM, opt_state->changelists,
- NULL, ctx, iterpool),
+ NULL, svn_cl__print_commit_info, NULL, ctx,
+ iterpool),
NULL, opt_state->quiet,
SVN_ERR_UNVERSIONED_RESOURCE,
SVN_ERR_ENTRY_NOT_FOUND,
Modified: subversion/branches/performance/subversion/svn/revert-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/revert-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/revert-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/revert-cmd.c Mon Sep 6 20:02:15 2010
@@ -67,7 +67,7 @@ svn_cl__revert(apr_getopt_t *os,
opt_state->changelists, ctx, scratch_pool);
if (err
- && (err->apr_err == SVN_ERR_WC_NOT_LOCKED)
+ && (err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH)
&& (! SVN_DEPTH_IS_RECURSIVE(opt_state->depth)))
{
err = svn_error_quick_wrap
Modified: subversion/branches/performance/subversion/svn/status-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/status-cmd.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/status-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/status-cmd.c Mon Sep 6 20:02:15 2010
@@ -316,6 +316,7 @@ svn_cl__status(apr_getopt_t *os,
opt_state->update,
opt_state->no_ignore,
opt_state->ignore_externals,
+ FALSE /* depth_as_sticky */,
opt_state->changelists,
print_status, &sb,
iterpool),
Modified: subversion/branches/performance/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/status.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/status.c (original)
+++ subversion/branches/performance/subversion/svn/status.c Mon Sep 6 20:02:15 2010
@@ -50,7 +50,6 @@ generate_status_code(enum svn_wc_status_
case svn_wc_status_deleted: return 'D';
case svn_wc_status_replaced: return 'R';
case svn_wc_status_modified: return 'M';
- case svn_wc_status_merged: return 'G';
case svn_wc_status_conflicted: return 'C';
case svn_wc_status_obstructed: return '~';
case svn_wc_status_ignored: return 'I';
@@ -108,7 +107,6 @@ generate_status_desc(enum svn_wc_status_
case svn_wc_status_deleted: return "deleted";
case svn_wc_status_replaced: return "replaced";
case svn_wc_status_modified: return "modified";
- case svn_wc_status_merged: return "merged";
case svn_wc_status_conflicted: return "conflicted";
case svn_wc_status_obstructed: return "obstructed";
case svn_wc_status_ignored: return "ignored";
Modified: subversion/branches/performance/subversion/svnrdump/dump_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/dump_editor.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/dump_editor.c (original)
+++ subversion/branches/performance/subversion/svnrdump/dump_editor.c Mon Sep 6 20:02:15 2010
@@ -1,5 +1,6 @@
/*
- * dump_editor.c: The svn_delta_editor_t editor used by svnrdump
+ * dump_editor.c: The svn_delta_editor_t editor used by svnrdump to
+ * dump revisions.
*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
@@ -498,21 +499,16 @@ open_file(const char *path,
struct dir_baton *pb = parent_baton;
const char *copyfrom_path = NULL;
svn_revnum_t copyfrom_rev = SVN_INVALID_REVNUM;
- apr_array_header_t *compose_path;
/* Some pending properties to dump? */
SVN_ERR(dump_props(pb->eb, &(pb->eb->dump_props_pending), TRUE, pool));
- compose_path = apr_array_make(pool, 2, sizeof(const char *));
-
/* If the parent directory has explicit copyfrom path and rev,
record the same for this one. */
if (pb && ARE_VALID_COPY_ARGS(pb->copyfrom_path, pb->copyfrom_rev))
{
- APR_ARRAY_PUSH(compose_path, const char *) = pb->copyfrom_path;
- APR_ARRAY_PUSH(compose_path, const char *) =
- svn_relpath_basename(path, pool);
- copyfrom_path = svn_path_compose(compose_path, pool);
+ copyfrom_path = svn_relpath_join(pb->copyfrom_path,
+ svn_relpath_basename(path, pool), pool);
copyfrom_rev = pb->copyfrom_rev;
}
Propchange: subversion/branches/performance/subversion/svnrdump/dump_editor.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/performance/subversion/svnrdump/dump_editor.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/dump_editor.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/dump_editor.h (original)
+++ subversion/branches/performance/subversion/svnrdump/dump_editor.h Mon Sep 6 20:02:15 2010
@@ -21,7 +21,8 @@
* @endcopyright
*
* @file dump_editor.h
- * @brief The svn_delta_editor_t editor used by svnrdump
+ * @brief The svn_delta_editor_t editor used by svnrdump to dump
+ * revisions.
*/
#ifndef DUMP_EDITOR_H_
Propchange: subversion/branches/performance/subversion/svnrdump/dump_editor.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/performance/subversion/svnrdump/svnrdump.1
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/svnrdump.1?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/svnrdump.1 (original)
+++ subversion/branches/performance/subversion/svnrdump/svnrdump.1 Mon Sep 6 20:02:15 2010
@@ -23,10 +23,10 @@
.\"
.TH svnrdump 1
.SH NAME
-svnrdump \- Subversion repository synchronization tool
+svnrdump \- Subversion remote repository dumper and loader
.SH SYNOPSIS
.TP
-\fBsvnrdump\fP \fIcommand\fP \fIdest-url\fP [\fIoptions\fP] [\fIargs\fP]
+\fBsvnrdump\fP \fIcommand\fP \fIurl\fP [\fIoptions\fP] [\fIargs\fP]
.SH OVERVIEW
Subversion is a version control system, which allows you to keep old
versions of files and directories (usually source code), keep a log of
Propchange: subversion/branches/performance/subversion/svnrdump/svnrdump.1
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/performance/subversion/svnrdump/svnrdump.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/svnrdump.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/svnrdump.c (original)
+++ subversion/branches/performance/subversion/svnrdump/svnrdump.c Mon Sep 6 20:02:15 2010
@@ -35,6 +35,11 @@
#include "svn_props.h"
#include "dump_editor.h"
+#include "load_editor.h"
+
+#include "private/svn_cmdline_private.h"
+
+static svn_opt_subcommand_t dump_cmd, load_cmd;
enum svn_svnrdump__longopt_t
{
@@ -44,11 +49,32 @@ enum svn_svnrdump__longopt_t
opt_non_interactive,
opt_auth_nocache,
opt_version,
+ opt_config_option,
+ };
+
+static const svn_opt_subcommand_desc2_t svnrdump__cmd_table[] =
+ {
+ { "dump", dump_cmd, { 0 },
+ N_("usage: svnrdump dump URL [-r LOWER[:UPPER]]\n\n"
+ "Dump revisions LOWER to UPPER of repository at remote URL "
+ "to stdout in a 'dumpfile' portable format.\n"
+ "If only LOWER is given, dump that one revision.\n"),
+ { 0 } },
+ { "load", load_cmd, { 0 },
+ N_("usage: svnrdump load URL\n\n"
+ "Load a 'dumpfile' given on stdin to a repository "
+ "at remote URL.\n"),
+ { 0 } },
+ { "help", 0, { "?", "h" },
+ N_("usage: svnrdump help [SUBCOMMAND...]\n\n"
+ "Describe the usage of this program or its subcommands.\n"),
+ { 0 } },
+ { NULL, NULL, { 0 }, NULL, { 0 } }
};
static const apr_getopt_option_t svnrdump__options[] =
{
- {"revision", 'r', 1, N_("REV1[:REV2] range of revisions to dump")},
+ {"revision", 'r', 1, N_("specify revision number ARG (or X:Y range)")},
{"quiet", 'q', 0, N_("no progress (only errors) to stderr")},
{"config-dir", opt_config_dir, 1, N_("read user configuration files from"
" directory ARG") },
@@ -61,7 +87,14 @@ static const apr_getopt_option_t svnrdum
{"help", 'h', 0, N_("display this help")},
{"version", opt_version, 0, N_("show program version information")},
-
+ {"config-option", opt_config_option, 1,
+ N_("set user configuration option in the format:\n"
+ " "
+ " FILE:SECTION:OPTION=[VALUE]\n"
+ " "
+ "For example:\n"
+ " "
+ " servers:global:http-library=serf")},
{0, 0, 0, 0}
};
@@ -77,6 +110,14 @@ struct replay_baton {
svn_boolean_t quiet;
};
+typedef struct {
+ svn_ra_session_t *session;
+ const char *url;
+ svn_revnum_t start_revision;
+ svn_revnum_t end_revision;
+ svn_boolean_t quiet;
+} opt_baton_t;
+
static svn_error_t *
replay_revstart(svn_revnum_t revision,
void *replay_baton,
@@ -137,14 +178,15 @@ replay_revend(svn_revnum_t revision,
/* No resources left to free. */
struct replay_baton *rb = replay_baton;
if (! rb->quiet)
- svn_cmdline_fprintf(stderr, pool, "* Dumped revision %lu\n", revision);
+ svn_cmdline_fprintf(stderr, pool, "* Dumped revision %lu.\n", revision);
return SVN_NO_ERROR;
}
/* Return in *SESSION a new RA session to URL.
* Allocate *SESSION and related data structures in POOL.
* Use CONFIG_DIR and pass USERNAME, PASSWORD, CONFIG_DIR and
- * NO_AUTH_CACHE to initialize the authorization baton.*/
+ * NO_AUTH_CACHE to initialize the authorization baton.
+ * CONFIG_OPTIONS (if not NULL) is a list of configuration overrides. */
static svn_error_t *
open_connection(svn_ra_session_t **session,
const char *url,
@@ -153,6 +195,7 @@ open_connection(svn_ra_session_t **sessi
const char *password,
const char *config_dir,
svn_boolean_t no_auth_cache,
+ apr_array_header_t *config_options,
apr_pool_t *pool)
{
svn_client_ctx_t *ctx = NULL;
@@ -165,6 +208,10 @@ open_connection(svn_ra_session_t **sessi
SVN_ERR(svn_config_get_config(&(ctx->config), config_dir, pool));
+ if (config_options)
+ SVN_ERR(svn_cmdline__apply_config_options(ctx->config, config_options,
+ "svnrdump: ", "--config-option"));
+
cfg_config = apr_hash_get(ctx->config, SVN_CONFIG_CATEGORY_CONFIG,
APR_HASH_KEY_STRING);
@@ -179,9 +226,9 @@ open_connection(svn_ra_session_t **sessi
}
static svn_error_t *
-replay_range(svn_ra_session_t *session, const char *url,
- svn_revnum_t start_revision, svn_revnum_t end_revision,
- svn_boolean_t quiet, apr_pool_t *pool)
+replay_revisions(svn_ra_session_t *session, const char *url,
+ svn_revnum_t start_revision, svn_revnum_t end_revision,
+ svn_boolean_t quiet, apr_pool_t *pool)
{
const svn_delta_editor_t *dump_editor;
struct replay_baton *replay_baton;
@@ -240,7 +287,7 @@ replay_range(svn_ra_session_t *session,
&(propstring->len)));
SVN_ERR(svn_stream_printf(stdout_stream, pool, "\n"));
if (! quiet)
- svn_cmdline_fprintf(stderr, pool, "* Dumped revision %lu\n", start_revision);
+ svn_cmdline_fprintf(stderr, pool, "* Dumped revision %lu.\n", start_revision);
start_revision++;
}
@@ -252,6 +299,27 @@ replay_range(svn_ra_session_t *session,
return SVN_NO_ERROR;
}
+static svn_error_t *
+load_revisions(svn_ra_session_t *session, const char *url,
+ svn_boolean_t quiet, apr_pool_t *pool)
+{
+ apr_file_t *stdin_file;
+ svn_stream_t *stdin_stream;
+ const svn_repos_parse_fns2_t *parser;
+ void *parse_baton;
+
+ apr_file_open_stdin(&stdin_file, pool);
+ stdin_stream = svn_stream_from_aprfile2(stdin_file, FALSE, pool);
+
+ SVN_ERR(get_dumpstream_loader(&parser, &parse_baton, session, pool));
+ SVN_ERR(drive_dumpstream_loader(stdin_stream, parser, parse_baton, session, pool));
+
+ svn_stream_close(stdin_stream);
+
+ return SVN_NO_ERROR;
+}
+
+
static const char *
ensure_appname(const char *progname, apr_pool_t *pool)
{
@@ -268,45 +336,27 @@ usage(const char *progname, apr_pool_t *
progname = ensure_appname(progname, pool);
SVN_ERR(svn_cmdline_fprintf(stderr, pool,
- _("Type '%s --help' for usage.\n"),
+ _("Type '%s help' for usage.\n"),
progname));
return SVN_NO_ERROR;
}
static svn_error_t *
-help(const char *progname, apr_pool_t *pool)
+version(const char *progname, apr_pool_t *pool)
{
- apr_size_t i;
+ const char *ra_desc_start
+ = _("The following repository access (RA) modules are available:\n\n");
- progname = ensure_appname(progname, pool);
+ svn_stringbuf_t *version_footer = svn_stringbuf_create(ra_desc_start,
+ pool);
- SVN_ERR(svn_cmdline_printf(
- pool,
- _("usage: %s URL [-r LOWER[:UPPER]]\n\n"
- "Dump the contents of repository at remote URL "
- "to stdout in a 'dumpfile' portable format.\n"
- "Dump revisions LOWER rev through UPPER rev.\n"
- "LOWER defaults to 0 and UPPER defaults to the "
- "highest possible revision if omitted.\n\n"
- "Valid options:\n"),
- progname));
+ SVN_ERR(svn_ra_print_modules(version_footer, pool));
- for (i = 0; svnrdump__options[i].name && svnrdump__options[i].optch; i++)
- {
- const char *optstr;
- svn_opt_format_option(&optstr, svnrdump__options + i, TRUE, pool);
- SVN_ERR(svn_cmdline_fprintf(stdout, pool, " %s\n", optstr));
- }
- return svn_cmdline_fprintf(stdout, pool, "\n");
-}
-
-static svn_error_t *
-version(const char *progname, apr_pool_t *pool)
-{
progname = ensure_appname(progname, pool);
- return svn_opt_print_help3(NULL, progname, TRUE, FALSE, NULL,
- NULL, NULL, NULL, NULL, NULL, pool);
+ return svn_opt_print_help3(NULL, progname, TRUE, FALSE,
+ version_footer->data, NULL, NULL,
+ NULL, NULL, NULL, pool);
}
@@ -328,29 +378,65 @@ version(const char *progname, apr_pool_t
} \
while (0)
+static svn_error_t *
+dump_cmd(apr_getopt_t *os, void *baton, apr_pool_t *pool)
+{
+ opt_baton_t *opt_baton = baton;
+ SVN_ERR(replay_revisions(opt_baton->session, opt_baton->url,
+ opt_baton->start_revision, opt_baton->end_revision,
+ opt_baton->quiet, pool));
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+load_cmd(apr_getopt_t *os, void *baton, apr_pool_t *pool)
+{
+ opt_baton_t *opt_baton = baton;
+ SVN_ERR(load_revisions(opt_baton->session, opt_baton->url,
+ opt_baton->quiet, pool));
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+help_cmd(apr_getopt_t *os, void *baton, apr_pool_t *pool)
+{
+ const char *header =
+ _("general usage: svnrdump SUBCOMMAND URL [-r LOWER[:UPPER]]\n"
+ "Type 'svnrdump help <subcommand>' for help on a specific subcommand.\n\n"
+ "Available subcommands:\n");
+
+ SVN_ERR(svn_opt_print_help3(os, "svnrdump", FALSE, FALSE, NULL, header,
+ svnrdump__cmd_table, svnrdump__options, NULL,
+ NULL, pool));
+
+ return SVN_NO_ERROR;
+}
int
main(int argc, const char **argv)
{
- const char *url = NULL;
+ const svn_opt_subcommand_desc2_t *subcommand = NULL;
+ opt_baton_t *opt_baton;
char *revision_cut = NULL;
- svn_revnum_t start_revision = svn_opt_revision_unspecified;
- svn_revnum_t end_revision = svn_opt_revision_unspecified;
svn_revnum_t latest_revision = svn_opt_revision_unspecified;
- svn_boolean_t quiet = FALSE;
apr_pool_t *pool = NULL;
- svn_ra_session_t *session = NULL;
const char *config_dir = NULL;
const char *username = NULL;
const char *password = NULL;
svn_boolean_t no_auth_cache = FALSE;
svn_boolean_t non_interactive = FALSE;
+ apr_array_header_t *config_options = NULL;
apr_getopt_t *os;
+ const char *first_arg;
if (svn_cmdline_init ("svnrdump", stderr) != EXIT_SUCCESS)
return EXIT_FAILURE;
pool = svn_pool_create(NULL);
+ opt_baton = apr_pcalloc(pool, sizeof(*opt_baton));
+ opt_baton->start_revision = svn_opt_revision_unspecified;
+ opt_baton->end_revision = svn_opt_revision_unspecified;
+ opt_baton->url = NULL;
SVNRDUMP_ERR(svn_cmdline__getopt_init(&os, argc, argv, pool));
@@ -378,17 +464,20 @@ main(int argc, const char **argv)
revision_cut = strchr(opt_arg, ':');
if (revision_cut)
{
- start_revision = (svn_revnum_t)strtoul(opt_arg,
- &revision_cut, 10);
- end_revision = (svn_revnum_t)strtoul(revision_cut + 1,
- NULL, 10);
+ opt_baton->start_revision = (svn_revnum_t)strtoul(opt_arg,
+ &revision_cut, 10);
+ opt_baton->end_revision = (svn_revnum_t)strtoul(revision_cut + 1,
+ NULL, 10);
}
else
- start_revision = (svn_revnum_t)strtoul(opt_arg, NULL, 10);
+ {
+ opt_baton->start_revision = (svn_revnum_t)strtoul(opt_arg, NULL, 10);
+ opt_baton->end_revision = opt_baton->start_revision;
+ }
}
break;
case 'q':
- quiet = TRUE;
+ opt_baton->quiet = TRUE;
break;
case opt_config_dir:
config_dir = opt_arg;
@@ -398,7 +487,7 @@ main(int argc, const char **argv)
exit(EXIT_SUCCESS);
break;
case 'h':
- SVNRDUMP_ERR(help(argv[0], pool));
+ SVNRDUMP_ERR(help_cmd(os, opt_baton, pool));
exit(EXIT_SUCCESS);
break;
case opt_auth_username:
@@ -413,12 +502,55 @@ main(int argc, const char **argv)
case opt_non_interactive:
non_interactive = TRUE;
break;
+ case opt_config_option:
+ if (!config_options)
+ config_options =
+ apr_array_make(pool, 1,
+ sizeof(svn_cmdline__config_argument_t*));
+
+ SVNRDUMP_ERR(svn_utf_cstring_to_utf8(&opt_arg, opt_arg, pool));
+ SVNRDUMP_ERR(svn_cmdline__parse_config_option(config_options,
+ opt_arg, pool));
}
}
- /* Only continue if the only not option argument is a url, to allow
- implementing 'svnrdump dump URL' like handling later without breaking
- backward compatibility */
+ if (os->ind >= os->argc)
+ {
+ svn_error_clear
+ (svn_cmdline_fprintf(stderr, pool,
+ _("Subcommand argument required\n")));
+ SVNRDUMP_ERR(help_cmd(NULL, NULL, pool));
+ svn_pool_destroy(pool);
+ exit(EXIT_FAILURE);
+ }
+
+ first_arg = os->argv[os->ind++];
+
+ subcommand = svn_opt_get_canonical_subcommand2(svnrdump__cmd_table,
+ first_arg);
+
+ if (subcommand == NULL)
+ {
+ const char *first_arg_utf8;
+ svn_error_t *err = svn_utf_cstring_to_utf8(&first_arg_utf8,
+ first_arg, pool);
+ if (err)
+ return svn_cmdline_handle_exit_error(err, pool, "svnrdump: ");
+ svn_error_clear(svn_cmdline_fprintf(stderr, pool,
+ _("Unknown command: '%s'\n"),
+ first_arg_utf8));
+ SVNRDUMP_ERR(help_cmd(NULL, NULL, pool));
+ svn_pool_destroy(pool);
+ exit(EXIT_FAILURE);
+ }
+
+ if (subcommand && strcmp(subcommand->name, "help") == 0)
+ {
+ SVNRDUMP_ERR(help_cmd(os, opt_baton, pool));
+ exit(EXIT_SUCCESS);
+ }
+
+ /* Only continue if the only not option argument is a url */
if ((os->ind != os->argc-1)
|| !svn_path_is_url(os->argv[os->ind]))
{
@@ -426,34 +558,34 @@ main(int argc, const char **argv)
exit(EXIT_FAILURE);
}
- SVNRDUMP_ERR(svn_utf_cstring_to_utf8(&url, os->argv[os->ind], pool));
-
- url = svn_uri_canonicalize(os->argv[os->ind], pool);
+ SVNRDUMP_ERR(svn_utf_cstring_to_utf8(&(opt_baton->url), os->argv[os->ind], pool));
+ opt_baton->url = svn_uri_canonicalize(os->argv[os->ind], pool);
- SVNRDUMP_ERR(open_connection(&session,
- url,
+ SVNRDUMP_ERR(open_connection(&(opt_baton->session),
+ opt_baton->url,
non_interactive,
username,
password,
config_dir,
no_auth_cache,
+ config_options,
pool));
- /* Have sane start_revision and end_revision defaults if unspecified */
- SVNRDUMP_ERR(svn_ra_get_latest_revnum(session, &latest_revision, pool));
- if (start_revision == svn_opt_revision_unspecified)
- start_revision = 0;
- if (end_revision == svn_opt_revision_unspecified)
- end_revision = latest_revision;
- if (end_revision > latest_revision)
+ /* Have sane opt_baton->start_revision and end_revision defaults if unspecified */
+ SVNRDUMP_ERR(svn_ra_get_latest_revnum(opt_baton->session, &latest_revision, pool));
+ if (opt_baton->start_revision == svn_opt_revision_unspecified)
+ opt_baton->start_revision = 0;
+ if (opt_baton->end_revision == svn_opt_revision_unspecified)
+ opt_baton->end_revision = latest_revision;
+ if (opt_baton->end_revision > latest_revision)
{
SVN_INT_ERR(svn_cmdline_fprintf(stderr, pool,
_("Revision %ld does not exist.\n"),
- end_revision));
+ opt_baton->end_revision));
exit(EXIT_FAILURE);
}
- if (end_revision < start_revision)
+ if (opt_baton->end_revision < opt_baton->start_revision)
{
SVN_INT_ERR(svn_cmdline_fprintf(stderr, pool,
_("LOWER cannot be greater "
@@ -461,8 +593,8 @@ main(int argc, const char **argv)
exit(EXIT_FAILURE);
}
- SVNRDUMP_ERR(replay_range(session, url, start_revision, end_revision,
- quiet, pool));
+ /* Dispatch the subcommand */
+ SVNRDUMP_ERR((*subcommand->cmd_func)(os, opt_baton, pool));
svn_pool_destroy(pool);
Modified: subversion/branches/performance/subversion/svnsync/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnsync/main.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnsync/main.c (original)
+++ subversion/branches/performance/subversion/svnsync/main.c Mon Sep 6 20:02:15 2010
@@ -338,8 +338,8 @@ get_lock(svn_ra_session_t *session, apr_
}
return svn_error_createf(APR_EINVAL, NULL,
- "Couldn't get lock on destination repos "
- "after %d attempts\n", i);
+ _("Couldn't get lock on destination repos "
+ "after %d attempts"), i);
}
@@ -387,20 +387,8 @@ with_locked(svn_ra_session_t *session,
err = func(session, baton, pool);
err2 = svn_ra_change_rev_prop(session, 0, SVNSYNC_PROP_LOCK, NULL, pool);
- if (err2 && err)
- {
- svn_error_clear(err2); /* XXX what to do here? */
- return err;
- }
- else if (err2)
- {
- return err2;
- }
- else
- {
- return err;
- }
+ return svn_error_compose_create(err, svn_error_return(err2));
}
@@ -721,7 +709,7 @@ do_initialize(svn_ra_session_t *to_sessi
/* Now fill in our bookkeeping info in the dest repository. */
- SVN_ERR(svn_ra_open3(&from_session, baton->from_url, NULL,
+ SVN_ERR(svn_ra_open4(&from_session, NULL, baton->from_url, NULL,
&(baton->source_callbacks), baton,
baton->config, pool));
SVN_ERR(svn_ra_get_repos_root2(from_session, &root_url, pool));
@@ -735,14 +723,11 @@ do_initialize(svn_ra_session_t *to_sessi
&server_supports_partial_replay,
SVN_RA_CAPABILITY_PARTIAL_REPLAY,
pool);
- if (err && err->apr_err == SVN_ERR_UNKNOWN_CAPABILITY)
- {
- svn_error_clear(err);
- server_supports_partial_replay = FALSE;
- }
+ if (err && err->apr_err != SVN_ERR_UNKNOWN_CAPABILITY)
+ return svn_error_return(err);
- if (!server_supports_partial_replay)
- return svn_error_create(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED, NULL,
+ if (err || !server_supports_partial_replay)
+ return svn_error_create(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED, err,
NULL);
}
@@ -824,7 +809,7 @@ initialize_cmd(apr_getopt_t *os, void *b
_("Path '%s' is not a URL"), from_url);
baton = make_subcommand_baton(opt_baton, to_url, from_url, 0, 0, pool);
- SVN_ERR(svn_ra_open3(&to_session, baton->to_url, NULL,
+ SVN_ERR(svn_ra_open4(&to_session, NULL, baton->to_url, NULL,
&(baton->sync_callbacks), baton, baton->config, pool));
SVN_ERR(check_if_session_is_at_repos_root(to_session, baton->to_url, pool));
if (opt_baton->disable_locking)
@@ -900,7 +885,7 @@ open_source_session(svn_ra_session_t **f
from_url = from_url_str->data;
/* Open the session to copy the revision data. */
- SVN_ERR(svn_ra_open3(from_session, from_url, from_uuid_str->data,
+ SVN_ERR(svn_ra_open4(from_session, NULL, from_url, from_uuid_str->data,
callbacks, baton, config, pool));
return SVN_NO_ERROR;
@@ -1324,7 +1309,7 @@ synchronize_cmd(apr_getopt_t *os, void *
}
baton = make_subcommand_baton(opt_baton, to_url, from_url, 0, 0, pool);
- SVN_ERR(svn_ra_open3(&to_session, baton->to_url, NULL,
+ SVN_ERR(svn_ra_open4(&to_session, NULL, baton->to_url, NULL,
&(baton->sync_callbacks), baton, baton->config, pool));
SVN_ERR(check_if_session_is_at_repos_root(to_session, baton->to_url, pool));
if (opt_baton->disable_locking)
@@ -1560,7 +1545,7 @@ copy_revprops_cmd(apr_getopt_t *os, void
baton = make_subcommand_baton(opt_baton, to_url, from_url,
start_rev, end_rev, pool);
- SVN_ERR(svn_ra_open3(&to_session, baton->to_url, NULL,
+ SVN_ERR(svn_ra_open4(&to_session, NULL, baton->to_url, NULL,
&(baton->sync_callbacks), baton, baton->config, pool));
SVN_ERR(check_if_session_is_at_repos_root(to_session, baton->to_url, pool));
if (opt_baton->disable_locking)
@@ -1604,7 +1589,7 @@ info_cmd(apr_getopt_t *os, void *b, apr_
/* Open an RA session to the mirror repository URL. */
baton = make_subcommand_baton(opt_baton, to_url, NULL, 0, 0, pool);
- SVN_ERR(svn_ra_open3(&to_session, baton->to_url, NULL,
+ SVN_ERR(svn_ra_open4(&to_session, NULL, baton->to_url, NULL,
&(baton->sync_callbacks), baton, baton->config, pool));
SVN_ERR(check_if_session_is_at_repos_root(to_session, baton->to_url, pool));
Modified: subversion/branches/performance/subversion/tests/cmdline/README
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/README?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/README (original)
+++ subversion/branches/performance/subversion/tests/cmdline/README Mon Sep 6 20:02:15 2010
@@ -72,7 +72,7 @@ paths adjusted appropriately:
AuthUserFile /usr/local/apache2/conf/users
Require valid-user
</Location>
-
+
<Location /svn-test-work/local_tmp/repos>
DAV svn
SVNPath /home/yourusernamehere/projects/svn/subversion/tests/cmdline/svn-test-work/local_tmp/repos
@@ -83,6 +83,9 @@ paths adjusted appropriately:
Require valid-user
</Location>
+ RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$ /svn-test-work/repositories/$1
+ RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$ /svn-test-work/repositories/$1
+
Httpd should be running on port 80. You may also need to ensure that
it's running as you, so it has read/write access to the repositories
that are probably living in your Subversion working copy. To do this,
Modified: subversion/branches/performance/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/authz_tests.py?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/authz_tests.py Mon Sep 6 20:02:15 2010
@@ -37,6 +37,7 @@ from svntest.main import server_authz_ha
# (abbreviation)
Item = svntest.wc.StateItem
XFail = svntest.testcase.XFail
+Wimp = svntest.testcase.Wimp
Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
@@ -1021,6 +1022,9 @@ def wc_wc_copy_revert(sbox):
svntest.actions.run_and_verify_svn(None, None, [],
'revert', '--recursive', sbox.ospath('A2'))
+ expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
+ expected_status.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta')
+ svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
########################################################################
# Run the tests
@@ -1051,7 +1055,8 @@ test_list = [ None,
svntest.main.is_ra_type_file),
Skip(multiple_matches, svntest.main.is_ra_type_file),
Skip(wc_wc_copy, svntest.main.is_ra_type_file),
- XFail(Skip(wc_wc_copy_revert, svntest.main.is_ra_type_file)),
+ Skip(wc_wc_copy_revert,
+ svntest.main.is_ra_type_file),
]
if __name__ == '__main__':
Modified: subversion/branches/performance/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/basic_tests.py?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/basic_tests.py Mon Sep 6 20:02:15 2010
@@ -1149,9 +1149,9 @@ def basic_delete(sbox):
# check versioned dir is not removed
if not verify_dir_deleted(F_path):
- print("Removed versioned dir")
- ### we should raise a less generic error here. which?
- raise svntest.Failure
+ # If we are not running in single-db, this is an error
+ if os.path.isdir(os.path.join(F_path, '../' + svntest.main.get_admin_name())):
+ raise svntest.Failure("Removed administrative area")
# check unversioned and added dirs has been removed
if verify_dir_deleted(Q_path):
@@ -1213,8 +1213,8 @@ def basic_checkout_deleted(sbox):
#----------------------------------------------------------------------
-# Issue 846, changing a deleted file to an added directory is not
-# supported.
+# Issue 846, changing a deleted file to an added directory was not
+# supported before WC-NG. But we can handle it.
def basic_node_kind_change(sbox):
"attempt to change node kind"
@@ -1232,25 +1232,24 @@ def basic_node_kind_change(sbox):
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Try and fail to create a directory (file scheduled for deletion)
- svntest.actions.run_and_verify_svn('Cannot change node kind',
- None, svntest.verify.AnyOutput,
- 'mkdir', gamma_path)
+ svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', gamma_path)
- # Status is unchanged
+ # Status is replaced
+ expected_status.tweak('A/D/gamma', status='R ')
svntest.actions.run_and_verify_status(wc_dir, expected_status)
# Commit file deletion
expected_output = wc.State(wc_dir, {
- 'A/D/gamma' : Item(verb='Deleting'),
+ 'A/D/gamma' : Item(verb='Replacing'),
})
expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
- expected_status.remove('A/D/gamma')
+ expected_status.tweak('A/D/gamma', status=' ', wc_rev='2')
svntest.actions.run_and_verify_commit(wc_dir,
expected_output, expected_status,
None, wc_dir)
# Try and fail to create a directory (file deleted)
- svntest.actions.run_and_verify_svn('Cannot change node kind',
+ svntest.actions.run_and_verify_svn(None,
None, svntest.verify.AnyOutput,
'mkdir', gamma_path)
@@ -1261,11 +1260,12 @@ def basic_node_kind_change(sbox):
svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
# mkdir should succeed
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', gamma_path)
svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', gamma_path)
expected_status.tweak(wc_rev=2)
expected_status.add({
- 'A/D/gamma' : Item(status='A ', wc_rev=0),
+ 'A/D/gamma' : Item(status='R ', wc_rev=2),
})
svntest.actions.run_and_verify_status(wc_dir, expected_status)
@@ -2520,6 +2520,37 @@ def meta_correct_library_being_used(sbox
svntest.actions.run_and_verify_svn("is $http_library available",
expected_output, [], '--version')
+def delete_and_add_same_file(sbox):
+ "commit deletes a file and adds one with same text"
+ sbox.build()
+
+ wc_dir = sbox.wc_dir
+
+ iota = os.path.join(wc_dir, 'iota')
+ iota2 = os.path.join(wc_dir, 'iota2')
+
+ shutil.copyfile(iota, iota2)
+
+ svntest.main.run_svn(None, 'rm', iota)
+ svntest.main.run_svn(None, 'add', iota2)
+
+ expected_output = wc.State(wc_dir, {
+ 'iota' : Item(verb='Deleting'),
+ 'iota2' : Item(verb='Adding'),
+ })
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.remove('iota')
+ expected_status.add({ 'iota2': Item(status=' ', wc_rev='2')})
+
+ # At one time the commit post-processing used to fail with "Pristine text
+ # not found".
+ svntest.actions.run_and_verify_commit(wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ wc_dir)
+
#----------------------------------------------------------------------
########################################################################
@@ -2579,6 +2610,7 @@ test_list = [ None,
delete_from_url_with_spaces,
SkipUnless(meta_correct_library_being_used,
svntest.main.is_ra_type_dav),
+ delete_and_add_same_file,
]
if __name__ == '__main__':
Modified: subversion/branches/performance/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/commit_tests.py?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/commit_tests.py Mon Sep 6 20:02:15 2010
@@ -86,11 +86,15 @@ def make_standard_slew_of_changes(wc_dir
svntest.main.run_svn(None, 'add', 'Q')
# Remove two directories
- svntest.main.run_svn(None, 'rm', os.path.join('A', 'B', 'E'))
+ A_B_E = os.path.join('A', 'B', 'E')
+ svntest.main.run_svn(None, 'rm', A_B_E)
svntest.main.run_svn(None, 'rm', os.path.join('A', 'C'))
# Replace one of the removed directories
- svntest.main.run_svn(None, 'add', os.path.join('A', 'B', 'E'))
+ # But first recreate if it doesn't exist (single-db)
+ if not os.path.exists(A_B_E):
+ os.mkdir(A_B_E)
+ svntest.main.run_svn(None, 'add', A_B_E)
# Make property mods to two directories
svntest.main.run_svn(None, 'propset', 'foo', 'bar', os.curdir)
@@ -452,16 +456,21 @@ def nested_dir_replacements(sbox):
sbox.build()
wc_dir = sbox.wc_dir
+ A_D = os.path.join(wc_dir, 'A', 'D')
+
# Delete and re-add A/D (a replacement), and A/D/H (another replace).
- svntest.main.run_svn(None, 'rm', os.path.join(wc_dir, 'A', 'D'))
- svntest.main.run_svn(None, 'add', '--depth=empty',
- os.path.join(wc_dir, 'A', 'D'))
- svntest.main.run_svn(None, 'add', '--depth=empty',
- os.path.join(wc_dir, 'A', 'D', 'H'))
+ svntest.main.run_svn(None, 'rm', A_D)
+
+ # Recreate directories for single-db
+ if not os.path.exists(A_D):
+ os.mkdir(A_D)
+ os.mkdir(os.path.join(A_D, 'H'))
+ svntest.main.run_svn(None, 'add', '--depth=empty', A_D)
+ svntest.main.run_svn(None, 'add', '--depth=empty', os.path.join(A_D, 'H'))
# For kicks, add new file A/D/bloo.
- svntest.main.file_append(os.path.join(wc_dir, 'A', 'D', 'bloo'), "hi")
- svntest.main.run_svn(None, 'add', os.path.join(wc_dir, 'A', 'D', 'bloo'))
+ svntest.main.file_append(os.path.join(A_D, 'bloo'), "hi")
+ svntest.main.run_svn(None, 'add', os.path.join(A_D, 'bloo'))
# Verify pre-commit status:
#
@@ -1948,6 +1957,9 @@ def mods_in_schedule_delete(sbox):
C_path = os.path.join(wc_dir, 'A', 'C')
svntest.actions.run_and_verify_svn(None, svntest.verify.AnyOutput, [],
'rm', C_path)
+
+ if not os.path.exists(C_path):
+ os.mkdir(C_path)
foo_path = os.path.join(C_path, 'foo')
foo_contents = 'zig\nzag\n'
svntest.main.file_append(foo_path, foo_contents)
Modified: subversion/branches/performance/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/copy_tests.py?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/copy_tests.py Mon Sep 6 20:02:15 2010
@@ -36,6 +36,7 @@ from svntest.main import SVN_PROP_MERGEI
Skip = svntest.testcase.Skip
SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
+Wimp = svntest.testcase.Wimp
Item = svntest.wc.StateItem
@@ -2460,16 +2461,18 @@ def move_dir_back_and_forth(sbox):
# Move the moved dir: D_moved back to its starting
# location at A/D.
- exit_code, out, err = svntest.actions.run_and_verify_svn(
- None, None, svntest.verify.AnyOutput,
- 'mv', D_move_path, D_path)
- for line in err:
- if re.match('.*Cannot copy to .*as it is scheduled for deletion',
- line, ):
- return
- raise svntest.Failure("mv failed but not in the expected way")
+ if svntest.main.wc_is_singledb(wc_dir):
+ # In single-db target is gone on-disk after it was moved away, so this
+ # move works ok
+ expected_err = []
+ else:
+ # In !SINGLE_DB the target of the copy exists on-dir, so svn tries
+ # to move the file below the deleted directory
+ expected_err = '.*Cannot copy to .*as it is scheduled for deletion'
+ svntest.actions.run_and_verify_svn(None, None, expected_err,
+ 'mv', D_move_path, D_path)
def copy_move_added_paths(sbox):
"copy and move added paths without commits"
@@ -4767,6 +4770,69 @@ def move_added_nodes(sbox):
expected_status.add({'X/Z' : Item(status='A ', wc_rev='0')})
svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
+def locate_wrong_origin(sbox):
+ "update editor locates invalid file source"
+
+ sbox.build()
+
+ iota = os.path.join(sbox.wc_dir, 'iota')
+ gamma = os.path.join(sbox.wc_dir, 'A/D/gamma')
+
+ D1 = os.path.join(sbox.wc_dir, 'D1')
+ D2 = os.path.join(sbox.wc_dir, 'D2')
+
+ main.run_svn(None, 'mkdir', D1, D2)
+ main.run_svn(None, 'cp', iota, os.path.join(D1, 'iota'))
+ main.run_svn(None, 'cp', gamma, os.path.join(D2, 'iota'))
+
+ main.run_svn(None, 'ci', sbox.wc_dir, '-m', 'Add 2*iotas in r2')
+ main.run_svn(None, 'rm', D1)
+
+ main.run_svn(None, 'ci', sbox.wc_dir, '-m', 'Why?')
+
+ main.run_svn(None, 'cp', D2, D1)
+ main.run_svn(None, 'ci', sbox.wc_dir, '-m', 'Replace one iota')
+
+ # <= 1.6 needs a new checkout here to reproduce, but not since r961831.
+ # so we just perform an update
+ main.run_svn(None, 'up', sbox.wc_dir)
+
+ main.run_svn(None, 'cp', sbox.repo_url + '/D1/iota@2',
+ sbox.repo_url + '/iobeta', '-m', 'Copy iota')
+
+
+ expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 4)
+ expected_status.add({
+ 'D1' : Item(status=' ', wc_rev='4'),
+ 'D1/iota' : Item(status=' ', wc_rev='4'),
+ 'D2' : Item(status=' ', wc_rev='4'),
+ 'D2/iota' : Item(status=' ', wc_rev='4'),
+ })
+ svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
+
+ # The next update receives an add_file('/D1/iota', 2), which it then tries
+ # to locate in the local working copy. It finds a '/D1/iota' in the expected
+ # place, with a last-changed revision of 2 and a local revision of HEAD-1
+ #
+ # locate_copyfrom identifies this file as correct because
+ # * last-mod <= 2 and
+ # * 2 <= REV
+ #
+ # Luckily close_file() receives an expected_checksum which makes us fail, or
+ # we would have a completely broken working copy
+
+ # So this gives a Checksum mismatch error.
+ main.run_svn(None, 'up', sbox.wc_dir)
+
+# This test currently fails, but should work ok once we move to single DB
+def copy_over_deleted_dir(sbox):
+ "copy a directory over a deleted directory"
+ sbox.build(read_only = True)
+
+ main.run_svn(None, 'rm', os.path.join(sbox.wc_dir, 'A/B'))
+ main.run_svn(None, 'cp', os.path.join(sbox.wc_dir, 'A/D'),
+ os.path.join(sbox.wc_dir, 'A/B'))
+
########################################################################
# Run the tests
@@ -4842,7 +4908,7 @@ test_list = [ None,
copy_make_parents_wc_repo,
copy_make_parents_repo_repo,
URI_encoded_repos_to_wc,
- XFail(allow_unversioned_parent_for_copy_src),
+ allow_unversioned_parent_for_copy_src,
replaced_local_source_for_incoming_copy,
unneeded_parents,
double_parents_with_url,
@@ -4861,7 +4927,11 @@ test_list = [ None,
copy_dir_with_space,
changed_data_should_match_checkout,
XFail(changed_dir_data_should_match_checkout),
- XFail(move_added_nodes),
+ move_added_nodes,
+ # Serf needs a different testcase for this issue
+ XFail(Skip(locate_wrong_origin,
+ svntest.main.is_ra_type_dav_serf)),
+ copy_over_deleted_dir,
]
if __name__ == '__main__':
Modified: subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh Mon Sep 6 20:02:15 2010
@@ -210,6 +210,9 @@ LOAD_MOD_LOG_CONFIG=$(get_loadmodule_con
LOAD_MOD_MIME=$(get_loadmodule_config mod_mime) \
|| fail "MIME module not found"
+LOAD_MOD_ALIAS=$(get_loadmodule_config mod_alias) \
+ || fail "ALIAS module not found"
+
# needed for Auth*, Require, etc. directives
LOAD_MOD_AUTH=$(get_loadmodule_config mod_auth) \
|| {
@@ -258,6 +261,7 @@ touch $HTTPD_MIME_TYPES
cat > "$HTTPD_CFG" <<__EOF__
$LOAD_MOD_LOG_CONFIG
$LOAD_MOD_MIME
+$LOAD_MOD_ALIAS
$LOAD_MOD_UNIXD
$LOAD_MOD_DAV
LoadModule dav_svn_module "$MOD_DAV_SVN"
@@ -321,6 +325,8 @@ CustomLog "$HTTPD_ROOT/ops" "%
AuthUserFile $HTTPD_USERS
Require valid-user
</Location>
+RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)\$ /svn-test-work/repositories/\$1
+RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)\$ /svn-test-work/repositories/\$1
__EOF__
START="$HTTPD -f $HTTPD_CFG"
Modified: subversion/branches/performance/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/depth_tests.py?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/depth_tests.py Mon Sep 6 20:02:15 2010
@@ -2442,6 +2442,8 @@ def make_depth_tree_conflicts(sbox):
expected_disk.remove('A/mu',
'A/B', 'A/B/lambda', 'A/B/E/alpha', 'A/B/E/beta',
'A/D/gamma');
+ if svntest.main.wc_is_singledb(sbox.wc_dir):
+ expected_disk.remove('A/B/E', 'A/B/F')
# This test is set XFail because this (correct) status cannot be
# verified due to an "svn update" bug. The tree-conflict on A/B