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/08/11 18:43:31 UTC
svn commit: r984468 [20/25] - in /subversion/branches/ignore-mergeinfo: ./
build/ build/generator/ build/generator/templates/ notes/
notes/tree-conflicts/ notes/wc-ng/ subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subvers...
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/add-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/add-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/add-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/add-cmd.c Wed Aug 11 16:43:22 2010
@@ -29,11 +29,13 @@
#define APR_WANT_STDIO
#include <apr_want.h>
+#include "svn_path.h"
#include "svn_client.h"
#include "svn_error.h"
#include "svn_pools.h"
#include "cl.h"
+#include "svn_private_config.h"
/*** Code. ***/
@@ -48,7 +50,7 @@ svn_cl__add(apr_getopt_t *os,
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
int i;
- apr_pool_t *subpool;
+ apr_pool_t *iterpool;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -57,33 +59,42 @@ svn_cl__add(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_infinity;
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- subpool = svn_pool_create(pool);
+ /* Don't even attempt to modify the working copy if any of the
+ * targets look like URLs. URLs are invalid input. */
+ for (i = 0; i < targets->nelts; i++)
+ {
+ const char *target = APR_ARRAY_IDX(targets, i, const char *);
+
+ if (svn_path_is_url(target))
+ return svn_error_return(svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR,
+ NULL,
+ _("'%s' is not a local path"),
+ target));
+ }
+
+ iterpool = svn_pool_create(pool);
for (i = 0; i < targets->nelts; i++)
{
const char *target = APR_ARRAY_IDX(targets, i, const char *);
- svn_pool_clear(subpool);
+ svn_pool_clear(iterpool);
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
SVN_ERR(svn_cl__try
(svn_client_add4(target,
opt_state->depth,
opt_state->force, opt_state->no_ignore,
- opt_state->parents, ctx, subpool),
+ opt_state->parents, ctx, iterpool),
NULL, opt_state->quiet,
SVN_ERR_ENTRY_EXISTS,
SVN_ERR_WC_PATH_NOT_FOUND,
SVN_NO_ERROR));
}
- svn_pool_destroy(subpool);
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/changelist-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/changelist-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/changelist-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/changelist-cmd.c Wed Aug 11 16:43:22 2010
@@ -24,6 +24,7 @@
#include "svn_client.h"
#include "svn_error_codes.h"
#include "svn_error.h"
+#include "svn_path.h"
#include "svn_utf.h"
#include "cl.h"
@@ -44,6 +45,7 @@ svn_cl__changelist(apr_getopt_t *os,
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
svn_depth_t depth = opt_state->depth;
+ int i;
/* If we're not removing changelists, then our first argument should
be the name of a changelist. */
@@ -70,10 +72,20 @@ svn_cl__changelist(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
- else
+ /* Don't even attempt to modify the working copy if any of the
+ * targets look like URLs. URLs are invalid input. */
+ for (i = 0; i < targets->nelts; i++)
+ {
+ const char *target = APR_ARRAY_IDX(targets, i, const char *);
+
+ if (svn_path_is_url(target))
+ return svn_error_return(svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR,
+ NULL,
+ _("'%s' is not a local path"),
+ target));
+ }
+
+ if (opt_state->quiet)
/* FIXME: This is required because svn_client_create_context()
always initializes ctx->notify_func2 to a wrapper function
which calls ctx->notify_func() if it isn't NULL. In other
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/checkout-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/checkout-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/checkout-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/checkout-cmd.c Wed Aug 11 16:43:22 2010
@@ -113,8 +113,7 @@ svn_cl__checkout(apr_getopt_t *os,
}
if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2, TRUE,
- FALSE, FALSE, pool));
+ SVN_ERR(svn_cl__notifier_mark_checkout(ctx->notify_baton2));
subpool = svn_pool_create(pool);
for (i = 0; i < targets->nelts - 1; ++i)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/cl.h?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cl.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cl.h Wed Aug 11 16:43:22 2010
@@ -358,9 +358,13 @@ svn_cl__conflict_handler(svn_wc_conflict
/* Print out commit information found in COMMIT_INFO to the console.
* POOL is used for temporay allocations.
* COMMIT_INFO should not be NULL.
+ *
+ * This function implements svn_commit_callback2_t.
*/
svn_error_t *
-svn_cl__print_commit_info(svn_commit_info_t *commit_info, apr_pool_t *pool);
+svn_cl__print_commit_info(const svn_commit_info_t *commit_info,
+ void *baton,
+ apr_pool_t *pool);
/* Convert the date in DATA to a human-readable UTF-8-encoded string
@@ -540,25 +544,27 @@ svn_cl__merge_file_externally(const char
/* Set *NOTIFY_FUNC_P and *NOTIFY_BATON_P to a notifier/baton for all
* operations, allocated in POOL.
*
- * If this is a checkout, set IS_CHECKOUT to true, so that the
- * notifier will print the appropriate summary line at the end of the
- * output.
- *
- * If this is an export, set IS_EXPORT to true, so that the
- * notifier will print the appropriate summary line at the end of the
- * output.
- *
* If don't want a summary line at the end of notifications, set
* SUPPRESS_FINAL_LINE.
*/
svn_error_t *
svn_cl__get_notifier(svn_wc_notify_func2_t *notify_func_p,
void **notify_baton_p,
- svn_boolean_t is_checkout,
- svn_boolean_t is_export,
svn_boolean_t suppress_final_line,
apr_pool_t *pool);
+/* Make the notifier for use with BATON print the appropriate summary
+ * line at the end of the output.
+ */
+svn_error_t *
+svn_cl__notifier_mark_checkout(void *baton);
+
+/* Make the notifier for use with BATON print the appropriate summary
+ * line at the end of the output.
+ */
+svn_error_t *
+svn_cl__notifier_mark_export(void *baton);
+
/* Print conflict stats accumulated in NOTIFY_BATON.
* Return any error encountered during printing.
* Do all allocations in POOL.*/
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/cleanup-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/cleanup-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cleanup-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cleanup-cmd.c Wed Aug 11 16:43:22 2010
@@ -28,10 +28,12 @@
/*** Includes. ***/
#include "svn_client.h"
+#include "svn_path.h"
#include "svn_pools.h"
#include "svn_error.h"
#include "cl.h"
+#include "svn_private_config.h"
/*** Code. ***/
@@ -55,6 +57,19 @@ svn_cl__cleanup(apr_getopt_t *os,
/* Add "." if user passed 0 arguments */
svn_opt_push_implicit_dot_target(targets, pool);
+ /* Don't even attempt to modify the working copy if any of the
+ * targets look like URLs. URLs are invalid input. */
+ for (i = 0; i < targets->nelts; i++)
+ {
+ const char *target = APR_ARRAY_IDX(targets, i, const char *);
+
+ if (svn_path_is_url(target))
+ return svn_error_return(svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR,
+ NULL,
+ _("'%s' is not a local path"),
+ target));
+ }
+
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
subpool = svn_pool_create(pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/commit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/commit-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/commit-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/commit-cmd.c Wed Aug 11 16:43:22 2010
@@ -38,6 +38,7 @@
#include "svn_config.h"
#include "cl.h"
+#include "svn_private_config.h"
/* This implements the `svn_opt_subcommand_t' interface. */
@@ -54,7 +55,6 @@ svn_cl__commit(apr_getopt_t *os,
const char *base_dir;
svn_config_t *cfg;
svn_boolean_t no_unlock = FALSE;
- svn_commit_info_t *commit_info = NULL;
int i;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
@@ -66,9 +66,10 @@ svn_cl__commit(apr_getopt_t *os,
{
const char *target = APR_ARRAY_IDX(targets, i, const char *);
if (svn_path_is_url(target))
- return svn_error_create(SVN_ERR_WC_BAD_PATH, NULL,
- "Must give local path (not URL) as the "
- "target of a commit");
+ return svn_error_return(
+ svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'%s' is a URL, but URLs cannot be "
+ "commit targets"), target));
}
/* Add "." if user passed 0 arguments. */
@@ -93,10 +94,6 @@ svn_cl__commit(apr_getopt_t *os,
base_dir = apr_pstrdup(pool, parent_dir);
}
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_infinity;
@@ -116,8 +113,7 @@ svn_cl__commit(apr_getopt_t *os,
ctx->config, pool));
/* Commit. */
- err = svn_client_commit4(&commit_info,
- targets,
+ err = svn_client_commit5(targets,
opt_state->depth,
no_unlock,
opt_state->keep_changelists,
@@ -140,8 +136,6 @@ svn_cl__commit(apr_getopt_t *os,
}
}
SVN_ERR(svn_cl__cleanup_log_msg(ctx->log_msg_baton3, err, pool));
- if (! err && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, pool));
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/copy-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/copy-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/copy-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/copy-cmd.c Wed Aug 11 16:43:22 2010
@@ -48,7 +48,6 @@ svn_cl__copy(apr_getopt_t *os,
apr_array_header_t *targets, *sources;
const char *src_path, *dst_path;
svn_boolean_t srcs_are_urls, dst_is_url;
- svn_commit_info_t *commit_info = NULL;
svn_error_t *err;
int i;
@@ -90,9 +89,6 @@ svn_cl__copy(apr_getopt_t *os,
if ((! srcs_are_urls) && (! dst_is_url))
{
/* WC->WC */
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
}
else if ((! srcs_are_urls) && (dst_is_url))
{
@@ -114,15 +110,18 @@ svn_cl__copy(apr_getopt_t *os,
display like: "Adding dir1/foo-copy.c", which could be a
bogus path.
*/
+ ctx->notify_func2 = NULL;
}
else if ((srcs_are_urls) && (! dst_is_url))
{
/* URL->WC : Use checkout-style notification. */
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- TRUE, FALSE, FALSE, pool));
+ SVN_ERR(svn_cl__notifier_mark_checkout(ctx->notify_baton2));
+ }
+ else
+ {
+ /* URL -> URL, meaning that no notification is needed. */
+ ctx->notify_func2 = NULL;
}
- /* else URL -> URL, meaning that no notification is needed. */
if (! dst_is_url)
{
@@ -138,7 +137,7 @@ svn_cl__copy(apr_getopt_t *os,
SVN_ERR(svn_cl__make_log_msg_baton(&(ctx->log_msg_baton3), opt_state,
NULL, ctx->config, pool));
- err = svn_client_copy5(&commit_info, sources, dst_path, TRUE,
+ err = svn_client_copy6(sources, dst_path, TRUE,
opt_state->parents, opt_state->ignore_externals,
opt_state->revprop_table, ctx, pool);
@@ -147,8 +146,5 @@ svn_cl__copy(apr_getopt_t *os,
else if (err)
return svn_error_return(err);
- if (commit_info && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, pool));
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/delete-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/delete-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/delete-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/delete-cmd.c Wed Aug 11 16:43:22 2010
@@ -46,8 +46,9 @@ svn_cl__delete(apr_getopt_t *os,
svn_cl__opt_state_t *opt_state = ((svn_cl__cmd_baton_t *) baton)->opt_state;
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
- svn_commit_info_t *commit_info = NULL;
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,
@@ -56,11 +57,19 @@ svn_cl__delete(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
+ /* 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 (! svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)))
+ if (! is_url)
{
ctx->log_msg_func3 = NULL;
if (opt_state->message || opt_state->filedata || opt_state->revprop_table)
@@ -79,9 +88,8 @@ svn_cl__delete(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- err = svn_client_delete3(&commit_info, targets, opt_state->force,
- opt_state->keep_local, opt_state->revprop_table,
- ctx, pool);
+ err = svn_client_delete4(targets, opt_state->force, opt_state->keep_local,
+ opt_state->revprop_table, ctx, pool);
if (err)
err = svn_cl__may_need_force(err);
@@ -90,8 +98,5 @@ svn_cl__delete(apr_getopt_t *os,
else if (err)
return svn_error_return(err);
- if (commit_info && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, pool));
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c Wed Aug 11 16:43:22 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/ignore-mergeinfo/subversion/svn/export-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/export-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/export-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/export-cmd.c Wed Aug 11 16:43:22 2010
@@ -34,6 +34,7 @@
#include "cl.h"
#include "svn_private_config.h"
+#include "private/svn_opt_private.h"
/*** Code. ***/
@@ -81,11 +82,18 @@ svn_cl__export(apr_getopt_t *os,
/* If given the cwd, pretend we weren't given anything. */
if (strcmp("", to) == 0)
to = svn_path_uri_decode(svn_uri_basename(truefrom, pool), pool);
+ else
+ /* svn_cl__eat_peg_revisions() but only on one target */
+ 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__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, TRUE, FALSE, pool));
+ SVN_ERR(svn_cl__notifier_mark_export(ctx->notify_baton2));
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_infinity;
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/import-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/import-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/import-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/import-cmd.c Wed Aug 11 16:43:22 2010
@@ -48,7 +48,6 @@ svn_cl__import(apr_getopt_t *os,
apr_array_header_t *targets;
const char *path;
const char *url;
- svn_commit_info_t *commit_info = NULL;
/* Import takes two arguments, for example
*
@@ -101,15 +100,16 @@ 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,
_("Invalid URL '%s'"), url);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_infinity;
@@ -118,8 +118,7 @@ svn_cl__import(apr_getopt_t *os,
SVN_ERR(svn_cl__cleanup_log_msg
(ctx->log_msg_baton3,
- svn_client_import3(&commit_info,
- path,
+ svn_client_import4(path,
url,
opt_state->depth,
opt_state->no_ignore,
@@ -128,8 +127,5 @@ svn_cl__import(apr_getopt_t *os,
ctx,
pool), pool));
- if (commit_info && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, pool));
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c Wed Aug 11 16:43:22 2010
@@ -87,12 +87,16 @@ print_info_xml(void *baton,
{
svn_stringbuf_t *sb = svn_stringbuf_create("", pool);
const char *rev_str;
+ const char *path_prefix = baton;
if (SVN_IS_VALID_REVNUM(info->rev))
rev_str = apr_psprintf(pool, "%ld", info->rev);
else
rev_str = apr_pstrdup(pool, _("Resource is not under version control."));
+ if (path_prefix)
+ target = svn_dirent_skip_ancestor(path_prefix, target);
+
/* "<entry ...>" */
svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "entry",
"path", svn_dirent_local_style(target, pool),
@@ -238,6 +242,11 @@ print_info(void *baton,
const svn_info_t *info,
apr_pool_t *pool)
{
+ const char *path_prefix = baton;
+
+ if (path_prefix)
+ target = svn_dirent_skip_ancestor(path_prefix, target);
+
SVN_ERR(svn_cmdline_printf(pool, _("Path: %s\n"),
svn_dirent_local_style(target, pool)));
@@ -484,6 +493,7 @@ svn_cl__info(apr_getopt_t *os,
svn_boolean_t saw_a_problem = FALSE;
svn_opt_revision_t peg_revision;
svn_info_receiver_t receiver;
+ const char *path_prefix;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -515,6 +525,8 @@ svn_cl__info(apr_getopt_t *os,
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_empty;
+ SVN_ERR(svn_dirent_get_absolute(&path_prefix, "", pool));
+
for (i = 0; i < targets->nelts; i++)
{
const char *truepath;
@@ -527,13 +539,17 @@ svn_cl__info(apr_getopt_t *os,
SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target, subpool));
/* If no peg-rev was attached to a URL target, then assume HEAD. */
- if ((svn_path_is_url(target))
- && (peg_revision.kind == svn_opt_revision_unspecified))
- peg_revision.kind = svn_opt_revision_head;
+ if (svn_path_is_url(target))
+ {
+ if (peg_revision.kind == svn_opt_revision_unspecified)
+ peg_revision.kind = svn_opt_revision_head;
+ }
+ else
+ SVN_ERR(svn_dirent_get_absolute(&truepath, truepath, subpool));
- err = svn_client_info2(truepath,
+ err = svn_client_info3(truepath,
&peg_revision, &(opt_state->start_revision),
- receiver, NULL, opt_state->depth,
+ receiver, (void *) path_prefix, opt_state->depth,
opt_state->changelists, ctx, subpool);
if (err)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/lock-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/lock-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/lock-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/lock-cmd.c Wed Aug 11 16:43:22 2010
@@ -101,9 +101,6 @@ svn_cl__lock(apr_getopt_t *os,
/* Get comment. */
SVN_ERR(get_comment(&comment, ctx, opt_state, pool));
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2, FALSE,
- FALSE, FALSE, pool));
-
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
return svn_client_lock(targets, comment, opt_state->force, ctx, pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c Wed Aug 11 16:43:22 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"
@@ -639,7 +640,7 @@ svn_cl__log(apr_getopt_t *os,
}
}
- /* Strip peg revision if targets contains an URI. */
+ /* Strip peg revision. */
SVN_ERR(svn_opt_parse_path(&peg_revision, &true_path, target, pool));
APR_ARRAY_IDX(targets, 0, const char *) = true_path;
@@ -649,10 +650,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));
}
}
@@ -665,10 +669,6 @@ svn_cl__log(apr_getopt_t *os,
lb.merge_stack = apr_array_make(pool, 0, sizeof(svn_revnum_t));
lb.pool = pool;
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
if (opt_state->xml)
{
/* If output is not incremental, output the XML header and wrap
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/main.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/main.c Wed Aug 11 16:43:22 2010
@@ -466,8 +466,8 @@ const svn_opt_subcommand_desc2_t svn_cl_
{ "changelist", svn_cl__changelist, {"cl"}, N_
("Associate (or dissociate) changelist CLNAME with the named files.\n"
- "usage: 1. changelist CLNAME TARGET...\n"
- " 2. changelist --remove TARGET...\n"),
+ "usage: 1. changelist CLNAME PATH...\n"
+ " 2. changelist --remove PATH...\n"),
{ 'q', 'R', opt_depth, opt_remove, opt_targets, opt_changelist} },
{ "checkout", svn_cl__checkout, {"co"}, N_
@@ -500,7 +500,7 @@ const svn_opt_subcommand_desc2_t svn_cl_
{ "cleanup", svn_cl__cleanup, {0}, N_
("Recursively clean up the working copy, removing locks, resuming\n"
"unfinished operations, etc.\n"
- "usage: cleanup [PATH...]\n"),
+ "usage: cleanup [WCPATH...]\n"),
{opt_merge_cmd} },
{ "commit", svn_cl__commit, {"ci"},
@@ -665,15 +665,18 @@ const svn_opt_subcommand_desc2_t svn_cl_
{opt_force_log, N_("force validity of lock comment source")}} },
{ "log", svn_cl__log, {0}, N_
- ("Show the log messages for a set of revision(s) and/or file(s).\n"
- "usage: 1. log [PATH]\n"
+ ("Show the log messages for a set of revision(s) and/or path(s).\n"
+ "usage: 1. log [PATH][@REV]\n"
" 2. log URL[@REV] [PATH...]\n"
"\n"
- " 1. Print the log messages for a local PATH (default: '.').\n"
- " The default revision range is BASE:1.\n"
+ " 1. Print the log messages for the URL corresponding to PATH\n"
+ " (default: '.'). If specified, REV is the revision in which the\n"
+ " URL is first looked up, and the default revision range is REV:1.\n"
+ " If REV is not specified, the default revision range is BASE:1,\n"
+ " since the URL might not exist in the HEAD revision.\n"
"\n"
" 2. Print the log messages for the PATHs (default: '.') under URL.\n"
- " If specified, REV determines in which revision the URL is first\n"
+ " If specified, REV is the revision in which the URL is first\n"
" looked up, and the default revision range is REV:1; otherwise,\n"
" the URL is looked up in HEAD, and the default revision range is\n"
" HEAD:1.\n"
@@ -694,8 +697,10 @@ const svn_opt_subcommand_desc2_t svn_cl_
" Examples:\n"
" svn log\n"
" svn log foo.c\n"
+ " svn log bar.c@42\n"
" svn log http://www.example.com/repo/project/foo.c\n"
- " svn log http://www.example.com/repo/project foo.c bar.c\n"),
+ " svn log http://www.example.com/repo/project foo.c bar.c\n"
+ " svn log http://www.example.com/repo/project@50 foo.c bar.c\n"),
{'r', 'q', 'v', 'g', 'c', opt_targets, opt_stop_on_copy, opt_incremental,
opt_xml, 'l', opt_with_all_revprops, opt_with_no_revprops, opt_with_revprop,
opt_show_diff, opt_diff_cmd, opt_internal_diff, 'x'},
@@ -932,20 +937,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"
@@ -954,6 +953,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"
@@ -1187,7 +1193,7 @@ const svn_opt_subcommand_desc2_t svn_cl_
{ "upgrade", svn_cl__upgrade, {0}, N_
("Upgrade the metadata storage format for a working copy.\n"
- "usage: upgrade TARGET...\n"),
+ "usage: upgrade WCPATH...\n"),
{0} },
{ NULL, NULL, {0}, NULL, {0} }
@@ -1780,6 +1786,7 @@ main(int argc, const char *argv[])
break;
case opt_use_git_diff_format:
opt_state.use_git_diff_format = TRUE;
+ break;
case opt_ignore_mergeinfo:
opt_state.ignore_mergeinfo = TRUE;
break;
@@ -2219,6 +2226,20 @@ main(int argc, const char *argv[])
subcommands will populate the ctx->log_msg_baton3. */
ctx->log_msg_func3 = svn_cl__get_log_message;
+ /* Set up the notifier. */
+ if (((subcommand->cmd_func != svn_cl__status) && !opt_state.quiet)
+ || ((subcommand->cmd_func == svn_cl__status) && !opt_state.xml))
+ {
+ err = svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
+ FALSE, pool);
+ if (err)
+ 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/ignore-mergeinfo/subversion/svn/merge-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/merge-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/merge-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/merge-cmd.c Wed Aug 11 16:43:22 2010
@@ -271,10 +271,6 @@ svn_cl__merge(apr_getopt_t *os,
}
}
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
if (opt_state->extensions)
options = svn_cstring_split(opt_state->extensions, " \t\n\r", TRUE, pool);
else
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/mkdir-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/mkdir-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/mkdir-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/mkdir-cmd.c Wed Aug 11 16:43:22 2010
@@ -47,7 +47,6 @@ svn_cl__mkdir(apr_getopt_t *os,
svn_cl__opt_state_t *opt_state = ((svn_cl__cmd_baton_t *) baton)->opt_state;
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
- svn_commit_info_t *commit_info = NULL;
svn_error_t *err;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
@@ -57,10 +56,6 @@ svn_cl__mkdir(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
if (! svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)))
{
ctx->log_msg_func3 = NULL;
@@ -80,7 +75,7 @@ svn_cl__mkdir(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- err = svn_client_mkdir3(&commit_info, targets, opt_state->parents,
+ err = svn_client_mkdir4(targets, opt_state->parents,
opt_state->revprop_table, ctx, pool);
if (ctx->log_msg_func3)
@@ -101,8 +96,5 @@ svn_cl__mkdir(apr_getopt_t *os,
return svn_error_return(err);
}
- if (commit_info && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, pool));
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/move-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/move-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/move-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/move-cmd.c Wed Aug 11 16:43:22 2010
@@ -48,7 +48,6 @@ svn_cl__move(apr_getopt_t *os,
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
apr_array_header_t *targets;
const char *dst_path;
- svn_commit_info_t *commit_info = NULL;
svn_error_t *err;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
@@ -66,10 +65,6 @@ svn_cl__move(apr_getopt_t *os,
_("Cannot specify revisions (except HEAD) with move operations"));
}
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
dst_path = APR_ARRAY_IDX(targets, targets->nelts - 1, const char *);
apr_array_pop(targets);
@@ -89,7 +84,7 @@ svn_cl__move(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- err = svn_client_move5(&commit_info, targets, dst_path, opt_state->force,
+ err = svn_client_move6(targets, dst_path, opt_state->force,
TRUE, opt_state->parents, opt_state->revprop_table,
ctx, pool);
@@ -101,8 +96,5 @@ svn_cl__move(apr_getopt_t *os,
else if (err)
return svn_error_return(err);
- if (commit_info && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, pool));
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/notify.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/notify.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/notify.c Wed Aug 11 16:43:22 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,13 +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 (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;
@@ -779,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;
}
@@ -804,8 +912,6 @@ notify(void *baton, const svn_wc_notify_
svn_error_t *
svn_cl__get_notifier(svn_wc_notify_func2_t *notify_func_p,
void **notify_baton_p,
- svn_boolean_t is_checkout,
- svn_boolean_t is_export,
svn_boolean_t suppress_final_line,
apr_pool_t *pool)
{
@@ -813,8 +919,8 @@ svn_cl__get_notifier(svn_wc_notify_func2
nb->received_some_change = FALSE;
nb->sent_first_txdelta = FALSE;
- nb->is_checkout = is_checkout;
- nb->is_export = is_export;
+ nb->is_checkout = FALSE;
+ nb->is_export = FALSE;
nb->suppress_final_line = suppress_final_line;
nb->in_external = FALSE;
nb->had_print_error = FALSE;
@@ -828,3 +934,21 @@ svn_cl__get_notifier(svn_wc_notify_func2
*notify_baton_p = nb;
return SVN_NO_ERROR;
}
+
+svn_error_t *
+svn_cl__notifier_mark_checkout(void *baton)
+{
+ struct notify_baton *nb = baton;
+
+ nb->is_checkout = TRUE;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_cl__notifier_mark_export(void *baton)
+{
+ struct notify_baton *nb = baton;
+
+ nb->is_export = TRUE;
+ return SVN_NO_ERROR;
+}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c Wed Aug 11 16:43:22 2010
@@ -72,10 +72,6 @@ svn_cl__patch(apr_getopt_t *os,
APR_ARRAY_IDX(targets, 0, const char *),
pool));
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, pool));
-
SVN_ERR(svn_client_patch(abs_patch_path, abs_target_path,
opt_state->dry_run, opt_state->strip_count,
opt_state->reverse_diff,
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/propdel-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/propdel-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/propdel-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/propdel-cmd.c Wed Aug 11 16:43:22 2010
@@ -91,8 +91,8 @@ svn_cl__propdel(apr_getopt_t *os,
if (! opt_state->quiet)
{
- SVN_ERR(svn_cl__get_notifier(&nwb.real_func, &nwb.real_baton, FALSE,
- FALSE, FALSE, pool));
+ nwb.real_func = ctx->notify_func2;
+ nwb.real_baton = ctx->notify_baton2;
ctx->notify_func2 = notify_wrapper;
ctx->notify_baton2 = &nwb;
}
@@ -129,15 +129,14 @@ svn_cl__propdel(apr_getopt_t *os,
for (i = 0; i < targets->nelts; i++)
{
const char *target = APR_ARRAY_IDX(targets, i, const char *);
- svn_commit_info_t *commit_info;
svn_pool_clear(subpool);
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
/* Pass FALSE for 'skip_checks' because it doesn't matter here,
and opt_state->force doesn't apply to this command anyway. */
- SVN_ERR(svn_cl__try(svn_client_propset3
- (&commit_info, pname_utf8,
+ SVN_ERR(svn_cl__try(svn_client_propset4(
+ pname_utf8,
NULL, target,
opt_state->depth,
FALSE, SVN_INVALID_REVNUM,
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c Wed Aug 11 16:43:22 2010
@@ -45,6 +45,26 @@
/*** Code. ***/
+struct commit_info_baton
+{
+ const char *pname_utf8;
+ const char *target_local;
+};
+
+static svn_error_t *
+commit_info_handler(const svn_commit_info_t *commit_info,
+ void *baton,
+ apr_pool_t *pool)
+{
+ struct commit_info_baton *cib = baton;
+
+ SVN_ERR(svn_cmdline_printf(pool,
+ _("Set new value for property '%s' on '%s'\n"),
+ cib->pname_utf8, cib->target_local));
+ SVN_ERR(svn_cl__print_commit_info(commit_info, NULL, pool));
+
+ return SVN_NO_ERROR;
+}
/* This implements the `svn_opt_subcommand_t' interface. */
svn_error_t *
@@ -78,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;
@@ -153,6 +176,7 @@ svn_cl__propedit(apr_getopt_t *os,
else /* operate on a normal, versioned property (not a revprop) */
{
apr_pool_t *subpool = svn_pool_create(pool);
+ struct commit_info_baton cib;
/* The customary implicit dot rule has been prone to user error
* here. For example, Jon Trowbridge <tr...@gnu.og> did
@@ -178,6 +202,8 @@ svn_cl__propedit(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
+ cib.pname_utf8 = pname_utf8;
+
/* For each target, edit the property PNAME. */
for (i = 0; i < targets->nelts; i++)
{
@@ -255,11 +281,14 @@ svn_cl__propedit(apr_getopt_t *os,
target_local = svn_path_is_url(target) ? target
: 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))
{
- svn_commit_info_t *commit_info = NULL;
svn_error_t *err = SVN_NO_ERROR;
svn_cl__check_boolean_prop_val(pname_utf8, edited_propval->data,
@@ -270,8 +299,7 @@ svn_cl__propedit(apr_getopt_t *os,
opt_state, NULL, ctx->config,
subpool));
- err = svn_client_propset3(&commit_info,
- pname_utf8, edited_propval, target,
+ err = svn_client_propset4(pname_utf8, edited_propval, target,
svn_depth_empty, opt_state->force,
base_rev, NULL, opt_state->revprop_table,
ctx, subpool);
@@ -284,14 +312,10 @@ svn_cl__propedit(apr_getopt_t *os,
/* Print a message if we successfully committed or if it
was just a wc propset (but not if the user aborted an URL
propedit). */
- if (commit_info || ! svn_path_is_url(target))
- SVN_ERR
- (svn_cmdline_printf
- (subpool, _("Set new value for property '%s' on '%s'\n"),
- pname_utf8, target_local));
-
- if (commit_info && ! opt_state->quiet)
- SVN_ERR(svn_cl__print_commit_info(commit_info, subpool));
+ if (!svn_path_is_url(target))
+ SVN_ERR(svn_cmdline_printf(
+ subpool, _("Set new value for property '%s' on '%s'\n"),
+ pname_utf8, target_local));
}
else
{
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/propset-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/propset-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/propset-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/propset-cmd.c Wed Aug 11 16:43:22 2010
@@ -100,10 +100,6 @@ svn_cl__propset(apr_getopt_t *os,
opt_state->targets,
ctx, scratch_pool));
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
/* Implicit "." is okay for revision properties; it just helps
us find the right repository. */
if (opt_state->revprop)
@@ -179,12 +175,11 @@ svn_cl__propset(apr_getopt_t *os,
for (i = 0; i < targets->nelts; i++)
{
const char *target = APR_ARRAY_IDX(targets, i, const char *);
- svn_commit_info_t *commit_info;
svn_pool_clear(iterpool);
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
- SVN_ERR(svn_cl__try(svn_client_propset3
- (&commit_info, pname_utf8, propval, target,
+ SVN_ERR(svn_cl__try(svn_client_propset4(
+ pname_utf8, propval, target,
opt_state->depth, opt_state->force,
SVN_INVALID_REVNUM, opt_state->changelists,
NULL, ctx, iterpool),
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/resolve-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/resolve-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/resolve-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/resolve-cmd.c Wed Aug 11 16:43:22 2010
@@ -88,10 +88,6 @@ svn_cl__resolve(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_empty;
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/resolved-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/resolved-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/resolved-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/resolved-cmd.c Wed Aug 11 16:43:22 2010
@@ -59,10 +59,6 @@ svn_cl__resolved(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_empty;
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/revert-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/revert-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/revert-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/revert-cmd.c Wed Aug 11 16:43:22 2010
@@ -56,10 +56,6 @@ svn_cl__revert(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
/* Revert is especially conservative, by default it is as
nonrecursive as possible. */
if (opt_state->depth == svn_depth_unknown)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c Wed Aug 11 16:43:22 2010
@@ -262,11 +262,6 @@ svn_cl__status(apr_getopt_t *os,
/* We want our -u statuses to be against HEAD. */
rev.kind = svn_opt_revision_head;
- /* The notification callback, leave the notifier as NULL in XML mode */
- if (! opt_state->xml)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
sb.had_print_error = FALSE;
if (opt_state->xml)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/switch-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/switch-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/switch-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/switch-cmd.c Wed Aug 11 16:43:22 2010
@@ -145,10 +145,6 @@ svn_cl__switch(apr_getopt_t *os,
/* Canonicalize the URL. */
switch_url = svn_uri_canonicalize(switch_url, scratch_pool);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
/* Deal with depthstuffs. */
if (opt_state->set_depth != svn_depth_unknown)
{
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/unlock-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/unlock-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/unlock-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/unlock-cmd.c Wed Aug 11 16:43:22 2010
@@ -57,9 +57,6 @@ svn_cl__unlock(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2, FALSE,
- FALSE, FALSE, scratch_pool));
-
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, scratch_pool));
return svn_error_return(
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/update-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/update-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/update-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/update-cmd.c Wed Aug 11 16:43:22 2010
@@ -73,10 +73,6 @@ svn_cl__update(apr_getopt_t *os,
scratch_pool));
}
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
/* Deal with depthstuffs. */
if (opt_state->set_depth != svn_depth_unknown)
{
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/upgrade-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/upgrade-cmd.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/upgrade-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/upgrade-cmd.c Wed Aug 11 16:43:22 2010
@@ -57,10 +57,6 @@ svn_cl__upgrade(apr_getopt_t *os,
/* Add "." if user passed 0 arguments */
svn_opt_push_implicit_dot_target(targets, scratch_pool);
- if (! opt_state->quiet)
- SVN_ERR(svn_cl__get_notifier(&ctx->notify_func2, &ctx->notify_baton2,
- FALSE, FALSE, FALSE, scratch_pool));
-
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, scratch_pool));
iterpool = svn_pool_create(scratch_pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/util.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/util.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/util.c Wed Aug 11 16:43:22 2010
@@ -66,7 +66,8 @@
svn_error_t *
-svn_cl__print_commit_info(svn_commit_info_t *commit_info,
+svn_cl__print_commit_info(const svn_commit_info_t *commit_info,
+ void *baton,
apr_pool_t *pool)
{
if (SVN_IS_VALID_REVNUM(commit_info->revision))
Modified: subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c Wed Aug 11 16:43:22 2010
@@ -833,11 +833,11 @@ display_prop_diffs(const apr_array_heade
orig_value = NULL;
if (! orig_value)
- header_fmt = _("Added: %s\n");
+ header_fmt = "Added: %s\n";
else if (! pc->value)
- header_fmt = _("Deleted: %s\n");
+ header_fmt = "Deleted: %s\n";
else
- header_fmt = _("Modified: %s\n");
+ header_fmt = "Modified: %s\n";
SVN_ERR(svn_cmdline_printf(pool, header_fmt, pc->name));
/* Flush stdout before we open a stream to it below. */
@@ -902,6 +902,7 @@ print_diff_tree(svn_fs_root_t *root,
svn_boolean_t orig_empty = FALSE;
svn_boolean_t is_copy = FALSE;
svn_boolean_t binary = FALSE;
+ svn_boolean_t diff_header_printed = FALSE;
apr_pool_t *subpool;
svn_stringbuf_t *header;
@@ -1074,6 +1075,7 @@ print_diff_tree(svn_fs_root_t *root,
svn_cmdline_output_encoding(pool), NULL, FALSE, pool));
SVN_ERR(svn_stream_close(ostream));
SVN_ERR(svn_cmdline_printf(pool, "\n"));
+ diff_header_printed = TRUE;
}
else if (! node->prop_mod &&
((! c->no_diff_added && node->action == 'A') ||
@@ -1114,7 +1116,24 @@ print_diff_tree(svn_fs_root_t *root,
base_proptable, pool));
SVN_ERR(svn_categorize_props(propchanges, NULL, NULL, &props, pool));
if (props->nelts > 0)
- SVN_ERR(display_prop_diffs(props, base_proptable, path, pool));
+ {
+ /* We print a diff header for the case when we only have property
+ * mods. */
+ if (! diff_header_printed)
+ {
+ const char *orig_label, *new_label;
+
+ SVN_ERR(generate_label(&orig_label, base_root, base_path,
+ pool));
+ SVN_ERR(generate_label(&new_label, root, path, pool));
+
+ SVN_ERR(svn_cmdline_printf(pool, "Index: %s\n", path));
+ SVN_ERR(svn_cmdline_printf(pool, "%s\n", equal_string));
+ SVN_ERR(svn_cmdline_printf(pool, "--- %s\n", orig_label));
+ SVN_ERR(svn_cmdline_printf(pool, "+++ %s\n", new_label));
+ }
+ SVN_ERR(display_prop_diffs(props, base_proptable, path, pool));
+ }
}
/* Return here if the node has no children. */
Propchange: subversion/branches/ignore-mergeinfo/subversion/svnrdump/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Aug 11 16:43:22 2010
@@ -0,0 +1,7 @@
+svnrdump
+svnrdump.exe
+.libs
+*.o
+*.lo
+*~
+.*~
Modified: subversion/branches/ignore-mergeinfo/subversion/svnsync/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnsync/main.c?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnsync/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnsync/main.c Wed Aug 11 16:43:22 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));
}
Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/README
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/README?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/README (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/README Wed Aug 11 16:43:22 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/ignore-mergeinfo/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/basic_tests.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/basic_tests.py Wed Aug 11 16:43:22 2010
@@ -33,6 +33,7 @@ from svntest import wc
# (abbreviation)
Skip = svntest.testcase.Skip
+SkipUnless = svntest.testcase.SkipUnless
XFail = svntest.testcase.XFail
Wimp = svntest.testcase.Wimp
Item = wc.StateItem
@@ -703,8 +704,11 @@ def basic_cleanup(sbox):
svntest.actions.run_and_verify_status(wc_dir, expected_output)
- # corrupted/non-existing temporary directory should be restored
- svntest.actions.remove_admin_tmp_dir(B_path)
+ # corrupted/non-existing temporary directory should be restored while
+ # we are not at single-db (where this tmp dir will be gone)
+ tmp_path = os.path.join(B_path, svntest.main.get_admin_name(), 'tmp')
+ if os.path.exists(tmp_path):
+ svntest.main.safe_rmtree(tmp_path)
# Run cleanup (### todo: cleanup doesn't currently print anything)
svntest.actions.run_and_verify_svn("Cleanup command", None, [],
@@ -1145,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):
@@ -1209,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"
@@ -1228,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)
@@ -1257,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)
@@ -1962,6 +1966,7 @@ def basic_rm_urls_one_repo(sbox):
expected_disk,
expected_status)
+# Test for issue #1199
def basic_rm_urls_multi_repos(sbox):
"remotely remove directories from two repositories"
@@ -2508,6 +2513,44 @@ def delete_from_url_with_spaces(sbox):
'rm', sbox.repo_url + '/Dir%20With/Spaces',
'-m', 'Deleted')
+def meta_correct_library_being_used(sbox):
+ "verify that neon/serf are compiled if tested"
+ expected_re = (r'^\* ra_%s :' % svntest.main.options.http_library)
+ expected_output = svntest.verify.RegexOutput(expected_re, match_all=False)
+ 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)
+
#----------------------------------------------------------------------
########################################################################
@@ -2530,7 +2573,7 @@ test_list = [ None,
basic_switch,
basic_delete,
basic_checkout_deleted,
- basic_node_kind_change,
+ Wimp('Needs single-db', basic_node_kind_change),
basic_import,
basic_cat,
basic_ls,
@@ -2565,6 +2608,9 @@ test_list = [ None,
basic_add_svn_format_file,
basic_mkdir_mix_targets,
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/ignore-mergeinfo/subversion/tests/cmdline/cat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/cat_tests.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/cat_tests.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/cat_tests.py Wed Aug 11 16:43:22 2010
@@ -173,6 +173,30 @@ def cat_unversioned_file(sbox):
svntest.actions.run_and_verify_svn2(None, [], expected_error, 0,
'cat', iota_path)
+
+def cat_keywords(sbox):
+ "cat a file with the svn:keywords property"
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ iota_path = os.path.join(wc_dir, 'iota')
+
+ svntest.actions.run_and_verify_svn(None,
+ ["This is the file 'iota'.\n"],
+ [], 'cat', iota_path)
+
+ svntest.main.file_append(iota_path, "$Revision$\n")
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'svn:keywords', 'Revision',
+ iota_path)
+
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'r2', wc_dir)
+
+ svntest.actions.run_and_verify_svn(None,
+ ["This is the file 'iota'.\n", "$Revision: 2 $\n"],
+ [], 'cat', iota_path)
+
+
########################################################################
# Run the tests
@@ -185,6 +209,7 @@ test_list = [ None,
cat_nonexistent_file,
cat_skip_uncattable,
cat_unversioned_file,
+ cat_keywords,
]
if __name__ == '__main__':