You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/02/02 14:04:59 UTC

svn commit: r1066452 [9/11] - in /subversion/branches/performance: ./ build/ build/ac-macros/ build/generator/ contrib/hook-scripts/ notes/ notes/api-errata/1.7/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subversion/include/ subvers...

Modified: subversion/branches/performance/subversion/svn/checkout-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/checkout-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/checkout-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/checkout-cmd.c Wed Feb  2 13:04:51 2011
@@ -93,9 +93,7 @@ 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));
-
           local_dir = svn_uri_basename(local_dir, pool);
-          local_dir = svn_path_uri_decode(local_dir, pool);
         }
       else
         {
@@ -145,9 +143,9 @@ svn_cl__checkout(apr_getopt_t *os,
         }
       else
         {
-          target_dir = svn_uri_basename(true_url, subpool);
-          target_dir = svn_path_uri_decode(target_dir, subpool);
-          target_dir = svn_dirent_join(local_dir, target_dir, subpool);
+          target_dir = svn_dirent_join(local_dir,
+                                       svn_uri_basename(true_url, subpool),
+                                       subpool);
         }
 
       /* Checkout doesn't accept an unspecified revision, so default to

Modified: subversion/branches/performance/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/cl.h?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/cl.h (original)
+++ subversion/branches/performance/subversion/svn/cl.h Wed Feb  2 13:04:51 2011
@@ -754,18 +754,6 @@ svn_cl__node_description(const svn_wc_co
                          const char *wc_repos_root_URL,
                          apr_pool_t *pool);
 
-/* Join a BASE path with a COMPONENT, allocating the result in POOL.
- * COMPONENT need not be a single single component: it can be any path,
- * absolute or relative to BASE.
- *
- * This function exists to gather the cases when it could not be determined
- * if BASE is an uri, dirent or relative.
- */
-const char *
-svn_cl__path_join(const char *base,
-                  const char *component,
-                  apr_pool_t *pool);
-
 /* Return, in @a *true_targets_p, a copy of @a targets with peg revision
  * specifiers snipped off the end of each element.
  *

Modified: subversion/branches/performance/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/diff-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/diff-cmd.c Wed Feb  2 13:04:51 2011
@@ -93,11 +93,18 @@ summarize_xml(const svn_client_diff_summ
 
   /* Tack on the target path, so we can differentiate between different parts
    * of the output when we're given multiple targets. */
-  path = svn_cl__path_join(path, summary->path, pool);
+  if (svn_path_is_url(path))
+    {
+      path = svn_path_url_add_component2(path, summary->path, pool);
+    }
+  else
+    {
+      path = svn_dirent_join(path, summary->path, pool);
 
-  /* Convert non-urls to local style, so that things like "" show up as "." */
-  if (! svn_path_is_url(path))
-    path = svn_dirent_local_style(path, pool);
+      /* Convert non-urls to local style, so that things like "" 
+         show up as "." */
+      path = svn_dirent_local_style(path, pool);
+    }
 
   svn_xml_make_open_tag(&sb, pool, svn_xml_protect_pcdata, "path",
                         "kind", svn_cl__node_kind_str_xml(summary->node_kind),
@@ -122,11 +129,18 @@ summarize_regular(const svn_client_diff_
 
   /* Tack on the target path, so we can differentiate between different parts
    * of the output when we're given multiple targets. */
-  path = svn_uri_join(path, summary->path, pool);
+  if (svn_path_is_url(path))
+    {
+      path = svn_path_url_add_component2(path, summary->path, pool);
+    }
+  else
+    {
+      path = svn_dirent_join(path, summary->path, pool);
 
-  /* Convert non-urls to local style, so that things like "" show up as "." */
-  if (! svn_path_is_url(path))
-    path = svn_dirent_local_style(path, pool);
+      /* Convert non-urls to local style, so that things like "" 
+         show up as "." */
+      path = svn_dirent_local_style(path, pool);
+    }
 
   /* Note: This output format tries to look like the output of 'svn status',
    *       thus the blank spaces where information that is not relevant to
@@ -311,8 +325,15 @@ svn_cl__diff(apr_getopt_t *os,
                                      _("Path '%s' not relative to base URLs"),
                                      path);
 
-          target1 = svn_cl__path_join(old_target, path, iterpool);
-          target2 = svn_cl__path_join(new_target, path, iterpool);
+          path = svn_relpath_canonicalize(path, iterpool);
+          if (svn_path_is_url(old_target))
+            target1 = svn_path_url_add_component2(old_target, path, iterpool);
+          else
+            target1 = svn_dirent_join(old_target, path, iterpool);
+          if (svn_path_is_url(old_target))
+            target2 = svn_path_url_add_component2(new_target, path, iterpool);
+          else
+            target2 = svn_dirent_join(new_target, path, iterpool);
 
           if (opt_state->summarize)
             SVN_ERR(svn_client_diff_summarize2

Modified: subversion/branches/performance/subversion/svn/export-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/export-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/export-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/export-cmd.c Wed Feb  2 13:04:51 2011
@@ -74,7 +74,10 @@ svn_cl__export(apr_getopt_t *os,
      the `to' path.  Else, a `to' path was supplied. */
   if (targets->nelts == 1)
     {
-      to = svn_path_uri_decode(svn_uri_basename(truefrom, pool), pool);
+      if (svn_path_is_url(truefrom))
+        to = svn_uri_basename(truefrom, pool);
+      else
+        to = svn_dirent_basename(truefrom, pool);
     }
   else
     {

Modified: subversion/branches/performance/subversion/svn/lock-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/lock-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/lock-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/lock-cmd.c Wed Feb  2 13:04:51 2011
@@ -74,7 +74,7 @@ get_comment(const char **comment, svn_cl
   /* Translate to UTF8/LF. */
   SVN_ERR(svn_subst_translate_string2(&comment_string, NULL, NULL,
                                       comment_string, opt_state->encoding,
-                                      pool, pool));
+                                      FALSE, pool, pool));
   *comment = comment_string->data;
 
   return SVN_NO_ERROR;

Modified: subversion/branches/performance/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/main.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/main.c (original)
+++ subversion/branches/performance/subversion/svn/main.c Wed Feb  2 13:04:51 2011
@@ -125,7 +125,6 @@ typedef enum svn_cl__longopt_t {
   opt_allow_mixed_revisions,
 } svn_cl__longopt_t;
 
-#define SVN_CL__OPTION_CONTINUATION_INDENT "                             "
 
 /* Option codes and descriptions for the command line client.
  *
@@ -144,23 +143,23 @@ const apr_getopt_option_t svn_cl__option
   {"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"
-                       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,
@@ -174,45 +173,45 @@ 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"
-                       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"
-                       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")},
@@ -224,7 +223,7 @@ const apr_getopt_option_t svn_cl__option
                     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")},
@@ -252,21 +251,21 @@ const apr_getopt_option_t svn_cl__option
                     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")},
@@ -283,42 +282,42 @@ const apr_getopt_option_t svn_cl__option
                     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"
-                       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"
-                       SVN_CL__OPTION_CONTINUATION_INDENT
+                       "                             "
                        "('merged', 'eligible')")},
   {"reintegrate",   opt_reintegrate, 0,
                     N_("merge a branch back into its parent branch")},
   {"strip",         opt_strip, 1,
                     N_("number of leading path components to strip from\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"
-                       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"
-                       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"
-                       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")},
@@ -335,9 +334,9 @@ const apr_getopt_option_t svn_cl__option
                        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.")},
 
   /* Long-opt Aliases
@@ -710,7 +709,6 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "    U  Updated\n"
      "    C  Conflict\n"
      "    G  Merged\n"
-     "    E  Existed\n"
      "    R  Replaced\n"
      "\n"
      "  Characters in the first column report about the item itself.\n"
@@ -974,9 +972,9 @@ 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"
-                     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_

Modified: subversion/branches/performance/subversion/svn/merge-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/merge-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/merge-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/merge-cmd.c Wed Feb  2 13:04:51 2011
@@ -238,24 +238,23 @@ svn_cl__merge(apr_getopt_t *os,
      sourcepaths. */
   if (sourcepath1 && sourcepath2 && strcmp(targetpath, "") == 0)
     {
-      /* If the sourcepath is a URL, it can only refer to a target in the
-         current working directory.
-         However, if the sourcepath is a local path, it can refer to a target
-         somewhere deeper in the directory structure. */
+      /* If the sourcepath is a URL, it can only refer to a target in
+         the current working directory.  However, if the sourcepath is
+         a local path, it can refer to a target somewhere deeper in
+         the directory structure. */
       if (svn_path_is_url(sourcepath1))
         {
-          const char *sp1_basename, *sp2_basename;
-          sp1_basename = svn_uri_basename(sourcepath1, pool);
-          sp2_basename = svn_uri_basename(sourcepath2, pool);
+          const char *sp1_basename = svn_uri_basename(sourcepath1, pool);
+          const char *sp2_basename = svn_uri_basename(sourcepath2, pool);
 
           if (strcmp(sp1_basename, sp2_basename) == 0)
             {
               svn_node_kind_t kind;
-              const char *decoded_path = svn_path_uri_decode(sp1_basename, pool);
-              SVN_ERR(svn_io_check_path(decoded_path, &kind, pool));
+
+              SVN_ERR(svn_io_check_path(sp1_basename, &kind, pool));
               if (kind == svn_node_file)
                 {
-                  targetpath = decoded_path;
+                  targetpath = sp1_basename;
                 }
             }
         }

Modified: subversion/branches/performance/subversion/svn/patch-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/patch-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/patch-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/patch-cmd.c Wed Feb  2 13:04:51 2011
@@ -62,6 +62,9 @@ svn_cl__patch(apr_getopt_t *os,
                                                       ctx, pool));
   SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
 
+  if (targets->nelts < 1)
+    return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
+
   if (targets->nelts > 2)
     return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0, NULL);
 

Modified: subversion/branches/performance/subversion/svn/propset-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/propset-cmd.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/propset-cmd.c (original)
+++ subversion/branches/performance/subversion/svn/propset-cmd.c Wed Feb  2 13:04:51 2011
@@ -86,8 +86,8 @@ svn_cl__propset(apr_getopt_t *os,
      and LF line endings.  All other propvals are taken literally. */
   if (svn_prop_needs_translation(pname_utf8))
     SVN_ERR(svn_subst_translate_string2(&propval, NULL, NULL, propval,
-                                        opt_state->encoding, scratch_pool,
-                                        scratch_pool));
+                                        opt_state->encoding, FALSE,
+                                        scratch_pool, scratch_pool));
   else if (opt_state->encoding)
     return svn_error_create
       (SVN_ERR_UNSUPPORTED_FEATURE, NULL,

Modified: subversion/branches/performance/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svn/util.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svn/util.c (original)
+++ subversion/branches/performance/subversion/svn/util.c Wed Feb  2 13:04:51 2011
@@ -485,8 +485,8 @@ svn_cl__edit_string_externally(svn_strin
       if (as_text)
         {
           err = svn_subst_translate_string2(edited_contents, FALSE, FALSE,
-                                            *edited_contents, encoding, pool,
-                                            pool);
+                                            *edited_contents, encoding, FALSE,
+                                            pool, pool);
           if (err)
             {
               err = svn_error_quick_wrap
@@ -713,7 +713,7 @@ svn_cl__get_log_message(const char **log
       log_msg_str->len = log_msg_buf->len;
       SVN_ERR_W(svn_subst_translate_string2(&log_msg_str, FALSE, FALSE,
                                             log_msg_str, lmb->message_encoding,
-                                            pool, pool),
+                                            FALSE, pool, pool),
                 _("Error normalizing log message to internal format"));
 
       *log_msg = log_msg_str->data;
@@ -1296,17 +1296,6 @@ svn_cl__node_description(const svn_wc_co
                       node->peg_rev);
 }
 
-const char *
-svn_cl__path_join(const char *base,
-                  const char *component,
-                  apr_pool_t *pool)
-{
-  if (svn_path_is_url(base))
-    return svn_uri_join(base, component, pool);
-  else
-    return svn_dirent_join(base, component, pool);
-}
-
 svn_error_t *
 svn_cl__eat_peg_revisions(apr_array_header_t **true_targets_p,
                           const apr_array_header_t *targets,

Modified: subversion/branches/performance/subversion/svnadmin/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnadmin/main.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnadmin/main.c (original)
+++ subversion/branches/performance/subversion/svnadmin/main.c Wed Feb  2 13:04:51 2011
@@ -1197,7 +1197,7 @@ set_revprop(const char *prop_name, const
   prop_value->len = file_contents->len;
 
   SVN_ERR(svn_subst_translate_string2(&prop_value, NULL, NULL, prop_value,
-                                      NULL, pool, pool));
+                                      NULL, FALSE, pool, pool));
 
   /* Open the filesystem  */
   SVN_ERR(open_repos(&repos, opt_state->repository_path, pool));

Modified: subversion/branches/performance/subversion/svnlook/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnlook/main.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnlook/main.c (original)
+++ subversion/branches/performance/subversion/svnlook/main.c Wed Feb  2 13:04:51 2011
@@ -52,6 +52,7 @@
 #include "svn_xml.h"
 
 #include "private/svn_cmdline_private.h"
+#include "private/svn_fspath.h"
 
 #include "svn_private_config.h"
 

Modified: subversion/branches/performance/subversion/svnrdump/dump_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/dump_editor.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/dump_editor.c (original)
+++ subversion/branches/performance/subversion/svnrdump/dump_editor.c Wed Feb  2 13:04:51 2011
@@ -30,6 +30,8 @@
 #include "svn_subst.h"
 #include "svn_dirent_uri.h"
 
+#include "private/svn_fspath.h"
+
 #include "dump_editor.h"
 
 #define ARE_VALID_COPY_ARGS(p,r) ((p) && SVN_IS_VALID_REVNUM(r))
@@ -132,19 +134,18 @@ make_dir_baton(const char *path,
   const char *abspath;
 
   /* Construct the full path of this node. */
+  /* ### FIXME: Not sure why we use an abspath here.  If I understand
+     ### correctly, the only place we used this path is in dump_node(),
+     ### which immediately converts it into a relpath.  -- cmpilato.  */
   if (pb)
-    {
-      if (path[0] != '/')
-        abspath = apr_pstrcat(pool, "/", path, (char *)NULL);
-    }
+    abspath = svn_fspath__canonicalize(path, pool);
   else
     abspath = "/";
 
   /* Strip leading slash from copyfrom_path so that the path is
      canonical and svn_relpath_join can be used */
   if (copyfrom_path)
-    copyfrom_path = ((*copyfrom_path == '/') ?
-                     copyfrom_path + 1 : copyfrom_path);
+    copyfrom_path = svn_relpath_canonicalize(copyfrom_path, pool);
 
   new_db->eb = eb;
   new_db->parent_dir_baton = pb;
@@ -252,11 +253,10 @@ dump_node(struct dump_edit_baton *eb,
 {
   /* Remove leading slashes from path and copyfrom_path */
   if (path)
-    path = ((*path == '/') ? path + 1 : path);
+    path = svn_relpath_canonicalize(path, pool);
 
   if (copyfrom_path)
-    copyfrom_path = ((*copyfrom_path == '/') ?
-                     copyfrom_path + 1 : copyfrom_path);
+    copyfrom_path = svn_relpath_canonicalize(copyfrom_path, pool);
 
   /* Node-path: commons/STATUS */
   SVN_ERR(svn_stream_printf(eb->stream, pool,
@@ -484,9 +484,9 @@ open_directory(const char *path,
      record the same for this one. */
   if (pb && ARE_VALID_COPY_ARGS(pb->copyfrom_path, pb->copyfrom_rev))
     {
-      copyfrom_path = svn_uri_join(pb->copyfrom_path,
-                                   svn_relpath_basename(path, NULL),
-                                   pb->eb->pool);
+      copyfrom_path = svn_relpath_join(pb->copyfrom_path,
+                                       svn_relpath_basename(path, NULL),
+                                       pb->eb->pool);
       copyfrom_rev = pb->copyfrom_rev;
     }
 

Modified: subversion/branches/performance/subversion/svnrdump/dump_editor.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/dump_editor.h?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/dump_editor.h (original)
+++ subversion/branches/performance/subversion/svnrdump/dump_editor.h Wed Feb  2 13:04:51 2011
@@ -44,10 +44,10 @@ struct dir_baton
   svn_boolean_t written_out;
 
   /* the absolute path to this directory */
-  const char *abspath;
+  const char *abspath; /* an fspath */
 
-  /* Copyfrom info for the node, if any */
-  const char *copyfrom_path;
+  /* Copyfrom info for the node, if any. */
+  const char *copyfrom_path; /* a relpath */
   svn_revnum_t copyfrom_rev;
 
   /* Hash of paths that need to be deleted, though some -might- be

Modified: subversion/branches/performance/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnrdump/load_editor.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnrdump/load_editor.c (original)
+++ subversion/branches/performance/subversion/svnrdump/load_editor.c Wed Feb  2 13:04:51 2011
@@ -106,9 +106,9 @@ get_lock(const svn_string_t **lock_strin
 
 static svn_error_t *
 new_revision_record(void **revision_baton,
-		    apr_hash_t *headers,
-		    void *parse_baton,
-		    apr_pool_t *pool)
+                    apr_hash_t *headers,
+                    void *parse_baton,
+                    apr_pool_t *pool)
 {
   struct revision_baton *rb;
   struct parse_baton *pb;
@@ -312,6 +312,15 @@ new_node_record(void **node_baton,
 
   switch (nb->action)
     {
+    case svn_node_action_delete:
+    case svn_node_action_replace:
+      LDR_DBG(("Deleting entry %s in %p\n", nb->path, rb->db->baton));
+      SVN_ERR(commit_editor->delete_entry(nb->path, rb->rev,
+                                          rb->db->baton, rb->pool));
+      if (nb->action == svn_node_action_delete)
+        break;
+      else
+        /* FALL THROUGH */;
     case svn_node_action_add:
       switch (nb->kind)
         {
@@ -354,14 +363,6 @@ new_node_record(void **node_baton,
           break;
         }
       break;
-    case svn_node_action_delete:
-      LDR_DBG(("Deleting entry %s in %p\n", nb->path, rb->db->baton));
-      SVN_ERR(commit_editor->delete_entry(nb->path, rb->rev,
-                                          rb->db->baton, rb->pool));
-      break;
-    case svn_node_action_replace:
-      /* Absent in dumpstream; represented as a delete + add */
-      break;
     }
 
   *node_baton = nb;

Modified: subversion/branches/performance/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/svnserve/serve.c?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/svnserve/serve.c (original)
+++ subversion/branches/performance/subversion/svnserve/serve.c Wed Feb  2 13:04:51 2011
@@ -52,6 +52,7 @@
 
 #include "private/svn_log.h"
 #include "private/svn_mergeinfo_private.h"
+#include "private/svn_fspath.h"
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>   /* For getpid() */
@@ -396,8 +397,8 @@ static svn_error_t *authz_check_access(s
      absolute path. Passing such a malformed path to the authz
      routines throws them into an infinite loop and makes them miss
      ACLs. */
-  if (path && *path != '/')
-    path = svn_uri_join("/", path, pool);
+  if (path)
+    path = svn_fspath__canonicalize(path, pool);
 
   /* If we have a username, and we've not yet used it + any username
      case normalization that might be requested to determine "the
@@ -764,7 +765,7 @@ static svn_error_t *set_path(svn_ra_svn_
                                  &depth_word));
   if (depth_word)
     depth = svn_depth_from_word(depth_word);
-  path = svn_uri_canonicalize(path, pool);
+  path = svn_relpath_canonicalize(path, pool);
   if (b->from_rev && strcmp(path, "") == 0)
     *b->from_rev = rev;
   if (!b->err)
@@ -783,7 +784,7 @@ static svn_error_t *delete_path(svn_ra_s
   const char *path;
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c", &path));
-  path = svn_uri_canonicalize(path, pool);
+  path = svn_relpath_canonicalize(path, pool);
   if (!b->err)
     b->err = svn_repos_delete_path(b->report_baton, path, pool);
   return SVN_NO_ERROR;
@@ -802,13 +803,17 @@ static svn_error_t *link_path(svn_ra_svn
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "ccrb?(?c)?w",
                                  &path, &url, &rev, &start_empty,
                                  &lock_token, &depth_word));
-  path = svn_uri_canonicalize(path, pool);
-  url = svn_path_uri_decode(svn_uri_canonicalize(url, pool), pool);
+
+  /* ### WHAT?!  The link path is an absolute URL?!  Didn't see that
+     coming...   -- cmpilato  */
+  path = svn_relpath_canonicalize(path, pool);
+  url = svn_uri_canonicalize(url, pool);
   if (depth_word)
     depth = svn_depth_from_word(depth_word);
   if (!b->err)
     b->err = get_fs_path(svn_path_uri_decode(b->repos_url, pool),
-                         url, &fs_path);
+                         svn_path_uri_decode(url, pool),
+                         &fs_path);
   if (!b->err)
     b->err = svn_repos_link_path3(b->report_baton, path, fs_path, rev,
                                   depth, start_empty, lock_token, pool);
@@ -994,10 +999,11 @@ static svn_error_t *reparent(svn_ra_svn_
   const char *fs_path;
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c", &url));
-  url = svn_path_uri_decode(svn_uri_canonicalize(url, pool), pool);
+  url = svn_uri_canonicalize(url, pool);
   SVN_ERR(trivial_auth_request(conn, pool, b));
   SVN_CMD_ERR(get_fs_path(svn_path_uri_decode(b->repos_url, pool),
-                          url, &fs_path));
+                          svn_path_uri_decode(url, pool),
+                          &fs_path));
   SVN_ERR(log_command(b, conn, pool, "%s", svn_log__reparent(fs_path, pool)));
   svn_stringbuf_set(b->fs_path, fs_path);
   SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
@@ -1209,9 +1215,9 @@ static svn_error_t *add_lock_tokens(svn_
                                 "Lock token isn't a string");
 
       path = path_item->u.string->data;
-      full_path = svn_uri_join(sb->fs_path->data,
-                               svn_uri_canonicalize(path, pool),
-                               pool);
+      full_path = svn_fspath__join(sb->fs_path->data,
+                                   svn_relpath_canonicalize(path, pool),
+                                   pool);
 
       if (! lookup_access(pool, sb, conn, svn_authz_write,
                           full_path, TRUE))
@@ -1251,9 +1257,9 @@ static svn_error_t *unlock_paths(const a
       path = path_item->u.string->data;
       token = token_item->u.string->data;
 
-      full_path = svn_uri_join(sb->fs_path->data,
-                               svn_uri_canonicalize(path, iterpool),
-                               iterpool);
+      full_path = svn_fspath__join(sb->fs_path->data,
+                                   svn_relpath_canonicalize(path, iterpool),
+                                   iterpool);
 
       /* The lock may have become defunct after the commit, so ignore such
          errors. */
@@ -1392,8 +1398,8 @@ static svn_error_t *get_file(svn_ra_svn_
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?r)bb", &path, &rev,
                                  &want_props, &want_contents));
 
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   /* Check authorizations */
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_read,
@@ -1509,8 +1515,8 @@ static svn_error_t *get_dir(svn_ra_svn_c
         }
     }
 
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   /* Check authorizations */
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_read,
@@ -1547,7 +1553,7 @@ static svn_error_t *get_dir(svn_ra_svn_c
 
           svn_pool_clear(subpool);
 
-          file_path = svn_uri_join(full_path, name, subpool);
+          file_path = svn_fspath__join(full_path, name, subpool);
 
           if (! lookup_access(subpool, b, conn, svn_authz_read,
                               file_path, FALSE))
@@ -1647,7 +1653,7 @@ static svn_error_t *update(svn_ra_svn_co
   /* Parse the arguments. */
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "(?r)cb?wB", &rev, &target,
                                  &recurse, &depth_word, &send_copyfrom_param));
-  target = svn_uri_canonicalize(target, pool);
+  target = svn_relpath_canonicalize(target, pool);
 
   if (depth_word)
     depth = svn_depth_from_word(depth_word);
@@ -1657,7 +1663,7 @@ static svn_error_t *update(svn_ra_svn_co
   send_copyfrom_args = (send_copyfrom_param == SVN_RA_SVN_UNSPECIFIED_NUMBER) ?
       FALSE : (svn_boolean_t) send_copyfrom_param;
 
-  full_path = svn_uri_join(b->fs_path->data, target, pool);
+  full_path = svn_fspath__join(b->fs_path->data, target, pool);
   /* Check authorization and authenticate the user if necessary. */
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_read, full_path, FALSE));
 
@@ -1698,7 +1704,7 @@ static svn_error_t *switch_cmd(svn_ra_sv
   /* Parse the arguments. */
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "(?r)cbc?w", &rev, &target,
                                  &recurse, &switch_url, &depth_word));
-  target = svn_uri_canonicalize(target, pool);
+  target = svn_relpath_canonicalize(target, pool);
   switch_url = svn_uri_canonicalize(switch_url, pool);
 
   if (depth_word)
@@ -1715,7 +1721,7 @@ static svn_error_t *switch_cmd(svn_ra_sv
                           &switch_path));
 
   {
-    const char *full_path = svn_uri_join(b->fs_path->data, target, pool);
+    const char *full_path = svn_fspath__join(b->fs_path->data, target, pool);
     SVN_ERR(log_command(b, conn, pool, "%s",
                         svn_log__switch(full_path, switch_path, rev,
                                         depth, pool)));
@@ -1742,7 +1748,7 @@ static svn_error_t *status(svn_ra_svn_co
   /* Parse the arguments. */
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "cb?(?r)?w",
                                  &target, &recurse, &rev, &depth_word));
-  target = svn_uri_canonicalize(target, pool);
+  target = svn_relpath_canonicalize(target, pool);
 
   if (depth_word)
     depth = svn_depth_from_word(depth_word);
@@ -1754,7 +1760,7 @@ static svn_error_t *status(svn_ra_svn_co
     SVN_CMD_ERR(svn_fs_youngest_rev(&rev, b->fs, pool));
 
   {
-    const char *full_path = svn_uri_join(b->fs_path->data, target, pool);
+    const char *full_path = svn_fspath__join(b->fs_path->data, target, pool);
     SVN_ERR(log_command(b, conn, pool, "%s",
                         svn_log__status(full_path, rev, depth, pool)));
   }
@@ -1791,7 +1797,7 @@ static svn_error_t *diff(svn_ra_svn_conn
                                      &ignore_ancestry, &versus_url,
                                      &text_deltas, &depth_word));
     }
-  target = svn_uri_canonicalize(target, pool);
+  target = svn_relpath_canonicalize(target, pool);
   versus_url = svn_uri_canonicalize(versus_url, pool);
 
   if (depth_word)
@@ -1808,7 +1814,7 @@ static svn_error_t *diff(svn_ra_svn_conn
                           &versus_path));
 
   {
-    const char *full_path = svn_uri_join(b->fs_path->data, target, pool);
+    const char *full_path = svn_fspath__join(b->fs_path->data, target, pool);
     svn_revnum_t from_rev;
     SVN_ERR(accept_report(NULL, &from_rev,
                           conn, pool, b, rev, target, versus_path,
@@ -1858,10 +1864,8 @@ static svn_error_t *get_mergeinfo(svn_ra
         if (item->kind != SVN_RA_SVN_STRING)
           return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
                                   _("Path is not a string"));
-        full_path = svn_uri_join(b->fs_path->data,
-                                 svn_uri_canonicalize(item->u.string->data,
-                                                      pool),
-                                 pool);
+        full_path = svn_relpath_canonicalize(item->u.string->data, pool);
+        full_path = svn_fspath__join(b->fs_path->data, full_path, pool);
         APR_ARRAY_PUSH(canonical_paths, const char *) = full_path;
      }
 
@@ -2004,18 +2008,17 @@ static svn_error_t *log_cmd(svn_ra_svn_c
     revprops = NULL;
   else if (strcmp(revprop_word, "revprops") == 0)
     {
+      SVN_ERR_ASSERT(revprop_items);
+
       revprops = apr_array_make(pool, revprop_items->nelts,
                                 sizeof(char *));
-      if (revprop_items)
+      for (i = 0; i < revprop_items->nelts; i++)
         {
-          for (i = 0; i < revprop_items->nelts; i++)
-            {
-              elt = &APR_ARRAY_IDX(revprop_items, i, svn_ra_svn_item_t);
-              if (elt->kind != SVN_RA_SVN_STRING)
-                return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
-                                        _("Log revprop entry not a string"));
-              APR_ARRAY_PUSH(revprops, const char *) = elt->u.string->data;
-            }
+          elt = &APR_ARRAY_IDX(revprop_items, i, svn_ra_svn_item_t);
+          if (elt->kind != SVN_RA_SVN_STRING)
+            return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
+                                    _("Log revprop entry not a string"));
+          APR_ARRAY_PUSH(revprops, const char *) = elt->u.string->data;
         }
     }
   else
@@ -2037,10 +2040,8 @@ static svn_error_t *log_cmd(svn_ra_svn_c
       if (elt->kind != SVN_RA_SVN_STRING)
         return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
                                 _("Log path entry not a string"));
-      full_path = svn_uri_join(b->fs_path->data,
-                               svn_uri_canonicalize(elt->u.string->data,
-                                                    pool),
-                               pool);
+      full_path = svn_relpath_canonicalize(elt->u.string->data, pool),
+      full_path = svn_fspath__join(b->fs_path->data, full_path, pool);
       APR_ARRAY_PUSH(full_paths, const char *) = full_path;
     }
   SVN_ERR(trivial_auth_request(conn, pool, b));
@@ -2082,8 +2083,8 @@ static svn_error_t *check_path(svn_ra_sv
   svn_node_kind_t kind;
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?r)", &path, &rev));
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   /* Check authorizations */
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_read,
@@ -2112,8 +2113,8 @@ static svn_error_t *stat_cmd(svn_ra_svn_
   svn_dirent_t *dirent;
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?r)", &path, &rev));
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   /* Check authorizations */
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_read,
@@ -2167,9 +2168,9 @@ static svn_error_t *get_locations(svn_ra
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "crl", &relative_path,
                                  &peg_revision,
                                  &loc_revs_proto));
-  relative_path = svn_uri_canonicalize(relative_path, pool);
+  relative_path = svn_relpath_canonicalize(relative_path, pool);
 
-  abs_path = svn_uri_join(b->fs_path->data, relative_path, pool);
+  abs_path = svn_fspath__join(b->fs_path->data, relative_path, pool);
 
   location_revisions = apr_array_make(pool, loc_revs_proto->nelts,
                                       sizeof(svn_revnum_t));
@@ -2256,9 +2257,9 @@ static svn_error_t *get_location_segment
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?r)(?r)(?r)",
                                  &relative_path, &peg_revision,
                                  &start_rev, &end_rev));
-  relative_path = svn_uri_canonicalize(relative_path, pool);
+  relative_path = svn_relpath_canonicalize(relative_path, pool);
 
-  abs_path = svn_uri_join(b->fs_path->data, relative_path, pool);
+  abs_path = svn_fspath__join(b->fs_path->data, relative_path, pool);
 
   if (SVN_IS_VALID_REVNUM(start_rev)
       && SVN_IS_VALID_REVNUM(end_rev)
@@ -2394,9 +2395,9 @@ static svn_error_t *get_file_revs(svn_ra
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?r)(?r)?B",
                                  &path, &start_rev, &end_rev,
                                  &include_merged_revs_param));
-  path = svn_uri_canonicalize(path, pool);
+  path = svn_relpath_canonicalize(path, pool);
   SVN_ERR(trivial_auth_request(conn, pool, b));
-  full_path = svn_uri_join(b->fs_path->data, path, pool);
+  full_path = svn_fspath__join(b->fs_path->data, path, pool);
 
   if (include_merged_revs_param == SVN_RA_SVN_UNSPECIFIED_NUMBER)
     include_merged_revisions = FALSE;
@@ -2440,8 +2441,8 @@ static svn_error_t *lock(svn_ra_svn_conn
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?c)b(?r)", &path, &comment,
                                  &steal_lock, &current_rev));
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_write,
                            full_path, TRUE));
@@ -2504,9 +2505,9 @@ static svn_error_t *lock_many(svn_ra_svn
 
       /* Allocate the full_path out of pool so it will survive for use
        * by operational logging, after this loop. */
-      full_path = svn_uri_join(b->fs_path->data,
-                               svn_uri_canonicalize(path, subpool),
-                               pool);
+      full_path = svn_fspath__join(b->fs_path->data,
+                                   svn_relpath_canonicalize(path, subpool),
+                                   pool);
       APR_ARRAY_PUSH(log_paths, const char *) = full_path;
 
       if (! lookup_access(pool, b, conn, svn_authz_write, full_path, TRUE))
@@ -2568,8 +2569,8 @@ static svn_error_t *unlock(svn_ra_svn_co
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c(?c)b", &path, &token,
                                  &break_lock));
 
-  full_path = svn_uri_join(b->fs_path->data, svn_uri_canonicalize(path, pool),
-                           pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   /* Username required unless break_lock was specified. */
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_write,
@@ -2625,9 +2626,9 @@ static svn_error_t *unlock_many(svn_ra_s
 
       /* Allocate the full_path out of pool so it will survive for use
        * by operational logging, after this loop. */
-      full_path = svn_uri_join(b->fs_path->data,
-                               svn_uri_canonicalize(path, subpool),
-                               pool);
+      full_path = svn_fspath__join(b->fs_path->data,
+                                   svn_relpath_canonicalize(path, subpool),
+                                   pool);
       APR_ARRAY_PUSH(log_paths, const char *) = full_path;
 
       if (! lookup_access(subpool, b, conn, svn_authz_write, full_path,
@@ -2682,9 +2683,8 @@ static svn_error_t *get_lock(svn_ra_svn_
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "c", &path));
 
-  full_path = svn_uri_join(b->fs_path->data, svn_uri_canonicalize(path,
-                                                                  pool),
-                           pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   SVN_ERR(must_have_access(conn, pool, b, svn_authz_read,
                            full_path, FALSE));
@@ -2726,8 +2726,8 @@ static svn_error_t *get_locks(svn_ra_svn
       return log_fail_and_flush(err, b, conn, pool);
     }
 
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
 
   SVN_ERR(trivial_auth_request(conn, pool, b));
 
@@ -2854,8 +2854,8 @@ get_deleted_rev(svn_ra_svn_conn_t *conn,
 
   SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "crr",
                                  &path, &peg_revision, &end_revision));
-  full_path = svn_uri_join(b->fs_path->data,
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_fspath__join(b->fs_path->data,
+                               svn_relpath_canonicalize(path, pool), pool);
   SVN_ERR(log_command(b, conn, pool, "get-deleted-rev"));
   SVN_ERR(trivial_auth_request(conn, pool, b));
   SVN_ERR(svn_repos_deleted_rev(b->fs, full_path, peg_revision, end_revision,
@@ -2970,23 +2970,21 @@ static svn_error_t *find_repos(const cha
   if (path == NULL)
     return svn_error_createf(SVN_ERR_BAD_URL, NULL,
                              "Non-svn URL passed to svn server: '%s'", url);
-  path = strchr(path, '/');
-  path = (path == NULL) ? "" : path + 1;
 
-  /* Decode URI escapes from the path. */
+
+  path = strchr(path, '/');
+  path = (path == NULL) ? "" : svn_relpath_canonicalize(path, pool);
   path = svn_path_uri_decode(path, pool);
 
-  /* Ensure that it isn't possible to escape the root by skipping leading
-     slashes and not allowing '..' segments. */
-  while (*path == '/')
-    ++path;
+  /* Ensure that it isn't possible to escape the root by disallowing
+     '..' segments. */
   if (!repos_path_valid(path))
     return svn_error_create(SVN_ERR_BAD_FILENAME, NULL,
                             "Couldn't determine repository path");
 
   /* Join the server-configured root with the client path. */
-  full_path = svn_uri_join(svn_uri_canonicalize(root, pool),
-                           svn_uri_canonicalize(path, pool), pool);
+  full_path = svn_dirent_join(svn_dirent_canonicalize(root, pool),
+                              path, pool);
 
   /* Search for a repository in the full path. */
   repos_root = svn_repos_find_root_path(full_path, pool);
@@ -3004,9 +3002,9 @@ static svn_error_t *find_repos(const cha
   svn_path_remove_components(url_buf,
                              svn_path_component_count(b->fs_path->data));
   b->repos_url = url_buf->data;
-  b->authz_repos_name = svn_uri_is_child(root, repos_root, pool);
+  b->authz_repos_name = svn_dirent_is_child(root, repos_root, pool);
   if (b->authz_repos_name == NULL)
-    b->repos_name = svn_uri_basename(repos_root, pool);
+    b->repos_name = svn_dirent_basename(repos_root, pool);
   else
     b->repos_name = b->authz_repos_name;
   b->repos_name = svn_path_uri_encode(b->repos_name, pool);

Modified: subversion/branches/performance/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/authz_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/authz_tests.py Wed Feb  2 13:04:51 2011
@@ -160,7 +160,7 @@ def authz_read_access(sbox):
   if sbox.repo_url.startswith("http"):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   # create some folders with spaces in their names
   svntest.actions.run_and_verify_svn(None, None, [],
@@ -284,7 +284,7 @@ def authz_write_access(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Access denied.*"
+    expected_err = ".*svn: E220004: Access denied.*"
 
   write_authz_file(sbox, { "/": "* = r",
                            "/A/B": "* = rw",
@@ -379,7 +379,7 @@ def authz_checkout_test(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   write_authz_file(sbox, { "/": "* ="})
 
@@ -513,7 +513,7 @@ def authz_log_and_tracing_test(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   write_authz_file(sbox, { "/": "* = rw\n" })
 
@@ -544,7 +544,7 @@ def authz_log_and_tracing_test(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   authz = { "/": "* = rw",
             "/A/D/G": "* ="}
@@ -563,7 +563,7 @@ def authz_log_and_tracing_test(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err2 = expected_err
   else:
-    expected_err2 = ".*svn: Item is not readable.*"
+    expected_err2 = ".*svn: E220001: Item is not readable.*"
 
   # if we do the same thing directly on the unreadable file, we get:
   # svn: Item is not readable
@@ -602,7 +602,7 @@ def authz_log_and_tracing_test(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err2 = expected_err
   else:
-    expected_err2 = ".*svn: Unreadable path encountered; access denied.*"
+    expected_err2 = ".*svn: E220001: Unreadable path encountered; access denied.*"
 
   svntest.actions.run_and_verify_svn(None, None, expected_err2,
                                      'cat', '-r', '2', G_url+'/rho')
@@ -630,7 +630,7 @@ def authz_aliases(sbox):
   if sbox.repo_url.startswith("http"):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   write_authz_file(sbox, { "/" : "* = r",
                            "/A/B" : "&jray = rw" },
@@ -733,7 +733,7 @@ def authz_locking(sbox):
   if sbox.repo_url.startswith('http'):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   root_url = sbox.repo_url
   wc_dir = sbox.wc_dir
@@ -950,7 +950,7 @@ def multiple_matches(sbox):
   if sbox.repo_url.startswith("http"):
     expected_err = ".*[Ff]orbidden.*"
   else:
-    expected_err = ".*svn: Authorization failed.*"
+    expected_err = ".*svn: E170001: Authorization failed.*"
 
   # Prohibit access and commit fails
   write_authz_file(sbox, {'/': 'jrandom ='})
@@ -1000,7 +1000,7 @@ def wc_wc_copy(sbox):
   svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
 
   svntest.actions.run_and_verify_svn(None, None,
-                                     'svn: Cannot copy.*excluded by server',
+                                     'svn: E220001: Cannot copy.*excluded by server',
                                      'cp', sbox.ospath('A'), sbox.ospath('A2'))
 
 

Modified: subversion/branches/performance/subversion/tests/cmdline/autoprop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/autoprop_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/autoprop_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/autoprop_tests.py Wed Feb  2 13:04:51 2011
@@ -307,9 +307,9 @@ def fail_add_mixed_eol_style(sbox):
 
   svntest.main.file_write(filepath, 'foo\nbar\r\nbaz\r')
 
-  expected_stderr = "svn: File '.*/" + filename + \
+  expected_stderr = "svn: E200009: File '.*" + filename + \
                     "' has inconsistent newlines" + \
-                    "|" + "svn: Inconsistent line ending style\n"
+                    "|" + "svn: E135000: Inconsistent line ending style\n"
   run_and_verify_svn(None, [], expected_stderr,
                      'add', filepath, *parameters)
 

Modified: subversion/branches/performance/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/basic_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/basic_tests.py Wed Feb  2 13:04:51 2011
@@ -397,7 +397,8 @@ def basic_corruption(sbox):
 
   # This commit should fail due to text base corruption.
   svntest.actions.run_and_verify_commit(wc_dir, expected_output,
-                                        expected_status, "svn: Checksum",
+                                        expected_status,
+                                        "svn: E155017: Checksum",
                                         wc_dir)
 
   # Restore the uncorrupted text base.
@@ -446,7 +447,7 @@ def basic_corruption(sbox):
                                         expected_output,
                                         expected_disk,
                                         expected_status,
-                                        "svn: Checksum", other_wc)
+                                        "svn: E155017: Checksum", other_wc)
 
   # Restore the uncorrupted text base.
   os.chmod(tb_dir_path, 0777)
@@ -2484,7 +2485,7 @@ def basic_mkdir_mix_targets(sbox):
 
   sbox.build()
   Y_url = sbox.repo_url + '/Y'
-  expected_error = "svn: Cannot mix repository and working copy targets"
+  expected_error = "svn: E200009: Cannot mix repository and working copy targets"
 
   svntest.actions.run_and_verify_svn(None, None, expected_error,
                                      'mkdir', '-m', 'log_msg', Y_url, 'subdir')

Modified: subversion/branches/performance/subversion/tests/cmdline/cat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/cat_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/cat_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/cat_tests.py Wed Feb  2 13:04:51 2011
@@ -113,12 +113,12 @@ def cat_skip_uncattable(sbox):
       continue
     item_to_cat = os.path.join(dir_path, file)
     if item_to_cat == new_file_path:
-      expected_err = ["svn: warning: '" + os.path.abspath(item_to_cat) + "'" + \
+      expected_err = ["svn: warning: W200005: '" + os.path.abspath(item_to_cat) + "'" + \
                      " is not under version control\n"]
       svntest.actions.run_and_verify_svn2(None, None, expected_err, 0,
                                           'cat', item_to_cat)
     elif os.path.isdir(item_to_cat):
-      expected_err = ["svn: warning: '" + os.path.abspath(item_to_cat) + "'" + \
+      expected_err = ["svn: warning: W195007: '" + os.path.abspath(item_to_cat) + "'" + \
                      " refers to a directory\n"]
       svntest.actions.run_and_verify_svn2(None, None, expected_err, 0,
                                           'cat', item_to_cat)
@@ -131,12 +131,12 @@ def cat_skip_uncattable(sbox):
   rho_path = os.path.join(G_path, 'rho')
 
   expected_out = ["This is the file 'rho'.\n"]
-  expected_err1 = ["svn: warning: '" + os.path.abspath(G_path) + "'"
+  expected_err1 = ["svn: warning: W195007: '" + os.path.abspath(G_path) + "'"
                    + " refers to a directory\n"]
   svntest.actions.run_and_verify_svn2(None, expected_out, expected_err1, 0,
                                       'cat', rho_path, G_path)
 
-  expected_err2 = ["svn: warning: '" + os.path.abspath(new_file_path) + "'"
+  expected_err2 = ["svn: warning: W200005: '" + os.path.abspath(new_file_path) + "'"
                    + " is not under version control\n"]
   svntest.actions.run_and_verify_svn2(None, expected_out, expected_err2, 0,
                                       'cat', rho_path, new_file_path)
@@ -162,7 +162,7 @@ def cat_unversioned_file(sbox):
                                       iota_path)
 
   # Now try to cat the deleted file, it should be reported as unversioned.
-  expected_error = ["svn: warning: '" + os.path.abspath(iota_path) + "'"
+  expected_error = ["svn: warning: W200005: '" + os.path.abspath(iota_path) + "'"
                     + " is not under version control\n"]
   svntest.actions.run_and_verify_svn2(None, [], expected_error, 0,
                                       'cat', iota_path)
@@ -204,7 +204,7 @@ def cat_url_special_characters(sbox):
   special_urls = [sbox.repo_url + '/A' + '/%2E',
                   sbox.repo_url + '%2F' + 'A']
 
-  expected_err = ["svn: warning: URL '" + sbox.repo_url + '/A'  + "'"
+  expected_err = ["svn: warning: W195007: URL '" + sbox.repo_url + '/A'  + "'"
                    + " refers to a directory\n"]
 
   for url in special_urls:

Modified: subversion/branches/performance/subversion/tests/cmdline/changelist_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/changelist_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/changelist_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/changelist_tests.py Wed Feb  2 13:04:51 2011
@@ -871,7 +871,7 @@ def tree_conflicts_and_changelists_on_co
   # item.
   svntest.main.run_svn(None, "changelist", "list", iota, rho)
 
-  expected_error = ("svn: Aborting commit: '.*" + re.escape(rho)
+  expected_error = ("svn: E155015: Aborting commit: '.*" + re.escape(rho)
                     + "' remains in .*conflict")
 
   svntest.actions.run_and_verify_commit(wc_dir,
@@ -960,7 +960,7 @@ def tree_conflicts_and_changelists_on_co
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Verify that the current situation does not commit.
-  expected_error = "svn: Aborting commit:.* remains in .*conflict";
+  expected_error = "svn: E155015: Aborting commit:.* remains in .*conflict";
 
   svntest.actions.run_and_verify_commit(wc_dir,
                                         None, None,
@@ -1043,7 +1043,7 @@ def tree_conflicts_and_changelists_on_co
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Verify that the current situation does not commit.
-  expected_error = "svn: Aborting commit:.* remains in .*conflict";
+  expected_error = "svn: E155015: Aborting commit:.* remains in .*conflict";
 
   svntest.actions.run_and_verify_commit(wc_dir,
                                         None, None,

Modified: subversion/branches/performance/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/commit_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/commit_tests.py Wed Feb  2 13:04:51 2011
@@ -1273,7 +1273,8 @@ def commit_with_lock(sbox):
   svntest.actions.run_and_verify_commit(wc_dir,
                                         None,
                                         None,
-                                        'svn: Working copy \'.*\' locked',
+                                        'svn: E155004: '
+                                        'Working copy \'.*\' locked',
                                         wc_dir)
 
   # unlock directory
@@ -2445,7 +2446,8 @@ def set_invalid_revprops(sbox):
 
   # Empty revprop pair.
   svntest.actions.run_and_verify_svn(None, [],
-                                     'svn: Revision property pair is empty',
+                                     'svn: E205000: '
+                                     'Revision property pair is empty',
                                      'mkdir', '-m', 'msg',
                                      '--with-revprop', '',
                                      remote_dir)
@@ -2482,7 +2484,7 @@ def start_commit_hook_test(sbox):
   # contain source code file and line numbers.
   if len(actual_stderr) > 2:
     actual_stderr = actual_stderr[-2:]
-  expected_stderr = [ "svn: " +
+  expected_stderr = [ "svn: E165001: " +
                         svntest.actions.hook_failure_message('start-commit'),
                       error_msg + "\n",
                     ]
@@ -2522,7 +2524,7 @@ def pre_commit_hook_test(sbox):
   # contain source code file and line numbers.
   if len(actual_stderr) > 2:
     actual_stderr = actual_stderr[-2:]
-  expected_stderr = [ "svn: " +
+  expected_stderr = [ "svn: E165001: " +
                         svntest.actions.hook_failure_message('pre-commit'),
                       error_msg + "\n",
                     ]
@@ -2676,7 +2678,7 @@ def commit_url(sbox):
   url = sbox.repo_url
 
   # Commit directly to a URL
-  expected_error = ("svn: '" + url +
+  expected_error = ("svn: E205000: '" + url +
                     "' is a URL, but URLs cannot be commit targets")
   svntest.actions.run_and_verify_commit(None,
                                         None,

Modified: subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/performance/subversion/tests/cmdline/davautocheck.sh Wed Feb  2 13:04:51 2011
@@ -190,7 +190,7 @@ $LDD "$CLIENT_CMD" | grep -q 'not found'
   || fail "Subversion client couldn't find and/or load ra_dav library"
 
 httpd="$($APXS -q PROGNAME)"
-HTTPD=$(get_prog_name $httpd) || fail "HTTPD not found"
+HTTPD=$(get_prog_name $httpd) || fail "HTTPD '$HTTPD' not found"
 [ -x $HTTPD ] || fail "HTTPD '$HTTPD' not executable"
 
 "$HTTPD" -v 1>/dev/null 2>&1 \

Modified: subversion/branches/performance/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/depth_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/depth_tests.py Wed Feb  2 13:04:51 2011
@@ -2334,7 +2334,7 @@ def exclude_keeps_hidden_entries(sbox):
   svntest.main.run_svn(None, 'up', '--set-depth', 'exclude', 'D')
   # we could grep the 'entries' file, but...
   # or we could use 'info', but info_excluded() is XFail.
-  expected_stderr = ".*svn: '.*C' is already under version control.*"
+  expected_stderr = ".*svn: E150002: '.*C' is already under version control.*"
   svntest.actions.run_and_verify_svn(None, None, expected_stderr,
                                      'mkdir', 'C')
 

Modified: subversion/branches/performance/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/diff_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/diff_tests.py Wed Feb  2 13:04:51 2011
@@ -1235,7 +1235,7 @@ def diff_targets(sbox):
                                                             update_path,
                                                             add_path)
 
-  regex = 'svn: Unable to find repository location for \'.*\''
+  regex = 'svn: E195012: Unable to find repository location for \'.*\''
   for line in err_output:
     if re.match(regex, line):
       break
@@ -1254,7 +1254,7 @@ def diff_targets(sbox):
   exit_code, diff_output, err_output = svntest.main.run_svn(
     1, 'diff', '-r1:2', '--old', parent_path, 'alpha', 'theta')
 
-  regex = 'svn: \'.*\' was not found in the repository'
+  regex = 'svn: E160013: \'.*\' was not found in the repository'
   for line in err_output:
     if re.match(regex, line):
       break
@@ -3240,7 +3240,7 @@ def diff_wrong_extension_type(sbox):
   "'svn diff -x wc -r#' should return error"
 
   sbox.build(read_only = True)
-  expected_error = "(.*svn: Invalid argument .* in diff options.*)|" \
+  expected_error = "(.*svn: E200016: Invalid argument .* in diff options.*)|" \
                    "(svn: '.' is not a working copy)"
   svntest.actions.run_and_verify_svn(None, [], expected_error,
                                      'diff', '-x', sbox.wc_dir, '-r', '1')

Modified: subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py Wed Feb  2 13:04:51 2011
@@ -87,14 +87,14 @@ def invalid_wcpath_commit(sbox):
   "non-working copy paths for 'commit'"
   sbox.build(read_only=True)
   for target in _invalid_wc_path_targets:
-    run_and_verify_svn_in_wc(sbox, "svn: '.*' is a URL, but URLs cannot be " +
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: '.*' is a URL, but URLs cannot be " +
                              "commit targets", 'commit', target)
 
 def invalid_copy_sources(sbox):
   "invalid sources for 'copy'"
   sbox.build(read_only=True)
   for (src1, src2) in [("iota", "^/"), ("^/", "iota"), ("file://", "iota")]:
-    run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working " +
+    run_and_verify_svn_in_wc(sbox, "svn: E200007: Cannot mix repository and working " +
                              "copy sources", 'copy', src1, src2, "A")
 
 def invalid_copy_target(sbox):
@@ -102,30 +102,30 @@ def invalid_copy_target(sbox):
   sbox.build(read_only=True)
   mu_path = os.path.join('A', 'mu')
   C_path = os.path.join('A', 'C')
-  run_and_verify_svn_in_wc(sbox, "svn: Path '.*' is not a directory",
+  run_and_verify_svn_in_wc(sbox, "svn: E155007: Path '.*' is not a directory",
                            'copy', mu_path, C_path, "iota")
 
 def invalid_delete_targets(sbox):
   "invalid targets for 'delete'"
   sbox.build(read_only=True)
   for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
-    run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working "
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
                              "copy targets", 'delete', target1, target2)
 
 def invalid_diff_targets(sbox):
   "invalid targets for 'diff'"
   sbox.build(read_only=True)
   for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
-    run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working "
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
                              "copy targets", 'diff', target1, target2)
-  run_and_verify_svn_in_wc(sbox, "svn: Summarizing diff can only compare "
+  run_and_verify_svn_in_wc(sbox, "svn: E200007: Summarizing diff can only compare "
                            "repository to repository",
                            'diff', '--summarize', "iota", "A")
 
 def invalid_export_targets(sbox):
   "invalid targets for 'export'"
   sbox.build(read_only=True)
-  run_and_verify_svn_in_wc(sbox, "svn: Can't create directory 'iota':.*",
+  run_and_verify_svn_in_wc(sbox, "svn: (E000017|E720183): Can't create directory 'iota':.*",
                            'export', '.', 'iota')
   for target in ["^/", "file://"]:
     run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path",
@@ -138,32 +138,32 @@ def invalid_import_args(sbox):
                            'import', '^/', '^/')
   run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path",
                            'import', '^/', 'iota')
-  run_and_verify_svn_in_wc(sbox, "svn: Invalid URL 'iota'",
+  run_and_verify_svn_in_wc(sbox, "svn: E205000: Invalid URL 'iota'",
                            'import', 'iota', 'iota')
 
 def invalid_log_targets(sbox):
   "invalid targets for 'log'"
   sbox.build(read_only=True)
   for (target1, target2) in [('^/', '/a/b/c'), ('^/', '^/'), ('^/', 'file://')]:
-    run_and_verify_svn_in_wc(sbox, "svn: Only relative paths can be " +
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: Only relative paths can be " +
                              "specified after a URL for 'svn log', but.*is " +
                              "not a relative path", 'log', target1, target2)
 
 def invalid_merge_args(sbox):
   "invalid arguments for 'merge'"
   sbox.build(read_only=True)
-  run_and_verify_svn_in_wc(sbox, "svn: A working copy merge source needs "
+  run_and_verify_svn_in_wc(sbox, "svn: E195002: A working copy merge source needs "
                            "an explicit revision", 'merge', 'iota', '^/')
   for (src, target) in [('iota@HEAD', '^/'), ('iota@BASE', 'file://')]:
-    run_and_verify_svn_in_wc(sbox, "svn: Merge sources must both be either "
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: Merge sources must both be either "
                              "paths or URLs", 'merge', src, target)
-  run_and_verify_svn_in_wc(sbox, "svn: Path '.*' does not exist",
+  run_and_verify_svn_in_wc(sbox, "svn: E155010: Path '.*' does not exist",
                            'merge', 'iota@BASE', 'iota@HEAD', 'nonexistent')
-  run_and_verify_svn_in_wc(sbox, "svn: Too many arguments given",
+  run_and_verify_svn_in_wc(sbox, "svn: E205000: Too many arguments given",
                           'merge', '-c42', '^/A/B', '^/A/C', 'iota')
-  run_and_verify_svn_in_wc(sbox, "svn: Cannot specify a revision range with" +
+  run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot specify a revision range with" +
                            " two URLs", 'merge', '-c42', '^/mu', '^/')
-  run_and_verify_svn_in_wc(sbox, "svn: Path '.*' does not exist",
+  run_and_verify_svn_in_wc(sbox, "svn: E155010: Path '.*' does not exist",
                            'merge', '-c42', '^/mu', 'nonexistent')
 
 def invalid_wcpath_upgrade(sbox):
@@ -198,14 +198,14 @@ def invalid_lock_targets(sbox):
   "wc paths and repo URL target mixture for 'lock'"
   sbox.build(read_only=True)
   for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
-    run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working "
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
                              "copy targets", 'lock', target1, target2)
 
 def invalid_unlock_targets(sbox):
   "wc paths and repo URL target mixture for 'unlock'"
   sbox.build(read_only=True)
   for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
-    run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working "
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
                              "copy targets", 'unlock', target1, target2)
 
 def invalid_status_targets(sbox):
@@ -239,7 +239,7 @@ def invalid_relocate_targets(sbox):
 def invalid_mkdir_targets(sbox):
   "invalid targets for 'mkdir'"
   sbox.build(read_only=True)
-  run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working "
+  run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
                            "copy targets", 'mkdir', "folder", "^/folder")
 
 def invalid_update_targets(sbox):

Modified: subversion/branches/performance/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/lock_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/lock_tests.py Wed Feb  2 13:04:51 2011
@@ -359,7 +359,7 @@ def enforce_lock(sbox):
   # svn:needs-lock value should be forced to a '*'
   svntest.actions.set_prop('svn:needs-lock', 'foo', iota_path)
   svntest.actions.set_prop('svn:needs-lock', '*', lambda_path)
-  expected_err = ".*svn: warning: To turn off the svn:needs-lock property,.*"
+  expected_err = ".*svn: warning: W125005: To turn off the svn:needs-lock property,.*"
   svntest.actions.set_prop('svn:needs-lock', '      ', mu_path, expected_err)
 
   # Check svn:needs-lock
@@ -967,11 +967,11 @@ def lock_and_exebit1(sbox):
 
   gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
 
-  expected_err = ".*svn: warning: To turn off the svn:needs-lock property,.*"
+  expected_err = ".*svn: warning: W125005: To turn off the svn:needs-lock property,.*"
   svntest.actions.run_and_verify_svn2(None, None, expected_err, 0,
                                       'ps', 'svn:needs-lock', ' ', gamma_path)
 
-  expected_err = ".*svn: warning: To turn off the svn:executable property,.*"
+  expected_err = ".*svn: warning: W125005: To turn off the svn:executable property,.*"
   svntest.actions.run_and_verify_svn2(None, None, expected_err, 0,
                                       'ps', 'svn:executable', ' ', gamma_path)
 
@@ -1043,11 +1043,11 @@ def lock_and_exebit2(sbox):
 
   gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
 
-  expected_err = ".*svn: warning: To turn off the svn:needs-lock property,.*"
+  expected_err = ".*svn: warning: W125005: To turn off the svn:needs-lock property,.*"
   svntest.actions.run_and_verify_svn2(None, None, expected_err, 0,
                                       'ps', 'svn:needs-lock', ' ', gamma_path)
 
-  expected_err = ".*svn: warning: To turn off the svn:executable property,.*"
+  expected_err = ".*svn: warning: W125005: To turn off the svn:executable property,.*"
   svntest.actions.run_and_verify_svn2(None, None, expected_err, 0,
                                      'ps', 'svn:executable', ' ', gamma_path)
 
@@ -1390,7 +1390,7 @@ def unlocked_lock_of_other_user(sbox):
   if sbox.repo_url.startswith("http"):
     expected_err = ".*403 Forbidden.*"
   else:
-    expected_err = "svn: warning: User '%s' is trying to use a lock owned by "\
+    expected_err = "svn: warning: W160039: User '%s' is trying to use a lock owned by "\
                    "'%s'.*" % (svntest.main.wc_author2, svntest.main.wc_author)
   svntest.actions.run_and_verify_svn2(None, [], expected_err, 0,
                                       'unlock',

Modified: subversion/branches/performance/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1066452&r1=1066451&r2=1066452&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/branches/performance/subversion/tests/cmdline/merge_reintegrate_tests.py Wed Feb  2 13:04:51 2011
@@ -1219,7 +1219,7 @@ def reintegrate_with_subtree_mergeinfo(s
   svntest.verify.verify_outputs("Reintegrate failed but not "
                                 "in the way expected",
                                 err, None,
-                                "(svn: Reintegrate can only be used if "
+                                "(svn: E195016: Reintegrate can only be used if "
                                 "revisions 2 through 15 were previously "
                                 "merged from .*/A to the reintegrate source, "
                                 "but this is not the case:\n)"