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/12/11 01:16:08 UTC
svn commit: r1044548 [31/39] - in /subversion/branches/ignore-mergeinfo: ./
build/ build/ac-macros/ build/generator/ build/generator/templates/
build/win32/ contrib/client-side/ contrib/hook-scripts/
contrib/server-side/ notes/api-errata/ notes/api-err...
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/add-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/add-cmd.c Sat Dec 11 00:15:55 2010
@@ -71,10 +71,8 @@ svn_cl__add(apr_getopt_t *os,
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));
+ return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'%s' is not a local path"), target);
}
iterpool = svn_pool_create(pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/blame-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/blame-cmd.c?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/blame-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/blame-cmd.c Sat Dec 11 00:15:55 2010
@@ -203,11 +203,11 @@ blame_receiver(void *baton,
we may need to adjust this. */
if (merged_revision < revision)
{
- svn_stream_printf(out, pool, "G ");
+ SVN_ERR(svn_stream_printf(out, pool, "G "));
use_merged = TRUE;
}
else
- svn_stream_printf(out, pool, " ");
+ SVN_ERR(svn_stream_printf(out, pool, " "));
}
if (use_merged)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/cat-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/cat-cmd.c?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cat-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cat-cmd.c Sat Dec 11 00:15:55 2010
@@ -68,8 +68,8 @@ svn_cl__cat(apr_getopt_t *os,
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
/* Get peg revisions. */
- SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target,
- subpool));
+ SVN_ERR(svn_cl__opt_parse_path(&peg_revision, &truepath, target,
+ subpool));
SVN_ERR(svn_cl__try(svn_client_cat2(out, truepath, &peg_revision,
&(opt_state->start_revision),
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/changelist-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/changelist-cmd.c Sat Dec 11 00:15:55 2010
@@ -55,9 +55,6 @@ svn_cl__changelist(apr_getopt_t *os,
apr_array_header_t *args;
SVN_ERR(svn_opt_parse_num_args(&args, os, 1, pool));
changelist_name = APR_ARRAY_IDX(args, 0, const char *);
- if (changelist_name[0] == '\0')
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("Changelist names must not be empty"));
SVN_ERR(svn_utf_cstring_to_utf8(&changelist_name,
changelist_name, pool));
}
@@ -79,10 +76,8 @@ svn_cl__changelist(apr_getopt_t *os,
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));
+ return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'%s' is not a local path"), target);
}
if (opt_state->quiet)
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/checkout-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/checkout-cmd.c Sat Dec 11 00:15:55 2010
@@ -93,8 +93,6 @@ svn_cl__checkout(apr_getopt_t *os,
/* Discard the peg-revision, if one was provided. */
SVN_ERR(svn_opt_parse_path(&pegrev, &local_dir, local_dir, pool));
- if (pegrev.kind != svn_opt_revision_unspecified)
- local_dir = svn_uri_canonicalize(local_dir, pool);
local_dir = svn_uri_basename(local_dir, pool);
local_dir = svn_path_uri_decode(local_dir, pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/cl.h?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cl.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cl.h Sat Dec 11 00:15:55 2010
@@ -221,15 +221,15 @@ typedef struct svn_cl__opt_state_t
svn_boolean_t reintegrate; /* use "reintegrate" merge-source heuristic */
svn_boolean_t trust_server_cert; /* trust server SSL certs that would
otherwise be rejected as "untrusted" */
- int strip_count; /* number of leading path components to strip */
+ int strip; /* number of leading path components to strip */
svn_boolean_t ignore_keywords; /* do not expand keywords */
svn_boolean_t reverse_diff; /* reverse a diff (e.g. when patching) */
svn_boolean_t ignore_whitespace; /* don't account for whitespace when
patching */
- svn_boolean_t show_diff; /* produce diff output */
+ svn_boolean_t show_diff; /* produce diff output (maps to --diff) */
svn_boolean_t internal_diff; /* override diff_cmd in config file */
svn_boolean_t use_git_diff_format; /* Use git's extended diff format */
- svn_boolean_t old_patch_target_names; /* Use target names from old side */
+ svn_boolean_t allow_mixed_rev; /* Allow operation on mixed-revision WC */
svn_boolean_t ignore_mergeinfo; /* ignore mergeinfo in reporting commands. */
} svn_cl__opt_state_t;
@@ -271,6 +271,7 @@ svn_opt_subcommand_t
svn_cl__propget,
svn_cl__proplist,
svn_cl__propset,
+ svn_cl__relocate,
svn_cl__revert,
svn_cl__resolve,
svn_cl__resolved,
@@ -418,15 +419,18 @@ svn_cl__print_status_xml(const char *pat
apr_pool_t *pool);
-/* Print a hash that maps property names (char *) to property values
- (svn_string_t *). The names are assumed to be in UTF-8 format;
+/* Print to stdout a hash that maps property names (char *) to property
+ values (svn_string_t *). The names are assumed to be in UTF-8 format;
the values are either in UTF-8 (the special Subversion props) or
plain binary values.
+ If OUT is not NULL, then write to it rather than stdout.
+
If NAMES_ONLY is true, print just names, else print names and
values. */
svn_error_t *
-svn_cl__print_prop_hash(apr_hash_t *prop_hash,
+svn_cl__print_prop_hash(svn_stream_t *out,
+ apr_hash_t *prop_hash,
svn_boolean_t names_only,
apr_pool_t *pool);
@@ -566,6 +570,21 @@ svn_cl__notifier_mark_checkout(void *bat
svn_error_t *
svn_cl__notifier_mark_export(void *baton);
+/* Baton for use with svn_cl__check_externals_failed_notify_wrapper(). */
+struct svn_cl__check_externals_failed_notify_baton
+{
+ svn_wc_notify_func2_t wrapped_func; /* The "real" notify_func2. */
+ void *wrapped_baton; /* The "real" notify_func2 baton. */
+ svn_boolean_t had_externals_error; /* Did something fail in an external? */
+};
+
+/* Notification function wrapper (implements `svn_wc_notify_func2_t').
+ Use with an svn_cl__check_externals_failed_notify_baton BATON. */
+void
+svn_cl__check_externals_failed_notify_wrapper(void *baton,
+ const svn_wc_notify_t *n,
+ apr_pool_t *pool);
+
/* Print conflict stats accumulated in NOTIFY_BATON.
* Return any error encountered during printing.
* Do all allocations in POOL.*/
@@ -627,7 +646,10 @@ svn_cl__cleanup_log_msg(void *log_msg_ba
svn_error_t *
svn_cl__may_need_force(svn_error_t *err);
-/* Write the STRING to the stdio STREAM, returning an error if it fails. */
+/* Write the STRING to the stdio STREAM, returning an error if it fails.
+
+ This function is equal to svn_cmdline_fputs() minus the utf8->local
+ encoding translation. */
svn_error_t *
svn_cl__error_checked_fputs(const char *string, FILE* stream);
@@ -789,6 +811,18 @@ svn_cl__eat_peg_revisions(apr_array_head
const apr_array_header_t *targets,
apr_pool_t *pool);
+/* Like svn_opt_parse_path(), but canonicalizes dirent/URL */
+svn_error_t *
+svn_cl__opt_parse_path(svn_opt_revision_t *rev,
+ const char **truepath,
+ const char *path,
+ apr_pool_t *pool);
+
+/* Return an error if TARGETS contains a mixture of URLs and paths; otherwise
+ * return SVN_NO_ERROR. */
+svn_error_t *
+svn_cl__assert_homogeneous_target_type(const apr_array_header_t *targets);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cleanup-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cleanup-cmd.c Sat Dec 11 00:15:55 2010
@@ -64,10 +64,8 @@ svn_cl__cleanup(apr_getopt_t *os,
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));
+ 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));
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/commit-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/commit-cmd.c Sat Dec 11 00:15:55 2010
@@ -97,6 +97,21 @@ svn_cl__commit(apr_getopt_t *os,
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_infinity;
+ /* Copies are done server-side, and cheaply, which means they're
+ * effectively always done with infinite depth.
+ * This is a potential cause of confusion for users trying to commit
+ * copied subtrees in part by restricting the commit's depth.
+ * See issue #3699. */
+ if (opt_state->depth < svn_depth_infinity)
+ SVN_ERR(svn_cmdline_printf(pool,
+ _("svn: warning: The depth of this commit "
+ "is '%s', but copied directories will "
+ "regardless be committed with depth '%s'. "
+ "You must remove unwanted children of those "
+ "directories in a separate commit.\n"),
+ svn_depth_to_word(opt_state->depth),
+ svn_depth_to_word(svn_depth_infinity)));
+
cfg = apr_hash_get(ctx->config, SVN_CONFIG_CATEGORY_CONFIG,
APR_HASH_KEY_STRING);
if (cfg)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/conflict-callbacks.c?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/conflict-callbacks.c Sat Dec 11 00:15:55 2010
@@ -61,7 +61,7 @@ svn_cl__accept_from_word(const char *wor
{
/* Shorthand options are consistent with svn_cl__conflict_handler(). */
if (strcmp(word, SVN_CL__ACCEPT_POSTPONE) == 0
- || strcmp(word, "p") == 0)
+ || strcmp(word, "p") == 0 || strcmp(word, ":-P") == 0)
return svn_cl__accept_postpone;
if (strcmp(word, SVN_CL__ACCEPT_BASE) == 0)
/* ### shorthand? */
@@ -70,22 +70,22 @@ svn_cl__accept_from_word(const char *wor
/* ### shorthand? */
return svn_cl__accept_working;
if (strcmp(word, SVN_CL__ACCEPT_MINE_CONFLICT) == 0
- || strcmp(word, "mc") == 0)
+ || strcmp(word, "mc") == 0 || strcmp(word, "X-)") == 0)
return svn_cl__accept_mine_conflict;
if (strcmp(word, SVN_CL__ACCEPT_THEIRS_CONFLICT) == 0
- || strcmp(word, "tc") == 0)
+ || strcmp(word, "tc") == 0 || strcmp(word, "X-(") == 0)
return svn_cl__accept_theirs_conflict;
if (strcmp(word, SVN_CL__ACCEPT_MINE_FULL) == 0
- || strcmp(word, "mf") == 0)
+ || strcmp(word, "mf") == 0 || strcmp(word, ":-)") == 0)
return svn_cl__accept_mine_full;
if (strcmp(word, SVN_CL__ACCEPT_THEIRS_FULL) == 0
- || strcmp(word, "tf") == 0)
+ || strcmp(word, "tf") == 0 || strcmp(word, ":-(") == 0)
return svn_cl__accept_theirs_full;
if (strcmp(word, SVN_CL__ACCEPT_EDIT) == 0
- || strcmp(word, "e") == 0)
+ || strcmp(word, "e") == 0 || strcmp(word, ":-E") == 0)
return svn_cl__accept_edit;
if (strcmp(word, SVN_CL__ACCEPT_LAUNCH) == 0
- || strcmp(word, "l") == 0)
+ || strcmp(word, "l") == 0 || strcmp(word, ":-l") == 0)
return svn_cl__accept_launch;
/* word is an invalid action. */
return svn_cl__accept_invalid;
@@ -470,34 +470,34 @@ svn_cl__conflict_handler(svn_wc_conflict
{
prompt = apr_pstrcat(subpool, prompt,
_(", (df) diff-full, (e) edit"),
- NULL);
+ (char *)NULL);
if (knows_something)
prompt = apr_pstrcat(subpool, prompt, _(", (r) resolved"),
- NULL);
+ (char *)NULL);
if (! desc->is_binary &&
desc->kind != svn_wc_conflict_kind_property)
prompt = apr_pstrcat(subpool, prompt,
_(",\n (mc) mine-conflict, "
"(tc) theirs-conflict"),
- NULL);
+ (char *)NULL);
}
else
{
if (knows_something)
prompt = apr_pstrcat(subpool, prompt, _(", (r) resolved"),
- NULL);
+ (char *)NULL);
prompt = apr_pstrcat(subpool, prompt,
_(",\n "
"(mf) mine-full, (tf) theirs-full"),
- NULL);
+ (char *)NULL);
}
- prompt = apr_pstrcat(subpool, prompt, ",\n ", NULL);
+ prompt = apr_pstrcat(subpool, prompt, ",\n ", (char *)NULL);
prompt = apr_pstrcat(subpool, prompt,
_("(s) show all options: "),
- NULL);
+ (char *)NULL);
SVN_ERR(svn_cmdline_prompt_user2(&answer, prompt, b->pb, subpool));
@@ -529,13 +529,13 @@ svn_cl__conflict_handler(svn_wc_conflict
"resolve conflict\n"
" (s) show all - show this list\n\n")));
}
- else if (strcmp(answer, "p") == 0)
+ else if (strcmp(answer, "p") == 0 || strcmp(answer, ":-P") == 0)
{
/* Do nothing, let file be marked conflicted. */
(*result)->choice = svn_wc_conflict_choose_postpone;
break;
}
- else if (strcmp(answer, "mc") == 0)
+ else if (strcmp(answer, "mc") == 0 || strcmp(answer, "X-)") == 0)
{
if (desc->is_binary)
{
@@ -559,7 +559,7 @@ svn_cl__conflict_handler(svn_wc_conflict
(*result)->save_merged = TRUE;
break;
}
- else if (strcmp(answer, "tc") == 0)
+ else if (strcmp(answer, "tc") == 0 || strcmp(answer, "X-(") == 0)
{
if (desc->is_binary)
{
@@ -582,14 +582,14 @@ svn_cl__conflict_handler(svn_wc_conflict
(*result)->save_merged = TRUE;
break;
}
- else if (strcmp(answer, "mf") == 0)
+ else if (strcmp(answer, "mf") == 0 || strcmp(answer, ":-)") == 0)
{
(*result)->choice = svn_wc_conflict_choose_mine_full;
if (performed_edit)
(*result)->save_merged = TRUE;
break;
}
- else if (strcmp(answer, "tf") == 0)
+ else if (strcmp(answer, "tf") == 0 || strcmp(answer, ":-(") == 0)
{
(*result)->choice = svn_wc_conflict_choose_theirs_full;
if (performed_edit)
@@ -637,13 +637,13 @@ svn_cl__conflict_handler(svn_wc_conflict
SVN_ERR(show_diff(desc, subpool));
knows_something = TRUE;
}
- else if (strcmp(answer, "e") == 0)
+ else if (strcmp(answer, "e") == 0 || strcmp(answer, ":-E") == 0)
{
SVN_ERR(open_editor(&performed_edit, desc, b, subpool));
if (performed_edit)
knows_something = TRUE;
}
- else if (strcmp(answer, "l") == 0)
+ else if (strcmp(answer, "l") == 0 || strcmp(answer, ":-l") == 0)
{
if (desc->kind == svn_wc_conflict_kind_property)
{
@@ -729,17 +729,17 @@ svn_cl__conflict_handler(svn_wc_conflict
"(overwrite pre-existing item)\n"
" (h) help - show this help\n\n")));
}
- if (strcmp(answer, "p") == 0)
+ if (strcmp(answer, "p") == 0 || strcmp(answer, ":-P") == 0)
{
(*result)->choice = svn_wc_conflict_choose_postpone;
break;
}
- if (strcmp(answer, "mf") == 0)
+ if (strcmp(answer, "mf") == 0 || strcmp(answer, ":-)") == 0)
{
(*result)->choice = svn_wc_conflict_choose_mine_full;
break;
}
- if (strcmp(answer, "tf") == 0)
+ if (strcmp(answer, "tf") == 0 || strcmp(answer, ":-(") == 0)
{
(*result)->choice = svn_wc_conflict_choose_theirs_full;
break;
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/copy-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/copy-cmd.c Sat Dec 11 00:15:55 2010
@@ -78,8 +78,10 @@ svn_cl__copy(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- /* Figure out which type of trace editor to use.
- If the src_paths are not homogeneous, setup_copy will return an error. */
+ /* Figure out which type of notification to use.
+ (There is no need to check that the src paths are homogeneous;
+ svn_client_copy6() through its subroutine try_copy() will return an
+ error if they are not.) */
src_path = APR_ARRAY_IDX(targets, 0, const char *);
srcs_are_urls = svn_path_is_url(src_path);
dst_path = APR_ARRAY_IDX(targets, targets->nelts - 1, const char *);
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/delete-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/delete-cmd.c Sat Dec 11 00:15:55 2010
@@ -48,7 +48,6 @@ svn_cl__delete(apr_getopt_t *os,
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,
@@ -57,17 +56,8 @@ svn_cl__delete(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
- /* Check that all targets are of the same type. */
+ SVN_ERR(svn_cl__assert_homogeneous_target_type(targets));
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)
{
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c Sat Dec 11 00:15:55 2010
@@ -260,7 +260,7 @@ svn_cl__diff(apr_getopt_t *os,
}
else
{
- svn_boolean_t working_copy_present = FALSE, url_present = FALSE;
+ svn_boolean_t working_copy_present;
/* The 'svn diff [-r N[:M]] [TARGET[@REV]...]' case matches. */
@@ -272,25 +272,14 @@ svn_cl__diff(apr_getopt_t *os,
old_target = "";
new_target = "";
- /* Check to see if at least one of our paths is a working copy
- path. */
- for (i = 0; i < targets->nelts; ++i)
- {
- const char *path = APR_ARRAY_IDX(targets, i, const char *);
- if (! svn_path_is_url(path))
- working_copy_present = TRUE;
- else
- url_present = TRUE;
- }
+ SVN_ERR(svn_cl__assert_homogeneous_target_type(targets));
- if (url_present && working_copy_present)
- return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("Cannot mix repository and working copy "
- "targets"));
+ working_copy_present = ! svn_path_is_url(APR_ARRAY_IDX(targets, 0,
+ const char *));
if (opt_state->start_revision.kind == svn_opt_revision_unspecified
&& working_copy_present)
- opt_state->start_revision.kind = svn_opt_revision_base;
+ opt_state->start_revision.kind = svn_opt_revision_base;
if (opt_state->end_revision.kind == svn_opt_revision_unspecified)
opt_state->end_revision.kind = working_copy_present
? svn_opt_revision_working : svn_opt_revision_head;
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/export-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/export-cmd.c Sat Dec 11 00:15:55 2010
@@ -52,6 +52,7 @@ svn_cl__export(apr_getopt_t *os,
svn_error_t *err;
svn_opt_revision_t peg_revision;
const char *truefrom;
+ struct svn_cl__check_externals_failed_notify_baton nwb;
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -79,25 +80,27 @@ svn_cl__export(apr_getopt_t *os,
{
to = APR_ARRAY_IDX(targets, 1, const char *);
- /* 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
+ if (strcmp("", to) != 0)
/* 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));
+ 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));
if (opt_state->depth == svn_depth_unknown)
opt_state->depth = svn_depth_infinity;
+ nwb.wrapped_func = ctx->notify_func2;
+ nwb.wrapped_baton = ctx->notify_baton2;
+ nwb.had_externals_error = FALSE;
+ ctx->notify_func2 = svn_cl__check_externals_failed_notify_wrapper;
+ ctx->notify_baton2 = &nwb;
+
/* Do the export. */
err = svn_client_export5(NULL, truefrom, to, &peg_revision,
&(opt_state->start_revision),
@@ -109,5 +112,10 @@ svn_cl__export(apr_getopt_t *os,
_("Destination directory exists; please remove "
"the directory or use --force to overwrite"));
+ if (nwb.had_externals_error)
+ return svn_error_create(SVN_ERR_CL_ERROR_PROCESSING_EXTERNALS, NULL,
+ _("Failure occurred processing one or more "
+ "externals definitions"));
+
return svn_error_return(err);
}
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/import-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/import-cmd.c Sat Dec 11 00:15:55 2010
@@ -101,10 +101,9 @@ svn_cl__import(apr_getopt_t *os,
}
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));
+ 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,
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c Sat Dec 11 00:15:55 2010
@@ -126,6 +126,11 @@ print_info_xml(void *baton,
/* "<wc-info>" */
svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "wc-info", NULL);
+ /* "<wcroot-abspath> xx </wcroot-abspath>" */
+ if (info->wcroot_abspath)
+ svn_cl__xml_tagged_cdata(&sb, pool, "wcroot-abspath",
+ info->wcroot_abspath);
+
/* "<schedule> xx </schedule>" */
svn_cl__xml_tagged_cdata(&sb, pool, "schedule",
schedule_str(info->schedule));
@@ -256,6 +261,11 @@ print_info(void *baton,
SVN_ERR(svn_cmdline_printf(pool, _("Name: %s\n"),
svn_dirent_basename(target, pool)));
+ if (info->wcroot_abspath)
+ SVN_ERR(svn_cmdline_printf(pool, _("Working Copy Root Path: %s\n"),
+ svn_dirent_local_style(info->wcroot_abspath,
+ pool)));
+
if (info->URL)
SVN_ERR(svn_cmdline_printf(pool, _("URL: %s\n"), info->URL));
@@ -452,25 +462,19 @@ print_info(void *baton,
svn_cl__node_description(info->tree_conflict->src_right_version,
info->repos_root_URL, pool);
- svn_cmdline_printf(pool,
- "%s: %s\n",
- _("Tree conflict"),
- desc);
+ SVN_ERR(svn_cmdline_printf(pool, "%s: %s\n", _("Tree conflict"), desc));
if (src_left_version)
- svn_cmdline_printf(pool,
- " %s: %s\n",
- _("Source left"), /* (1) */
- src_left_version);
+ SVN_ERR(svn_cmdline_printf(pool, " %s: %s\n",
+ _("Source left"), /* (1) */
+ src_left_version));
/* (1): Sneaking in a space in "Source left" so that it is the
* same length as "Source right" while it still starts in the same
* column. That's just a tiny tweak in the English `svn'. */
if (src_right_version)
- svn_cmdline_printf(pool,
- " %s: %s\n",
- _("Source right"),
- src_right_version);
+ SVN_ERR(svn_cmdline_printf(pool, " %s: %s\n", _("Source right"),
+ src_right_version));
}
/* Print extra newline separator. */
@@ -539,13 +543,19 @@ 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))
+ if (svn_path_is_url(truepath))
{
+ truepath = svn_uri_canonicalize(truepath, subpool);
+
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));
+ {
+ truepath = svn_dirent_canonicalize(truepath, subpool);
+
+ SVN_ERR(svn_dirent_get_absolute(&truepath, truepath, subpool));
+ }
err = svn_client_info3(truepath,
&peg_revision, &(opt_state->start_revision),
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/list-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/list-cmd.c?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/list-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/list-cmd.c Sat Dec 11 00:15:55 2010
@@ -268,8 +268,8 @@ svn_cl__list(apr_getopt_t *os,
SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
/* Get peg revisions. */
- SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target,
- subpool));
+ SVN_ERR(svn_cl__opt_parse_path(&peg_revision, &truepath, target,
+ subpool));
if (opt_state->xml)
{
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/lock-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/lock-cmd.c Sat Dec 11 00:15:55 2010
@@ -98,6 +98,8 @@ svn_cl__lock(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
+ SVN_ERR(svn_cl__assert_homogeneous_target_type(targets));
+
/* Get comment. */
SVN_ERR(get_comment(&comment, ctx, opt_state, 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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c Sat Dec 11 00:15:55 2010
@@ -57,7 +57,7 @@ struct log_receiver_baton
/* Don't print log message body nor its line count. */
svn_boolean_t omit_log_message;
- /* Whether to show diffs in the log. */
+ /* Whether to show diffs in the log. (maps to --diff) */
svn_boolean_t show_diff;
/* Diff arguments received from command line. */
@@ -163,9 +163,6 @@ log_entry_receiver(void *baton,
const char *date;
const char *message;
- /* Number of lines in the msg. */
- int lines;
-
if (lb->ctx->cancel_func)
SVN_ERR(lb->ctx->cancel_func(lb->ctx->cancel_baton));
@@ -201,7 +198,9 @@ log_entry_receiver(void *baton,
if (message != NULL)
{
- lines = svn_cstring_count_newlines(message) + 1;
+ /* Number of lines in the msg. */
+ int lines = svn_cstring_count_newlines(message) + 1;
+
SVN_ERR(svn_cmdline_printf(pool,
Q_(" | %d line", " | %d lines", lines),
lines));
@@ -588,25 +587,25 @@ svn_cl__log(apr_getopt_t *os,
{
if (opt_state->show_diff)
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("'show-diff' option is not supported in "
+ _("'diff' option is not supported in "
"XML mode"));
}
if (opt_state->quiet && opt_state->show_diff)
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("'quiet' and 'show-diff' options are "
+ _("'quiet' and 'diff' options are "
"mutually exclusive"));
if (opt_state->diff_cmd && (! opt_state->show_diff))
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("'diff-cmd' option requires 'show-diff' "
+ _("'diff-cmd' option requires 'diff' "
"option"));
if (opt_state->internal_diff && (! opt_state->show_diff))
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
_("'internal-diff' option requires "
- "'show-diff' option"));
+ "'diff' option"));
if (opt_state->extensions && (! opt_state->show_diff))
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("'extensions' option requires 'show-diff' "
+ _("'extensions' option requires 'diff' "
"option"));
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
@@ -633,9 +632,9 @@ svn_cl__log(apr_getopt_t *os,
range = APR_ARRAY_IDX(opt_state->revision_ranges, i,
svn_opt_revision_range_t *);
if (range->start.value.number < range->end.value.number)
- range->start = range->end;
+ range->start.value.number++;
else
- range->end = range->start;
+ range->end.value.number++;
}
}
@@ -650,12 +649,11 @@ svn_cl__log(apr_getopt_t *os,
target = APR_ARRAY_IDX(targets, i, const char *);
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));
+ 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);
}
}
@@ -663,7 +661,7 @@ svn_cl__log(apr_getopt_t *os,
lb.omit_log_message = opt_state->quiet;
SVN_ERR(svn_client_url_from_path2(&lb.target_url, true_path, ctx,
pool, pool));
- lb.show_diff = (! opt_state->quiet) && opt_state->show_diff;
+ lb.show_diff = opt_state->show_diff;
lb.diff_extensions = opt_state->extensions;
lb.merge_stack = apr_array_make(pool, 0, sizeof(svn_revnum_t));
lb.pool = pool;
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/main.c?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/main.c Sat Dec 11 00:15:55 2010
@@ -114,18 +114,20 @@ typedef enum {
opt_show_revs,
opt_reintegrate,
opt_trust_server_cert,
- opt_strip_count,
+ opt_strip,
opt_show_copies_as_adds,
opt_ignore_keywords,
opt_reverse_diff,
opt_ignore_whitespace,
- opt_show_diff,
+ opt_diff,
opt_internal_diff,
opt_use_git_diff_format,
- opt_old_patch_target_names,
+ opt_allow_mixed_revisions,
opt_ignore_mergeinfo
} svn_cl__longopt_t;
+#define SVN_CL__OPTION_CONTINUATION_INDENT " "
+
/* Option codes and descriptions for the command line client.
*
* The entire list must be terminated with an entry of nulls.
@@ -141,28 +143,31 @@ const apr_getopt_option_t svn_cl__option
{"quiet", 'q', 0, N_("print nothing, or only summary information")},
{"recursive", 'R', 0, N_("descend recursively, same as --depth=infinity")},
{"non-recursive", 'N', 0, N_("obsolete; try --depth=files or --depth=immediates")},
- {"change", 'c', 1, N_
- ("the change made by revision ARG (like -r ARG-1:ARG)\n"
- " If ARG is negative this is like -r ARG:ARG-1")
- },
- {"revision", 'r', 1, N_
- ("ARG (some commands also take ARG1:ARG2 range)\n"
- " A revision argument can be one of:\n"
- " NUMBER revision number\n"
- " '{' DATE '}' revision at start of the date\n"
- " 'HEAD' latest in repository\n"
- " 'BASE' base rev of item's working copy\n"
- " 'COMMITTED' last commit at or before BASE\n"
- " 'PREV' revision just before COMMITTED")
- /* spacing corresponds to svn_opt_format_option */
- },
+ {"change", 'c', 1,
+ N_("the change made by revision ARG (like -r ARG-1:ARG)\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "If ARG is negative this is like -r ARG:ARG-1")},
+ {"revision", 'r', 1,
+ N_("ARG (some commands also take ARG1:ARG2 range)\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "A revision argument can be one of:\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " NUMBER revision number\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " '{' DATE '}' revision at start of the date\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " 'HEAD' latest in repository\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " 'BASE' base rev of item's working copy\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " 'COMMITTED' last commit at or before BASE\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " 'PREV' revision just before COMMITTED")},
{"file", 'F', 1, N_("read log message from file ARG")},
{"incremental", opt_incremental, 0,
N_("give output suitable for concatenation")},
{"encoding", opt_encoding, 1,
- N_("treat value as being in charset encoding ARG\n"
- " "
- "[alias: --enc]")},
+ N_("treat value as being in charset encoding ARG")},
{"version", opt_version, 0, N_("show program version information")},
{"verbose", 'v', 0, N_("print extra information")},
{"show-updates", 'u', 0, N_("display update information")},
@@ -170,230 +175,174 @@ const apr_getopt_option_t svn_cl__option
{"password", opt_auth_password, 1, N_("specify a password ARG")},
{"extensions", 'x', 1,
N_("Default: '-u'. When Subversion is invoking an\n"
- " "
- " external diff program, ARG is simply passed along\n"
- " "
- " to the program. But when Subversion is using its\n"
- " "
- " default internal diff implementation, or when\n"
- " "
- " Subversion is displaying blame annotations, ARG\n"
- " "
- " could be any of the following:\n"
- " "
- " -u (--unified):\n"
- " "
- " Output 3 lines of unified context.\n"
- " "
- " -b (--ignore-space-change):\n"
- " "
- " Ignore changes in the amount of white space.\n"
- " "
- " -w (--ignore-all-space):\n"
- " "
- " Ignore all white space.\n"
- " "
- " --ignore-eol-style:\n"
- " "
- " Ignore changes in EOL style.\n"
- " "
- " -p (--show-c-function):\n"
- " "
- " Show C function name in diff output.")},
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "external diff program, ARG is simply passed along\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "to the program. But when Subversion is using its\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "default internal diff implementation, or when\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "Subversion is displaying blame annotations, ARG\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "could be any of the following:\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " -u (--unified):\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " Output 3 lines of unified context.\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " -b (--ignore-space-change):\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " Ignore changes in the amount of white space.\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " -w (--ignore-all-space):\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " Ignore all white space.\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " --ignore-eol-style:\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " Ignore changes in EOL style.\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " -p (--show-c-function):\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ " Show C function name in diff output.")},
{"targets", opt_targets, 1,
N_("pass contents of file ARG as additional args")},
{"depth", opt_depth, 1,
N_("limit operation by depth ARG ('empty', 'files',\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"'immediates', or 'infinity')")},
{"set-depth", opt_set_depth, 1,
N_("set new working copy depth to ARG ('exclude',\n"
- " "
- "'empty', 'files', 'immediates', or 'infinity')\n"
- " "
- "[alias: --sd]")},
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "'empty', 'files', 'immediates', or 'infinity')")},
{"xml", opt_xml, 0, N_("output in XML")},
{"strict", opt_strict, 0, N_("use strict semantics")},
{"stop-on-copy", opt_stop_on_copy, 0,
- N_("do not cross copies while traversing history\n"
- " "
- "[alias: --soc]")},
+ N_("do not cross copies while traversing history")},
{"no-ignore", opt_no_ignore, 0,
N_("disregard default and svn:ignore property ignores")},
{"no-auth-cache", opt_no_auth_cache, 0,
- N_("do not cache authentication tokens\n"
- " "
- "[alias: --nac]")},
+ N_("do not cache authentication tokens")},
{"trust-server-cert", opt_trust_server_cert, 0,
N_("accept unknown SSL server certificates without\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"prompting (but only with '--non-interactive')")},
{"non-interactive", opt_non_interactive, 0,
N_("do no interactive prompting")},
{"dry-run", opt_dry_run, 0,
- N_("try operation but make no changes\n"
- " "
- "[alias: --dry]")},
+ N_("try operation but make no changes")},
{"no-diff-deleted", opt_no_diff_deleted, 0,
- N_("do not print differences for deleted files\n"
- " "
- "[alias: --ndd]")},
+ N_("do not print differences for deleted files")},
{"notice-ancestry", opt_notice_ancestry, 0,
- N_("notice ancestry when calculating differences\n"
- " "
- "[alias: --na]")},
+ N_("notice ancestry when calculating differences")},
{"ignore-ancestry", opt_ignore_ancestry, 0,
- N_("ignore ancestry when calculating merges\n"
- " "
- "[alias: --ia]")},
+ N_("ignore ancestry when calculating merges")},
{"ignore-externals", opt_ignore_externals, 0,
- N_("ignore externals definitions\n"
- " "
- "[alias: --ie]")},
+ N_("ignore externals definitions")},
{"diff-cmd", opt_diff_cmd, 1, N_("use ARG as diff command")},
{"diff3-cmd", opt_merge_cmd, 1, N_("use ARG as merge command")},
{"editor-cmd", opt_editor_cmd, 1, N_("use ARG as external editor")},
{"record-only", opt_record_only, 0,
- N_("merge only mergeinfo differences\n"
- " "
- "[alias: --ro]")},
+ N_("merge only mergeinfo differences")},
{"old", opt_old_cmd, 1, N_("use ARG as the older target")},
{"new", opt_new_cmd, 1, N_("use ARG as the newer target")},
{"revprop", opt_revprop, 0,
N_("operate on a revision property (use with -r)")},
{"relocate", opt_relocate, 0, N_("relocate via URL-rewriting")},
{"config-dir", opt_config_dir, 1,
- N_("read user configuration files from directory ARG\n"
- " "
- "[alias: --cd]")},
+ N_("read user configuration files from directory ARG")},
{"config-option", opt_config_options, 1,
N_("set user configuration option in the format:\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
" FILE:SECTION:OPTION=[VALUE]\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"For example:\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
" servers:global:http-library=serf")},
{"auto-props", opt_autoprops, 0, N_("enable automatic properties")},
{"no-auto-props", opt_no_autoprops, 0, N_("disable automatic properties")},
{"native-eol", opt_native_eol, 1,
N_("use a different EOL marker than the standard\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"system marker for files with the svn:eol-style\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"property set to 'native'.\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"ARG may be one of 'LF', 'CR', 'CRLF'")},
{"limit", 'l', 1, N_("maximum number of log entries")},
- {"no-unlock", opt_no_unlock, 0, N_("don't unlock the targets\n"
- " "
- "[aliases: --nul, --keep-lock]")},
+ {"no-unlock", opt_no_unlock, 0, N_("don't unlock the targets")},
{"summarize", opt_summarize, 0, N_("show a summary of the results")},
{"remove", opt_remove, 0, N_("remove changelist association")},
{"changelist", opt_changelist, 1,
- N_("operate only on members of changelist ARG\n"
- " "
- "[alias: --cl]")},
+ N_("operate only on members of changelist ARG")},
{"keep-changelists", opt_keep_changelists, 0,
N_("don't delete changelists after commit")},
- {"keep-local", opt_keep_local, 0, N_("keep path in working copy\n"
- " "
- "[alias: --kl]")},
+ {"keep-local", opt_keep_local, 0, N_("keep path in working copy")},
{"with-all-revprops", opt_with_all_revprops, 0,
N_("retrieve all revision properties")},
{"with-no-revprops", opt_with_no_revprops, 0,
N_("retrieve no revision properties")},
{"with-revprop", opt_with_revprop, 1,
N_("set revision property ARG in new revision\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"using the name[=value] format")},
{"parents", opt_parents, 0, N_("make intermediate directories")},
{"use-merge-history", 'g', 0,
N_("use/display additional information from merge\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"history")},
{"accept", opt_accept, 1,
N_("specify automatic conflict resolution action\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
"('postpone', 'base', 'mine-conflict',\n"
- " "
- " 'theirs-conflict', 'mine-full', 'theirs-full',\n"
- " "
- " 'edit', 'launch')")},
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "'theirs-conflict', 'mine-full', 'theirs-full',\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "'edit', 'launch')")},
{"show-revs", opt_show_revs, 1,
N_("specify which collection of revisions to display\n"
- " "
- "('merged', 'eligible')\n"
- " "
- "[alias: --sr]")},
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "('merged', 'eligible')")},
{"reintegrate", opt_reintegrate, 0,
- N_("lump-merge all of source URL's unmerged changes\n"
- " "
- "[alias: --ri]")},
- {"strip-count", opt_strip_count, 1,
+ N_("merge a branch back into its parent branch")},
+ {"strip", opt_strip, 1,
N_("number of leading path components to strip from\n"
- " "
- "paths parsed from the patch file. --strip-count 0\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "paths parsed from the patch file. --strip 0\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
"is the default and leaves paths unmodified.\n"
- " "
- "--strip-count 1 would change the path\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "--strip 1 would change the path\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
"'doc/fudge/crunchy.html' to 'fudge/crunchy.html'.\n"
- " "
- "--strip-count 2 would leave just 'crunchy.html'\n"
- " "
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "--strip 2 would leave just 'crunchy.html'\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
"The expected component separator is '/' on all\n"
- " "
- "platforms. A leading '/' counts as one component.\n"
- " "
- "[alias: --strip]")},
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "platforms. A leading '/' counts as one component.")},
{"show-copies-as-adds", opt_show_copies_as_adds, 0,
- N_("don't diff copied or moved files with their source\n"
- " "
- "[alias: --sca]")},
+ N_("don't diff copied or moved files with their source")},
{"ignore-keywords", opt_ignore_keywords, 0,
- N_("don't expand keywords\n"
- " "
- "[alias: --ik]")},
+ N_("don't expand keywords")},
{"reverse-diff", opt_reverse_diff, 0,
- N_("apply the unidiff in reverse\n"
- " "
- "This option also reverses patch target names; the\n"
- " "
- "--old-patch-target-names option will prevent this.\n"
- " "
- "[alias: --rd]")},
+ N_("apply the unidiff in reverse")},
{"ignore-whitespace", opt_ignore_whitespace, 0,
- N_("ignore whitespace during pattern matching\n"
- " "
- "[alias: --iw]")},
- {"show-diff", opt_show_diff, 0,
- N_("produce diff output\n"
- " "
- "[alias: --diff]")},
+ N_("ignore whitespace during pattern matching")},
+ {"diff", opt_diff, 0, N_("produce diff output")}, /* maps to show_diff */
{"internal-diff", opt_internal_diff, 0,
- N_("override diff-cmd specified in config file\n"
- " "
- "[alias: --idiff]")},
+ N_("override diff-cmd specified in config file")},
{"git", opt_use_git_diff_format, 0,
- N_("use git's extended diff format\n")},
+ N_("use git's extended diff format")},
+ {"allow-mixed-revisions", opt_allow_mixed_revisions, 0,
+ N_("Allow merge into mixed-revision working copy.\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "Use of this option is not recommended!\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "Please run 'svn update' instead.")},
{"ignore-mergeinfo", opt_ignore_mergeinfo, 0,
N_("ignore changes to mergeinfo")},
- {"old-patch-target-names", opt_old_patch_target_names, 0,
- N_("use target names from the old side of a patch.\n"
- " "
- "If a diff header contains\n"
- " "
- " --- foo.c\n"
- " "
- " +++ foo.c.new\n"
- " "
- "this option will cause the name \"foo.c\" to be used\n"
- " "
- "[alias: --optn]")},
-
/* Long-opt Aliases
*
* These have NULL desriptions, but an option code that matches some
@@ -416,15 +365,12 @@ const apr_getopt_option_t svn_cl__option
{"kl", opt_keep_local, 0, NULL},
{"sr", opt_show_revs, 1, NULL},
{"ri", opt_reintegrate, 0, NULL},
- {"strip", opt_strip_count, 1, NULL},
{"sca", opt_show_copies_as_adds, 0, NULL},
{"ik", opt_ignore_keywords, 0, NULL},
{"iw", opt_ignore_whitespace, 0, NULL},
- {"diff", opt_show_diff, 0, NULL},
{"idiff", opt_internal_diff, 0, NULL},
- {"nul", opt_no_unlock, 0, NULL},
- {"keep-lock", opt_no_unlock, 0, NULL},
- {"optn", opt_old_patch_target_names, 0, NULL},
+ {"keep-locks", opt_no_unlock, 0, NULL},
+ {"keep-cl", opt_keep_changelists, 0, NULL},
{0, 0, 0, 0},
};
@@ -726,7 +672,7 @@ const svn_opt_subcommand_desc2_t svn_cl_
" 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'},
+ opt_diff, opt_diff_cmd, opt_internal_diff, 'x'},
{{opt_with_revprop, N_("retrieve revision property ARG")},
{'c', N_("the change made in revision ARG")}} },
@@ -783,7 +729,8 @@ const svn_opt_subcommand_desc2_t svn_cl_
" The --ignore-ancestry option overrides this, forcing Subversion to\n"
" regard the sources as unrelated and not to track the merge.\n"),
{'r', 'c', 'N', opt_depth, 'q', opt_force, opt_dry_run, opt_merge_cmd,
- opt_record_only, 'x', opt_ignore_ancestry, opt_accept, opt_reintegrate} },
+ opt_record_only, 'x', opt_ignore_ancestry, opt_accept, opt_reintegrate,
+ opt_allow_mixed_revisions} },
{ "mergeinfo", svn_cl__mergeinfo, {0}, N_
("Display merge-related information.\n"
@@ -873,8 +820,8 @@ const svn_opt_subcommand_desc2_t svn_cl_
" for addition. Use 'svn revert' to undo deletions and additions you\n"
" do not agree with.\n"
),
- {'q', opt_dry_run, opt_strip_count, opt_reverse_diff,
- opt_ignore_whitespace, opt_old_patch_target_names} },
+ {'q', opt_dry_run, opt_strip, opt_reverse_diff,
+ opt_ignore_whitespace} },
{ "propdel", svn_cl__propdel, {"pdel", "pd"}, N_
("Remove a property from files, dirs, or revisions.\n"
@@ -962,10 +909,14 @@ const svn_opt_subcommand_desc2_t svn_cl_
" svn:externals - A newline separated list of module specifiers,\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"
+ " http://example.com/repos/zig foo/bar\n"
+ " A revision to check out can optionally be specified to pin the\n"
" external to a known revision:\n"
- " http://example.com/repos/zig@42 foo\n"
+ " -r25 http://example.com/repos/zig foo/bar\n"
+ " To unambiguously identify an element at a path which has been\n"
+ " deleted (possibly even deleted multiple times in its history),\n"
+ " an optional peg revision can be appended to the URL:\n"
+ " -r25 http://example.com/repos/zig@42 foo/bar\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"
@@ -996,6 +947,29 @@ const svn_opt_subcommand_desc2_t svn_cl_
opt_force, opt_changelist },
{{'F', N_("read property value from file ARG")}} },
+ { "relocate", svn_cl__relocate, {0}, N_
+ ("Relocate the working copy to point to a different repository root URL.\n"
+ "usage: 1. relocate FROM-PREFIX TO-PREFIX [PATH...]\n"
+ " 2. relocate TO-URL [PATH]\n"
+ "\n"
+ " Rewrite working copy URL metadata to reflect a syntactic change only.\n"
+ " This is used when repository's root URL changes (such as a scheme\n"
+ " or hostname change) but your working copy still reflects the same\n"
+ " directory within the same repository.\n"
+ "\n"
+ " 1. FROM-PREFIX and TO-PREFIX are initial substrings of the working\n"
+ " copy's current and new URLs, respectively. (You may specify the\n"
+ " complete old and new URLs if you wish.) Use 'svn info' to determine\n"
+ " the current working copy URL.\n"
+ "\n"
+ " 2. TO-URL is the (complete) new repository URL to use for for PATH.\n"
+ "\n"
+ " Examples:\n"
+ " svn relocate http:// svn:// project1 project2\n"
+ " svn relocate http://www.example.com/repo/project \\\n"
+ " svn://svn.example.com/repo/project\n"),
+ {opt_ignore_externals} },
+
{ "resolve", svn_cl__resolve, {0}, N_
("Resolve conflicts on working copy files or directories.\n"
"usage: resolve --accept=ARG [PATH...]\n"
@@ -1003,10 +977,10 @@ const svn_opt_subcommand_desc2_t svn_cl_
" Note: the --accept option is currently required.\n"),
{opt_targets, 'R', opt_depth, 'q', opt_accept},
{{opt_accept, N_("specify automatic conflict resolution source\n"
- " "
- "('base', 'working', 'mine-conflict',\n"
- " "
- " 'theirs-conflict', 'mine-full', 'theirs-full')")}} },
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "('base', 'working', 'mine-conflict',\n"
+ SVN_CL__OPTION_CONTINUATION_INDENT
+ "'theirs-conflict', 'mine-full', 'theirs-full')")}} },
{ "resolved", svn_cl__resolved, {0}, N_
("Remove 'conflicted' state on working copy files or directories.\n"
@@ -1121,9 +1095,9 @@ const svn_opt_subcommand_desc2_t svn_cl_
opt_ignore_externals, opt_changelist, opt_ignore_mergeinfo} },
{ "switch", svn_cl__switch, {"sw"}, N_
- ("Update the working copy to a different URL.\n"
+ ("Update the working copy to a different URL within the same repository.\n"
"usage: 1. switch URL[@PEGREV] [PATH]\n"
- " 2. switch --relocate FROM TO [PATH...]\n"
+ " 2. switch --relocate FROM-PREFIX TO-PREFIX [PATH...]\n"
"\n"
" 1. Update the working copy to mirror a new URL within the repository.\n"
" This behavior is similar to 'svn update', and is the way to\n"
@@ -1145,22 +1119,15 @@ const svn_opt_subcommand_desc2_t svn_cl_
" Use the --set-depth option to set a new working copy depth on the\n"
" targets of this operation.\n"
"\n"
- " 2. Rewrite working copy URL metadata to reflect a syntactic change only.\n"
- " This is used when repository's root URL changes (such as a scheme\n"
- " or hostname change) but your working copy still reflects the same\n"
- " directory within the same repository.\n"
- "\n"
- " FROM is the root URL which will be relocated from.\n"
- " You can use 'svn info' to determine the root URL of the current\n"
- " working copy directory (look for 'URL:' in its output).\n"
- "\n"
- " TO is the root URL which will be relocated to.\n"
+ " 2. The '--relocate' option is deprecated. This syntax is equivalent to\n"
+ " 'svn relocate FROM-PREFIX TO-PREFIX [PATH]'.\n"
"\n"
" See also 'svn help update' for a list of possible characters\n"
" reporting the action taken.\n"
"\n"
" Examples:\n"
" svn switch ^/branches/1.x-release\n"
+ " svn switch --relocate http:// svn://\n"
" svn switch --relocate http://www.example.com/repo/project \\\n"
" svn://svn.example.com/repo/project\n"),
{ 'r', 'N', opt_depth, opt_set_depth, 'q', opt_merge_cmd, opt_relocate,
@@ -1209,10 +1176,17 @@ const svn_opt_subcommand_desc2_t svn_cl_
" are applied to the obstructing path. Obstructing paths are reported\n"
" in the first column with code 'E'.\n"
"\n"
+ " If the specified update target is missing from the working copy but its\n"
+ " immediate parent directory is present, checkout the target into its\n"
+ " parent directory at the specified depth. If --parents is specified,\n"
+ " create any missing parent directories of the target by checking them\n"
+ " out, too, at depth=empty.\n"
+ "\n"
" Use the --set-depth option to set a new working copy depth on the\n"
" targets of this operation.\n"),
{'r', 'N', opt_depth, opt_set_depth, 'q', opt_merge_cmd, opt_force,
- opt_ignore_externals, opt_changelist, opt_editor_cmd, opt_accept} },
+ opt_ignore_externals, opt_changelist, opt_editor_cmd, opt_accept,
+ opt_parents} },
{ "upgrade", svn_cl__upgrade, {0}, N_
("Upgrade the metadata storage format for a working copy.\n"
@@ -1281,8 +1255,6 @@ main(int argc, const char *argv[])
int i;
const svn_opt_subcommand_desc2_t *subcommand = NULL;
const char *dash_m_arg = NULL, *dash_F_arg = NULL;
- const char *path_utf8;
- apr_status_t apr_err;
svn_cl__cmd_baton_t command_baton;
svn_auth_baton_t *ab;
svn_config_t *cfg_config;
@@ -1360,7 +1332,7 @@ main(int argc, const char *argv[])
const char *utf8_opt_arg;
/* Parse the next option. */
- apr_err = apr_getopt_long(os, svn_cl__options, &opt_id, &opt_arg);
+ apr_status_t apr_err = apr_getopt_long(os, svn_cl__options, &opt_id, &opt_arg);
if (APR_STATUS_IS_EOF(apr_err))
break;
else if (apr_err)
@@ -1376,11 +1348,10 @@ main(int argc, const char *argv[])
switch (opt_id) {
case 'l':
{
- char *end;
- opt_state.limit = (int) strtol(opt_arg, &end, 10);
- if (end == opt_arg || *end != '\0')
+ err = svn_cstring_atoi(&opt_state.limit, opt_arg);
+ if (err)
{
- err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, err,
_("Non-numeric limit argument given"));
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
@@ -1401,9 +1372,6 @@ main(int argc, const char *argv[])
break;
case 'c':
{
- char *end;
- svn_revnum_t changeno;
- svn_opt_revision_range_t *range;
apr_array_header_t *change_revs =
svn_cstring_split(opt_arg, ", \n\r\t\v", TRUE, pool);
@@ -1417,16 +1385,41 @@ main(int argc, const char *argv[])
for (i = 0; i < change_revs->nelts; i++)
{
+ char *end;
+ svn_revnum_t changeno, changeno_end;
+ svn_opt_revision_range_t *range;
const char *change_str =
APR_ARRAY_IDX(change_revs, i, const char *);
+ const char *s = change_str;
+ svn_boolean_t is_negative;
- /* Allow any number of 'r's to prefix a revision number.
- ### TODO: Any reason we're not just using opt.c's
- ### revision-parsing code here? Then -c could take
- ### "{DATE}" and the special words. */
- while (*change_str == 'r')
- change_str++;
- changeno = strtol(change_str, &end, 10);
+ /* Check for a leading minus to allow "-c -r42".
+ * The is_negative flag is used to handle "-c -42" and "-c -r42".
+ * The "-c r-42" case is handled by strtol() returning a
+ * negative number. */
+ is_negative = (*s == '-');
+ if (is_negative)
+ s++;
+
+ /* Allow any number of 'r's to prefix a revision number. */
+ while (*s == 'r')
+ s++;
+ changeno = changeno_end = strtol(s, &end, 10);
+ if (end != s && *end == '-')
+ {
+ if (changeno < 0 || is_negative)
+ {
+ err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Negative number in range (%s)"
+ " not supported with -c"),
+ change_str);
+ return svn_cmdline_handle_exit_error(err, pool, "svn: ");
+ }
+ s = end + 1;
+ while (*s == 'r')
+ s++;
+ changeno_end = strtol(s, &end, 10);
+ }
if (end == change_str || *end != '\0')
{
err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
@@ -1442,21 +1435,33 @@ main(int argc, const char *argv[])
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
+ if (is_negative)
+ changeno = -changeno;
+
/* Figure out the range:
-c N -> -r N-1:N
- -c -N -> -r N:N-1 */
- range = apr_palloc(pool, sizeof(*range));
+ -c -N -> -r N:N-1
+ -c M-N -> -r M-1:N for M < N
+ -c M-N -> -r M:N-1 for M > N
+ -c -M-N -> error (too confusing/no valid use case)
+ */
if (changeno > 0)
{
- range->start.value.number = changeno - 1;
- range->end.value.number = changeno;
+ if (changeno <= changeno_end)
+ changeno--;
+ else
+ changeno_end--;
}
else
{
changeno = -changeno;
- range->start.value.number = changeno;
- range->end.value.number = changeno - 1;
+ changeno_end = changeno - 1;
}
+
+ range = apr_palloc(pool, sizeof(*range));
+ range->start.value.number = changeno;
+ range->end.value.number = changeno_end;
+
opt_state.used_change_arg = TRUE;
range->start.kind = svn_opt_revision_number;
range->end.kind = svn_opt_revision_number;
@@ -1668,10 +1673,13 @@ main(int argc, const char *argv[])
opt_state.new_target = apr_pstrdup(pool, opt_arg);
break;
case opt_config_dir:
- err = svn_utf_cstring_to_utf8(&path_utf8, opt_arg, pool);
- if (err)
- return svn_cmdline_handle_exit_error(err, pool, "svn: ");
- opt_state.config_dir = svn_dirent_internal_style(path_utf8, pool);
+ {
+ const char *path_utf8;
+ err = svn_utf_cstring_to_utf8(&path_utf8, opt_arg, pool);
+ if (err)
+ return svn_cmdline_handle_exit_error(err, pool, "svn: ");
+ opt_state.config_dir = svn_dirent_internal_style(path_utf8, pool);
+ }
break;
case opt_config_options:
if (!opt_state.config_options)
@@ -1772,22 +1780,19 @@ main(int argc, const char *argv[])
case opt_reintegrate:
opt_state.reintegrate = TRUE;
break;
- case opt_strip_count:
+ case opt_strip:
{
- char *end;
- opt_state.strip_count = (int) strtol(opt_arg, &end, 10);
- if (end == opt_arg || *end != '\0')
+ err = svn_cstring_atoi(&opt_state.strip, opt_arg);
+ if (err)
{
- err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, err,
_("Invalid strip count '%s'"), opt_arg);
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
- if (opt_state.strip_count < 0)
+ if (opt_state.strip < 0)
{
- err = svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
- _("Negative strip count '%i' "
- "(strip count must be positive)"),
- opt_state.strip_count);
+ err = svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL,
+ _("Argument to --strip must be positive"));
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
}
@@ -1801,7 +1806,7 @@ main(int argc, const char *argv[])
case opt_ignore_whitespace:
opt_state.ignore_whitespace = TRUE;
break;
- case opt_show_diff:
+ case opt_diff:
opt_state.show_diff = TRUE;
break;
case opt_internal_diff:
@@ -1810,8 +1815,8 @@ main(int argc, const char *argv[])
case opt_use_git_diff_format:
opt_state.use_git_diff_format = TRUE;
break;
- case opt_old_patch_target_names:
- opt_state.old_patch_target_names = TRUE;
+ case opt_allow_mixed_revisions:
+ opt_state.allow_mixed_rev = TRUE;
break;
case opt_ignore_mergeinfo:
opt_state.ignore_mergeinfo = TRUE;
@@ -2314,9 +2319,6 @@ main(int argc, const char *argv[])
pool)))
svn_handle_error2(err, stderr, TRUE, "svn: ");
- /* svn can safely create instance of QApplication class. */
- svn_auth_set_parameter(ab, "svn:auth:qapplication-safe", "1");
-
ctx->auth_baton = ab;
/* Set up conflict resolution callback. */
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/merge-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/merge-cmd.c Sat Dec 11 00:15:55 2010
@@ -293,6 +293,10 @@ svn_cl__merge(apr_getopt_t *os,
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
_("--reintegrate can only be used with "
"a single merge source"));
+ if (opt_state->allow_mixed_rev)
+ return svn_error_create(SVN_ERR_CL_MUTUALLY_EXCLUSIVE_ARGS, NULL,
+ _("--allow-mixed-revisions cannot be used "
+ "with --reintegrate"));
}
if (! two_sources_specified) /* TODO: Switch order of if */
@@ -322,7 +326,7 @@ svn_cl__merge(apr_getopt_t *os,
opt_state->dry_run,
options, ctx, pool);
else
- err = svn_client_merge_peg3(sourcepath1,
+ err = svn_client_merge_peg4(sourcepath1,
ranges_to_merge,
&peg_revision1,
targetpath,
@@ -331,6 +335,7 @@ svn_cl__merge(apr_getopt_t *os,
opt_state->force,
opt_state->record_only,
opt_state->dry_run,
+ opt_state->allow_mixed_rev,
options,
ctx,
pool);
@@ -342,7 +347,7 @@ svn_cl__merge(apr_getopt_t *os,
NULL,
_("Merge sources must both be "
"either paths or URLs")));
- err = svn_client_merge3(sourcepath1,
+ err = svn_client_merge4(sourcepath1,
&first_range_start,
sourcepath2,
&first_range_end,
@@ -352,6 +357,7 @@ svn_cl__merge(apr_getopt_t *os,
opt_state->force,
opt_state->record_only,
opt_state->dry_run,
+ opt_state->allow_mixed_rev,
options,
ctx,
pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/mergeinfo-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/mergeinfo-cmd.c?rev=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/mergeinfo-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/mergeinfo-cmd.c Sat Dec 11 00:15:55 2010
@@ -48,9 +48,9 @@ print_log_rev(void *baton,
apr_pool_t *pool)
{
if (log_entry->non_inheritable)
- svn_cmdline_printf(pool, "r%ld*\n", log_entry->revision);
+ SVN_ERR(svn_cmdline_printf(pool, "r%ld*\n", log_entry->revision));
else
- svn_cmdline_printf(pool, "r%ld\n", log_entry->revision);
+ SVN_ERR(svn_cmdline_printf(pool, "r%ld\n", log_entry->revision));
return SVN_NO_ERROR;
}
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/mkdir-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/mkdir-cmd.c Sat Dec 11 00:15:55 2010
@@ -56,6 +56,8 @@ svn_cl__mkdir(apr_getopt_t *os,
if (! targets->nelts)
return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
+ SVN_ERR(svn_cl__assert_homogeneous_target_type(targets));
+
if (! svn_path_is_url(APR_ARRAY_IDX(targets, 0, const char *)))
{
ctx->log_msg_func3 = NULL;
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=1044548&r1=1044547&r2=1044548&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/move-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/move-cmd.c Sat Dec 11 00:15:55 2010
@@ -84,7 +84,7 @@ svn_cl__move(apr_getopt_t *os,
SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- err = svn_client_move6(targets, dst_path, opt_state->force,
+ err = svn_client_move6(targets, dst_path,
TRUE, opt_state->parents, opt_state->revprop_table,
svn_cl__print_commit_info, NULL, ctx, pool);