aboutsummaryrefslogtreecommitdiffstats
path: root/subversion/svn
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2015-08-09 04:37:39 +0000
committerPeter Wemm <peter@FreeBSD.org>2015-08-09 04:37:39 +0000
commit58218291fa73a17020ef0447398e9e8a78f9e8c7 (patch)
tree78a13bd0acf7405df6eb6ca94a4e354d124065a6 /subversion/svn
parent6f0665939667af9f780762878fc35982e8b7d745 (diff)
downloadsrc-58218291fa73a17020ef0447398e9e8a78f9e8c7.tar.gz
src-58218291fa73a17020ef0447398e9e8a78f9e8c7.zip
Vendor import subversion-1.8.14vendor/subversion/subversion-1.8.14
Notes
Notes: svn path=/vendor/subversion/dist/; revision=286501 svn path=/vendor/subversion/subversion-1.8.14/; revision=286502; tag=vendor/subversion/subversion-1.8.14
Diffstat (limited to 'subversion/svn')
-rw-r--r--subversion/svn/conflict-callbacks.c91
-rw-r--r--subversion/svn/list-cmd.c19
-rw-r--r--subversion/svn/svn.c15
3 files changed, 29 insertions, 96 deletions
diff --git a/subversion/svn/conflict-callbacks.c b/subversion/svn/conflict-callbacks.c
index b5cdf5f0785e..0f12413d241b 100644
--- a/subversion/svn/conflict-callbacks.c
+++ b/subversion/svn/conflict-callbacks.c
@@ -509,24 +509,6 @@ static const resolver_option_t prop_conflict_options[] =
{ NULL }
};
-/* Resolver options for an obstructued addition */
-static const resolver_option_t obstructed_add_options[] =
-{
- { "mf", N_("my version"), N_("accept pre-existing item (ignore "
- "upstream addition) [mine-full]"),
- svn_wc_conflict_choose_mine_full },
- { "tf", N_("their version"), N_("accept incoming item (overwrite "
- "pre-existing item) [theirs-full]"),
- svn_wc_conflict_choose_theirs_full },
- { "p", N_("postpone"), N_("mark the conflict to be resolved later"
- " [postpone]"),
- svn_wc_conflict_choose_postpone },
- { "q", N_("quit resolution"), N_("postpone all remaining conflicts"),
- svn_wc_conflict_choose_postpone },
- { "h", N_("help"), N_("show this help (also '?')"), -1 },
- { NULL }
-};
-
/* Resolver options for a tree conflict */
static const resolver_option_t tree_conflict_options[] =
{
@@ -1132,56 +1114,6 @@ handle_tree_conflict(svn_wc_conflict_result_t *result,
return SVN_NO_ERROR;
}
-/* Ask the user what to do about the obstructed add described by DESC.
- * Return the answer in RESULT. B is the conflict baton for this
- * conflict resolution session.
- * SCRATCH_POOL is used for temporary allocations. */
-static svn_error_t *
-handle_obstructed_add(svn_wc_conflict_result_t *result,
- const svn_wc_conflict_description2_t *desc,
- svn_cl__interactive_conflict_baton_t *b,
- apr_pool_t *scratch_pool)
-{
- apr_pool_t *iterpool;
-
- SVN_ERR(svn_cmdline_fprintf(
- stderr, scratch_pool,
- _("Conflict discovered when trying to add '%s'.\n"
- "An object of the same name already exists.\n"),
- svn_cl__local_style_skip_ancestor(b->path_prefix,
- desc->local_abspath,
- scratch_pool)));
-
- iterpool = svn_pool_create(scratch_pool);
- while (1)
- {
- const resolver_option_t *opt;
-
- svn_pool_clear(iterpool);
-
- SVN_ERR(prompt_user(&opt, obstructed_add_options, NULL, b->pb,
- iterpool));
- if (! opt)
- continue;
-
- if (strcmp(opt->code, "q") == 0)
- {
- result->choice = opt->choice;
- b->accept_which = svn_cl__accept_postpone;
- b->quit = TRUE;
- break;
- }
- else if (opt->choice != -1)
- {
- result->choice = opt->choice;
- break;
- }
- }
- svn_pool_destroy(iterpool);
-
- return SVN_NO_ERROR;
-}
-
/* The body of svn_cl__conflict_func_interactive(). */
static svn_error_t *
conflict_func_interactive(svn_wc_conflict_result_t **result,
@@ -1330,29 +1262,6 @@ conflict_func_interactive(svn_wc_conflict_result_t **result,
SVN_ERR(handle_text_conflict(*result, desc, b, scratch_pool));
else if (desc->kind == svn_wc_conflict_kind_property)
SVN_ERR(handle_prop_conflict(*result, desc, b, result_pool, scratch_pool));
-
- /*
- Dealing with obstruction of additions can be tricky. The
- obstructing item could be unversioned, versioned, or even
- schedule-add. Here's a matrix of how the caller should behave,
- based on results we return.
-
- Unversioned Versioned Schedule-Add
-
- choose_mine skip addition, skip addition skip addition
- add existing item
-
- choose_theirs destroy file, schedule-delete, revert add,
- add new item. add new item. rm file,
- add new item
-
- postpone [ bail out ]
-
- */
- else if ((desc->action == svn_wc_conflict_action_add)
- && (desc->reason == svn_wc_conflict_reason_obstructed))
- SVN_ERR(handle_obstructed_add(*result, desc, b, scratch_pool));
-
else if (desc->kind == svn_wc_conflict_kind_tree)
SVN_ERR(handle_tree_conflict(*result, desc, b, scratch_pool));
diff --git a/subversion/svn/list-cmd.c b/subversion/svn/list-cmd.c
index efe427942d5f..022ad54975d8 100644
--- a/subversion/svn/list-cmd.c
+++ b/subversion/svn/list-cmd.c
@@ -49,6 +49,12 @@ struct print_baton {
svn_boolean_t in_external;
};
+/* Field flags required for this function */
+static const apr_uint32_t print_dirent_fields = SVN_DIRENT_KIND;
+static const apr_uint32_t print_dirent_fields_verbose = (
+ SVN_DIRENT_KIND | SVN_DIRENT_SIZE | SVN_DIRENT_TIME |
+ SVN_DIRENT_CREATED_REV | SVN_DIRENT_LAST_AUTHOR);
+
/* This implements the svn_client_list_func2_t API, printing a single
directory entry in text format. */
static svn_error_t *
@@ -161,7 +167,10 @@ print_dirent(void *baton,
}
}
-
+/* Field flags required for this function */
+static const apr_uint32_t print_dirent_xml_fields = (
+ SVN_DIRENT_KIND | SVN_DIRENT_SIZE | SVN_DIRENT_TIME |
+ SVN_DIRENT_CREATED_REV | SVN_DIRENT_LAST_AUTHOR);
/* This implements the svn_client_list_func2_t API, printing a single dirent
in XML format. */
static svn_error_t *
@@ -313,10 +322,12 @@ svn_cl__list(apr_getopt_t *os,
"mode"));
}
- if (opt_state->verbose || opt_state->xml)
- dirent_fields = SVN_DIRENT_ALL;
+ if (opt_state->xml)
+ dirent_fields = print_dirent_xml_fields;
+ else if (opt_state->verbose)
+ dirent_fields = print_dirent_fields_verbose;
else
- dirent_fields = SVN_DIRENT_KIND; /* the only thing we actually need... */
+ dirent_fields = print_dirent_fields;
pb.ctx = ctx;
pb.verbose = opt_state->verbose;
diff --git a/subversion/svn/svn.c b/subversion/svn/svn.c
index 52760dd1eb24..c2db8bf68e50 100644
--- a/subversion/svn/svn.c
+++ b/subversion/svn/svn.c
@@ -1327,6 +1327,13 @@ const svn_opt_subcommand_desc2_t svn_cl__cmd_table[] =
" directory:\n"
" svn:ignore - A list of file glob patterns to ignore, one per line.\n"
" svn:global-ignores - Like svn:ignore, but inheritable.\n"
+ " svn:auto-props - Automatically set properties on files when they are\n"
+ " added or imported. Contains key-value pairs, one per line, in the format:\n"
+ " PATTERN = PROPNAME=VALUE[;PROPNAME=VALUE ...]\n"
+ " Example (where a literal ';' is escaped by adding another ';'):\n"
+ " *.html = svn:eol-style=native;svn:mime-type=text/html;; charset=UTF8\n"
+ " Applies recursively to all files added or imported under the directory\n"
+ " it is set on. See also [auto-props] in the client configuration file.\n"
" svn:externals - A list of module specifiers, one per line, in the\n"
" following format similar to the syntax of 'svn checkout':\n"
" [-r REV] URL[@PEG] LOCALPATH\n"
@@ -2514,9 +2521,15 @@ sub_main(int argc, const char *argv[], apr_pool_t *pool)
if (APR_STATUS_IS_EACCES(err->apr_err)
|| SVN__APR_STATUS_IS_ENOTDIR(err->apr_err))
{
+ svn_config_t *empty_cfg;
+
svn_handle_warning2(stderr, err, "svn: ");
svn_error_clear(err);
- cfg_hash = NULL;
+ cfg_hash = apr_hash_make(pool);
+ SVN_INT_ERR(svn_config_create2(&empty_cfg, FALSE, FALSE, pool));
+ svn_hash_sets(cfg_hash, SVN_CONFIG_CATEGORY_CONFIG, empty_cfg);
+ SVN_INT_ERR(svn_config_create2(&empty_cfg, FALSE, FALSE, pool));
+ svn_hash_sets(cfg_hash, SVN_CONFIG_CATEGORY_SERVERS, empty_cfg);
}
else
return EXIT_ERROR(err);