subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s...@apache.org
Subject svn commit: r1148581 [10/12] - in /subversion/branches/gpg-agent-password-store: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ contrib/hook-scripts/ contrib/hook-scripts/enforcer/ contrib/server-side/ contrib/server-side/fsfsfi...
Date Tue, 19 Jul 2011 23:06:07 GMT
Modified: subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/repos.c Tue Jul 19 23:05:44 2011
@@ -2403,7 +2403,6 @@ get_parent_resource(const dav_resource *
       parent->uri = get_parent_path(resource->uri, TRUE, resource->pool);
       parent->info = parentinfo;
 
-      parentinfo->pool = resource->info->pool;
       parentinfo->uri_path =
         svn_stringbuf_create(get_parent_path(resource->info->uri_path->data,
                                              TRUE, resource->pool),
@@ -3558,8 +3557,10 @@ deliver(const dav_resource *resource, ap
                                         resource->pool);
           if (!is_file)
             return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
-                                      "the delta base does not refer to a "
-                                      "file");
+                                      apr_psprintf(resource->pool,
+                                      "the delta base of '%s' does not refer "
+                                      "to a file in revision %ld",
+                                      info.repos_path, info.rev));
 
           /* Okay. Let's open up a delta stream for the client to read. */
           serr = svn_fs_get_file_delta_stream(&txd_stream,
@@ -4047,9 +4048,6 @@ do_walk(walker_ctx_t *ctx, int depth)
   apr_hash_t *children;
   apr_pool_t *iterpool;
 
-  /* Clear the temporary pool. */
-  svn_pool_clear(ctx->info.pool);
-
   /* The current resource is a collection (possibly here thru recursion)
      and this is the invocation for the collection. Alternatively, this is
      the first [and only] entry to do_walk() for a member resource, so
@@ -4254,9 +4252,6 @@ walk(const dav_walk_params *params, int 
   if (ctx.repos_path != NULL)
     ctx.info.repos_path = ctx.repos_path->data;
 
-  /* Create a pool usable by the response. */
-  ctx.info.pool = svn_pool_create(params->pool);
-
   /* ### is the root already/always open? need to verify */
 
   /* always return the error, and any/all multistatus responses */

Modified: subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/util.c Tue Jul 19 23:05:44 2011
@@ -375,7 +375,8 @@ dav_svn__simple_parse_uri(dav_svn__uri_i
       /* an activity */
       info->activity_id = path + 5;
     }
-  else if (len2 == 4 && memcmp(path, "/ver/", 5) == 0)
+  else if (len2 == 4 &&
+           (memcmp(path, "/ver/", 5) == 0 || memcmp(path, "/rvr/", 5) == 0))
     {
       /* a version resource */
       path += 5;

Modified: subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/version.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/mod_dav_svn/version.c Tue Jul 19 23:05:44 2011
@@ -147,8 +147,8 @@ get_vsn_options(apr_pool_t *p, apr_text_
   apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_ATOMIC_REVPROPS);
   apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY);
   /* Mergeinfo is a special case: here we merely say that the server
-   * knows how to handle mergeinfo -- whether the repository does too
-   * is a separate matter.
+   * knows how to handle mergeinfo and validate inherited
+   * mergeinfo -- whether the repository does too is a separate matter.
    *
    * Think of it as offering the client an early out: if the server
    * can't do merge-tracking, there's no point finding out of the
@@ -159,6 +159,7 @@ get_vsn_options(apr_pool_t *p, apr_text_
    * server capability and remain agnostic about the repository).
    */
   apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_MERGEINFO);
+  apr_text_append(p, phdr, SVN_DAV_NS_DAV_SVN_MERGEINFO_VALIDATION);
 
   /* ### fork-control? */
 }

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/cat-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/cat-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/cat-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/cat-cmd.c Tue Jul 19 23:05:44 2011
@@ -30,6 +30,7 @@
 #include "svn_pools.h"
 #include "svn_client.h"
 #include "svn_error.h"
+#include "svn_opt.h"
 #include "cl.h"
 
 #include "svn_private_config.h"
@@ -72,8 +73,8 @@ svn_cl__cat(apr_getopt_t *os,
       SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
 
       /* Get peg revisions. */
-      SVN_ERR(svn_cl__opt_parse_path(&peg_revision, &truepath, target,
-                                     subpool));
+      SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target,
+                                 subpool));
 
       SVN_ERR(svn_cl__try(svn_client_cat2(out, truepath, &peg_revision,
                                           &(opt_state->start_revision),

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/changelist-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/changelist-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/changelist-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/changelist-cmd.c Tue Jul 19 23:05:44 2011
@@ -45,6 +45,7 @@ svn_cl__changelist(apr_getopt_t *os,
   svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
   apr_array_header_t *targets;
   svn_depth_t depth = opt_state->depth;
+  svn_boolean_t success = TRUE;
 
   /* If we're not removing changelists, then our first argument should
      be the name of a changelist. */
@@ -98,24 +99,31 @@ svn_cl__changelist(apr_getopt_t *os,
 
   if (changelist_name)
     {
-      return svn_cl__try
-              (svn_client_add_to_changelist(targets, changelist_name,
+      SVN_ERR(svn_cl__try(
+               svn_client_add_to_changelist(targets, changelist_name,
                                             depth, opt_state->changelists,
                                             ctx, pool),
-               NULL, opt_state->quiet,
+               &success, opt_state->quiet,
                SVN_ERR_UNVERSIONED_RESOURCE,
                SVN_ERR_WC_PATH_NOT_FOUND,
-               SVN_NO_ERROR);
+               SVN_NO_ERROR));
     }
   else
     {
-      return svn_cl__try
-              (svn_client_remove_from_changelists(targets, depth,
+      SVN_ERR(svn_cl__try(
+               svn_client_remove_from_changelists(targets, depth,
                                                   opt_state->changelists,
                                                   ctx, pool),
-               NULL, opt_state->quiet,
+               &success, opt_state->quiet,
                SVN_ERR_UNVERSIONED_RESOURCE,
                SVN_ERR_WC_PATH_NOT_FOUND,
-               SVN_NO_ERROR);
+               SVN_NO_ERROR));
     }
+
+  if (!success)
+    return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
+                            _("Could not display info for all targets because "
+                              "some targets don't exist"));
+  else
+    return SVN_NO_ERROR;
 }

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/checkout-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/checkout-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/checkout-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/checkout-cmd.c Tue Jul 19 23:05:44 2011
@@ -72,8 +72,7 @@ svn_cl__checkout(apr_getopt_t *os,
   svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
   apr_pool_t *subpool;
   apr_array_header_t *targets;
-  const char *local_dir;
-  const char *repos_url;
+  const char *last_target, *local_dir;
   int i;
 
   SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
@@ -81,39 +80,43 @@ svn_cl__checkout(apr_getopt_t *os,
                                                       ctx, FALSE, pool));
 
   if (! targets->nelts)
-    return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, 0, NULL);
+    return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, NULL, NULL);
 
-  /* Add a path if the user only specified URLs */
-  local_dir = APR_ARRAY_IDX(targets, targets->nelts - 1, const char *);
-  if (svn_path_is_url(local_dir))
+  /* Determine LOCAL_DIR (case 1: URL basename; 2,4: specified; 3: "")
+   * and leave TARGETS holding just the source URLs. */
+  last_target = APR_ARRAY_IDX(targets, targets->nelts - 1, const char *);
+  if (svn_path_is_url(last_target))
     {
       if (targets->nelts == 1)
         {
           svn_opt_revision_t pegrev;
 
-          /* Discard the peg-revision, if one was provided. */
-          SVN_ERR(svn_opt_parse_path(&pegrev, &local_dir, local_dir, pool));
+          /* Use the URL basename, discarding any peg revision. */
+          SVN_ERR(svn_opt_parse_path(&pegrev, &local_dir, last_target, pool));
           local_dir = svn_uri_basename(local_dir, pool);
         }
       else
         {
           local_dir = "";
         }
-      APR_ARRAY_PUSH(targets, const char *) = local_dir;
     }
   else
     {
-      /* What?  They gave us one target, and it wasn't a URL. */
       if (targets->nelts == 1)
-        return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0, NULL);
+        /* What?  They gave us one target, and it wasn't a URL. */
+        return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL, NULL);
+
+      apr_array_pop(targets);
+      local_dir = last_target;
     }
 
   if (! opt_state->quiet)
     SVN_ERR(svn_cl__notifier_mark_checkout(ctx->notify_baton2));
 
   subpool = svn_pool_create(pool);
-  for (i = 0; i < targets->nelts - 1; ++i)
+  for (i = 0; i < targets->nelts; ++i)
     {
+      const char *repos_url = APR_ARRAY_IDX(targets, i, const char *);
       const char *target_dir;
       const char *true_url;
       svn_opt_revision_t revision = opt_state->start_revision;
@@ -124,7 +127,6 @@ svn_cl__checkout(apr_getopt_t *os,
       SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
 
       /* Validate the REPOS_URL */
-      repos_url = APR_ARRAY_IDX(targets, i, const char *);
       if (! svn_path_is_url(repos_url))
         return svn_error_createf
           (SVN_ERR_BAD_URL, NULL,
@@ -134,10 +136,8 @@ svn_cl__checkout(apr_getopt_t *os,
       SVN_ERR(svn_opt_parse_path(&peg_revision, &true_url, repos_url,
                                  subpool));
 
-      true_url = svn_uri_canonicalize(true_url, subpool);
-
       /* Use sub-directory of destination if checking-out multiple URLs */
-      if (targets->nelts == 2)
+      if (targets->nelts == 1)
         {
           target_dir = local_dir;
         }

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/cl.h?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/cl.h (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/cl.h Tue Jul 19 23:05:44 2011
@@ -811,13 +811,6 @@ svn_cl__eat_peg_revisions(apr_array_head
                           const apr_array_header_t *targets,
                           apr_pool_t *pool);
 
-/* Like svn_opt_parse_path(), but canonicalizes dirent/URL */
-svn_error_t *
-svn_cl__opt_parse_path(svn_opt_revision_t *rev,
-                       const char **truepath,
-                       const char *path,
-                       apr_pool_t *pool);
-
 /* Return an error if TARGETS contains a mixture of URLs and paths; otherwise
  * return SVN_NO_ERROR. */
 svn_error_t *
@@ -827,6 +820,10 @@ svn_cl__assert_homogeneous_target_type(c
 svn_error_t *
 svn_cl__check_targets_are_local_paths(const apr_array_header_t *targets);
 
+/* Return an error if TARGET is a URL; otherwise return SVN_NO_ERROR. */
+svn_error_t *
+svn_cl__check_target_is_local_path(const char *target);
+
 /* Return a copy of PATH, converted to the local path style, skipping
  * PARENT_PATH if it is non-null and is a parent of or equal to PATH.
  *

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/copy-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/copy-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/copy-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/copy-cmd.c Tue Jul 19 23:05:44 2011
@@ -95,12 +95,14 @@ svn_cl__copy(apr_getopt_t *os,
   else if ((! srcs_are_urls) && (dst_is_url))
     {
       /* WC->URL : Use notification. */
+      if (! opt_state->quiet)
         SVN_ERR(svn_cl__notifier_mark_wc_to_repos_copy(ctx->notify_baton2));
     }
   else if ((srcs_are_urls) && (! dst_is_url))
     {
-      /* URL->WC : Use checkout-style notification. */
-      SVN_ERR(svn_cl__notifier_mark_checkout(ctx->notify_baton2));
+     /* URL->WC : Use checkout-style notification. */
+     if (! opt_state->quiet)
+       SVN_ERR(svn_cl__notifier_mark_checkout(ctx->notify_baton2));
     }
   else
     {

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/export-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/export-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/export-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/export-cmd.c Tue Jul 19 23:05:44 2011
@@ -88,9 +88,7 @@ svn_cl__export(apr_getopt_t *os,
         SVN_ERR(svn_opt__split_arg_at_peg_revision(&to, NULL, to, pool));
     }
 
-  if (svn_path_is_url(to))
-    return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                             _("'%s' is not a local path"), to);
+  SVN_ERR(svn_cl__check_target_is_local_path(to));
 
   if (! opt_state->quiet)
     SVN_ERR(svn_cl__notifier_mark_export(ctx->notify_baton2));

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/import-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/import-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/import-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/import-cmd.c Tue Jul 19 23:05:44 2011
@@ -100,14 +100,11 @@ svn_cl__import(apr_getopt_t *os,
       url = APR_ARRAY_IDX(targets, 1, const char *);
     }
 
-  if (svn_path_is_url(path))
-    return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                             _("'%s' is not a local path"), path);
+  SVN_ERR(svn_cl__check_target_is_local_path(path));
 
   if (! svn_path_is_url(url))
-    return svn_error_createf
-      (SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-       _("Invalid URL '%s'"), url);
+    return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                             _("Invalid URL '%s'"), url);
 
   if (opt_state->depth == svn_depth_unknown)
     opt_state->depth = svn_depth_infinity;

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/info-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/info-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/info-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/info-cmd.c Tue Jul 19 23:05:44 2011
@@ -579,22 +579,20 @@ svn_cl__info(apr_getopt_t *os,
       /* If no peg-rev was attached to a URL target, then assume HEAD. */
       if (svn_path_is_url(truepath))
         {
-          truepath = svn_uri_canonicalize(truepath, subpool);
-
           if (peg_revision.kind == svn_opt_revision_unspecified)
             peg_revision.kind = svn_opt_revision_head;
         }
       else
         {
-          truepath = svn_dirent_canonicalize(truepath, subpool);
-
           SVN_ERR(svn_dirent_get_absolute(&truepath, truepath, subpool));
         }
 
       err = svn_client_info3(truepath,
                              &peg_revision, &(opt_state->start_revision),
-                             receiver, (void *) path_prefix, opt_state->depth,
-                             opt_state->changelists, ctx, subpool);
+                             opt_state->depth, TRUE, TRUE,
+                             opt_state->changelists,
+                             receiver, (void *) path_prefix,
+                             ctx, subpool);
 
       if (err)
         {

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/list-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/list-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/list-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/list-cmd.c Tue Jul 19 23:05:44 2011
@@ -30,6 +30,7 @@
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
 #include "svn_utf.h"
+#include "svn_opt.h"
 
 #include "cl.h"
 
@@ -270,8 +271,8 @@ svn_cl__list(apr_getopt_t *os,
       SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
 
       /* Get peg revisions. */
-      SVN_ERR(svn_cl__opt_parse_path(&peg_revision, &truepath, target,
-                                     subpool));
+      SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target,
+                                 subpool));
 
       if (opt_state->xml)
         {

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/main.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/main.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/main.c Tue Jul 19 23:05:44 2011
@@ -1380,7 +1380,9 @@ const svn_opt_subcommand_desc2_t svn_cl_
 
   { "upgrade", svn_cl__upgrade, {0}, N_
     ("Upgrade the metadata storage format for a working copy.\n"
-     "usage: upgrade WCPATH...\n"),
+     "usage: upgrade WCPATH...\n"
+     "\n"
+     "  Local modifications are preserved.\n"),
     { 'q' } },
 
   { NULL, NULL, {0}, NULL, {0} }
@@ -2361,8 +2363,10 @@ main(int argc, const char *argv[])
                               opt_state.config_dir, pool);
   if (err)
     {
-      /* Fallback to default config if the config directory isn't readable. */
-      if (err->apr_err == APR_EACCES)
+      /* Fallback to default config if the config directory isn't readable
+         or is not a directory. */
+      if (APR_STATUS_IS_EACCES(err->apr_err)
+          || SVN__APR_STATUS_IS_ENOTDIR(err->apr_err))
         {
           svn_handle_warning2(stderr, err, "svn: ");
           svn_error_clear(err);

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/notify.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/notify.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/notify.c Tue Jul 19 23:05:44 2011
@@ -162,6 +162,20 @@ notify(void *baton, const svn_wc_notify_
             path_local)))
         goto print_error;
       break;
+    case svn_wc_notify_update_skip_access_denied:
+      nb->skipped_paths++;
+      if ((err = svn_cmdline_printf(
+            pool, _("Skipped '%s' -- Access denied\n"),
+            path_local)))
+        goto print_error;
+      break;
+    case svn_wc_notify_skip_conflicted:
+      nb->skipped_paths++;
+      if ((err = svn_cmdline_printf(
+            pool, _("Skipped '%s' -- Node remains in conflict\n"),
+            path_local)))
+        goto print_error;
+      break;
     case svn_wc_notify_update_delete:
     case svn_wc_notify_exclude:
       nb->received_some_change = TRUE;
@@ -949,7 +963,7 @@ notify(void *baton, const svn_wc_notify_
       break;
 
     case svn_wc_notify_upgraded_path:
-        err = svn_cmdline_printf(pool, _("Upgraded '%s'.\n"), path_local);
+        err = svn_cmdline_printf(pool, _("Upgraded '%s'\n"), path_local);
         if (err)
           goto print_error;
       break;

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/patch-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/patch-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/patch-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/patch-cmd.c Tue Jul 19 23:05:44 2011
@@ -70,9 +70,7 @@ svn_cl__patch(apr_getopt_t *os,
 
   patch_path = APR_ARRAY_IDX(targets, 0, const char *);
 
-  if (svn_path_is_url(patch_path))
-    return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                             _("'%s' is not a local path"), patch_path);
+  SVN_ERR(svn_cl__check_target_is_local_path(patch_path));
 
   SVN_ERR(svn_dirent_get_absolute(&abs_patch_path, patch_path, pool));
 
@@ -82,9 +80,7 @@ svn_cl__patch(apr_getopt_t *os,
     {
       target_path = APR_ARRAY_IDX(targets, 1, const char *);
 
-      if (svn_path_is_url(target_path))
-        return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                                 _("'%s' is not a local path"), target_path);
+      SVN_ERR(svn_cl__check_target_is_local_path(target_path));
     }
   SVN_ERR(svn_dirent_get_absolute(&abs_target_path, target_path, pool));
 

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/proplist-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/proplist-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/proplist-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/proplist-cmd.c Tue Jul 19 23:05:44 2011
@@ -168,6 +168,7 @@ svn_cl__proplist(apr_getopt_t *os,
       int i;
       apr_pool_t *iterpool;
       svn_proplist_receiver_t pl_receiver;
+      svn_boolean_t had_errors = FALSE;
 
       if (opt_state->xml)
         {
@@ -189,6 +190,7 @@ svn_cl__proplist(apr_getopt_t *os,
           proplist_baton_t pl_baton;
           const char *truepath;
           svn_opt_revision_t peg_revision;
+          svn_boolean_t success;
 
           svn_pool_clear(iterpool);
           SVN_ERR(svn_cl__check_cancel(ctx->cancel_baton));
@@ -200,22 +202,31 @@ svn_cl__proplist(apr_getopt_t *os,
           SVN_ERR(svn_opt_parse_path(&peg_revision, &truepath, target,
                                      iterpool));
 
-          SVN_ERR(svn_cl__try
-                  (svn_client_proplist3(truepath, &peg_revision,
+          SVN_ERR(svn_cl__try(
+                   svn_client_proplist3(truepath, &peg_revision,
                                         &(opt_state->start_revision),
                                         opt_state->depth,
                                         opt_state->changelists,
                                         pl_receiver, &pl_baton,
                                         ctx, iterpool),
-                   NULL, opt_state->quiet,
+                   &success, opt_state->quiet,
                    SVN_ERR_UNVERSIONED_RESOURCE,
                    SVN_ERR_ENTRY_NOT_FOUND,
                    SVN_NO_ERROR));
+
+          if (!success)
+            had_errors = TRUE;
         }
       svn_pool_destroy(iterpool);
 
       if (opt_state->xml)
         SVN_ERR(svn_cl__xml_print_footer("properties", scratch_pool));
+
+      /* Error out *after* we closed the XML element */
+      if (had_errors)
+        return svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
+                                _("Could not display info for all targets "
+                                  "because some targets don't exist"));
     }
 
   return SVN_NO_ERROR;

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/relocate-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/relocate-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/relocate-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/relocate-cmd.c Tue Jul 19 23:05:44 2011
@@ -102,10 +102,7 @@ svn_cl__relocate(apr_getopt_t *os,
           for (i = 2; i < targets->nelts; i++)
             {
               path = APR_ARRAY_IDX(targets, i, const char *);
-              if (svn_path_is_url(path))
-                return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                                         _("'%s' is not a local path"),
-                                         path);
+              SVN_ERR(svn_cl__check_target_is_local_path(path));
             }
 
           for (i = 2; i < targets->nelts; i++)

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/status.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/status.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/status.c Tue Jul 19 23:05:44 2011
@@ -68,8 +68,15 @@ combined_status(const svn_client_status_
 
   switch (status->node_status)
     {
-      case svn_wc_status_modified:
       case svn_wc_status_conflicted:
+        if (!status->versioned && status->conflicted)
+          {
+            /* Report unversioned tree conflict victims as missing: '!' */
+            new_status = svn_wc_status_missing;
+            break;
+          }
+        /* fall through */
+      case svn_wc_status_modified:
         /* This value might be the property status */
         new_status = status->text_status;
         break;
@@ -158,22 +165,32 @@ print_status(const char *path,
       svn_boolean_t text_conflicted;
       svn_boolean_t prop_conflicted;
       svn_boolean_t tree_conflicted;
-      svn_error_t *err;
 
-      err = svn_wc_conflicted_p3(&text_conflicted,
-                                 &prop_conflicted,
-                                 &tree_conflicted, ctx->wc_ctx,
-                                 local_abspath, pool);
+      if (status->versioned)
+        {
+          svn_error_t *err;
 
-      if (err && err->apr_err == SVN_ERR_WC_UPGRADE_REQUIRED)
+          err = svn_wc_conflicted_p3(&text_conflicted,
+                                     &prop_conflicted,
+                                     &tree_conflicted, ctx->wc_ctx,
+                                     local_abspath, pool);
+
+          if (err && err->apr_err == SVN_ERR_WC_UPGRADE_REQUIRED)
+            {
+              svn_error_clear(err);
+              text_conflicted = FALSE;
+              prop_conflicted = FALSE;
+              tree_conflicted = FALSE;
+            }
+          else
+            SVN_ERR(err);
+        }
+      else
         {
-          svn_error_clear(err);
           text_conflicted = FALSE;
           prop_conflicted = FALSE;
-          tree_conflicted = FALSE;
+          tree_conflicted = TRUE;
         }
-      else
-        SVN_ERR(err);
 
       if (tree_conflicted)
         {

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/switch-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/switch-cmd.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/switch-cmd.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/switch-cmd.c Tue Jul 19 23:05:44 2011
@@ -97,8 +97,7 @@ svn_cl__switch(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;
-  const char *target = NULL, *switch_url = NULL;
-  const char *true_path;
+  const char *target, *switch_url;
   svn_opt_revision_t peg_revision;
   svn_depth_t depth;
   svn_boolean_t depth_is_sticky;
@@ -122,38 +121,22 @@ svn_cl__switch(apr_getopt_t *os,
   if (targets->nelts > 2)
     return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0, NULL);
 
-  /* Get the required SWITCH_URL and the optional TARGET arguments. */
+  /* Get the required SWITCH_URL and its optional PEG_REVISION, and the
+   * optional TARGET argument. */
+  SVN_ERR(svn_opt_parse_path(&peg_revision, &switch_url,
+                             APR_ARRAY_IDX(targets, 0, const char *),
+                             scratch_pool));
   if (targets->nelts == 1)
-    {
-      switch_url = APR_ARRAY_IDX(targets, 0, const char *);
-      target = "";
-    }
+    target = "";
   else
-    {
-      switch_url = APR_ARRAY_IDX(targets, 0, const char *);
-      target = APR_ARRAY_IDX(targets, 1, const char *);
-    }
-
-  /* Strip peg revision if targets contains an URI. */
-  SVN_ERR(svn_opt_parse_path(&peg_revision, &true_path, switch_url,
-                             scratch_pool));
-  APR_ARRAY_IDX(targets, 0, const char *) = true_path;
-  switch_url = true_path;
+    target = APR_ARRAY_IDX(targets, 1, const char *);
 
   /* Validate the switch_url */
   if (! svn_path_is_url(switch_url))
-    return svn_error_createf
-      (SVN_ERR_BAD_URL, NULL,
-       _("'%s' does not appear to be a URL"), switch_url);
-
-  /* Target path cannot be URL */
-  if (svn_path_is_url(target))
-    return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                             _("'%s' is not a local path"),
-                             target);
+    return svn_error_createf(SVN_ERR_BAD_URL, NULL,
+                             _("'%s' does not appear to be a URL"), switch_url);
 
-  /* Canonicalize the URL. */
-  switch_url = svn_uri_canonicalize(switch_url, scratch_pool);
+  SVN_ERR(svn_cl__check_target_is_local_path(target));
 
   /* Deal with depthstuffs. */
   if (opt_state->set_depth != svn_depth_unknown)

Modified: subversion/branches/gpg-agent-password-store/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svn/util.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svn/util.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svn/util.c Tue Jul 19 23:05:44 2011
@@ -1361,22 +1361,6 @@ svn_cl__eat_peg_revisions(apr_array_head
 }
 
 svn_error_t *
-svn_cl__opt_parse_path(svn_opt_revision_t *rev,
-                       const char **truepath,
-                       const char *path /* UTF-8! */,
-                       apr_pool_t *pool)
-{
-  SVN_ERR(svn_opt_parse_path(rev, truepath, path, pool));
-
-  if (svn_path_is_url(*truepath))
-    *truepath = svn_uri_canonicalize(*truepath, pool);
-  else
-    *truepath = svn_dirent_canonicalize(*truepath, pool);
-
-  return SVN_NO_ERROR;
-}
-
-svn_error_t *
 svn_cl__assert_homogeneous_target_type(const apr_array_header_t *targets)
 {
   svn_error_t *err;
@@ -1390,6 +1374,15 @@ svn_cl__assert_homogeneous_target_type(c
 }
 
 svn_error_t *
+svn_cl__check_target_is_local_path(const char *target)
+{
+  if (svn_path_is_url(target))
+    return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                             _("'%s' is not a local path"), target);
+  return SVN_NO_ERROR;
+}
+
+svn_error_t *
 svn_cl__check_targets_are_local_paths(const apr_array_header_t *targets)
 {
   int i;
@@ -1398,9 +1391,7 @@ svn_cl__check_targets_are_local_paths(co
     {
       const char *target = APR_ARRAY_IDX(targets, i, const char *);
 
-      if (svn_path_is_url(target))
-        return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
-                                 _("'%s' is not a local path"), target);
+      SVN_ERR(svn_cl__check_target_is_local_path(target));
     }
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/gpg-agent-password-store/subversion/svnadmin/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svnadmin/main.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svnadmin/main.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svnadmin/main.c Tue Jul 19 23:05:44 2011
@@ -186,8 +186,7 @@ enum svnadmin__cmdline_options_t
     svnadmin__wait,
     svnadmin__pre_1_4_compatible,
     svnadmin__pre_1_5_compatible,
-    svnadmin__pre_1_6_compatible,
-    svnadmin__pre_1_7_compatible
+    svnadmin__pre_1_6_compatible
   };
 
 /* Option codes and descriptions.
@@ -276,10 +275,6 @@ static const apr_getopt_option_t options
      N_("use format compatible with Subversion versions\n"
         "                             earlier than 1.6")},
 
-    {"pre-1.7-compatible",     svnadmin__pre_1_7_compatible, 0,
-     N_("use format compatible with Subversion versions\n"
-        "                             earlier than 1.7")},
-
     {"memory-cache-size",     'M', 1,
      N_("size of the extra in-memory cache in MB used to\n"
         "                             minimize redundant operations. Default: 16.\n"
@@ -305,8 +300,8 @@ static const svn_opt_subcommand_desc2_t 
     "Create a new, empty repository at REPOS_PATH.\n"),
    {svnadmin__bdb_txn_nosync, svnadmin__bdb_log_keep,
     svnadmin__config_dir, svnadmin__fs_type, svnadmin__pre_1_4_compatible,
-    svnadmin__pre_1_5_compatible, svnadmin__pre_1_6_compatible,
-    svnadmin__pre_1_7_compatible} },
+    svnadmin__pre_1_5_compatible, svnadmin__pre_1_6_compatible
+    } },
 
   {"deltify", subcommand_deltify, {0}, N_
    ("usage: svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH\n\n"
@@ -457,7 +452,6 @@ struct svnadmin_opt_state
   svn_boolean_t pre_1_4_compatible;                 /* --pre-1.4-compatible */
   svn_boolean_t pre_1_5_compatible;                 /* --pre-1.5-compatible */
   svn_boolean_t pre_1_6_compatible;                 /* --pre-1.6-compatible */
-  svn_boolean_t pre_1_7_compatible;                 /* --pre-1.7-compatible */
   svn_opt_revision_t start_revision, end_revision;  /* -r X[:Y] */
   svn_boolean_t help;                               /* --help or -? */
   svn_boolean_t version;                            /* --version */
@@ -559,9 +553,11 @@ parse_args(apr_array_header_t **args,
   if (args)
     {
       *args = apr_array_make(pool, num_args, sizeof(const char *));
-      while (os->ind < os->argc)
-        APR_ARRAY_PUSH(*args, const char *) =
-          apr_pstrdup(pool, os->argv[os->ind++]);
+
+      if (num_args)
+        while (os->ind < os->argc)
+          APR_ARRAY_PUSH(*args, const char *) =
+            apr_pstrdup(pool, os->argv[os->ind++]);
     }
 
   return SVN_NO_ERROR;
@@ -606,11 +602,6 @@ subcommand_create(apr_getopt_t *os, void
                  APR_HASH_KEY_STRING,
                  "1");
 
-  if (opt_state->pre_1_7_compatible)
-    apr_hash_set(fs_config, SVN_FS_CONFIG_PRE_1_7_COMPATIBLE,
-                 APR_HASH_KEY_STRING,
-                 "1");
-
   SVN_ERR(svn_repos_create(&repos, opt_state->repository_path,
                            NULL, NULL, NULL, fs_config, pool));
   svn_fs_set_warning_func(svn_repos_fs(repos), warning_func, NULL);
@@ -1403,7 +1394,8 @@ subcommand_lslocks(apr_getopt_t *os, voi
                                                        sizeof(const char *)),
                                         pool));
   if (targets->nelts > 1)
-    return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0, NULL);
+    return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, 0,
+                            _("Too many arguments given"));
   if (targets->nelts)
     fs_path = APR_ARRAY_IDX(targets, 0, const char *);
 
@@ -1730,9 +1722,6 @@ main(int argc, const char *argv[])
       case svnadmin__pre_1_6_compatible:
         opt_state.pre_1_6_compatible = TRUE;
         break;
-      case svnadmin__pre_1_7_compatible:
-        opt_state.pre_1_7_compatible = TRUE;
-        break;
       case svnadmin__fs_type:
         err = svn_utf_cstring_to_utf8(&opt_state.fs_type, opt_arg, pool);
         if (err)

Modified: subversion/branches/gpg-agent-password-store/subversion/svnrdump/dump_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svnrdump/dump_editor.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svnrdump/dump_editor.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svnrdump/dump_editor.c Tue Jul 19 23:05:44 2011
@@ -487,7 +487,7 @@ open_directory(const char *path,
 
   /* If the parent directory has explicit comparison path and rev,
      record the same for this one. */
-  if (pb && ARE_VALID_COPY_ARGS(pb->copyfrom_path, pb->copyfrom_rev))
+  if (ARE_VALID_COPY_ARGS(pb->copyfrom_path, pb->copyfrom_rev))
     {
       copyfrom_path = svn_relpath_join(pb->copyfrom_path,
                                        svn_relpath_basename(path, NULL),
@@ -598,7 +598,7 @@ open_file(const char *path,
 
   /* If the parent directory has explicit copyfrom path and rev,
      record the same for this one. */
-  if (pb && ARE_VALID_COPY_ARGS(pb->copyfrom_path, pb->copyfrom_rev))
+  if (ARE_VALID_COPY_ARGS(pb->copyfrom_path, pb->copyfrom_rev))
     {
       copyfrom_path = svn_relpath_join(pb->copyfrom_path,
                                        svn_relpath_basename(path, NULL),

Modified: subversion/branches/gpg-agent-password-store/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/svnserve/serve.c?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/svnserve/serve.c (original)
+++ subversion/branches/gpg-agent-password-store/subversion/svnserve/serve.c Tue Jul 19 23:05:44 2011
@@ -1903,8 +1903,7 @@ static svn_error_t *get_mergeinfo(svn_ra
                                      mergeinfo_string));
     }
   svn_pool_destroy(iterpool);
-  SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!)b)",
-    validate_inherited_mergeinfo));
+  SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!))"));
 
   return SVN_NO_ERROR;
 }
@@ -3230,7 +3229,12 @@ svn_error_t *serve(svn_ra_svn_conn_t *co
     SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "w(cc(!",
                                    "success", uuid, b.repos_url));
     if (supports_mergeinfo)
-      SVN_ERR(svn_ra_svn_write_word(conn, pool, SVN_RA_SVN_CAP_MERGEINFO));
+      {
+        SVN_ERR(svn_ra_svn_write_word(conn, pool, SVN_RA_SVN_CAP_MERGEINFO));
+        SVN_ERR(svn_ra_svn_write_word(
+          conn, pool, SVN_RA_SVN_CAP_VALIDATE_INHERITED_MERGEINFO));
+      }
+
     SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!))"));
   }
 

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/changelist_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/changelist_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/changelist_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/changelist_tests.py Tue Jul 19 23:05:44 2011
@@ -1132,6 +1132,43 @@ def revert_deleted_in_changelist(sbox):
                                      'revert', '-R', sbox.ospath('A'))
   svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('A/mu'))
 
+def add_remove_non_existent_target(sbox):
+  "add and remove non-existent target to changelist"
+
+  sbox.build(read_only = True)
+  wc_dir = sbox.wc_dir
+  bogus_path = os.path.join(wc_dir, 'A', 'bogus')
+
+  expected_err = "svn: warning: W155010: The node '" + \
+                 re.escape(os.path.abspath(bogus_path)) + \
+                 "' was not found"
+
+  svntest.actions.run_and_verify_svn(None, None, expected_err,
+                                     'changelist', 'testlist',
+                                     bogus_path)
+
+  svntest.actions.run_and_verify_svn(None, None, expected_err,
+                                     'changelist', bogus_path,
+                                      '--remove')
+
+def add_remove_unversioned_target(sbox):
+  "add and remove unversioned target to changelist"
+
+  sbox.build(read_only = True)
+  unversioned = sbox.ospath('unversioned')
+  svntest.main.file_write(unversioned, "dummy contents", 'w+')
+
+  expected_err = "svn: warning: W155010: The node '" + \
+                 re.escape(os.path.abspath(unversioned)) + \
+                 "' was not found"
+
+  svntest.actions.run_and_verify_svn(None, None, expected_err,
+                                     'changelist', 'testlist',
+                                     unversioned)
+
+  svntest.actions.run_and_verify_svn(None, None, expected_err,
+                                     'changelist', unversioned,
+                                      '--remove')
 
 
 ########################################################################
@@ -1153,6 +1190,8 @@ test_list = [ None,
               move_added_keeps_changelist,
               change_to_dir,
               revert_deleted_in_changelist,
+              add_remove_non_existent_target,
+              add_remove_unversioned_target,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/commit_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/commit_tests.py Tue Jul 19 23:05:44 2011
@@ -2701,20 +2701,6 @@ def start_commit_detect_capabilities(sbo
   if data != 'yes':
     raise svntest.Failure
 
-def commit_url(sbox):
-  "'svn commit SOME_URL' should error"
-  sbox.build()
-  url = sbox.repo_url
-
-  # Commit directly to a URL
-  expected_error = ("svn: E205000: '" + url +
-                    "' is a URL, but URLs cannot be commit targets")
-  svntest.actions.run_and_verify_commit(None,
-                                        None,
-                                        None,
-                                        expected_error,
-                                        url)
-
 # Test for issue #3198
 @Issue(3198)
 def commit_added_missing(sbox):
@@ -2881,7 +2867,6 @@ test_list = [ None,
               changelist_near_conflict,
               commit_out_of_date_file,
               start_commit_detect_capabilities,
-              commit_url,
               commit_added_missing,
               tree_conflicts_block_commit,
               tree_conflicts_resolved,

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/davautocheck.sh?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/davautocheck.sh Tue Jul 19 23:05:44 2011
@@ -67,6 +67,9 @@
 #
 # To prevent the server from advertising httpv2, pass USE_HTTPV1 in
 # the environment.
+# 
+# To use value for "SVNPathAuthz" directive set SVN_PATH_AUTHZ with
+# appropriate value in the environment.
 #
 # Passing --no-tests as argv[1] will have the script start a server
 # but not run any tests.
@@ -160,6 +163,12 @@ if [ ${USE_HTTPV1:+set} ]; then
  ADVERTISE_V2_PROTOCOL=off
 fi
 
+# Pick up $SVN_PATH_AUTHZ
+SVN_PATH_AUTHZ_LINE=""
+if [ ${SVN_PATH_AUTHZ:+set} ]; then
+ SVN_PATH_AUTHZ_LINE="SVNPathAuthz      ${SVN_PATH_AUTHZ}"
+fi
+
 # Find the source and build directories. The build dir can be found if it is
 # the current working dir or the source dir.
 pushd ${SCRIPTDIR}/../../../ > /dev/null
@@ -326,6 +335,7 @@ CustomLog           "$HTTPD_ROOT/ops" "%
   AuthUserFile      $HTTPD_USERS
   Require           valid-user
   SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
+  ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /svn-test-work/local_tmp/repos>
   DAV               svn
@@ -336,6 +346,7 @@ CustomLog           "$HTTPD_ROOT/ops" "%
   AuthUserFile      $HTTPD_USERS
   Require           valid-user
   SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
+  ${SVN_PATH_AUTHZ_LINE}
 </Location>
 RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)\$ /svn-test-work/repositories/\$1
 RedirectMatch           ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)\$ /svn-test-work/repositories/\$1

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/info_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/info_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/info_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/info_tests.py Tue Jul 19 23:05:44 2011
@@ -412,6 +412,77 @@ def info_repos_root_url(sbox):
   svntest.actions.run_and_verify_info(expected_info, sbox.repo_url,
                                       '--depth', 'files')
 
+@Issue(3787)
+def info_show_exclude(sbox):
+  "tests 'info --depth' variants on excluded node"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  A_path = os.path.join(wc_dir, 'A')
+  iota = os.path.join(wc_dir, 'iota')
+  svntest.main.run_svn(None, 'up', '--set-depth', 'exclude', A_path)
+  wc_uuid = svntest.actions.get_wc_uuid(wc_dir)
+
+  expected_info = [{
+      'Path' : re.escape(wc_dir),
+      'Repository Root' : sbox.repo_url,
+      'Repository UUID' : wc_uuid,
+  }]
+
+  svntest.actions.run_and_verify_info(expected_info, '--depth', 'empty',
+                                      wc_dir)
+
+  expected_info = [{
+      'Path' : '.*%sA' % re.escape(os.sep),
+      'Repository Root' : sbox.repo_url,
+      'Repository UUID' : wc_uuid,
+      'Depth' : 'exclude',
+  }]
+
+  svntest.actions.run_and_verify_info(expected_info, '--depth',
+                                      'empty', A_path)
+  svntest.actions.run_and_verify_info(expected_info, '--depth',
+                                      'infinity', A_path)
+  svntest.actions.run_and_verify_info(expected_info, '--depth',
+                                      'immediates', A_path)
+
+  expected_info = [{
+      'Path' : '.*%siota' % re.escape(os.sep),
+     'Repository Root' : sbox.repo_url,
+     'Repository UUID' : wc_uuid,
+  }]
+  svntest.main.run_svn(None, 'up', '--set-depth', 'exclude', iota)
+  svntest.actions.run_and_verify_info(expected_info, iota)
+
+  # And now get iota back, to allow testing other states
+  expected_output = svntest.wc.State(wc_dir, {
+    'iota' : Item(status='A '),
+    })
+
+  expected_status = svntest.wc.State(iota, {
+    '' : Item(status='  ', wc_rev='1')
+  })
+
+  svntest.actions.run_and_verify_update(iota,
+                                        expected_output, None, expected_status)
+
+  sbox.simple_rm('iota')
+  sbox.simple_commit()
+
+  # Expect error on iota (status = not-present)
+  svntest.actions.run_and_verify_svn(None, [],
+       'svn: E200009: Could not display info for all targets.*',
+        'info', iota)
+
+  sbox.simple_update()
+
+  # Expect error on iota (unversioned)
+  svntest.actions.run_and_verify_svn(None, [],
+       'svn: E200009: Could not display info for all targets.*',
+        'info', iota)
+
+
 ########################################################################
 # Run the tests
 
@@ -424,6 +495,7 @@ test_list = [ None,
               info_url_special_characters,
               info_multiple_targets,
               info_repos_root_url,
+              info_show_exclude,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/input_validation_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/input_validation_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/input_validation_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/input_validation_tests.py Tue Jul 19 23:05:44 2011
@@ -90,8 +90,7 @@ 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: E205000: '.*' is a URL, but URLs cannot be " +
-                             "commit targets", 'commit', target)
+    run_and_verify_svn_in_wc(sbox, "svn: E205000: '.*' is not a local path", 'commit', target)
 
 def invalid_copy_sources(sbox):
   "invalid sources for 'copy'"

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/lock_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/lock_tests.py Tue Jul 19 23:05:44 2011
@@ -90,7 +90,7 @@ def lock_file(sbox):
 
   # --- Meanwhile, in our other working copy... ---
   err_re = "(svn\: E195022\: File '.*iota' is locked in another)|" + \
-           "(svn\: E160039: User 'jconstant' does not own lock on path.*iota')"
+           "(svn\: E160039: User '?jconstant'? does not own lock on path.*iota')"
 
   svntest.main.run_svn(None, 'update', wc_b)
   # -- Try to change a file --
@@ -111,7 +111,7 @@ def lock_file(sbox):
   svntest.main.run_svn(None, 'propset', 'sneakyuser', 'Sally', file_path_b)
 
   err_re = "(svn\: E195022\: File '.*iota' is locked in another)|" + \
-           "(svn\: E160039\: User 'jconstant' does not own lock on path)"
+           "(svn\: E160039\: User '?jconstant'? does not own lock on path)"
 
   # attempt (and fail) to commit as user Sally
   svntest.actions.run_and_verify_commit(wc_b, None, None, err_re,
@@ -1498,7 +1498,7 @@ def lock_path_not_in_head(sbox):
   svntest.actions.run_and_verify_svn(None, None, [], 'commit',
                                      '-m', 'Some deletions', wc_dir)
   svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r1', wc_dir)
-  expected_lock_fail_err_re = "svn: warning:.*" \
+  expected_lock_fail_err_re = "svn:.*" \
   "((Path .* doesn't exist in HEAD revision)" \
   "|(Lock request failed: 405 Method Not Allowed))"
   # Issue #3524 These lock attemtps were triggering an assert over ra_serf:

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/log_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/log_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/log_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/log_tests.py Tue Jul 19 23:05:44 2011
@@ -2012,7 +2012,7 @@ def log_with_unrelated_peg_and_operative
 def log_on_nonexistent_path_and_valid_rev(sbox):
   "log on nonexistent path does not error out"
 
-  sbox.build()#create_wc=False)
+  sbox.build(create_wc=False)
   real_path_real_rev   = sbox.repo_url + '/A@1'
   real_path_bad_rev    = sbox.repo_url + '/A@99'
   bad_url_bad_rev      = sbox.repo_url + '/Z@99'

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_reintegrate_tests.py Tue Jul 19 23:05:44 2011
@@ -2340,6 +2340,268 @@ def reintegrate_creates_bogus_mergeinfo(
                                        None, None, None, None, None,
                                        1, 1, "--reintegrate", A_path)
 
+
+#----------------------------------------------------------------------
+# Test for regression on 1.6.x branch, merge fails when source without
+# subtree mergeinfo is reintegrated into a target with subtree
+# mergeinfo.  Deliberately written in a style that works with the 1.6
+# testsuite.
+@Issue(3957)
+def no_source_subtree_mergeinfo(sbox):
+  "source without subtree mergeinfo"
+
+  sbox.build()
+  wc_dir=sbox.wc_dir
+
+  svntest.main.file_write(os.path.join(wc_dir, 'A', 'B', 'E', 'alpha'),
+                          'AAA\n' +
+                          'BBB\n' +
+                          'CCC\n')
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Create branch-1
+  svntest.main.run_svn(None, 'copy',
+                       os.path.join(wc_dir, 'A', 'B'),
+                       os.path.join(wc_dir, 'A', 'B1'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+
+  # Create branch-1
+  svntest.main.run_svn(None, 'copy',
+                       os.path.join(wc_dir, 'A', 'B'),
+                       os.path.join(wc_dir, 'A', 'B2'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+
+  # Change on trunk
+  svntest.main.file_write(os.path.join(wc_dir, 'A', 'B', 'E', 'alpha'),
+                          'AAAxx\n' +
+                          'BBB\n' +
+                          'CCC\n')
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+
+  # Change on branch-1
+  svntest.main.file_write(os.path.join(wc_dir, 'A', 'B1', 'E', 'alpha'),
+                          'AAA\n' +
+                          'BBBxx\n' +
+                          'CCC\n')
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+
+  # Change on branch-2
+  svntest.main.file_write(os.path.join(wc_dir, 'A', 'B2', 'E', 'alpha'),
+                          'AAA\n' +
+                          'BBB\n' +
+                          'CCCxx\n')
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Merge trunk to branch-1
+  svntest.main.run_svn(None, 'merge', '^/A/B', os.path.join(wc_dir, 'A', 'B1'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Reintegrate branch-1 subtree to trunk subtree
+  svntest.main.run_svn(None, 'merge', '--reintegrate',
+                       '^/A/B1/E', os.path.join(wc_dir, 'A', 'B', 'E'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Merge trunk to branch-2
+  svntest.main.run_svn(None, 'merge', '^/A/B', os.path.join(wc_dir, 'A', 'B2'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Reverse merge branch-1 subtree to branch-2 subtree, this removes
+  # the subtree mergeinfo from branch 2
+  svntest.main.run_svn(None, 'merge', '-r8:2',
+                       '^/A/B1/E', os.path.join(wc_dir, 'A', 'B2', 'E'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Verify that merge results in no subtree mergeinfo
+  svntest.actions.run_and_verify_svn(None, [], [], 'propget', 'svn:mergeinfo',
+                                     sbox.repo_url + '/A/B2/E')
+
+  # Merge trunk to branch-2
+  svntest.main.run_svn(None, 'merge', '^/A/B', os.path.join(wc_dir, 'A', 'B2'))
+  svntest.main.run_svn(None, 'commit', '-m', 'log message', wc_dir)
+  svntest.main.run_svn(None, 'update', wc_dir)
+
+  # Verify that there is still no subtree mergeinfo
+  svntest.actions.run_and_verify_svn(None, [], [], 'propget', 'svn:mergeinfo',
+                                     sbox.repo_url + '/A/B2/E')
+
+  # Reintegrate branch-2 to trunk, this fails in 1.6.x from 1.6.13.
+  # The error message states revisions /A/B/E:3-11 are missing from
+  # /A/B2/E and yet the mergeinfo on /A/B2 is /A/B:3-11 and /A/B2/E
+  # has no mergeinfo.
+  expected_output = wc.State(os.path.join(wc_dir, 'A', 'B'), {
+      'E'       : Item(status=' U'),
+      'E/alpha' : Item(status='U '),
+      })
+  expected_mergeinfo = wc.State(os.path.join(wc_dir, 'A', 'B'), {
+      '' : Item(status=' U'),
+      })
+  expected_elision = wc.State(os.path.join(wc_dir, 'A', 'B'), {
+      })
+  expected_disk = wc.State('', {
+      ''        : Item(props={SVN_PROP_MERGEINFO : '/A/B2:3-12'}),
+      'E'       : Item(),
+      'E/alpha' : Item("AAA\n" +
+                       "BBB\n" +
+                       "CCCxx\n"),
+      'E/beta'  : Item("This is the file 'beta'.\n"),
+      'F'       : Item(),
+      'lambda'  : Item("This is the file 'lambda'.\n"),
+      })
+  expected_skip = wc.State(os.path.join(wc_dir, 'A', 'B'), {
+      })
+  svntest.actions.run_and_verify_merge(os.path.join(wc_dir, 'A', 'B'),
+                                       None, None, '^/A/B2', None,
+                                       expected_output, expected_mergeinfo,
+                                       expected_elision, expected_disk,
+                                       None, expected_skip,
+                                       None, None, None, None, None,
+                                       1, 1, '--reintegrate',
+                                       os.path.join(wc_dir, 'A', 'B'))
+  # For 1.6 testsuite use:
+  # svntest.actions.run_and_verify_merge(os.path.join(wc_dir, 'A', 'B'),
+  #                                      None, None, '^/A/B2',
+  #                                      expected_output,
+  #                                      expected_disk,
+  #                                      None, expected_skip,
+  #                                      None, None, None, None, None,
+  #                                      1, 1, '--reintegrate')
+
+#----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
+@Issue(3961)
+@XFail()
+def reintegrate_replaced_source(sbox):
+  "reintegrate a replaced source branch"
+
+  # Make A_COPY branch in r2, and do a few more commits to A in r3-6.
+  sbox.build()
+  wc_dir = sbox.wc_dir
+  expected_disk, expected_status = set_up_branch(sbox)
+
+  A_path         = os.path.join(sbox.wc_dir, "A")
+  A_COPY_path    = os.path.join(sbox.wc_dir, "A_COPY")
+  beta_COPY_path = os.path.join(sbox.wc_dir, "A_COPY", "B", "E", "beta")
+  mu_COPY_path   = os.path.join(sbox.wc_dir, "A_COPY", "mu")  
+
+  # Using cherrypick merges, simulate a series of sync merges from A to
+  # A_COPY with a replace of A_COPY along the way.
+  #
+  # r6 - Merge r3 from A to A_COPY
+  svntest.main.run_svn(None, 'up', wc_dir)
+  svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A', A_COPY_path,
+                       '-c3')
+  svntest.main.run_svn(None, 'ci', '-m', 'Merge r3 from A to A_COPY', wc_dir)
+
+  # r8 - Merge r4 from A to A_COPY
+  svntest.main.run_svn(None, 'up', wc_dir)
+  svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A', A_COPY_path,
+                       '-c4')
+  svntest.main.run_svn(None, 'ci', '-m', 'Merge r4 from A to A_COPY', wc_dir)
+
+  # r9 - Merge r5 from A to A_COPY. Make an additional edit to
+  # A_COPY/B/E/beta.
+  svntest.main.run_svn(None, 'up', wc_dir)
+  svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A', A_COPY_path,
+                       '-c5')
+  svntest.main.file_write(beta_COPY_path, "Branch edit mistake.\n")
+  svntest.main.run_svn(None, 'ci', '-m', 'Merge r5 from A to A_COPY', wc_dir)
+
+  # r10 - Delete A_COPY and replace it with A_COPY@8. This removes the edit
+  # we made above in r9 to A_COPY/B/E/beta.
+  svntest.main.run_svn(None, 'up', wc_dir)
+  svntest.main.run_svn(None, 'delete', A_COPY_path)
+  svntest.main.run_svn(None, 'copy', sbox.repo_url + '/A_COPY@8',
+                       A_COPY_path)
+  svntest.main.run_svn(None, 'ci', '-m', 'Replace A_COPY with A_COPY@8',
+                       wc_dir)
+
+  # r11 - Make an edit on A_COPY/mu.
+  svntest.main.file_write(mu_COPY_path, "Branch edit.\n")
+  svntest.main.run_svn(None, 'ci', '-m', 'Branch edit',
+                       wc_dir)
+
+  # r12 - Do a final sync merge of A to A_COPY in preparation for
+  # reintegration.  
+  svntest.main.run_svn(None, 'up', wc_dir)
+  svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A', A_COPY_path)
+  svntest.main.run_svn(None, 'ci', '-m', 'Sycn A_COPY with A', wc_dir)
+
+  # Reintegrate A_COPY to A.  The resulting mergeinfo should be
+  # '/A_COPY:2-8,10-12' because of the replacement which removed /A_COPY:9
+  # from the reintegrate source's history.
+  svntest.main.run_svn(None, 'up', wc_dir)
+  expected_output = wc.State(A_path, {
+    'mu' : Item(status='U '),
+    })
+  expected_mergeinfo_output = wc.State(A_path, {
+    ''   : Item(status=' U'),
+    })
+  expected_elision_output = wc.State(A_path, {
+    })
+  expected_status = wc.State(A_path, {
+    ''          : Item(status=' M'),
+    'B'         : Item(status='  '),
+    'mu'        : Item(status='M '),
+    'B/E'       : Item(status='  '),
+    'B/E/alpha' : Item(status='  '),
+    'B/E/beta'  : Item(status='  '),
+    'B/lambda'  : Item(status='  '),
+    'B/F'       : Item(status='  '),
+    'C'         : Item(status='  '),
+    'D'         : Item(status='  '),
+    'D/G'       : Item(status='  '),
+    'D/G/pi'    : Item(status='  '),
+    'D/G/rho'   : Item(status='  '),
+    'D/G/tau'   : Item(status='  '),
+    'D/gamma'   : Item(status='  '),
+    'D/H'       : Item(status='  '),
+    'D/H/chi'   : Item(status='  '),
+    'D/H/psi'   : Item(status='  '),
+    'D/H/omega' : Item(status='  '),
+    })
+  expected_status.tweak(wc_rev=12)
+  expected_disk = wc.State('', {
+    # This test currently fails because the resulting mergeinfo is
+    # /A_COPY:2-12, even though the changes in A_COPY:9 are *not*
+    # present on A.
+    ''          : Item(props={SVN_PROP_MERGEINFO : '/A_COPY:2-8,10-12'}),
+    'B'         : Item(),
+    'mu'        : Item("Branch edit.\n"),
+    'B/E'       : Item(),
+    'B/E/alpha' : Item("This is the file 'alpha'.\n"),
+    'B/E/beta'  : Item("New content"),
+    'B/lambda'  : Item("This is the file 'lambda'.\n"),
+    'B/F'       : Item(),
+    'C'         : Item(),
+    'D'         : Item(),
+    'D/G'       : Item(),
+    'D/G/pi'    : Item("This is the file 'pi'.\n"),
+    'D/G/rho'   : Item("New content"),
+    'D/G/tau'   : Item("This is the file 'tau'.\n"),
+    'D/gamma'   : Item("This is the file 'gamma'.\n"),
+    'D/H'       : Item(),
+    'D/H/chi'   : Item("This is the file 'chi'.\n"),
+    'D/H/psi'   : Item("New content"),
+    'D/H/omega' : Item("New content"),
+    })
+  expected_skip = wc.State(A_path, { })
+  svntest.actions.run_and_verify_merge(A_path, None, None,
+                                       sbox.repo_url + '/A_COPY', None,
+                                       expected_output,
+                                       expected_mergeinfo_output,
+                                       expected_elision_output,
+                                       expected_disk,
+                                       expected_status,
+                                       expected_skip,
+                                       [], None, None, None, None, True, True,
+                                       '--reintegrate', A_path)
+  
 ########################################################################
 # Run the tests
 
@@ -2361,6 +2623,8 @@ test_list = [ None,
               added_subtrees_with_mergeinfo_break_reintegrate,
               two_URL_merge_removes_valid_mergeinfo_from_target,
               reintegrate_creates_bogus_mergeinfo,
+              no_source_subtree_mergeinfo,
+              reintegrate_replaced_source,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/merge_tests.py Tue Jul 19 23:05:44 2011
@@ -12023,7 +12023,7 @@ def subtree_source_missing_in_requested_
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  # Make a branche to merge to.
+  # Make a branch to merge to.
   wc_disk, wc_status = set_up_branch(sbox, False, 1)
 
   # Some paths we'll care about.
@@ -12033,16 +12033,14 @@ def subtree_source_missing_in_requested_
   psi_COPY_path   = os.path.join(wc_dir, "A_COPY", "D", "H", "psi")
   omega_COPY_path = os.path.join(wc_dir, "A_COPY", "D", "H", "omega")
 
-  # r7 Delete a A/D/H/psi.
+  # r7 Delete A/D/H/psi.
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'delete', psi_path)
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m', 'delete psi', wc_dir)
+  sbox.simple_commit(message='delete psi')
 
   # r8 - modify A/D/H/omega.
   svntest.main.file_write(os.path.join(omega_path), "Even newer content")
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m', 'modify omega', wc_dir)
+  sbox.simple_commit(message='modify omega')
 
   # r9 - Merge r3 to A_COPY/D/H/psi
   expected_output = expected_merge_output(
@@ -12052,9 +12050,7 @@ def subtree_source_missing_in_requested_
                                      'merge', '-c', '3',
                                      sbox.repo_url + '/A/D/H/psi@3',
                                      psi_COPY_path)
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m', 'merge r3 to A_COPY/D/H/psi',
-                                     wc_dir)
+  sbox.simple_commit(message='merge r3 to A_COPY/D/H/psi')
 
   # r10 - Merge r6 to A_COPY/D/H/omega.
   expected_output = expected_merge_output(
@@ -12064,9 +12060,7 @@ def subtree_source_missing_in_requested_
                                      'merge', '-c', '6',
                                      sbox.repo_url + '/A/D/H/omega',
                                      omega_COPY_path)
-  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
-                                     'merge r6 to A_COPY',
-                                     wc_dir)
+  sbox.simple_commit(message='merge r6 to A_COPY')
   svntest.actions.run_and_verify_svn(None, exp_noop_up_out(10), [], 'up',
                                      wc_dir)
 
@@ -12093,17 +12087,14 @@ def subtree_source_missing_in_requested_
                                      'merge', '-c', '8',
                                      sbox.repo_url + '/A',
                                      A_COPY_path, '--record-only')
-  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
-                                     'merge r8 to A_COPY/D/H/omega',
-                                     wc_dir)
+  sbox.simple_commit(message='merge r8 to A_COPY/D/H/omega')
   svntest.actions.run_and_verify_svn(None, exp_noop_up_out(11), [], 'up',
                                      wc_dir)
 
   # r12 - modify A/D/H/omega yet again.
   svntest.main.file_write(os.path.join(omega_path),
                           "Now with fabulous new content!")
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m', 'modify omega', wc_dir)
+  sbox.simple_commit(message='modify omega')
 
   # r13 - Merge all available revs to A_COPY/D/H/omega.
   expected_output = expected_merge_output(
@@ -12113,9 +12104,7 @@ def subtree_source_missing_in_requested_
                                      'merge',
                                      sbox.repo_url + '/A/D/H/omega',
                                      omega_COPY_path)
-  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
-                                     'cherry harvest to A_COPY/D/H/omega',
-                                     wc_dir)
+  sbox.simple_commit(message='cherry harvest to A_COPY/D/H/omega')
   svntest.actions.run_and_verify_svn(None, exp_noop_up_out(13), [], 'up',
                                      wc_dir)
 
@@ -12276,9 +12265,7 @@ def subtree_source_missing_in_requested_
                                      'merge', '-c', '12',
                                      sbox.repo_url + '/A',
                                      A_COPY_path, '--record-only')
-  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
-                                     'Merge r12 to A_COPY',
-                                     wc_dir)
+  sbox.simple_commit(message='Merge r12 to A_COPY')
 
   # Update A_COPY/D/H/rho back to r13 so it's mergeinfo doesn't include
   # r12.  Then merge a range, -r6:12 which should delete a subtree
@@ -13759,14 +13746,12 @@ def subtree_gets_changes_even_if_ultimat
 
   # r7: Make an additional text mod to A/D/H/psi.
   svntest.main.file_write(psi_path, "Even newer content")
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m', 'mod psi', wc_dir)
+  sbox.simple_commit(message='mod psi')
 
   # r8: Delete A/D/H/psi.
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'delete', psi_path)
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m', 'delete psi', wc_dir)
+  sbox.simple_commit(message='delete psi')
 
   # Update WC before merging so mergeinfo elision and inheritance
   # occur smoothly.
@@ -13812,11 +13797,8 @@ def subtree_gets_changes_even_if_ultimat
                           ['G    ' + psi_COPY_path + '\n',
                            ' G   ' + psi_COPY_path + '\n',]),
     [], 'merge', '-c-7', sbox.repo_url + '/A/D/H/psi@7', psi_COPY_path)
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'ci', '-m',
-                                     'merge -c3,7 from A/D/H,' \
-                                     'reverse merge -c-7 from A/D/H/psi',
-                                     wc_dir)
+  sbox.simple_commit(message='merge -c3,7 from A/D/H,' \
+                             'reverse merge -c-7 from A/D/H/psi')
 
   # Merge all available revisions from A/D/H to A_COPY/D/H.  This merge
   # ultimately tries to delete A_COPY/D/H/psi, but first it should merge

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/prop_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/prop_tests.py Tue Jul 19 23:05:44 2011
@@ -138,6 +138,7 @@ def commit_props(sbox):
 
 #----------------------------------------------------------------------
 
+@Issue(3951)
 def update_props(sbox):
   "receive properties via update"
 

Propchange: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/redirect_tests.py
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/stat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/stat_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/stat_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/stat_tests.py Tue Jul 19 23:05:44 2011
@@ -797,13 +797,14 @@ def status_on_unversioned_dotdot(sbox):
   sbox.build(read_only = True)
   wc_dir = sbox.wc_dir
 
-  new_dir = os.path.join(wc_dir, 'new_dir')
-  new_subdir = os.path.join(new_dir, 'new_subdir')
+  new_dir = sbox.ospath('new')
+  new_sub = sbox.ospath('new/sub')
+  new_subsub = sbox.ospath('new/sub/sub')
   os.mkdir(new_dir)
-  os.mkdir(new_subdir)
-
-  os.chdir(new_subdir)
+  os.mkdir(new_sub)
+  os.mkdir(new_subsub)
 
+  os.chdir(new_subsub)
   exit_code, out, err = svntest.main.run_svn(1, 'st', '..')
   for line in err:
     if line.find('svn: warning: W155007: \'..\' is not a working copy') != -1:

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnadmin_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnadmin_tests.py Tue Jul 19 23:05:44 2011
@@ -465,7 +465,7 @@ def fsfs_file(repo_dir, kind, rev):
     if svntest.main.options.fsfs_sharding is None:
       return os.path.join(repo_dir, 'db', kind, '0', rev)
     else:
-      shard = int(rev) // svntest.main.fsfs_sharding
+      shard = int(rev) // svntest.main.options.fsfs_sharding
       path = os.path.join(repo_dir, 'db', kind, str(shard), rev)
 
       if svntest.main.options.fsfs_packing is None or kind == 'revprops':
@@ -970,7 +970,7 @@ def verify_with_invalid_revprops(sbox):
 
   if svntest.verify.verify_outputs(
     "Output of 'svnadmin verify' is unexpected.", None, errput, None,
-    ".*Malformed file"):
+    ".*svnadmin: E200002:.*"):
     raise svntest.Failure
 
 #----------------------------------------------------------------------
@@ -1320,6 +1320,7 @@ text
 # However, the verification triggered by this test is in the repos layer
 # so it will trigger with either backend anyway.
 @SkipUnless(svntest.main.is_fs_type_fsfs)
+@SkipUnless(svntest.main.server_enforces_UTF8_fspaths_in_verify)
 def verify_non_utf8_paths(sbox):
   "svnadmin verify with non-UTF-8 paths"
 

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnserveautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnserveautocheck.sh?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnserveautocheck.sh (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnserveautocheck.sh Tue Jul 19 23:05:44 2011
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #
 #
 # Licensed to the Apache Software Foundation (ASF) under one
@@ -32,34 +32,36 @@
 # svnserveautocheck".  Like "make check", you can specify further options
 # like "make svnserveautocheck FS_TYPE=bdb TESTS=subversion/tests/cmdline/basic.py".
 
+PYTHON=${PYTHON:-python}
+
 SCRIPTDIR=$(dirname $0)
 SCRIPT=$(basename $0)
 
 set +e
 
-trap trap_cleanup SIGHUP SIGTERM SIGINT
+trap trap_cleanup HUP TERM INT
 
 # Ensure the server uses a known locale.
 LC_ALL=C
 export LC_ALL
 
-function really_cleanup() {
+really_cleanup() {
     if [ -e  "$SVNSERVE_PID" ]; then
         kill $(cat "$SVNSERVE_PID")
         rm -f $SVNSERVE_PID
     fi
 }
 
-function trap_cleanup() {
+trap_cleanup() {
     really_cleanup
     exit 1
 }
 
-function say() {
+say() {
   echo "$SCRIPT: $*"
 }
 
-function fail() {
+fail() {
   say $*
   exit 1
 }
@@ -67,9 +69,9 @@ function fail() {
 if [ -x subversion/svn/svn ]; then
   ABS_BUILDDIR=$(pwd)
 elif [ -x $SCRIPTDIR/../../svn/svn ]; then
-  pushd $SCRIPTDIR/../../../ >/dev/null
+  cd $SCRIPTDIR/../../../
   ABS_BUILDDIR=$(pwd)
-  popd >/dev/null
+  cd - >/dev/null
 else
   fail "Run this script from the root of Subversion's build tree!"
 fi
@@ -84,9 +86,17 @@ SERVER_CMD="$ABS_BUILDDIR/subversion/svn
 
 rm -f $SVNSERVE_PID
 
-SVNSERVE_PORT=$(($RANDOM+1024))
+random_port() {
+  if [ -n "$BASH_VERSION" ]; then
+    echo $(($RANDOM+1024))
+  else
+    $PYTHON -c 'import random; print random.randint(1024, 2**16-1)'
+  fi
+}
+
+SVNSERVE_PORT=$(random_port)
 while netstat -an | grep $SVNSERVE_PORT | grep 'LISTEN'; do
-  SVNSERVE_PORT=$(($RANDOM+1024))
+  SVNSERVE_PORT=$(random_port)
 done
 
 if [ "$THREADED" != "" ]; then
@@ -100,16 +110,16 @@ fi
             $SVNSERVE_ARGS &
 
 BASE_URL=svn://127.0.0.1:$SVNSERVE_PORT
-if [ $# == 0 ]; then
+if [ $# = 0 ]; then
   time make check "BASE_URL=$BASE_URL"
   r=$?
 else
-  pushd "$ABS_BUILDDIR/subversion/tests/cmdline/" >/dev/null
+  cd "$ABS_BUILDDIR/subversion/tests/cmdline/"
   TEST="$1"
   shift
   time "./${TEST}_tests.py" "--url=$BASE_URL" $*
   r=$?
-  popd >/dev/null
+  cd - > /dev/null
 fi
 
 really_cleanup

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnsync_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnsync_tests.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnsync_tests.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svnsync_tests.py Tue Jul 19 23:05:44 2011
@@ -28,7 +28,7 @@
 import sys, os
 
 # Test suite-specific modules
-import locale
+import locale, re
 
 # Our testing module
 import svntest
@@ -76,6 +76,9 @@ def run_sync(url, source_url=None, expec
     args.append(source_prop_encoding)
 
   exit_code, output, errput = svntest.main.run_svnsync(*args)
+  for index, line in enumerate(errput[:]):
+    if re.search("warning: W200007", line):
+      del errput[index]
   if errput:
     if expected_error is None:
       raise SVNUnexpectedStderr(errput)
@@ -101,6 +104,9 @@ def run_copy_revprops(url, source_url, e
     args.append(source_prop_encoding)
 
   exit_code, output, errput = svntest.main.run_svnsync(*args)
+  for index, line in enumerate(errput[:]):
+    if re.search("warning: W200007", line):
+      del errput[index]
   if errput:
     if expected_error is None:
       raise SVNUnexpectedStderr(errput)
@@ -126,6 +132,9 @@ def run_init(dst_url, src_url, source_pr
     args.append(source_prop_encoding)
 
   exit_code, output, errput = svntest.main.run_svnsync(*args)
+  for index, line in enumerate(errput[:]):
+    if re.search("warning: W200007", line):
+      del errput[index]
   if errput:
     raise SVNUnexpectedStderr(errput)
   if output != ['Copied properties for revision 0.\n']:

Modified: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svntest/actions.py?rev=1148581&r1=1148580&r2=1148581&view=diff
==============================================================================
--- subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svntest/actions.py Tue Jul 19 23:05:44 2011
@@ -350,11 +350,37 @@ def run_and_verify_svnrdump(dumpfile_con
   if sys.platform == 'win32':
     err = map(lambda x : x.replace('\r\n', '\n'), err)
 
+  for index, line in enumerate(err[:]):
+    if re.search("warning: W200007", line):
+      del err[index]
+
   verify.verify_outputs("Unexpected output", output, err,
                         expected_stdout, expected_stderr)
   verify.verify_exit_code("Unexpected return code", exit_code, expected_exit)
   return output
 
+
+def run_and_verify_svnmucc(message, expected_stdout, expected_stderr,
+                           *varargs):
+  """Run svnmucc command and check its output"""
+
+  expected_exit = 0
+  if expected_stderr is not None and expected_stderr != []:
+    expected_exit = 1
+  return run_and_verify_svnmucc2(message, expected_stdout, expected_stderr,
+                                 expected_exit, *varargs)
+
+def run_and_verify_svnmucc2(message, expected_stdout, expected_stderr,
+                            expected_exit, *varargs):
+  """Run svnmucc command and check its output and exit code."""
+
+  exit_code, out, err = main.run_svnmucc(*varargs)
+  verify.verify_outputs("Unexpected output", out, err,
+                        expected_stdout, expected_stderr)
+  verify.verify_exit_code(message, exit_code, expected_exit)
+  return exit_code, out, err
+
+
 def load_repo(sbox, dumpfile_path = None, dump_str = None,
               bypass_prop_validation = False):
   "Loads the dumpfile into sbox"
@@ -921,7 +947,7 @@ def run_and_verify_info(expected_infos, 
         if value is not None and key not in actual:
           raise main.SVNLineUnequal("Expected key '%s' (with value '%s') "
                                     "not found" % (key, value))
-        if value is not None and not re.search(value, actual[key]):
+        if value is not None and not re.match(value, actual[key]):
           raise verify.SVNUnexpectedStdout("Values of key '%s' don't match:\n"
                                            "  Expected: '%s' (regex)\n"
                                            "  Found:    '%s' (string)\n"

Propchange: subversion/branches/gpg-agent-password-store/subversion/tests/cmdline/svntest/err.py
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message