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/10 20:06:33 UTC
svn commit: r984153 [31/39] - in /subversion/branches/ignore-mergeinfo: ./
build/ build/ac-macros/ build/generator/ build/generator/templates/
build/hudson/ build/hudson/jobs/subversion-1.6.x-solaris/
build/hudson/jobs/subversion-1.6.x-ubuntu/ build/hu...
Modified: subversion/branches/ignore-mergeinfo/subversion/po/it.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/it.po?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/it.po (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/it.po Tue Aug 10 18:06:17 2010
@@ -5700,7 +5700,7 @@ msgstr ""
msgid ""
"This client is too old to work with working copy '%s'. You need\n"
"to get a newer Subversion client, or to downgrade this working copy.\n"
-"See http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+"See http://subversion.apache.org/faq.html#working-copy-format-change\n"
"for details."
msgstr ""
Modified: subversion/branches/ignore-mergeinfo/subversion/po/ja.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/ja.po?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/ja.po [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/ja.po [UTF-8] Tue Aug 10 18:06:17 2010
@@ -5831,13 +5831,13 @@ msgstr ""
msgid ""
"This client is too old to work with working copy '%s'. You need\n"
"to get a newer Subversion client, or to downgrade this working copy.\n"
-"See http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+"See http://subversion.apache.org/faq.html#working-copy-format-change\n"
"for details."
msgstr ""
"クライアントが古すぎて、作業コピー '%s' を扱うことができません。\n"
"もっと新しい Subversion クライアントをインストールするか、作業コピーをダウン"
"グレードする必要があります。\n"
-"詳しくは http://subversion.tigris.org/faq.html#working-copy-format-change を"
+"詳しくは http://subversion.apache.org/faq.html#working-copy-format-change を"
"参照してください。"
#: libsvn_wc/questions.c:344
Modified: subversion/branches/ignore-mergeinfo/subversion/po/ko.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/ko.po?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/ko.po [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/ko.po [UTF-8] Tue Aug 10 18:06:17 2010
@@ -6703,7 +6703,7 @@ msgid ""
"This client is too old to work with the working copy at\n"
"'%s' (format %d).\n"
"You need to get a newer Subversion client. For more details, see\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
msgstr ""
#: ../libsvn_wc/wc_db.c:502
Modified: subversion/branches/ignore-mergeinfo/subversion/po/nb.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/nb.po?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/nb.po [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/nb.po [UTF-8] Tue Aug 10 18:06:17 2010
@@ -6839,12 +6839,12 @@ msgid ""
"This client is too old to work with the working copy at\n"
"'%s' (format %d).\n"
"You need to get a newer Subversion client. For more details, see\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
msgstr ""
"Denne klienten er for gammel til å virke med arbeidskopien på\n"
"«%s» (format %d).\n"
"Du må hente en nyere Subversionklient. For flere detaljer, se\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
#: ../libsvn_wc/wc_db.c:478
#, c-format
Modified: subversion/branches/ignore-mergeinfo/subversion/po/pl.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/pl.po?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/pl.po [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/pl.po [UTF-8] Tue Aug 10 18:06:17 2010
@@ -6761,12 +6761,12 @@ msgid ""
"This client is too old to work with the working copy at\n"
"'%s' (format %d).\n"
"You need to get a newer Subversion client. For more details, see\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
msgstr ""
"Ten klient jest zbyt stary, by obsługiwać kopię roboczą\n"
"'%s' (format %d).\n"
"Musisz zainstalować nowszy klient Subversion. Zobacz szczegóły na stronie:\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
#: ../libsvn_wc/wc_db.c:532
#, c-format
Modified: subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po [UTF-8] Tue Aug 10 18:06:17 2010
@@ -5368,11 +5368,11 @@ msgid ""
"This client is too old to work with the working copy at\n"
"'%s' (format %d).\n"
"You need to get a newer Subversion client. For more details, see\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
msgstr ""
"此客户端对于工作副本“%s”太旧(格式 %d)。\n"
"你需要取得更新的 Subversion 客户端。参见\n"
-" http://subversion.tigris.org/faq.html#working-copy-format-change\n"
+" http://subversion.apache.org/faq.html#working-copy-format-change\n"
"以获得更详细的信息。\n"
#, c-format
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/cl.h?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cl.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cl.h Tue Aug 10 18:06:17 2010
@@ -223,6 +223,9 @@ typedef struct svn_cl__opt_state_t
otherwise be rejected as "untrusted" */
int strip_count; /* 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) */
+ apr_array_header_t *include_patterns; /* targets to include in operation */
+ apr_array_header_t *exclude_patterns; /* targets to exclude from operation */
svn_boolean_t ignore_mergeinfo; /* ignore mergeinfo in reporting commands. */
} svn_cl__opt_state_t;
@@ -379,7 +382,11 @@ svn_cl__time_cstring_to_human_cstring(co
unversioned items found in the working copy.
When DETAILED is set, and REPOS_LOCKS is set, treat missing repository locks
- as broken WC locks. */
+ as broken WC locks.
+
+ Increment *TEXT_CONFLICTS, *PROP_CONFLICTS, or *TREE_CONFLICTS if
+ a conflict was encountered.
+ */
svn_error_t *
svn_cl__print_status(const char *path,
const svn_wc_status2_t *status,
@@ -387,6 +394,9 @@ svn_cl__print_status(const char *path,
svn_boolean_t show_last_committed,
svn_boolean_t skip_unrecognized,
svn_boolean_t repos_locks,
+ unsigned int *text_conflicts,
+ unsigned int *prop_conflicts,
+ unsigned int *tree_conflicts,
apr_pool_t *pool);
@@ -437,7 +447,7 @@ svn_cl__print_xml_commit(svn_stringbuf_t
*/
svn_error_t *
svn_cl__revprop_prepare(const svn_opt_revision_t *revision,
- apr_array_header_t *targets,
+ const apr_array_header_t *targets,
const char **URL,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
@@ -668,7 +678,9 @@ svn_cl__check_boolean_prop_val(const cha
/* De-streamifying wrapper around svn_client_get_changelists(), which
is called for each target in TARGETS to populate *PATHS (a list of
- paths assigned to one of the CHANGELISTS. */
+ paths assigned to one of the CHANGELISTS.
+ If all targets are to be included, may set *PATHS to TARGETS without
+ reallocating. */
svn_error_t *
svn_cl__changelist_paths(apr_array_header_t **paths,
const apr_array_header_t *changelists,
@@ -684,7 +696,7 @@ svn_cl__changelist_paths(apr_array_heade
svn_error_t *
svn_cl__args_to_target_array_print_reserved(apr_array_header_t **targets_p,
apr_getopt_t *os,
- apr_array_header_t *known_targets,
+ const apr_array_header_t *known_targets,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
@@ -698,7 +710,8 @@ svn_cl__indent_string(const char *str,
/* Return a string showing NODE's kind, URL and revision, to the extent that
- * that information is available in NODE.
+ * that information is available in NODE. If NODE itself is NULL, this prints
+ * just a 'none' node kind.
* WC_REPOS_ROOT_URL should reflect the target working copy's repository
* root URL. If NODE is from that same URL, the printed URL is abbreviated
* to caret notation (^/). WC_REPOS_ROOT_URL may be NULL, in which case
@@ -716,8 +729,8 @@ svn_cl__node_description(const svn_wc_co
* if BASE is an uri, dirent or relative.
*/
const char *
-svn_cl__path_join(const char *base,
- const char *component,
+svn_cl__path_join(const char *base,
+ const char *component,
apr_pool_t *pool);
#ifdef __cplusplus
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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/info-cmd.c Tue Aug 10 18:06:17 2010
@@ -428,13 +428,17 @@ print_info(void *baton,
if (info->tree_conflict)
{
- const char *desc, *src_left_version, *src_right_version;
+ const char *desc;
+ const char *src_left_version;
+ const char *src_right_version;
SVN_ERR(svn_cl__get_human_readable_tree_conflict_description(
&desc, info->tree_conflict, pool));
+
src_left_version =
svn_cl__node_description(info->tree_conflict->src_left_version,
info->repos_root_URL, pool);
+
src_right_version =
svn_cl__node_description(info->tree_conflict->src_right_version,
info->repos_root_URL, 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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c Tue Aug 10 18:06:17 2010
@@ -367,8 +367,8 @@ log_entry_receiver_xml(void *baton,
hi != NULL;
hi = apr_hash_next(hi))
{
- const char *path = svn_apr_hash_index_key(hi);
- svn_log_changed_path2_t *log_item = svn_apr_hash_index_val(hi);
+ const char *path = svn__apr_hash_index_key(hi);
+ svn_log_changed_path2_t *log_item = svn__apr_hash_index_val(hi);
char action[2];
action[0] = log_item->action;
@@ -545,8 +545,8 @@ svn_cl__log(apr_getopt_t *os,
hi != NULL;
hi = apr_hash_next(hi))
{
- const char *property = svn_apr_hash_index_key(hi);
- svn_string_t *value = svn_apr_hash_index_val(hi);
+ const char *property = svn__apr_hash_index_key(hi);
+ svn_string_t *value = svn__apr_hash_index_val(hi);
if (value && value->data[0] != '\0')
return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/main.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/main.c Tue Aug 10 18:06:17 2010
@@ -116,6 +116,9 @@ typedef enum {
opt_trust_server_cert,
opt_show_copies_as_adds,
opt_ignore_keywords,
+ opt_reverse_diff,
+ opt_include_pattern,
+ opt_exclude_pattern,
opt_ignore_mergeinfo
} svn_cl__longopt_t;
@@ -343,6 +346,40 @@ const apr_getopt_option_t svn_cl__option
N_("don't expand keywords\n"
" "
"[alias: --ik]")},
+ {"reverse-diff", opt_reverse_diff, 0,
+ N_("apply the unidiff in reverse\n"
+ " "
+ "[alias: --rd]")},
+ {"include-pattern", opt_include_pattern, 1,
+ N_("operate only on targets matching ARG,\n"
+ " "
+ "which may be a glob pattern such as '*.txt'.\n"
+ " "
+ "If this option is specified multiple times,\n"
+ " "
+ "all patterns are matched in turn.\n"
+ " "
+ "If both --include-pattern and --exclude-pattern\n"
+ " "
+ "options are specified include patterns are applied\n"
+ " "
+ "first, i.e. exclude patterns are applied to all\n"
+ " "
+ "targets which match an include pattern.\n"
+ " "
+ "[alias: --ip]")},
+ {"exclude-pattern", opt_exclude_pattern, 1,
+ N_("do not operate on targets matching ARG,\n"
+ " "
+ "which may be a glob pattern such as '*.txt'.\n"
+ " "
+ "If this option is specified multiple times,\n"
+ " "
+ "all patterns are matched in turn.\n"
+ " "
+ "See also the --include-pattern option.\n"
+ " "
+ "[alias: --ep]")},
{"ignore-mergeinfo", opt_ignore_mergeinfo, 0,
N_("ignore changes to mergeinfo")},
@@ -361,6 +398,7 @@ const apr_getopt_option_t svn_cl__option
{"na", opt_notice_ancestry, 0, NULL},
{"ia", opt_ignore_ancestry, 0, NULL},
{"ie", opt_ignore_externals, 0, NULL},
+ {"rd", opt_reverse_diff, 0, NULL},
{"ro", opt_record_only, 0, NULL},
{"cd", opt_config_dir, 1, NULL},
{"cl", opt_changelist, 1, NULL},
@@ -369,6 +407,8 @@ const apr_getopt_option_t svn_cl__option
{"ri", opt_reintegrate, 0, NULL},
{"sca", opt_show_copies_as_adds, 0, NULL},
{"ik", opt_ignore_keywords, 0, NULL},
+ {"ip", opt_include_pattern, 1, NULL},
+ {"ep", opt_exclude_pattern, 1, NULL},
{0, 0, 0, 0},
};
@@ -779,17 +819,21 @@ const svn_opt_subcommand_desc2_t svn_cl_
("Apply a patch to a working copy.\n"
"usage: patch PATCHFILE [WCPATH]\n"
"\n"
- " Apply unidiff content in PATCHFILE to the working copy WCPATH.\n"
+ " Apply a unidiff patch in PATCHFILE to the working copy WCPATH.\n"
" If WCPATH is omitted, '.' is assumed.\n"
- " A unidiff file suitable for application to a working copy can be\n"
+ "\n"
+ " A unidiff patch suitable for application to a working copy can be\n"
" produced with the 'svn diff' command or third-party diffing tools.\n"
" Any non-unidiff content of PATCHFILE is ignored.\n"
"\n"
+ " Changes listed in the patch will either be applied or rejected.\n"
" If a change does not match at its exact line offset, it may be applied\n"
" earlier or later in the file if a match is found elsewhere for the\n"
- " surrounding lines of context provided in the unidiff.\n"
- " If no matching context can be found for a change, the change will\n"
- " produce a text conflict at its exact line offset.\n"
+ " surrounding lines of context provided by the patch.\n"
+ " A change may also be applied with fuzz, which means that one\n"
+ " or more lines of context are ignored when matching the change.\n"
+ " If no matching context can be found for a change, the change conflicts\n"
+ " and will be written to a reject file with the extension .svnpatch.rej.\n"
"\n"
" For each patched file a line will be printed with characters reporting\n"
" the action taken. These characters have the following meaning:\n"
@@ -798,14 +842,18 @@ const svn_opt_subcommand_desc2_t svn_cl_
" D Deleted\n"
" U Updated\n"
" C Conflict\n"
- " G Merged\n"
+ " G Merged (with local uncommitted changes)\n"
+ "\n"
+ " Changes applied with an offset or fuzz are reported on lines starting\n"
+ " with the '>' symbol. You should review such changes carefully.\n"
"\n"
- " If a unidiff removes all content from a file, that file is scheduled\n"
- " for deletion. If a unidiff creates a new file, that file is scheduled\n"
+ " If the patch removes all content from a file, that file is scheduled\n"
+ " for deletion. If the patch creates a new file, that file is scheduled\n"
" for addition. Use 'svn revert' to undo deletions and additions you\n"
" do not agree with.\n"
),
- {'q', opt_dry_run, opt_accept, opt_merge_cmd, 'p'} },
+ {'q', opt_dry_run, 'p', opt_reverse_diff, opt_include_pattern,
+ opt_exclude_pattern} },
{ "propdel", svn_cl__propdel, {"pdel", "pd"}, N_
("Remove a property from files, dirs, or revisions.\n"
@@ -1717,6 +1765,21 @@ main(int argc, const char *argv[])
case opt_ignore_keywords:
opt_state.ignore_keywords = TRUE;
break;
+ case opt_reverse_diff:
+ opt_state.reverse_diff = TRUE;
+ break;
+ case opt_include_pattern:
+ if (opt_state.include_patterns == NULL)
+ opt_state.include_patterns = apr_array_make(pool, 1,
+ sizeof (const char *));
+ APR_ARRAY_PUSH(opt_state.include_patterns, const char *) = opt_arg;
+ break;
+ case opt_exclude_pattern:
+ if (opt_state.exclude_patterns == NULL)
+ opt_state.exclude_patterns = apr_array_make(pool, 1,
+ sizeof (const char *));
+ APR_ARRAY_PUSH(opt_state.exclude_patterns, const char *) = opt_arg;
+ break;
case opt_ignore_mergeinfo:
opt_state.ignore_mergeinfo = TRUE;
break;
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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/mergeinfo-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/mergeinfo-cmd.c Tue Aug 10 18:06:17 2010
@@ -117,7 +117,7 @@ svn_cl__mergeinfo(apr_getopt_t *os,
/* Do the real work, depending on the requested data flavor. */
if (opt_state->show_revs == svn_cl__show_revs_merged)
{
- SVN_ERR(svn_client_mergeinfo_log(target, TRUE, &tgt_peg_revision,
+ SVN_ERR(svn_client_mergeinfo_log(TRUE, target, &tgt_peg_revision,
source, &src_peg_revision,
print_log_rev, NULL,
TRUE, depth, NULL, ctx,
@@ -125,7 +125,7 @@ svn_cl__mergeinfo(apr_getopt_t *os,
}
else if (opt_state->show_revs == svn_cl__show_revs_eligible)
{
- SVN_ERR(svn_client_mergeinfo_log(target, FALSE, &tgt_peg_revision,
+ SVN_ERR(svn_client_mergeinfo_log(FALSE, target, &tgt_peg_revision,
source, &src_peg_revision,
print_log_rev, NULL,
TRUE, depth, NULL, ctx,
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/notify.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/notify.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/notify.c Tue Aug 10 18:06:17 2010
@@ -58,12 +58,6 @@ struct notify_baton
unsigned int tree_conflicts;
unsigned int skipped_paths;
- /* Conflict stats for update and merge (for externals). */
- unsigned int ext_text_conflicts;
- unsigned int ext_prop_conflicts;
- unsigned int ext_tree_conflicts;
- unsigned int ext_skipped_paths;
-
/* The cwd, for use in decomposing absolute paths. */
const char *path_prefix;
};
@@ -73,32 +67,19 @@ svn_error_t *
svn_cl__print_conflict_stats(void *notify_baton, apr_pool_t *pool)
{
struct notify_baton *nb = notify_baton;
- const char *header;
unsigned int text_conflicts;
unsigned int prop_conflicts;
unsigned int tree_conflicts;
unsigned int skipped_paths;
- if (nb->in_external)
- {
- header = _("Summary of conflicts in external item:\n");
- text_conflicts = nb->ext_text_conflicts;
- prop_conflicts = nb->ext_prop_conflicts;
- tree_conflicts = nb->ext_tree_conflicts;
- skipped_paths = nb->ext_skipped_paths;
- }
- else
- {
- header = _("Summary of conflicts:\n");
- text_conflicts = nb->text_conflicts;
- prop_conflicts = nb->prop_conflicts;
- tree_conflicts = nb->tree_conflicts;
- skipped_paths = nb->skipped_paths;
- }
+ text_conflicts = nb->text_conflicts;
+ prop_conflicts = nb->prop_conflicts;
+ tree_conflicts = nb->tree_conflicts;
+ skipped_paths = nb->skipped_paths;
if (text_conflicts > 0 || prop_conflicts > 0
|| tree_conflicts > 0 || skipped_paths > 0)
- SVN_ERR(svn_cmdline_printf(pool, "%s", header));
+ SVN_ERR(svn_cmdline_printf(pool, "%s", _("Summary of conflicts:\n")));
if (text_conflicts > 0)
SVN_ERR(svn_cmdline_printf
@@ -146,8 +127,7 @@ notify(void *baton, const svn_wc_notify_
switch (n->action)
{
case svn_wc_notify_skip:
- nb->in_external ? nb->ext_skipped_paths++
- : nb->skipped_paths++;
+ nb->skipped_paths++;
if (n->content_state == svn_wc_notify_state_missing)
{
if ((err = svn_cmdline_printf
@@ -194,8 +174,7 @@ notify(void *baton, const svn_wc_notify_
nb->received_some_change = TRUE;
if (n->content_state == svn_wc_notify_state_conflicted)
{
- nb->in_external ? nb->ext_text_conflicts++
- : nb->text_conflicts++;
+ nb->text_conflicts++;
if ((err = svn_cmdline_printf(pool, "C %s\n", path_local)))
goto print_error;
}
@@ -210,8 +189,7 @@ notify(void *baton, const svn_wc_notify_
nb->received_some_change = TRUE;
if (n->content_state == svn_wc_notify_state_conflicted)
{
- nb->in_external ? nb->ext_text_conflicts++
- : nb->text_conflicts++;
+ nb->text_conflicts++;
statchar_buf[0] = 'C';
}
else
@@ -219,8 +197,7 @@ notify(void *baton, const svn_wc_notify_
if (n->prop_state == svn_wc_notify_state_conflicted)
{
- nb->in_external ? nb->ext_prop_conflicts++
- : nb->prop_conflicts++;
+ nb->prop_conflicts++;
statchar_buf[1] = 'C';
}
else if (n->prop_state == svn_wc_notify_state_merged)
@@ -281,12 +258,116 @@ notify(void *baton, const svn_wc_notify_
goto print_error;
break;
+ case svn_wc_notify_patch:
+ {
+ nb->received_some_change = TRUE;
+ if (n->content_state == svn_wc_notify_state_conflicted)
+ {
+ nb->text_conflicts++;
+ statchar_buf[0] = 'C';
+ }
+ else if (n->kind == svn_node_file)
+ {
+ if (n->content_state == svn_wc_notify_state_merged)
+ statchar_buf[0] = 'G';
+ else if (n->content_state == svn_wc_notify_state_changed)
+ statchar_buf[0] = 'U';
+ }
+
+ if (statchar_buf[0] != ' ')
+ {
+ if ((err = svn_cmdline_printf(pool, "%s %s\n",
+ statchar_buf, path_local)))
+ goto print_error;
+ }
+ }
+ break;
+
+ case svn_wc_notify_patch_applied_hunk:
+ nb->received_some_change = TRUE;
+ if (n->hunk_original_start != n->hunk_matched_line)
+ {
+ apr_uint64_t off;
+ const char *s;
+ const char *minus;
+
+ if (n->hunk_matched_line > n->hunk_original_start)
+ {
+ off = n->hunk_matched_line - n->hunk_original_start;
+ minus = "";
+ }
+ else
+ {
+ off = n->hunk_original_start - n->hunk_matched_line;
+ minus = "-";
+ }
+
+ /* ### APR_INT64_T_FMT 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)))
+ goto print_error;
+ }
+ else
+ {
+ s = _("> applied hunk @@ -%lu,%lu +%lu,%lu @@ "
+ "with offset %s");
+ if ((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)))
+ goto print_error;
+ }
+ }
+ else if (n->hunk_fuzz)
+ {
+ if ((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)))
+ goto print_error;
+
+ }
+ break;
+
+ 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)))
+ goto print_error;
+ break;
+
case svn_wc_notify_update_update:
+ case svn_wc_notify_merge_record_info:
{
if (n->content_state == svn_wc_notify_state_conflicted)
{
- nb->in_external ? nb->ext_text_conflicts++
- : nb->text_conflicts++;
+ nb->text_conflicts++;
statchar_buf[0] = 'C';
}
else if (n->kind == svn_node_file)
@@ -299,8 +380,7 @@ notify(void *baton, const svn_wc_notify_
if (n->prop_state == svn_wc_notify_state_conflicted)
{
- nb->in_external ? nb->ext_prop_conflicts++
- : nb->prop_conflicts++;
+ nb->prop_conflicts++;
statchar_buf[1] = 'C';
}
else if (n->prop_state == svn_wc_notify_state_merged)
@@ -345,8 +425,6 @@ notify(void *baton, const svn_wc_notify_
{
svn_handle_warning2(stderr, n->err, "svn: ");
nb->in_external = FALSE;
- nb->ext_text_conflicts = nb->ext_prop_conflicts
- = nb->ext_tree_conflicts = nb->ext_skipped_paths = 0;
if ((err = svn_cmdline_printf(pool, "\n")))
goto print_error;
}
@@ -583,6 +661,50 @@ notify(void *baton, const svn_wc_notify_
goto print_error;
break;
+ case svn_wc_notify_merge_record_info_begin:
+ if (!n->merge_range)
+ {
+ err = svn_cmdline_printf(pool,
+ _("--- Recording mergeinfo for merge "
+ "between repository URLs into '%s':\n"),
+ path_local);
+ }
+ else
+ {
+ if (n->merge_range->start == n->merge_range->end - 1
+ || n->merge_range->start == n->merge_range->end)
+ err = svn_cmdline_printf(
+ pool,
+ _("--- Recording mergeinfo for merge of r%ld into '%s':\n"),
+ n->merge_range->end, path_local);
+ else if (n->merge_range->start - 1 == n->merge_range->end)
+ err = svn_cmdline_printf(
+ pool,
+ _("--- Recording mergeinfo for reverse merge of r%ld into '%s':\n"),
+ n->merge_range->start, path_local);
+ else if (n->merge_range->start < n->merge_range->end)
+ err = svn_cmdline_printf(
+ pool,
+ _("--- Recording mergeinfo for merge of r%ld through r%ld into '%s':\n"),
+ n->merge_range->start + 1, n->merge_range->end, path_local);
+ else /* n->merge_range->start > n->merge_range->end - 1 */
+ err = svn_cmdline_printf(
+ pool,
+ _("--- Recording mergeinfo for reverse merge of r%ld through r%ld into '%s':\n"),
+ n->merge_range->start, n->merge_range->end + 1, path_local);
+
+ if (err)
+ goto print_error;
+ }
+ break;
+
+ case svn_wc_notify_merge_elide_info:
+ if ((err = svn_cmdline_printf(pool,
+ _("--- Eliding mergeinfo from '%s':\n"),
+ path_local)))
+ goto print_error;
+ break;
+
case svn_wc_notify_foreign_merge_begin:
if (n->merge_range == NULL)
err = svn_cmdline_printf(pool,
@@ -618,8 +740,7 @@ notify(void *baton, const svn_wc_notify_
break;
case svn_wc_notify_tree_conflict:
- nb->in_external ? nb->ext_tree_conflicts++
- : nb->tree_conflicts++;
+ nb->tree_conflicts++;
if ((err = svn_cmdline_printf(pool, " C %s\n", path_local)))
goto print_error;
break;
@@ -706,10 +827,6 @@ svn_cl__get_notifier(svn_wc_notify_func2
nb->prop_conflicts = 0;
nb->tree_conflicts = 0;
nb->skipped_paths = 0;
- nb->ext_text_conflicts = 0;
- nb->ext_prop_conflicts = 0;
- nb->ext_tree_conflicts = 0;
- nb->ext_skipped_paths = 0;
SVN_ERR(svn_dirent_get_absolute(&nb->path_prefix, "", pool));
*notify_func_p = notify;
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/obliterate-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/obliterate-cmd.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/obliterate-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/obliterate-cmd.c Tue Aug 10 18:06:17 2010
@@ -41,6 +41,48 @@
/*** Code. ***/
+struct notify_baton
+{
+ svn_boolean_t had_print_error; /* Used to not keep printing error messages
+ when we've already had one print error. */
+};
+
+/* Implements 'svn_wc_notify_func2_t'. */
+static void
+notify(void *baton, const svn_wc_notify_t *n, apr_pool_t *pool)
+{
+ struct notify_baton *nb = baton;
+ svn_error_t *err;
+
+ switch (n->action)
+ {
+ case svn_wc_notify_delete:
+ if ((err = svn_cmdline_printf(pool, _("Obliterate %8ld %s\n"),
+ n->revision, n->url)))
+ goto print_error;
+ break;
+
+ default:
+ SVN_ERR_MALFUNCTION_NO_RETURN();
+ }
+
+ if ((err = svn_cmdline_fflush(stdout)))
+ goto print_error;
+
+ return;
+
+ print_error:
+ /* If we had no errors before, print this error to stderr. Else, don't print
+ anything. The user already knows there were some output errors,
+ so there is no point in flooding her with an error per notification. */
+ if (!nb->had_print_error)
+ {
+ nb->had_print_error = TRUE;
+ svn_handle_error2(err, stderr, FALSE, "svn: ");
+ }
+ svn_error_clear(err);
+}
+
/* This implements the `svn_opt_subcommand_t' interface. */
svn_error_t *
svn_cl__obliterate(apr_getopt_t *os,
@@ -50,6 +92,7 @@ svn_cl__obliterate(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;
+ struct notify_baton nb = { FALSE };
svn_opt_revision_t rev;
svn_revnum_t revnum;
const char *url;
@@ -59,6 +102,9 @@ svn_cl__obliterate(apr_getopt_t *os,
opt_state->targets,
ctx, pool));
+ ctx->notify_func2 = notify;
+ ctx->notify_baton2 = &nb;
+
/* Parse the argument into TRUEPATH and REVNUM. */
if (targets->nelts != 1)
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
@@ -73,7 +119,7 @@ svn_cl__obliterate(apr_getopt_t *os,
_("Target must specify a URL"));
revnum = rev.value.number;
- SVN_ERR(svn_client__obliterate(url, revnum, ctx, pool));
+ SVN_ERR(svn_client__obliterate_path_rev(url, revnum, ctx, pool));
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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c Tue Aug 10 18:06:17 2010
@@ -46,37 +46,42 @@ svn_cl__patch(apr_getopt_t *os,
void *baton,
apr_pool_t *pool)
{
- 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 *args, *targets;
- const char *patch_path = NULL, *target_path = NULL;
+ svn_cl__opt_state_t *opt_state;
+ svn_client_ctx_t *ctx;
+ apr_array_header_t *args;
+ apr_array_header_t *targets;
+ const char *abs_patch_path;
+ const char *abs_target_path;
+
+ opt_state = ((svn_cl__cmd_baton_t *)baton)->opt_state;
+ ctx = ((svn_cl__cmd_baton_t *)baton)->ctx;
- /* Get patch file argument. */
SVN_ERR(svn_opt_parse_num_args(&args, os, 1, pool));
- SVN_ERR(svn_dirent_get_absolute(&patch_path,
- APR_ARRAY_IDX(args, 0, const char *),
- pool));
+ SVN_ERR(svn_dirent_get_absolute(&abs_patch_path,
+ APR_ARRAY_IDX(args, 0, const char *),
+ pool));
- /* Get WCPATH argument */
SVN_ERR(svn_client_args_to_target_array(&targets, os, opt_state->targets,
ctx, pool));
-
- /* Error on extra arguments to allow future extension. */
if (targets->nelts > 1)
return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0, NULL);
svn_opt_push_implicit_dot_target(targets, pool);
-
SVN_ERR(svn_opt_eat_peg_revisions(&targets, targets, pool));
- target_path = APR_ARRAY_IDX(targets, 0, const char *);
+ SVN_ERR(svn_dirent_get_absolute(&abs_target_path,
+ 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));
- /* OK we're good. */
- SVN_ERR(svn_client_patch(patch_path, target_path, opt_state->dry_run,
- opt_state->strip_count, ctx, pool));
+ SVN_ERR(svn_client_patch(abs_patch_path, abs_target_path,
+ opt_state->dry_run, opt_state->strip_count,
+ opt_state->reverse_diff,
+ opt_state->include_patterns,
+ opt_state->exclude_patterns,
+ NULL, NULL, ctx, pool, pool));
if (! opt_state->quiet)
SVN_ERR(svn_cl__print_conflict_stats(ctx->notify_baton2, pool));
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/propget-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/propget-cmd.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/propget-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/propget-cmd.c Tue Aug 10 18:06:17 2010
@@ -76,8 +76,8 @@ print_properties_xml(const char *pname,
for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi))
{
- const char *filename = svn_apr_hash_index_key(hi);
- svn_string_t *propval = svn_apr_hash_index_val(hi);
+ const char *filename = svn__apr_hash_index_key(hi);
+ svn_string_t *propval = svn__apr_hash_index_val(hi);
svn_stringbuf_t *sb = NULL;
svn_pool_clear(iterpool);
@@ -120,8 +120,8 @@ print_properties(svn_stream_t *out,
for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi))
{
- const char *filename = svn_apr_hash_index_key(hi);
- svn_string_t *propval = svn_apr_hash_index_val(hi);
+ const char *filename = svn__apr_hash_index_key(hi);
+ svn_string_t *propval = svn__apr_hash_index_val(hi);
svn_pool_clear(iterpool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/props.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/props.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/props.c Tue Aug 10 18:06:17 2010
@@ -47,7 +47,7 @@
svn_error_t *
svn_cl__revprop_prepare(const svn_opt_revision_t *revision,
- apr_array_header_t *targets,
+ const apr_array_header_t *targets,
const char **URL,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
@@ -90,8 +90,8 @@ svn_cl__print_prop_hash(apr_hash_t *prop
for (hi = apr_hash_first(pool, prop_hash); hi; hi = apr_hash_next(hi))
{
- const char *pname = svn_apr_hash_index_key(hi);
- svn_string_t *propval = svn_apr_hash_index_val(hi);
+ const char *pname = svn__apr_hash_index_key(hi);
+ svn_string_t *propval = svn__apr_hash_index_val(hi);
const char *pname_stdout;
if (svn_prop_needs_translation(pname))
@@ -131,8 +131,8 @@ svn_cl__print_xml_prop_hash(svn_stringbu
for (hi = apr_hash_first(pool, prop_hash); hi; hi = apr_hash_next(hi))
{
- const char *pname = svn_apr_hash_index_key(hi);
- svn_string_t *propval = svn_apr_hash_index_val(hi);
+ const char *pname = svn__apr_hash_index_key(hi);
+ svn_string_t *propval = svn__apr_hash_index_val(hi);
if (names_only)
{
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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/propset-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/propset-cmd.c Tue Aug 10 18:06:17 2010
@@ -88,12 +88,11 @@ svn_cl__propset(apr_getopt_t *os,
if (svn_prop_needs_translation(pname_utf8))
SVN_ERR(svn_subst_translate_string(&propval, propval,
opt_state->encoding, scratch_pool));
- else
- if (opt_state->encoding)
- return svn_error_create
- (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
- _("--encoding option applies only to textual"
- " Subversion-controlled properties"));
+ else if (opt_state->encoding)
+ return svn_error_create
+ (SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+ _("--encoding option applies only to textual"
+ " Subversion-controlled properties"));
/* Suck up all the remaining arguments into a targets array */
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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c Tue Aug 10 18:06:17 2010
@@ -60,6 +60,11 @@ struct status_baton
svn_boolean_t had_print_error; /* To avoid printing lots of errors if we get
errors while printing to stdout */
svn_boolean_t xml_mode;
+
+ /* Conflict stats. */
+ unsigned int text_conflicts;
+ unsigned int prop_conflicts;
+ unsigned int tree_conflicts;
};
@@ -69,6 +74,29 @@ struct status_cache
svn_wc_status2_t *status;
};
+/* Print conflict stats accumulated in status baton SB.
+ * Do temporary allocations in POOL. */
+static svn_error_t *
+print_conflict_stats(struct status_baton *sb, apr_pool_t *pool)
+{
+ if (sb->text_conflicts > 0 || sb->prop_conflicts > 0 ||
+ sb->tree_conflicts > 0)
+ SVN_ERR(svn_cmdline_printf(pool, "%s", _("Summary of conflicts:\n")));
+
+ if (sb->text_conflicts > 0)
+ SVN_ERR(svn_cmdline_printf
+ (pool, _(" Text conflicts: %u\n"), sb->text_conflicts));
+
+ if (sb->prop_conflicts > 0)
+ SVN_ERR(svn_cmdline_printf
+ (pool, _(" Property conflicts: %u\n"), sb->prop_conflicts));
+
+ if (sb->tree_conflicts > 0)
+ SVN_ERR(svn_cmdline_printf
+ (pool, _(" Tree conflicts: %u\n"), sb->tree_conflicts));
+
+ return SVN_NO_ERROR;
+}
/* Prints XML target element with path attribute TARGET, using POOL for
temporary allocations. */
@@ -124,6 +152,9 @@ print_status_normal_or_xml(void *baton,
sb->show_last_committed,
sb->skip_unrecognized,
sb->repos_locks,
+ &sb->text_conflicts,
+ &sb->prop_conflicts,
+ &sb->tree_conflicts,
pool);
}
@@ -149,7 +180,7 @@ print_status(void *baton,
scache->path = apr_pstrdup(sb->cl_pool, path);
scache->status = svn_wc_dup_status2(status, sb->cl_pool);
- path_array = (apr_array_header_t *)
+ path_array =
apr_hash_get(sb->cached_changelists, cl_key, APR_HASH_KEY_STRING);
if (path_array == NULL)
{
@@ -221,6 +252,9 @@ svn_cl__status(apr_getopt_t *os,
sb.xml_mode = opt_state->xml;
sb.cached_changelists = master_cl_hash;
sb.cl_pool = scratch_pool;
+ sb.text_conflicts = 0;
+ sb.prop_conflicts = 0;
+ sb.tree_conflicts = 0;
SVN_ERR(svn_opt_eat_peg_revisions(&targets, targets, scratch_pool));
@@ -272,8 +306,8 @@ svn_cl__status(apr_getopt_t *os,
for (hi = apr_hash_first(scratch_pool, master_cl_hash); hi;
hi = apr_hash_next(hi))
{
- const char *changelist_name = svn_apr_hash_index_key(hi);
- apr_array_header_t *path_array = svn_apr_hash_index_val(hi);
+ const char *changelist_name = svn__apr_hash_index_key(hi);
+ apr_array_header_t *path_array = svn__apr_hash_index_val(hi);
int j;
/* ### TODO: For non-XML output, we shouldn't print the
@@ -313,5 +347,8 @@ svn_cl__status(apr_getopt_t *os,
if (opt_state->xml && (! opt_state->incremental))
SVN_ERR(svn_cl__xml_print_footer("status", scratch_pool));
+ if (! opt_state->quiet && ! opt_state->xml)
+ SVN_ERR(print_conflict_stats(&sb, scratch_pool));
+
return SVN_NO_ERROR;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/status.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/status.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/status.c Tue Aug 10 18:06:17 2010
@@ -105,6 +105,9 @@ print_status(const char *path,
svn_boolean_t show_last_committed,
svn_boolean_t repos_locks,
const svn_wc_status2_t *status,
+ unsigned int *text_conflicts,
+ unsigned int *prop_conflicts,
+ unsigned int *tree_conflicts,
apr_pool_t *pool)
{
enum svn_wc_status_kind text_status = status->text_status;
@@ -122,6 +125,14 @@ print_status(const char *path,
svn_cl__get_human_readable_tree_conflict_description(
&desc, status->tree_conflict, pool);
tree_desc_line = apr_psprintf(pool, "\n > %s", desc);
+ (*tree_conflicts)++;
+ }
+ else
+ {
+ if (text_status == svn_wc_status_conflicted)
+ (*text_conflicts)++;
+ if (status->prop_status == svn_wc_status_conflicted)
+ (*prop_conflicts)++;
}
if (detailed)
@@ -363,6 +374,9 @@ svn_cl__print_status(const char *path,
svn_boolean_t show_last_committed,
svn_boolean_t skip_unrecognized,
svn_boolean_t repos_locks,
+ unsigned int *text_conflicts,
+ unsigned int *prop_conflicts,
+ unsigned int *tree_conflicts,
apr_pool_t *pool)
{
if (! status
@@ -373,5 +387,5 @@ svn_cl__print_status(const char *path,
return print_status(svn_dirent_local_style(path, pool),
detailed, show_last_committed, repos_locks, status,
- pool);
+ text_conflicts, prop_conflicts, tree_conflicts, pool);
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/svn.1
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/svn.1?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/svn.1 (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/svn.1 Tue Aug 10 18:06:17 2010
@@ -36,7 +36,7 @@ is called the source ``repository''; it
to permit extracting previous versions of those files at any time.
For more information about the Subversion project, visit
-http://subversion.tigris.org.
+http://subversion.apache.org.
Documentation for Subversion and its tools, including detailed usage
explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/switch-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/switch-cmd.c Tue Aug 10 18:06:17 2010
@@ -40,7 +40,7 @@
/*** Code. ***/
static svn_error_t *
-rewrite_urls(apr_array_header_t *targets,
+rewrite_urls(const apr_array_header_t *targets,
svn_boolean_t recurse,
svn_client_ctx_t *ctx,
apr_pool_t *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=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/util.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/util.c Tue Aug 10 18:06:17 2010
@@ -1100,7 +1100,7 @@ svn_cl__operation_str_human_readable(svn
svn_error_t *
svn_cl__args_to_target_array_print_reserved(apr_array_header_t **targets,
apr_getopt_t *os,
- apr_array_header_t *known_targets,
+ const apr_array_header_t *known_targets,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -1266,6 +1266,12 @@ svn_cl__node_description(const svn_wc_co
const char *root_str = "^";
const char *path_str = "...";
+ if (!node)
+ /* Printing "(none)" the harder way to ensure conformity (mostly with
+ * translations). */
+ return apr_psprintf(pool, "(%s)",
+ svn_cl__node_kind_str_human_readable(svn_node_none));
+
/* Construct a "caret notation" ^/URL if NODE matches WC_REPOS_ROOT_URL.
* Otherwise show the complete URL, and if we can't, show dots. */
Modified: subversion/branches/ignore-mergeinfo/subversion/svn_private_config.hw
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn_private_config.hw?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn_private_config.hw (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn_private_config.hw Tue Aug 10 18:06:17 2010
@@ -30,9 +30,9 @@
#define SVN_PRIVATE_CONFIG_HW
/* The minimal version of Berkeley DB we want */
-#define SVN_FS_WANT_DB_MAJOR 4
-#define SVN_FS_WANT_DB_MINOR 0
-#define SVN_FS_WANT_DB_PATCH 14
+#define SVN_FS_WANT_DB_MAJOR 4
+#define SVN_FS_WANT_DB_MINOR 0
+#define SVN_FS_WANT_DB_PATCH 14
/* Path separator for local filesystem */
Modified: subversion/branches/ignore-mergeinfo/subversion/svnadmin/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnadmin/main.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnadmin/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnadmin/main.c Tue Aug 10 18:06:17 2010
@@ -1248,8 +1248,8 @@ subcommand_lslocks(apr_getopt_t *os, voi
for (hi = apr_hash_first(pool, locks); hi; hi = apr_hash_next(hi))
{
const char *cr_date, *exp_date = "";
- const char *path = svn_apr_hash_index_key(hi);
- svn_lock_t *lock = svn_apr_hash_index_val(hi);
+ const char *path = svn__apr_hash_index_key(hi);
+ svn_lock_t *lock = svn__apr_hash_index_val(hi);
int comment_lines = 0;
cr_date = svn_time_to_human_cstring(lock->creation_date, pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svnadmin/svnadmin.1
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnadmin/svnadmin.1?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnadmin/svnadmin.1 (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnadmin/svnadmin.1 Tue Aug 10 18:06:17 2010
@@ -36,7 +36,7 @@ is called the source ``repository''; it
to permit extracting previous versions of those files at any time.
For more information about the Subversion project, visit
-http://subversion.tigris.org.
+http://subversion.apache.org.
Documentation for Subversion and its tools, including detailed usage
explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
Modified: subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/main.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/main.c Tue Aug 10 18:06:17 2010
@@ -110,7 +110,7 @@ write_prop_to_stringbuf(svn_stringbuf_t
/* Prefix matching function to compare node-path with set of prefixes. */
static svn_boolean_t
-ary_prefix_match(apr_array_header_t *pfxlist, const char *path)
+ary_prefix_match(const apr_array_header_t *pfxlist, const char *path)
{
int i, pfx_len, path_len = strlen(path);
const char *pfx;
@@ -133,7 +133,7 @@ ary_prefix_match(apr_array_header_t *pfx
/* Check whether we need to skip this PATH based on its presence in
the PREFIXES list, and the DO_EXCLUDE option. */
static APR_INLINE svn_boolean_t
-skip_path(const char *path, apr_array_header_t *prefixes,
+skip_path(const char *path, const apr_array_header_t *prefixes,
svn_boolean_t do_exclude, svn_boolean_t glob)
{
const svn_boolean_t matches =
@@ -285,8 +285,8 @@ new_revision_record(void **revision_bato
for (hi = apr_hash_first(pool, headers); hi; hi = apr_hash_next(hi))
{
- const char *key = svn_apr_hash_index_key(hi);
- const char *val = svn_apr_hash_index_val(hi);
+ const char *key = svn__apr_hash_index_key(hi);
+ const char *val = svn__apr_hash_index_val(hi);
if ((!strcmp(key, SVN_REPOS_DUMPFILE_CONTENT_LENGTH))
|| (!strcmp(key, SVN_REPOS_DUMPFILE_PROP_CONTENT_LENGTH))
@@ -351,8 +351,8 @@ output_revision(struct revision_baton_t
hi;
hi = apr_hash_next(hi))
{
- const char *pname = svn_apr_hash_index_key(hi);
- const svn_string_t *pval = svn_apr_hash_index_val(hi);
+ const char *pname = svn__apr_hash_index_key(hi);
+ const svn_string_t *pval = svn__apr_hash_index_val(hi);
write_prop_to_stringbuf(&props, pname, pval);
}
@@ -550,8 +550,8 @@ new_node_record(void **node_baton,
for (hi = apr_hash_first(pool, headers); hi; hi = apr_hash_next(hi))
{
- const char *key = svn_apr_hash_index_key(hi);
- const char *val = svn_apr_hash_index_val(hi);
+ const char *key = svn__apr_hash_index_key(hi);
+ const char *val = svn__apr_hash_index_val(hi);
if ((!strcmp(key, SVN_REPOS_DUMPFILE_CONTENT_LENGTH))
|| (!strcmp(key, SVN_REPOS_DUMPFILE_PROP_CONTENT_LENGTH))
@@ -672,8 +672,8 @@ adjust_mergeinfo(svn_string_t **final_va
SVN_ERR(svn_mergeinfo_parse(&mergeinfo, initial_val->data, subpool));
for (hi = apr_hash_first(subpool, mergeinfo); hi; hi = apr_hash_next(hi))
{
- const char *merge_source = svn_apr_hash_index_key(hi);
- apr_array_header_t *rangelist = svn_apr_hash_index_val(hi);
+ const char *merge_source = svn__apr_hash_index_key(hi);
+ apr_array_header_t *rangelist = svn__apr_hash_index_val(hi);
struct parse_baton_t *pb = rb->pb;
int i;
@@ -1132,7 +1132,7 @@ do_filter(apr_getopt_t *os,
hi;
hi = apr_hash_next(hi))
{
- const svn_revnum_t *revnum = svn_apr_hash_index_key(hi);
+ const svn_revnum_t *revnum = svn__apr_hash_index_key(hi);
APR_ARRAY_PUSH(keys, svn_revnum_t) = *revnum;
}
@@ -1176,7 +1176,7 @@ do_filter(apr_getopt_t *os,
hi;
hi = apr_hash_next(hi))
{
- const char *path = svn_apr_hash_index_key(hi);
+ const char *path = svn__apr_hash_index_key(hi);
APR_ARRAY_PUSH(keys, const char *) = path;
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/svndumpfilter.1
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/svndumpfilter.1?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/svndumpfilter.1 (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svndumpfilter/svndumpfilter.1 Tue Aug 10 18:06:17 2010
@@ -36,7 +36,7 @@ is called the source ``repository''; it
to permit extracting previous versions of those files at any time.
For more information about the Subversion project, visit
-http://subversion.tigris.org.
+http://subversion.apache.org.
Documentation for Subversion and its tools, including detailed usage
explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
Modified: subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnlook/main.c Tue Aug 10 18:06:17 2010
@@ -1218,7 +1218,7 @@ print_tree(svn_fs_root_t *root,
subpool = svn_pool_create(pool);
for (hi = apr_hash_first(pool, entries); hi; hi = apr_hash_next(hi))
{
- svn_fs_dirent_t *entry = svn_apr_hash_index_val(hi);
+ svn_fs_dirent_t *entry = svn__apr_hash_index_val(hi);
svn_pool_clear(subpool);
SVN_ERR(print_tree(root,
@@ -1685,11 +1685,16 @@ do_plist(svnlook_ctxt_t *c,
SVN_ERR(verify_path(&kind, root, path, pool));
SVN_ERR(svn_fs_node_proplist(&props, root, path, pool));
}
- else
+ else if (c->is_revision)
{
SVN_ERR(svn_fs_revision_proplist(&props, c->fs, c->rev_id, pool));
revprop = TRUE;
}
+ else
+ {
+ SVN_ERR(svn_fs_txn_proplist(&props, c->txn, pool));
+ revprop = TRUE;
+ }
if (xml)
{
@@ -1703,8 +1708,16 @@ do_plist(svnlook_ctxt_t *c,
if (revprop)
{
/* "<revprops ...>" */
- svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "revprops",
- "rev", revstr, NULL);
+ if (c->is_revision)
+ {
+ svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "revprops",
+ "rev", revstr, NULL);
+ }
+ else
+ {
+ svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "revprops",
+ "txn", c->txn_name, NULL);
+ }
}
else
{
@@ -1716,8 +1729,8 @@ do_plist(svnlook_ctxt_t *c,
for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi))
{
- const char *pname = svn_apr_hash_index_key(hi);
- svn_string_t *propval = svn_apr_hash_index_val(hi);
+ const char *pname = svn__apr_hash_index_key(hi);
+ svn_string_t *propval = svn__apr_hash_index_val(hi);
SVN_ERR(check_cancel(NULL));
@@ -1739,12 +1752,11 @@ do_plist(svnlook_ctxt_t *c,
else
printf(" %s : %s\n", pname_stdout, propval->data);
}
+ else if (xml)
+ svn_xml_make_open_tag(&sb, pool, svn_xml_self_closing, "property",
+ "name", pname, NULL);
else
- if (xml)
- svn_xml_make_open_tag(&sb, pool, svn_xml_self_closing, "property",
- "name", pname, NULL);
- else
- printf(" %s\n", pname);
+ printf(" %s\n", pname);
}
if (xml)
{
Modified: subversion/branches/ignore-mergeinfo/subversion/svnlook/svnlook.1
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnlook/svnlook.1?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnlook/svnlook.1 (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnlook/svnlook.1 Tue Aug 10 18:06:17 2010
@@ -36,7 +36,7 @@ is called the source ``repository''; it
to permit extracting previous versions of those files at any time.
For more information about the Subversion project, visit
-http://subversion.tigris.org.
+http://subversion.apache.org.
Documentation for Subversion and its tools, including detailed usage
explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
Modified: subversion/branches/ignore-mergeinfo/subversion/svnserve/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svnserve/main.c?rev=984153&r1=984152&r2=984153&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svnserve/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svnserve/main.c Tue Aug 10 18:06:17 2010
@@ -179,6 +179,14 @@ static const apr_getopt_option_t svnserv
" "
"[mode: daemon, listen-once]")},
#endif
+ {"prefer-ipv6", '6', 0,
+ N_("prefer IPv6 when resolving the listen hostname\n"
+ " "
+ "[IPv4 is preferred by default. Using IPv4 and IPv6\n"
+ " "
+ "at the same time is not supported in daemon mode.\n"
+ " "
+ "Use inetd mode or tunnel mode if you need this.]")},
#ifdef CONNECTION_HAVE_THREAD_OPTION
/* ### Making the assumption here that WIN32 never has fork and so
* ### this option never exists when --service exists. */
@@ -380,6 +388,8 @@ int main(int argc, const char *argv[])
apr_uint16_t port = SVN_RA_SVN_PORT;
const char *host = NULL;
int family = APR_INET;
+ apr_int32_t sockaddr_info_flags = 0;
+ svn_boolean_t prefer_v6 = FALSE;
int mode_opt_count = 0;
const char *config_filename = NULL;
const char *pid_filename = NULL;
@@ -429,6 +439,10 @@ int main(int argc, const char *argv[])
usage(argv[0], pool);
switch (opt)
{
+ case '6':
+ prefer_v6 = TRUE;
+ break;
+
case 'h':
help(pool);
break;
@@ -677,10 +691,24 @@ int main(int argc, const char *argv[])
{
apr_socket_close(sock);
family = APR_UNSPEC;
+
+ if (prefer_v6)
+ {
+ if (host == NULL)
+ host = "::";
+ sockaddr_info_flags = APR_IPV6_ADDR_OK;
+ }
+ else
+ {
+ if (host == NULL)
+ host = "0.0.0.0";
+ sockaddr_info_flags = APR_IPV4_ADDR_OK;
+ }
}
#endif
- status = apr_sockaddr_info_get(&sa, host, family, port, 0, pool);
+ status = apr_sockaddr_info_get(&sa, host, family, port,
+ sockaddr_info_flags, pool);
if (status)
{
err = svn_error_wrap_apr(status, _("Can't get address info"));