subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
Subject svn commit: r1344934 [3/4] - in /subversion/branches/ev2-export: ./ build/ build/generator/ subversion/bindings/javahl/native/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_delta/ subversion/libsvn_fs_fs/ s...
Date Thu, 31 May 2012 22:29:26 GMT
Modified: subversion/branches/ev2-export/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/cl.h?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/cl.h (original)
+++ subversion/branches/ev2-export/subversion/svn/cl.h Thu May 31 22:29:24 2012
@@ -163,7 +163,6 @@ typedef struct svn_cl__opt_state_t
   svn_boolean_t no_unlock;
 
   const char *message;           /* log message */
-  const char *ancestor_path;     /* ### todo: who sets this? */
   svn_boolean_t force;           /* be more forceful, as in "svn rm -f ..." */
   svn_boolean_t force_log;       /* force validity of a suspect log msg file */
   svn_boolean_t incremental;     /* yield output suitable for concatenation */
@@ -183,16 +182,24 @@ typedef struct svn_cl__opt_state_t
   svn_boolean_t xml;             /* output in xml, e.g., "svn log --xml" */
   svn_boolean_t no_ignore;       /* disregard default ignores & svn:ignore's */
   svn_boolean_t no_auth_cache;   /* do not cache authentication information */
+  struct
+    {
+  const char *diff_cmd;          /* the external diff command to use */
+  svn_boolean_t internal_diff;    /* override diff_cmd in config file */
   svn_boolean_t no_diff_deleted; /* do not show diffs for deleted files */
-  svn_boolean_t ignore_properties; /* ignore properties */
   svn_boolean_t show_copies_as_adds; /* do not diff copies with their source */
   svn_boolean_t notice_ancestry; /* notice ancestry for diff-y operations */
+  svn_boolean_t summarize;       /* create a summary of a diff */
+  svn_boolean_t use_git_diff_format; /* Use git's extended diff format */
+  svn_boolean_t ignore_properties; /* ignore properties */
+  svn_boolean_t properties_only;   /* Show properties only */
+  svn_boolean_t patch_compatible; /* Output compatible with GNU patch */
+    } diff;
   svn_boolean_t ignore_ancestry; /* ignore ancestry for merge-y operations */
   svn_boolean_t ignore_externals;/* ignore externals definitions */
   svn_boolean_t stop_on_copy;    /* don't cross copies during processing */
   svn_boolean_t dry_run;         /* try operation but make no changes */
   svn_boolean_t revprop;         /* operate on a revision property */
-  const char *diff_cmd;          /* the external diff command to use */
   const char *merge_cmd;         /* the external merge command to use */
   const char *editor_cmd;        /* the external editor command to use */
   svn_boolean_t record_only;     /* whether to record mergeinfo */
@@ -205,7 +212,6 @@ typedef struct svn_cl__opt_state_t
   svn_boolean_t autoprops;       /* enable automatic properties */
   svn_boolean_t no_autoprops;    /* disable automatic properties */
   const char *native_eol;        /* override system standard eol marker */
-  svn_boolean_t summarize;       /* create a summary of a diff */
   svn_boolean_t remove;          /* deassociate a changelist */
   apr_array_header_t *changelists; /* changelist filters */
   const char *changelist;        /* operate on this changelist
@@ -229,12 +235,8 @@ typedef struct svn_cl__opt_state_t
   svn_boolean_t ignore_whitespace; /* don't account for whitespace when
                                       patching */
   svn_boolean_t show_diff;        /* produce diff output (maps to --diff) */
-  svn_boolean_t internal_diff;    /* override diff_cmd in config file */
-  svn_boolean_t use_git_diff_format; /* Use git's extended diff format */
-  svn_boolean_t patch_compatible; /* Output compatible with GNU patch */
   svn_boolean_t allow_mixed_rev; /* Allow operation on mixed-revision WC */
   svn_boolean_t include_externals; /* Recurses (in)to file & dir externals */
-  svn_boolean_t properties_only;   /* Show properties only */
 } svn_cl__opt_state_t;
 
 

Modified: subversion/branches/ev2-export/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/diff-cmd.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/ev2-export/subversion/svn/diff-cmd.c Thu May 31 22:29:24 2012
@@ -172,9 +172,9 @@ svn_cl__diff(apr_getopt_t *os,
   apr_pool_t *iterpool;
   svn_boolean_t pegged_diff = FALSE;
   svn_boolean_t show_copies_as_adds =
-    opt_state->patch_compatible ? TRUE : opt_state->show_copies_as_adds;
+    opt_state->diff.patch_compatible || opt_state->diff.show_copies_as_adds;
   svn_boolean_t ignore_properties =
-    opt_state->patch_compatible ? TRUE : opt_state->ignore_properties;
+    opt_state->diff.patch_compatible || opt_state->diff.ignore_properties;
   int i;
   const svn_client_diff_summarize_func_t summarize_func =
     (opt_state->xml ? summarize_xml : summarize_regular);
@@ -194,7 +194,7 @@ svn_cl__diff(apr_getopt_t *os,
       svn_stringbuf_t *sb;
 
       /* Check that the --summarize is passed as well. */
-      if (!opt_state->summarize)
+      if (!opt_state->diff.summarize)
         return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
                                 _("'--xml' option only valid with "
                                   "'--summarize' option"));
@@ -349,14 +349,14 @@ svn_cl__diff(apr_getopt_t *os,
           else
             target2 = svn_dirent_join(new_target, path, iterpool);
 
-          if (opt_state->summarize)
+          if (opt_state->diff.summarize)
             SVN_ERR(svn_client_diff_summarize2
                     (target1,
                      &opt_state->start_revision,
                      target2,
                      &opt_state->end_revision,
                      opt_state->depth,
-                     ! opt_state->notice_ancestry,
+                     ! opt_state->diff.notice_ancestry,
                      opt_state->changelists,
                      summarize_func, &target1,
                      ctx, iterpool));
@@ -369,13 +369,13 @@ svn_cl__diff(apr_getopt_t *os,
                      &(opt_state->end_revision),
                      NULL,
                      opt_state->depth,
-                     ! opt_state->notice_ancestry,
-                     opt_state->no_diff_deleted,
+                     ! opt_state->diff.notice_ancestry,
+                     opt_state->diff.no_diff_deleted,
                      show_copies_as_adds,
                      opt_state->force,
                      ignore_properties,
-                     opt_state->properties_only,
-                     opt_state->use_git_diff_format,
+                     opt_state->diff.properties_only,
+                     opt_state->diff.use_git_diff_format,
                      svn_cmdline_output_encoding(pool),
                      outstream,
                      errstream,
@@ -396,14 +396,14 @@ svn_cl__diff(apr_getopt_t *os,
             peg_revision.kind = svn_path_is_url(path)
               ? svn_opt_revision_head : svn_opt_revision_working;
 
-          if (opt_state->summarize)
+          if (opt_state->diff.summarize)
             SVN_ERR(svn_client_diff_summarize_peg2
                     (truepath,
                      &peg_revision,
                      &opt_state->start_revision,
                      &opt_state->end_revision,
                      opt_state->depth,
-                     ! opt_state->notice_ancestry,
+                     ! opt_state->diff.notice_ancestry,
                      opt_state->changelists,
                      summarize_func, &truepath,
                      ctx, iterpool));
@@ -416,13 +416,13 @@ svn_cl__diff(apr_getopt_t *os,
                      &opt_state->end_revision,
                      NULL,
                      opt_state->depth,
-                     ! opt_state->notice_ancestry,
-                     opt_state->no_diff_deleted,
+                     ! opt_state->diff.notice_ancestry,
+                     opt_state->diff.no_diff_deleted,
                      show_copies_as_adds,
                      opt_state->force,
                      ignore_properties,
-                     opt_state->properties_only,
-                     opt_state->use_git_diff_format,
+                     opt_state->diff.properties_only,
+                     opt_state->diff.use_git_diff_format,
                      svn_cmdline_output_encoding(pool),
                      outstream,
                      errstream,

Modified: subversion/branches/ev2-export/subversion/svn/import-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/import-cmd.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/import-cmd.c (original)
+++ subversion/branches/ev2-export/subversion/svn/import-cmd.c Thu May 31 22:29:24 2012
@@ -114,12 +114,13 @@ svn_cl__import(apr_getopt_t *os,
 
   SVN_ERR(svn_cl__cleanup_log_msg
           (ctx->log_msg_baton3,
-           svn_client_import4(path,
+           svn_client_import5(path,
                               url,
                               opt_state->depth,
                               opt_state->no_ignore,
                               opt_state->force,
                               opt_state->revprop_table,
+                              NULL, NULL,  /* filter callback / baton */
                               (opt_state->quiet
                                ? NULL : svn_cl__print_commit_info),
                               NULL,

Modified: subversion/branches/ev2-export/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/log-cmd.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/log-cmd.c (original)
+++ subversion/branches/ev2-export/subversion/svn/log-cmd.c Thu May 31 22:29:24 2012
@@ -80,6 +80,67 @@ struct log_receiver_baton
   "------------------------------------------------------------------------\n"
 
 
+/* Display a diff of the subtree TARGET_PATH_OR_URL@TARGET_PEG_REVISION as
+ * it changed in the revision that LOG_ENTRY describes.
+ *
+ * Restrict the diff to depth DEPTH.  Pass DIFF_EXTENSIONS along to the diff
+ * subroutine.
+ *
+ * Write the diff to OUTSTREAM and write any stderr output to ERRSTREAM.
+ * ### How is exit code handled? 0 and 1 -> SVN_NO_ERROR, else an svn error?
+ * ### Should we get rid of ERRSTREAM and use svn_error_t instead?
+ */
+static svn_error_t *
+display_diff(const svn_log_entry_t *log_entry,
+             const char *target_path_or_url,
+             const svn_opt_revision_t *target_peg_revision,
+             svn_depth_t depth,
+             const char *diff_extensions,
+             svn_stream_t *outstream,
+             svn_stream_t *errstream,
+             svn_client_ctx_t *ctx,
+             apr_pool_t *pool)
+{
+  apr_array_header_t *diff_options;
+  svn_opt_revision_t start_revision;
+  svn_opt_revision_t end_revision;
+
+  /* Fall back to "" to get options initialized either way. */
+  if (diff_extensions)
+    diff_options = svn_cstring_split(diff_extensions, " \t\n\r",
+                                     TRUE, pool);
+  else
+    diff_options = NULL;
+
+  start_revision.kind = svn_opt_revision_number;
+  start_revision.value.number = log_entry->revision - 1;
+  end_revision.kind = svn_opt_revision_number;
+  end_revision.value.number = log_entry->revision;
+
+  SVN_ERR(svn_stream_puts(outstream, _("\n")));
+  SVN_ERR(svn_client_diff_peg6(diff_options,
+                               target_path_or_url,
+                               target_peg_revision,
+                               &start_revision, &end_revision,
+                               NULL,
+                               depth,
+                               FALSE, /* ignore ancestry */
+                               TRUE, /* no diff deleted */
+                               FALSE, /* show copies as adds */
+                               FALSE, /* ignore content type */
+                               FALSE, /* ignore prop diff */
+                               FALSE, /* properties only */
+                               FALSE, /* use git diff format */
+                               svn_cmdline_output_encoding(pool),
+                               outstream,
+                               errstream,
+                               NULL,
+                               ctx, pool));
+  SVN_ERR(svn_stream_puts(outstream, _("\n")));
+  return SVN_NO_ERROR;
+}
+
+
 /* Implement `svn_log_entry_receiver_t', printing the logs in
  * a human-readable and machine-parseable format.
  *
@@ -282,45 +343,16 @@ log_entry_receiver(void *baton,
     {
       svn_stream_t *outstream;
       svn_stream_t *errstream;
-      apr_array_header_t *diff_options;
-      svn_opt_revision_t start_revision;
-      svn_opt_revision_t end_revision;
 
       SVN_ERR(svn_stream_for_stdout(&outstream, pool));
       SVN_ERR(svn_stream_for_stderr(&errstream, pool));
 
-      /* Fall back to "" to get options initialized either way. */
-      if (lb->diff_extensions)
-        diff_options = svn_cstring_split(lb->diff_extensions, " \t\n\r",
-                                         TRUE, pool);
-      else
-        diff_options = NULL;
+      SVN_ERR(display_diff(log_entry,
+                           lb->target_path_or_url, &lb->target_peg_revision,
+                           lb->depth, lb->diff_extensions,
+                           outstream, errstream,
+                           lb->ctx, pool));
 
-      start_revision.kind = svn_opt_revision_number;
-      start_revision.value.number = log_entry->revision - 1;
-      end_revision.kind = svn_opt_revision_number;
-      end_revision.value.number = log_entry->revision;
-
-      SVN_ERR(svn_stream_puts(outstream, _("\n")));
-      SVN_ERR(svn_client_diff_peg6(diff_options,
-                                   lb->target_path_or_url,
-                                   &lb->target_peg_revision,
-                                   &start_revision, &end_revision,
-                                   NULL,
-                                   lb->depth,
-                                   FALSE, /* ignore ancestry */
-                                   TRUE, /* no diff deleted */
-                                   FALSE, /* show copies as adds */
-                                   FALSE, /* ignore content type */
-                                   FALSE, /* ignore prop diff */
-                                   FALSE, /* properties only */
-                                   FALSE, /* use git diff format */
-                                   svn_cmdline_output_encoding(pool),
-                                   outstream,
-                                   errstream,
-                                   NULL,
-                                   lb->ctx, pool));
-      SVN_ERR(svn_stream_puts(outstream, _("\n")));
       SVN_ERR(svn_stream_close(outstream));
       SVN_ERR(svn_stream_close(errstream));
     }
@@ -545,11 +577,11 @@ svn_cl__log(apr_getopt_t *os,
     return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
                             _("'quiet' and 'diff' options are "
                               "mutually exclusive"));
-  if (opt_state->diff_cmd && (! opt_state->show_diff))
+  if (opt_state->diff.diff_cmd && (! opt_state->show_diff))
     return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
                             _("'diff-cmd' option requires 'diff' "
                               "option"));
-  if (opt_state->internal_diff && (! opt_state->show_diff))
+  if (opt_state->diff.internal_diff && (! opt_state->show_diff))
     return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
                             _("'internal-diff' option requires "
                               "'diff' option"));

Modified: subversion/branches/ev2-export/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/main.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/main.c (original)
+++ subversion/branches/ev2-export/subversion/svn/main.c Thu May 31 22:29:24 2012
@@ -66,14 +66,24 @@
    option. Options that have both long and short options should just
    use the short option letter as identifier.  */
 typedef enum svn_cl__longopt_t {
-  opt_ancestor_path = SVN_OPT_FIRST_LONGOPT_ID,
-  opt_auth_password,
+  opt_auth_password = SVN_OPT_FIRST_LONGOPT_ID,
   opt_auth_username,
   opt_autoprops,
   opt_changelist,
   opt_config_dir,
   opt_config_options,
+  /* diff options */
   opt_diff_cmd,
+  opt_internal_diff,
+  opt_no_diff_deleted,
+  opt_show_copies_as_adds,
+  opt_notice_ancestry,
+  opt_summarize,
+  opt_use_git_diff_format,
+  opt_ignore_properties,
+  opt_properties_only,
+  opt_patch_compatible,
+  /* end of diff options */
   opt_dry_run,
   opt_editor_cmd,
   opt_encoding,
@@ -88,12 +98,9 @@ typedef enum svn_cl__longopt_t {
   opt_new_cmd,
   opt_no_auth_cache,
   opt_no_autoprops,
-  opt_no_diff_deleted,
-  opt_ignore_properties,
   opt_no_ignore,
   opt_no_unlock,
   opt_non_interactive,
-  opt_notice_ancestry,
   opt_old_cmd,
   opt_record_only,
   opt_relocate,
@@ -101,7 +108,6 @@ typedef enum svn_cl__longopt_t {
   opt_revprop,
   opt_stop_on_copy,
   opt_strict,
-  opt_summarize,
   opt_targets,
   opt_depth,
   opt_set_depth,
@@ -117,18 +123,13 @@ typedef enum svn_cl__longopt_t {
   opt_reintegrate,
   opt_trust_server_cert,
   opt_strip,
-  opt_show_copies_as_adds,
   opt_ignore_keywords,
   opt_reverse_diff,
   opt_ignore_whitespace,
   opt_diff,
-  opt_internal_diff,
-  opt_use_git_diff_format,
-  opt_patch_compatible,
   opt_allow_mixed_revisions,
   opt_include_externals,
   opt_symmetric,
-  opt_properties_only,
 } svn_cl__longopt_t;
 
 
@@ -241,17 +242,10 @@ const apr_getopt_option_t svn_cl__option
                     N_("do no interactive prompting")},
   {"dry-run",       opt_dry_run, 0,
                     N_("try operation but make no changes")},
-  {"no-diff-deleted", opt_no_diff_deleted, 0,
-                    N_("do not print differences for deleted files")},
-  {"ignore-properties", opt_ignore_properties, 0,
-                    N_("ignore properties during the operation")},
-  {"notice-ancestry", opt_notice_ancestry, 0,
-                    N_("notice ancestry when calculating differences")},
   {"ignore-ancestry", opt_ignore_ancestry, 0,
                     N_("ignore ancestry when calculating merges")},
   {"ignore-externals", opt_ignore_externals, 0,
                     N_("ignore externals definitions")},
-  {"diff-cmd",      opt_diff_cmd, 1, N_("use ARG as diff command")},
   {"diff3-cmd",     opt_merge_cmd, 1, N_("use ARG as merge command")},
   {"editor-cmd",    opt_editor_cmd, 1, N_("use ARG as external editor")},
   {"record-only",   opt_record_only, 0,
@@ -283,7 +277,6 @@ const apr_getopt_option_t svn_cl__option
                        "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")},
-  {"summarize",     opt_summarize, 0, N_("show a summary of the results")},
   {"remove",         opt_remove, 0, N_("remove changelist association")},
   {"changelist",    opt_changelist, 1,
                     N_("operate only on members of changelist ARG")},
@@ -336,8 +329,6 @@ const apr_getopt_option_t svn_cl__option
                        "The expected component separator is '/' on all\n"
                        "                             "
                        "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")},
   {"ignore-keywords", opt_ignore_keywords, 0,
                     N_("don't expand keywords")},
   {"reverse-diff", opt_reverse_diff, 0,
@@ -345,10 +336,23 @@ const apr_getopt_option_t svn_cl__option
   {"ignore-whitespace", opt_ignore_whitespace, 0,
                        N_("ignore whitespace during pattern matching")},
   {"diff", opt_diff, 0, N_("produce diff output")}, /* maps to show_diff */
+  /* diff options */
+  {"diff-cmd",      opt_diff_cmd, 1, N_("use ARG as diff command")},
   {"internal-diff", opt_internal_diff, 0,
                        N_("override diff-cmd specified in config file")},
+  {"no-diff-deleted", opt_no_diff_deleted, 0,
+                    N_("do not print differences for deleted files")},
+  {"show-copies-as-adds", opt_show_copies_as_adds, 0,
+                    N_("don't diff copied or moved files with their source")},
+  {"notice-ancestry", opt_notice_ancestry, 0,
+                    N_("notice ancestry when calculating differences")},
+  {"summarize",     opt_summarize, 0, N_("show a summary of the results")},
   {"git", opt_use_git_diff_format, 0,
                        N_("use git's extended diff format")},
+  {"ignore-properties", opt_ignore_properties, 0,
+                    N_("ignore properties during the operation")},
+  {"properties-only", opt_properties_only, 0,
+                       N_("show only properties during the operation")},
   {"patch-compatible", opt_patch_compatible, 0,
                        N_("generate diff suitable for generic third-party\n"
                        "                             "
@@ -356,6 +360,7 @@ const apr_getopt_option_t svn_cl__option
                        "                             "
                        "--show-copies-as-adds --ignore-properties"
                        )},
+  /* end of diff options */
   {"allow-mixed-revisions", opt_allow_mixed_revisions, 0,
                        N_("Allow merge into mixed-revision working copy.\n"
                        "                             "
@@ -370,8 +375,6 @@ const apr_getopt_option_t svn_cl__option
                        "fixed revision. (See the svn:externals property)")},
   {"symmetric", opt_symmetric, 0,
                        N_("Symmetric merge")},
-  {"properties-only", opt_properties_only, 0,
-                       N_("show only properties during the operation")},
 
   /* Long-opt Aliases
    *
@@ -1161,15 +1164,19 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "  2. Prints unversioned remote prop on repos revision.\n"
      "     TARGET only determines which repository to access.\n"
      "\n"
-     "  By default, this subcommand will add an extra newline to the end\n"
-     "  of the property values so that the output looks pretty.  Also,\n"
-     "  whenever there are multiple paths involved, each property value\n"
-     "  is prefixed with the path with which it is associated.  Use the\n"
-     "  --strict option to disable these beautifications (useful when\n"
-     "  redirecting a binary property value to a file, but available only\n"
-     "  if you supply a single TARGET to a non-recursive propget operation).\n"),
+     "  With --verbose, the target path and the property name are printed on\n"
+     "  separate lines before each value, like 'svn proplist --verbose'.\n"
+     "  Otherwise, if there is more than one TARGET or a depth other than\n"
+     "  'empty', the target path is printed on the same line before each value.\n"
+     "\n"
+     "  By default, an extra newline is printed after the property value so that\n"
+     "  the output looks pretty.  With a single TARGET and depth 'empty', you can\n"
+     "  use the --strict option to disable this (useful when redirecting a binary\n"
+     "  property value to a file, for example).\n"),
     {'v', 'R', opt_depth, 'r', opt_revprop, opt_strict, opt_xml,
-     opt_changelist } },
+     opt_changelist },
+    {{'v', N_("print path, name and value on separate lines")},
+     {opt_strict, N_("don't print an extra newline")}} },
 
   { "proplist", svn_cl__proplist, {"plist", "pl"}, N_
     ("List all properties on files, dirs, or revisions.\n"
@@ -1179,8 +1186,13 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "  1. Lists versioned props. If specified, REV determines in which\n"
      "     revision the target is first looked up.\n"
      "  2. Lists unversioned remote props on repos revision.\n"
-     "     TARGET only determines which repository to access.\n"),
-    {'v', 'R', opt_depth, 'r', 'q', opt_revprop, opt_xml, opt_changelist } },
+     "     TARGET only determines which repository to access.\n"
+     "\n"
+     "  With --verbose, the property values are printed as well, like 'svn propget\n"
+     "  --verbose'.  With --quiet, the paths are not printed.\n"),
+    {'v', 'R', opt_depth, 'r', 'q', opt_revprop, opt_xml, opt_changelist },
+    {{'v', N_("print path, name and value on separate lines")},
+     {'q', N_("don't print the path")}} },
 
   { "propset", svn_cl__propset, {"pset", "ps"}, N_
     ("Set the value of a property on files, dirs, or revisions.\n"
@@ -1933,16 +1945,16 @@ main(int argc, const char *argv[])
         opt_state.trust_server_cert = TRUE;
         break;
       case opt_no_diff_deleted:
-        opt_state.no_diff_deleted = TRUE;
+        opt_state.diff.no_diff_deleted = TRUE;
         break;
       case opt_ignore_properties:
-        opt_state.ignore_properties = TRUE;
+        opt_state.diff.ignore_properties = TRUE;
         break;
       case opt_show_copies_as_adds:
-        opt_state.show_copies_as_adds = TRUE;
+        opt_state.diff.show_copies_as_adds = TRUE;
         break;
       case opt_notice_ancestry:
-        opt_state.notice_ancestry = TRUE;
+        opt_state.diff.notice_ancestry = TRUE;
         break;
       case opt_ignore_ancestry:
         opt_state.ignore_ancestry = TRUE;
@@ -1959,7 +1971,7 @@ main(int argc, const char *argv[])
           return svn_cmdline_handle_exit_error(err, pool, "svn: ");
         break;
       case opt_diff_cmd:
-        opt_state.diff_cmd = apr_pstrdup(pool, opt_arg);
+        opt_state.diff.diff_cmd = apr_pstrdup(pool, opt_arg);
         break;
       case opt_merge_cmd:
         opt_state.merge_cmd = apr_pstrdup(pool, opt_arg);
@@ -2033,7 +2045,7 @@ main(int argc, const char *argv[])
         opt_state.no_unlock = TRUE;
         break;
       case opt_summarize:
-        opt_state.summarize = TRUE;
+        opt_state.diff.summarize = TRUE;
         break;
       case opt_remove:
         opt_state.remove = TRUE;
@@ -2119,13 +2131,13 @@ main(int argc, const char *argv[])
           opt_state.show_diff = TRUE;
           break;
       case opt_internal_diff:
-        opt_state.internal_diff = TRUE;
+        opt_state.diff.internal_diff = TRUE;
         break;
       case opt_patch_compatible:
-        opt_state.patch_compatible = TRUE;
+        opt_state.diff.patch_compatible = TRUE;
         break;
       case opt_use_git_diff_format:
-        opt_state.use_git_diff_format = TRUE;
+        opt_state.diff.use_git_diff_format = TRUE;
         break;
       case opt_allow_mixed_revisions:
         opt_state.allow_mixed_rev = TRUE;
@@ -2134,7 +2146,7 @@ main(int argc, const char *argv[])
         opt_state.include_externals = TRUE;
         break;
       case opt_properties_only:
-        opt_state.properties_only = TRUE;
+        opt_state.diff.properties_only = TRUE;
         break;
       default:
         /* Hmmm. Perhaps this would be a good place to squirrel away
@@ -2320,7 +2332,7 @@ main(int argc, const char *argv[])
 
   /* Disallow simultaneous use of both --diff-cmd and
      --internal-diff.  */
-  if (opt_state.diff_cmd && opt_state.internal_diff)
+  if (opt_state.diff.diff_cmd && opt_state.diff.internal_diff)
     {
       err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
                              _("--diff-cmd and --internal-diff "
@@ -2513,13 +2525,13 @@ main(int argc, const char *argv[])
 
   /* XXX: Only diff_cmd for now, overlay rest later and stop passing
      opt_state altogether? */
-  if (opt_state.diff_cmd)
+  if (opt_state.diff.diff_cmd)
     svn_config_set(cfg_config, SVN_CONFIG_SECTION_HELPERS,
-                   SVN_CONFIG_OPTION_DIFF_CMD, opt_state.diff_cmd);
+                   SVN_CONFIG_OPTION_DIFF_CMD, opt_state.diff.diff_cmd);
   if (opt_state.merge_cmd)
     svn_config_set(cfg_config, SVN_CONFIG_SECTION_HELPERS,
                    SVN_CONFIG_OPTION_DIFF3_CMD, opt_state.merge_cmd);
-  if (opt_state.internal_diff)
+  if (opt_state.diff.internal_diff)
     svn_config_set(cfg_config, SVN_CONFIG_SECTION_HELPERS,
                    SVN_CONFIG_OPTION_DIFF_CMD, NULL);
 

Modified: subversion/branches/ev2-export/subversion/svn/propget-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/propget-cmd.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/propget-cmd.c (original)
+++ subversion/branches/ev2-export/subversion/svn/propget-cmd.c Thu May 31 22:29:24 2012
@@ -34,6 +34,7 @@
 #include "svn_error_codes.h"
 #include "svn_error.h"
 #include "svn_utf.h"
+#include "svn_sorts.h"
 #include "svn_subst.h"
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
@@ -71,13 +72,16 @@ print_properties_xml(const char *pname,
                      apr_hash_t *props,
                      apr_pool_t *pool)
 {
-  apr_hash_index_t *hi;
+  apr_array_header_t *sorted_props;
+  int i;
   apr_pool_t *iterpool = svn_pool_create(pool);
 
-  for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi))
+  sorted_props = svn_sort__hash(props, svn_sort_compare_items_as_paths, pool);
+  for (i = 0; i < sorted_props->nelts; i++)
     {
-      const char *filename = svn__apr_hash_index_key(hi);
-      svn_string_t *propval = svn__apr_hash_index_val(hi);
+      svn_sort__item_t item = APR_ARRAY_IDX(sorted_props, i, svn_sort__item_t);
+      const char *filename = item.key;
+      svn_string_t *propval = item.value;
       svn_stringbuf_t *sb = NULL;
 
       svn_pool_clear(iterpool);
@@ -115,16 +119,19 @@ print_properties(svn_stream_t *out,
                  svn_boolean_t like_proplist,
                  apr_pool_t *pool)
 {
-  apr_hash_index_t *hi;
+  apr_array_header_t *sorted_props;
+  int i;
   apr_pool_t *iterpool = svn_pool_create(pool);
   const char *path_prefix;
 
   SVN_ERR(svn_dirent_get_absolute(&path_prefix, "", pool));
 
-  for (hi = apr_hash_first(pool, props); hi; hi = apr_hash_next(hi))
+  sorted_props = svn_sort__hash(props, svn_sort_compare_items_as_paths, pool);
+  for (i = 0; i < sorted_props->nelts; i++)
     {
-      const char *filename = svn__apr_hash_index_key(hi);
-      svn_string_t *propval = svn__apr_hash_index_val(hi);
+      svn_sort__item_t item = APR_ARRAY_IDX(sorted_props, i, svn_sort__item_t);
+      const char *filename = item.key;
+      svn_string_t *propval = item.value;
 
       svn_pool_clear(iterpool);
 

Modified: subversion/branches/ev2-export/subversion/svn/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/props.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/props.c (original)
+++ subversion/branches/ev2-export/subversion/svn/props.c Thu May 31 22:29:24 2012
@@ -31,6 +31,7 @@
 #include "svn_cmdline.h"
 #include "svn_string.h"
 #include "svn_error.h"
+#include "svn_sorts.h"
 #include "svn_subst.h"
 #include "svn_props.h"
 #include "svn_string.h"
@@ -87,12 +88,16 @@ svn_cl__print_prop_hash(svn_stream_t *ou
                         svn_boolean_t names_only,
                         apr_pool_t *pool)
 {
-  apr_hash_index_t *hi;
+  apr_array_header_t *sorted_props;
+  int i;
 
-  for (hi = apr_hash_first(pool, prop_hash); hi; hi = apr_hash_next(hi))
+  sorted_props = svn_sort__hash(prop_hash, svn_sort_compare_items_lexically,
+                                pool);
+  for (i = 0; i < sorted_props->nelts; i++)
     {
-      const char *pname = svn__apr_hash_index_key(hi);
-      svn_string_t *propval = svn__apr_hash_index_val(hi);
+      svn_sort__item_t item = APR_ARRAY_IDX(sorted_props, i, svn_sort__item_t);
+      const char *pname = item.key;
+      svn_string_t *propval = item.value;
       const char *pname_stdout;
 
       if (svn_prop_needs_translation(pname))
@@ -150,15 +155,19 @@ svn_cl__print_xml_prop_hash(svn_stringbu
                             svn_boolean_t names_only,
                             apr_pool_t *pool)
 {
-  apr_hash_index_t *hi;
+  apr_array_header_t *sorted_props;
+  int i;
 
   if (*outstr == NULL)
     *outstr = svn_stringbuf_create_empty(pool);
 
-  for (hi = apr_hash_first(pool, prop_hash); hi; hi = apr_hash_next(hi))
+  sorted_props = svn_sort__hash(prop_hash, svn_sort_compare_items_lexically,
+                                pool);
+  for (i = 0; i < sorted_props->nelts; i++)
     {
-      const char *pname = svn__apr_hash_index_key(hi);
-      svn_string_t *propval = svn__apr_hash_index_val(hi);
+      svn_sort__item_t item = APR_ARRAY_IDX(sorted_props, i, svn_sort__item_t);
+      const char *pname = item.key;
+      svn_string_t *propval = item.value;
 
       if (names_only)
         {

Modified: subversion/branches/ev2-export/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnserve/serve.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnserve/serve.c (original)
+++ subversion/branches/ev2-export/subversion/svnserve/serve.c Thu May 31 22:29:24 2012
@@ -2042,9 +2042,9 @@ static svn_error_t *log_cmd(svn_ra_svn_c
 
   SVN_ERR(log_command(b, conn, pool, "%s",
                       svn_log__log(full_paths, start_rev, end_rev,
-                                   limit, send_changed_paths, strict_node,
-                                   include_merged_revisions, revprops,
-                                   pool)));
+                                   (int) limit, send_changed_paths,
+                                   strict_node, include_merged_revisions,
+                                   revprops, pool)));
 
   /* Get logs.  (Can't report errors back to the client at this point.) */
   lb.fs_path = b->fs_path->data;

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/autoprop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/autoprop_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/autoprop_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/autoprop_tests.py Thu May 31 22:29:24 2012
@@ -25,7 +25,9 @@
 ######################################################################
 
 # General modules
-import os
+import os, logging
+
+logger = logging.getLogger()
 
 # Our testing module
 import svntest
@@ -47,8 +49,8 @@ def check_proplist(path, exp_out):
 
   props = svntest.tree.get_props([path]).get(path, {})
   if props != exp_out:
-    print("Expected properties: %s" % exp_out)
-    print("Actual properties:   %s" % props)
+    logger.warn("Expected properties: %s", exp_out)
+    logger.warn("Actual properties:   %s", props)
     raise svntest.Failure
 
 

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/changelist_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/changelist_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/changelist_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/changelist_tests.py Thu May 31 22:29:24 2012
@@ -129,9 +129,6 @@ def verify_changelist_output(output, exp
   if not expected_skips:
     output = [line for line in output if (not _re_cl_skip.match(line))]
 
-  if len(output) != num_expected:
-    raise svntest.Failure("Unexpected number of 'svn changelist' output lines")
-
   for line in output:
     line = line.rstrip()
     match = _re_cl_rem.match(line)
@@ -157,6 +154,10 @@ def verify_changelist_output(output, exp
       raise svntest.Failure("Unexpected changelist skip line: " + line)
     raise svntest.Failure("Unexpected line: " + line)
 
+  if len(output) != num_expected:
+    raise svntest.Failure("Unexpected number of 'svn changelist' output " +
+                          "lines (%d vs %d)" % (len(output), num_expected))
+
 def verify_pget_output(output, expected_props):
   """Compare lines of OUTPUT from 'svn propget' against EXPECTED_PROPS
   (a dictionary mapping paths to property values)."""
@@ -220,15 +221,15 @@ def add_remove_changelists(sbox):
 
   # all dirs in the Greek tree
   expected_skips_all = dict([(x, None) for x in [
-        os.path.join(wc_dir),
-    os.path.join(wc_dir, 'A'),
-    os.path.join(wc_dir, 'A', 'B'),
-    os.path.join(wc_dir, 'A', 'B', 'E'),
-    os.path.join(wc_dir, 'A', 'B', 'F'),
-    os.path.join(wc_dir, 'A', 'C'),
-    os.path.join(wc_dir, 'A', 'D'),
-    os.path.join(wc_dir, 'A', 'D', 'G'),
-    os.path.join(wc_dir, 'A', 'D', 'H'),
+    sbox.ospath(''),
+    sbox.ospath('A'),
+    sbox.ospath('A/B'),
+    sbox.ospath('A/B/E'),
+    sbox.ospath('A/B/F'),
+    sbox.ospath('A/C'),
+    sbox.ospath('A/D'),
+    sbox.ospath('A/D/G'),
+    sbox.ospath('A/D/H'),
     ]])
 
   expected_skips_wc_dir = { wc_dir : None }
@@ -254,17 +255,17 @@ def add_remove_changelists(sbox):
                                                    "--depth", "infinity",
                                                    wc_dir)
   expected_adds = {
-    os.path.join(wc_dir, 'A', 'B', 'E', 'alpha') : 'foo',
-    os.path.join(wc_dir, 'A', 'B', 'E', 'beta') : 'foo',
-    os.path.join(wc_dir, 'A', 'B', 'lambda') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'G', 'pi') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'G', 'rho') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'G', 'tau') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'chi') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'omega') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'psi') : 'foo',
-    os.path.join(wc_dir, 'A', 'D', 'gamma') : 'foo',
-    os.path.join(wc_dir, 'A', 'mu') : 'foo',
+      sbox.ospath('A/B/E/alpha') : 'foo',
+      sbox.ospath('A/B/E/beta') : 'foo',
+      sbox.ospath('A/B/lambda') : 'foo',
+      sbox.ospath('A/D/G/pi') : 'foo',
+      sbox.ospath('A/D/G/rho') : 'foo',
+      sbox.ospath('A/D/G/tau') : 'foo',
+      sbox.ospath('A/D/H/chi') : 'foo',
+      sbox.ospath('A/D/H/omega') : 'foo',
+      sbox.ospath('A/D/H/psi') : 'foo',
+      sbox.ospath('A/D/gamma') : 'foo',
+      sbox.ospath('A/mu') : 'foo',
     }
   verify_changelist_output(output, expected_adds)
 
@@ -273,16 +274,15 @@ def add_remove_changelists(sbox):
   # svn changelist bar WC_DIR/A/D --depth infinity
   exit_code, output, errput = svntest.main.run_svn(".*", "changelist", "bar",
                                                    "--depth", "infinity",
-                                                   os.path.join(wc_dir,
-                                                                'A', 'D'))
+                                                   sbox.ospath('A/D'))
   expected_adds = {
-    os.path.join(wc_dir, 'A', 'D', 'G', 'pi') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'G', 'rho') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'G', 'tau') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'chi') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'omega') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'psi') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'gamma') : 'bar',
+      sbox.ospath('A/D/G/pi') : 'bar',
+      sbox.ospath('A/D/G/rho') : 'bar',
+      sbox.ospath('A/D/G/tau') : 'bar',
+      sbox.ospath('A/D/H/chi') : 'bar',
+      sbox.ospath('A/D/H/omega') : 'bar',
+      sbox.ospath('A/D/H/psi') : 'bar',
+      sbox.ospath('A/D/gamma') : 'bar',
     }
   expected_removals = expected_adds
   verify_changelist_output(output, expected_adds, expected_removals)
@@ -290,12 +290,11 @@ def add_remove_changelists(sbox):
   # svn changelist baz WC_DIR/A/D/H --depth infinity
   exit_code, output, errput = svntest.main.run_svn(".*", "changelist", "baz",
                                                    "--depth", "infinity",
-                                                   os.path.join(wc_dir, 'A',
-                                                                'D', 'H'))
+                                                   sbox.ospath('A/D/H'))
   expected_adds = {
-    os.path.join(wc_dir, 'A', 'D', 'H', 'chi') : 'baz',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'omega') : 'baz',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'psi') : 'baz',
+      sbox.ospath('A/D/H/chi') : 'baz',
+      sbox.ospath('A/D/H/omega') : 'baz',
+      sbox.ospath('A/D/H/psi') : 'baz',
     }
   expected_removals = expected_adds
   verify_changelist_output(output, expected_adds, expected_removals)
@@ -309,11 +308,11 @@ def add_remove_changelists(sbox):
                                                    "--changelist", "foo",
                                                    wc_dir)
   expected_adds = {
-    os.path.join(wc_dir, 'A', 'B', 'E', 'alpha') : 'foo-rename',
-    os.path.join(wc_dir, 'A', 'B', 'E', 'beta') : 'foo-rename',
-    os.path.join(wc_dir, 'A', 'B', 'lambda') : 'foo-rename',
-    os.path.join(wc_dir, 'A', 'mu') : 'foo-rename',
-    os.path.join(wc_dir, 'iota') : 'foo-rename',
+      sbox.ospath('A/B/E/alpha') : 'foo-rename',
+      sbox.ospath('A/B/E/beta') : 'foo-rename',
+      sbox.ospath('A/B/lambda') : 'foo-rename',
+      sbox.ospath('A/mu') : 'foo-rename',
+      sbox.ospath('iota') : 'foo-rename',
     }
   expected_removals = expected_adds
   verify_changelist_output(output, expected_adds, expected_removals)
@@ -325,14 +324,14 @@ def add_remove_changelists(sbox):
     "--changelist", "foo-rename", "--changelist", "baz", wc_dir)
 
   expected_adds = {
-    os.path.join(wc_dir, 'A', 'B', 'E', 'alpha') : 'bar',
-    os.path.join(wc_dir, 'A', 'B', 'E', 'beta') : 'bar',
-    os.path.join(wc_dir, 'A', 'B', 'lambda') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'chi') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'omega') : 'bar',
-    os.path.join(wc_dir, 'A', 'D', 'H', 'psi') : 'bar',
-    os.path.join(wc_dir, 'A', 'mu') : 'bar',
-    os.path.join(wc_dir, 'iota') : 'bar',
+      sbox.ospath('A/B/E/alpha') : 'bar',
+      sbox.ospath('A/B/E/beta') : 'bar',
+      sbox.ospath('A/B/lambda') : 'bar',
+      sbox.ospath('A/D/H/chi') : 'bar',
+      sbox.ospath('A/D/H/omega') : 'bar',
+      sbox.ospath('A/D/H/psi') : 'bar',
+      sbox.ospath('A/mu') : 'bar',
+      sbox.ospath('iota') : 'bar',
     }
   expected_removals = expected_adds
   verify_changelist_output(output, expected_adds, expected_removals)
@@ -360,17 +359,17 @@ def add_remove_changelists(sbox):
                                                    "--depth", "infinity",
                                                    wc_dir)
   expected_removals = {
-    os.path.join(wc_dir, 'A', 'B', 'E', 'alpha') : None,
-    os.path.join(wc_dir, 'A', 'B', 'E', 'beta') : None,
-    os.path.join(wc_dir, 'A', 'B', 'lambda') : None,
-    os.path.join(wc_dir, 'A', 'D', 'G', 'pi') : None,
-    os.path.join(wc_dir, 'A', 'D', 'G', 'rho') : None,
-    os.path.join(wc_dir, 'A', 'D', 'G', 'tau') : None,
-    os.path.join(wc_dir, 'A', 'D', 'H', 'chi') : None,
-    os.path.join(wc_dir, 'A', 'D', 'H', 'omega') : None,
-    os.path.join(wc_dir, 'A', 'D', 'H', 'psi') : None,
-    os.path.join(wc_dir, 'A', 'D', 'gamma') : None,
-    os.path.join(wc_dir, 'A', 'mu') : None,
+      sbox.ospath('A/B/E/alpha') : None,
+      sbox.ospath('A/B/E/beta') : None,
+      sbox.ospath('A/B/lambda') : None,
+      sbox.ospath('A/D/G/pi') : None,
+      sbox.ospath('A/D/G/rho') : None,
+      sbox.ospath('A/D/G/tau') : None,
+      sbox.ospath('A/D/H/chi') : None,
+      sbox.ospath('A/D/H/omega') : None,
+      sbox.ospath('A/D/H/psi') : None,
+      sbox.ospath('A/D/gamma') : None,
+      sbox.ospath('A/mu') : None,
     }
   verify_changelist_output(output, None, expected_removals)
 
@@ -387,12 +386,12 @@ def add_remove_changelists(sbox):
                                                    "--changelist", "a",
                                                    wc_dir)
   expected_removals = {
-    os.path.join(wc_dir, 'A', 'B', 'E', 'alpha') : None,
-    os.path.join(wc_dir, 'A', 'B', 'E', 'beta') : None,
-    os.path.join(wc_dir, 'A', 'B', 'lambda') : None,
-    os.path.join(wc_dir, 'A', 'D', 'H', 'omega') : None,
-    os.path.join(wc_dir, 'A', 'D', 'gamma') : None,
-    os.path.join(wc_dir, 'iota') : None,
+      sbox.ospath('A/B/E/alpha') : None,
+      sbox.ospath('A/B/E/beta') : None,
+      sbox.ospath('A/B/lambda') : None,
+      sbox.ospath('A/D/H/omega') : None,
+      sbox.ospath('A/D/gamma') : None,
+      sbox.ospath('iota') : None,
     }
   verify_changelist_output(output, None, expected_removals)
 
@@ -405,10 +404,10 @@ def add_remove_changelists(sbox):
                                                    "--changelist", "o",
                                                    wc_dir)
   expected_removals = {
-    os.path.join(wc_dir, 'A', 'D', 'G', 'pi') : None,
-    os.path.join(wc_dir, 'A', 'D', 'G', 'rho') : None,
-    os.path.join(wc_dir, 'A', 'D', 'H', 'chi') : None,
-    os.path.join(wc_dir, 'A', 'D', 'H', 'psi') : None,
+      sbox.ospath('A/D/G/pi') : None,
+      sbox.ospath('A/D/G/rho') : None,
+      sbox.ospath('A/D/H/chi') : None,
+      sbox.ospath('A/D/H/psi') : None,
     }
   verify_changelist_output(output, None, expected_removals)
 

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py Thu May 31 22:29:24 2012
@@ -1589,7 +1589,6 @@ def check_for_omitted_prefix_in_path_com
     raise svntest.Failure
 
 #----------------------------------------------------------------------
-@XFail()
 def diff_renamed_file(sbox):
   "diff a file that has been renamed"
 
@@ -1960,7 +1959,7 @@ def diff_renamed_dir(sbox):
   svntest.main.run_svn(None, 'mv', os.path.join('A', 'D', 'G'),
                                    os.path.join('A', 'D', 'I'))
 
-  # Check a repos->wc diff
+  # Check a wc->wc diff
   exit_code, diff_output, err_output = svntest.main.run_svn(
     None, 'diff', '--show-copies-as-adds', os.path.join('A', 'D'))
 
@@ -1973,6 +1972,23 @@ def diff_renamed_dir(sbox):
                        'A') :
     raise svntest.Failure
 
+  # Check a repos->wc diff of the moved-here node before commit
+  exit_code, diff_output, err_output = svntest.main.run_svn(
+    None, 'diff', '-r', '1', '--show-copies-as-adds',
+    os.path.join('A', 'D', 'I'))
+  if check_diff_output(diff_output,
+                       os.path.join('A', 'D', 'I', 'pi'),
+                       'A') :
+    raise svntest.Failure
+
+  # Check a repos->wc diff of the moved-away node before commit
+  exit_code, diff_output, err_output = svntest.main.run_svn(
+    None, 'diff', '-r', '1', os.path.join('A', 'D', 'G'))
+  if check_diff_output(diff_output,
+                       os.path.join('A', 'D', 'G', 'pi'),
+                       'D') :
+    raise svntest.Failure
+
   # Commit
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'ci', '-m', 'log msg')

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/entries-dump.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/entries-dump.c?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/entries-dump.c (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/entries-dump.c Thu May 31 22:29:24 2012
@@ -30,6 +30,7 @@
 #define SVN_DEPRECATED
 
 #include "svn_types.h"
+#include "svn_cmdline.h"
 #include "svn_pools.h"
 #include "svn_wc.h"
 #include "svn_dirent_uri.h"
@@ -266,14 +267,15 @@ main(int argc, const char *argv[])
       exit(1);
     }
 
-  if (apr_initialize() != APR_SUCCESS)
+  if (svn_cmdline_init("entries-dump", stderr) != EXIT_SUCCESS)
     {
-      fprintf(stderr, "apr_initialize() failed.\n");
-      exit(1);
+      return EXIT_FAILURE;
     }
 
-  /* set up the global pool */
-  pool = svn_pool_create(NULL);
+  /* Create our top-level pool.  Use a separate mutexless allocator,
+   * given this application is single threaded.
+   */
+  pool = apr_allocator_owner_get(svn_pool_create_allocator(FALSE));
 
   path = svn_dirent_internal_style(argv[argc-1], pool);
 

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/getopt_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/getopt_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/getopt_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/getopt_tests.py Thu May 31 22:29:24 2012
@@ -25,7 +25,9 @@
 ######################################################################
 
 # General modules
-import sys, re, os.path
+import sys, re, os.path, logging
+
+logger = logging.getLogger()
 
 # Our testing module
 import svntest
@@ -138,31 +140,31 @@ def run_one_test(sbox, basename, *vararg
   actual_stderr = process_lines(actual_stderr)
 
   if exp_stdout != actual_stdout:
-    print("Standard output does not match.")
-    print("Expected standard output:")
-    print("=====")
+    logger.warn("Standard output does not match.")
+    logger.warn("Expected standard output:")
+    logger.warn("=====")
     for x in exp_stdout:
-      sys.stdout.write(x)
-    print("=====")
-    print("Actual standard output:")
-    print("=====")
+      logger.warn(x)
+    logger.warn("=====")
+    logger.warn("Actual standard output:")
+    logger.warn("=====")
     for x in actual_stdout:
-      sys.stdout.write(x)
-    print("=====")
+      logger.warn(x)
+    logger.warn("=====")
     raise svntest.Failure
 
   if exp_stderr != actual_stderr:
-    print("Standard error does not match.")
-    print("Expected standard error:")
-    print("=====")
+    logger.warn("Standard error does not match.")
+    logger.warn("Expected standard error:")
+    logger.warn("=====")
     for x in exp_stderr:
-      sys.stdout.write(x)
-    print("=====")
-    print("Actual standard error:")
-    print("=====")
+      logger.warn(x)
+    logger.warn("=====")
+    logger.warn("Actual standard error:")
+    logger.warn("=====")
     for x in actual_stderr:
-      sys.stdout.write(x)
-    print("=====")
+      logger.warn(x)
+    logger.warn("=====")
     raise svntest.Failure
 
 def getopt_no_args(sbox):

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py Thu May 31 22:29:24 2012
@@ -26,7 +26,9 @@
 ######################################################################
 
 # General modules
-import re, os, stat
+import re, os, stat, logging
+
+logger = logging.getLogger()
 
 # Our testing module
 import svntest
@@ -363,8 +365,8 @@ def enforce_lock(sbox):
     if ((os.stat(iota_path)[0] & mode)
         or (os.stat(lambda_path)[0] & mode)
         or (os.stat(mu_path)[0] & mode)):
-      print("Setting 'svn:needs-lock' property on a file failed to set")
-      print("file mode to read-only.")
+      logger.warn("Setting 'svn:needs-lock' property on a file failed to set")
+      logger.warn("file mode to read-only.")
       raise svntest.Failure
 
     # obtain a lock on one of these files...
@@ -373,7 +375,7 @@ def enforce_lock(sbox):
 
     # ...and verify that the write bit gets set...
     if not (os.stat(iota_path)[0] & mode):
-      print("Locking a file with 'svn:needs-lock' failed to set write bit.")
+      logger.warn("Locking a file with 'svn:needs-lock' failed to set write bit.")
       raise svntest.Failure
 
     # ...and unlock it...
@@ -382,13 +384,13 @@ def enforce_lock(sbox):
 
     # ...and verify that the write bit gets unset
     if (os.stat(iota_path)[0] & mode):
-      print("Unlocking a file with 'svn:needs-lock' failed to unset write bit.")
+      logger.warn("Unlocking a file with 'svn:needs-lock' failed to unset write bit.")
       raise svntest.Failure
 
     # Verify that removing the property restores the file to read-write
     svntest.main.run_svn(None, 'propdel', 'svn:needs-lock', iota_path)
     if not (os.stat(iota_path)[0] & mode):
-      print("Deleting 'svn:needs-lock' failed to set write bit.")
+      logger.warn("Deleting 'svn:needs-lock' failed to set write bit.")
       raise svntest.Failure
 
 #----------------------------------------------------------------------
@@ -457,8 +459,8 @@ def defunct_lock(sbox):
 
   # make sure that iota got set to read-only
   if (os.stat(iota_path_b)[0] & mode):
-    print("Upon removal of a defunct lock, a file with 'svn:needs-lock'")
-    print("was not set back to read-only")
+    logger.warn("Upon removal of a defunct lock, a file with 'svn:needs-lock'")
+    logger.warn("was not set back to read-only")
     raise svntest.Failure
 
 
@@ -672,7 +674,7 @@ def lock_non_existent_file(sbox):
     if line.find(error_msg) != -1:
       break
   else:
-    print("Error: %s : not found in: %s" % (error_msg, error))
+    logger.warn("Error: %s : not found in: %s" % (error_msg, error))
     raise svntest.Failure
 
 #----------------------------------------------------------------------
@@ -725,8 +727,8 @@ def revert_lock(sbox):
 
   # make sure that iota got set to read-only
   if (os.stat(iota_path)[0] & mode):
-    print("Committing a file with 'svn:needs-lock'")
-    print("did not set the file to read-only")
+    logger.warn("Committing a file with 'svn:needs-lock'")
+    logger.warn("did not set the file to read-only")
     raise svntest.Failure
 
   # verify status is as we expect
@@ -740,8 +742,8 @@ def revert_lock(sbox):
 
   # make sure that iota got read-only-ness removed
   if (os.stat(iota_path)[0] & mode == 0):
-    print("Deleting the 'svn:needs-lock' property ")
-    print("did not remove read-only-ness")
+    logger.warn("Deleting the 'svn:needs-lock' property ")
+    logger.warn("did not remove read-only-ness")
     raise svntest.Failure
 
   # revert the change
@@ -749,8 +751,8 @@ def revert_lock(sbox):
 
   # make sure that iota got set back to read-only
   if (os.stat(iota_path)[0] & mode):
-    print("Reverting a file with 'svn:needs-lock'")
-    print("did not set the file back to read-only")
+    logger.warn("Reverting a file with 'svn:needs-lock'")
+    logger.warn("did not set the file back to read-only")
     raise svntest.Failure
 
   # try propdel and revert from a different directory so
@@ -774,8 +776,8 @@ def revert_lock(sbox):
 
   # make sure it is still writable since we have the lock
   if (os.stat(iota_path)[0] & mode == 0):
-    print("Reverting a 'svn:needs-lock' file (with lock in wc) ")
-    print("did not leave the file writable")
+    logger.warn("Reverting a 'svn:needs-lock' file (with lock in wc) ")
+    logger.warn("did not leave the file writable")
     raise svntest.Failure
 
 
@@ -959,8 +961,8 @@ def lock_and_exebit1(sbox):
   if (not gamma_stat & mode_r
       or gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Committing a file with 'svn:needs-lock, svn:executable'")
-    print("did not set the file to read-only, executable")
+    logger.warn("Committing a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("did not set the file to read-only, executable")
     raise svntest.Failure
 
   # lock
@@ -971,8 +973,8 @@ def lock_and_exebit1(sbox):
   if (not gamma_stat & mode_r
       or not gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Locking a file with 'svn:needs-lock, svn:executable'")
-    print("did not set the file to read-write, executable")
+    logger.warn("Locking a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("did not set the file to read-write, executable")
     raise svntest.Failure
 
   # modify
@@ -987,8 +989,8 @@ def lock_and_exebit1(sbox):
   if (not gamma_stat & mode_r
       or gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Unlocking a file with 'svn:needs-lock, svn:executable'")
-    print("did not set the file to read-only, executable")
+    logger.warn("Unlocking a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("did not set the file to read-only, executable")
     raise svntest.Failure
 
   # ci
@@ -1000,8 +1002,8 @@ def lock_and_exebit1(sbox):
   if (not gamma_stat & mode_r
       or gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Commiting a file with 'svn:needs-lock, svn:executable'")
-    print("after unlocking modified file's permissions")
+    logger.warn("Commiting a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("after unlocking modified file's permissions")
     raise svntest.Failure
 
 
@@ -1036,8 +1038,8 @@ def lock_and_exebit2(sbox):
   if (not gamma_stat & mode_r
       or gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Committing a file with 'svn:needs-lock, svn:executable'")
-    print("did not set the file to read-only, executable")
+    logger.warn("Committing a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("did not set the file to read-only, executable")
     raise svntest.Failure
 
   # lock
@@ -1048,8 +1050,8 @@ def lock_and_exebit2(sbox):
   if (not gamma_stat & mode_r
       or not gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Locking a file with 'svn:needs-lock, svn:executable'")
-    print("did not set the file to read-write, executable")
+    logger.warn("Locking a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("did not set the file to read-write, executable")
     raise svntest.Failure
 
   # modify
@@ -1064,8 +1066,8 @@ def lock_and_exebit2(sbox):
   if (not gamma_stat & mode_r
       or gamma_stat & mode_w
       or not gamma_stat & mode_x):
-    print("Commiting a file with 'svn:needs-lock, svn:executable'")
-    print("did not set the file to read-only, executable")
+    logger.warn("Commiting a file with 'svn:needs-lock, svn:executable'")
+    logger.warn("did not set the file to read-only, executable")
     raise svntest.Failure
 
 def commit_xml_unsafe_file_unlock(sbox):

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py Thu May 31 22:29:24 2012
@@ -963,7 +963,16 @@ def reintegrate_with_subtree_mergeinfo(s
   "merge --reintegrate with subtree mergeinfo"
 
   # Create a standard greek tree, branch A to A_COPY in r2, A to A_COPY_2 in
-  # r3, A to A_COPY_3 in r3, and then make some changes under A in r5-8.
+  # r3, A to A_COPY_3 in r4, and then make some changes under A in r5-8.
+  #
+  #   A_COPY_3      4---------
+  #                /
+  #   A     -1--------5-6-7-8-
+  #            \ \
+  #   A_COPY    2-\-----------
+  #                \
+  #   A_COPY_2      3---------
+
   sbox.build()
   wc_dir = sbox.wc_dir
   expected_disk, expected_status = set_up_branch(sbox, False, 3)
@@ -991,8 +1000,22 @@ def reintegrate_with_subtree_mergeinfo(s
   # Now set up a situation where we try to reintegrate A_COPY back to A but
   # both of these paths have subtree mergeinfo.  Iff the mergeinfo on A_COPY
   # reflects that the same revisions have been applied across all of A_COPY,
-  # then the reintegrate merge should succeed.
+  # then the reintegrate merge should succeed.  We'll try that case first.
   #
+  #   A_COPY_3       4--------9---
+  #                 /          \
+  #                /            \c.
+  #   A     -1--------5-6-7-8---10-------------------WC--
+  #            \ \              (D)         \        /r.
+  #             \ \                    (mu)  \s.    /
+  #   A_COPY     2-\--------------------12---13--14------
+  #                 \                   /c.
+  #                  \                 /
+  #   A_COPY_2        3--------------11---
+  #
+  #   Key: c. = cherry-pick, s. = sync, r. = reintegrate.
+  #   Note: These diagrams show an overview and do not capture every detail.
+
   # r9 - Make a text change to A_COPY_3/D/gamma
   svntest.main.file_write(gamma_COPY_3_path, "New content")
   expected_output = wc.State(wc_dir, {'A_COPY_3/D/gamma' : Item(verb='Sending')})
@@ -1166,6 +1189,17 @@ def reintegrate_with_subtree_mergeinfo(s
   # merge should fail, but should provide a helpful message as to where the
   # problems are.
   #
+  #   A_COPY_3        4--------9---
+  #                  /          \
+  #                 /            \c.        [-8]___
+  #   A     -1---------5-6-7-8---10----------------\-------WC--
+  #            \ \               (D)        \       \      /r.
+  #             \ \                    (mu)  \s.     \c.  /
+  #   A_COPY     2-\--------------------12---13--14--15--------
+  #                 \                   /c.          (D)
+  #                  \                 /
+  #   A_COPY_2        3--------------11---
+
   # First revert the previous reintegrate merge
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'revert', '-R', wc_dir)
@@ -1233,6 +1267,18 @@ def reintegrate_with_subtree_mergeinfo(s
   #
   #   E) Reintegrate 'branch' to 'trunk'.  This fails as it appears not all
   #      of 'trunk' was previously merged to 'branch'
+  #
+  #                                       Step:   A   B    C   D    E
+  #   A_COPY_3    ----9---
+  #              /     \                      (D/g.->
+  #             /       \c.        [-8]___     D/g.m.) (D/g.m.)
+  #   A     ------------10----------------\------16-------18--------WC
+  #          \\         (D)        \       \        \        \      /r.
+  #           \\              (mu)  \s.     \c.      \s.      \s.  /
+  #   A_COPY   -\--------------12---13--14--15-------17-------19------
+  #              \             /c.          (D)
+  #               \           /
+  #   A_COPY_2     ---------11---
 
   # r16 - A) REPOS-to-REPOS rename of A/D/gamma to A/D/gamma_moved.  Since
   # r874258 WC-to-WC moves won't create mergeinfo on the dest if the source
@@ -2601,6 +2647,46 @@ def no_op_reintegrate(sbox):
   svntest.main.run_svn(None, 'merge', '--reintegrate',
                        sbox.repo_url + '/A_COPY', A_path)
 
+#----------------------------------------------------------------------
+def renamed_branch_reintegrate(sbox):
+  """reintegrate a branch that has been renamed"""
+
+  # The idea of this test is to ensure that the reintegrate merge is able to
+  # cope when one or both of the branches have been renamed.
+  #
+  # A       -1-----3-4-5-6----------------------9--------
+  #            \              \                / reintegrate
+  # A_COPY      2--------------7--------      /
+  #                        sync        \     /
+  # RENAMED                      rename 8----------------
+
+  # TODO: Make some changes between the sync/rename/reintegrate steps so
+  #   the reintegrate merge actually has to do something.
+  # TODO: Rename the other branch as well.
+
+  # Make A_COPY branch in r2, and do a few more commits to A in r3-6.
+  sbox.build()
+
+  wc_dir = sbox.wc_dir
+  A_path = sbox.ospath('A')
+  A_COPY_path = sbox.ospath('A_COPY')
+  expected_disk, expected_status = set_up_branch(sbox)
+
+  # Sync merge from trunk to branch
+  svntest.main.run_svn(None, 'merge', sbox.repo_url + '/A', A_COPY_path)
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Rename the branch
+  sbox.simple_move('A_COPY', 'RENAMED')
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Reintegrate; there are no relevant changes on the branch.
+  # ### TODO: Check the result more carefully than merely that it completed.
+  svntest.main.run_svn(None, 'merge', '--reintegrate',
+                       sbox.repo_url + '/RENAMED@8', A_path)
+
 ########################################################################
 # Run the tests
 
@@ -2626,6 +2712,7 @@ test_list = [ None,
               reintegrate_replaced_source,
               reintegrate_symlink_deletion,
               no_op_reintegrate,
+              renamed_branch_reintegrate,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py Thu May 31 22:29:24 2012
@@ -1208,6 +1208,17 @@ def revert_permissions_only(sbox):
                                        'revert', sbox.ospath('A/B/E/beta'))
     is_executable(sbox.ospath('A/B/E/beta'))
 
+  # copied file is always writeable
+  sbox.simple_update()
+  expected_output = ["A         %s\n" % sbox.ospath('A/B/E2')]
+  svntest.actions.run_and_verify_svn(None, expected_output, [], 'copy',
+                                     sbox.ospath('A/B/E'),
+                                     sbox.ospath('A/B/E2'))
+  is_writable(sbox.ospath('A/B/E2/alpha'))
+  svntest.actions.run_and_verify_svn(None, [], [],
+                                     'revert', sbox.ospath('A/B/E2/alpha'))
+  is_writable(sbox.ospath('A/B/E2/alpha'))
+
 @XFail()
 @Issue(3851)
 def revert_copy_depth_files(sbox):

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests.py?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests.py Thu May 31 22:29:24 2012
@@ -28,13 +28,12 @@
 import sys, os
 
 # Test suite-specific modules
-import locale, re, urllib
+import re, urllib
 
 # Our testing module
 import svntest
 from svntest.verify import SVNUnexpectedStdout, SVNUnexpectedStderr
 from svntest.verify import SVNExpectedStderr
-from svntest.main import write_restrictive_svnserve_conf
 from svntest.main import server_has_partial_replay
 
 # (abbreviation)
@@ -385,349 +384,6 @@ def detect_meddling(sbox):
   run_sync(dest_sbox.repo_url, None,
            ".*Destination HEAD \\(2\\) is not the last merged revision \\(1\\).*")
 
-#----------------------------------------------------------------------
-@Skip(svntest.main.is_ra_type_file)
-def basic_authz(sbox):
-  "verify that unreadable content is not synced"
-
-  sbox.build("svnsync-basic-authz")
-
-  write_restrictive_svnserve_conf(sbox.repo_dir)
-
-  dest_sbox = sbox.clone_dependent()
-  build_repos(dest_sbox)
-
-  svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
-
-  run_init(dest_sbox.repo_url, sbox.repo_url)
-
-  args = tuple(s.authz_name() for s in [sbox, sbox, dest_sbox])
-  svntest.main.file_write(sbox.authz_file,
-                          "[%s:/]\n"
-                          "* = r\n"
-                          "\n"
-                          "[%s:/A/B]\n"
-                          "* = \n"
-                          "\n"
-                          "[%s:/]\n"
-                          "* = rw\n" % args)
-
-  run_sync(dest_sbox.repo_url)
-
-  lambda_url = dest_sbox.repo_url + '/A/B/lambda'
-  iota_url = dest_sbox.repo_url + '/iota'
-
-  # this file should have been blocked by authz
-  svntest.actions.run_and_verify_svn(None,
-                                     [], svntest.verify.AnyOutput,
-                                     'cat',
-                                     lambda_url)
-  # this file should have been synced
-  svntest.actions.run_and_verify_svn(None,
-                                     svntest.verify.AnyOutput, [],
-                                     'cat',
-                                     iota_url)
-
-#----------------------------------------------------------------------
-@Skip(svntest.main.is_ra_type_file)
-def copy_from_unreadable_dir(sbox):
-  "verify that copies from unreadable dirs work"
-
-  sbox.build("svnsync-copy-from-unreadable-dir")
-
-  B_url = sbox.repo_url + '/A/B'
-  P_url = sbox.repo_url + '/A/P'
-
-  # Set a property on the directory we're going to copy, and a file in it, to
-  # confirm that they're transmitted when we later sync the copied directory
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'pset',
-                                     'foo',
-                                     'bar',
-                                     sbox.wc_dir + '/A/B/lambda')
-
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'pset',
-                                     'baz',
-                                     'zot',
-                                     sbox.wc_dir + '/A/B')
-
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'ci',
-                                     sbox.wc_dir + '/A/B',
-                                     '-m', 'log_msg')
-
-  # Now copy that directory so we'll see it in our synced copy
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'cp',
-                                     B_url,
-                                     P_url,
-                                     '-m', 'Copy B to P')
-
-  write_restrictive_svnserve_conf(sbox.repo_dir)
-
-  dest_sbox = sbox.clone_dependent()
-  build_repos(dest_sbox)
-
-  svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
-
-  args = tuple(s.authz_name() for s in [sbox, sbox, dest_sbox])
-  open(sbox.authz_file, 'w').write(
-             "[%s:/]\n"
-             "* = r\n"
-             "\n"
-             "[%s:/A/B]\n"
-             "* = \n"
-             "\n"
-             "[%s:/]\n"
-             "* = rw"
-             % args)
-
-  run_init(dest_sbox.repo_url, sbox.repo_url)
-
-  run_sync(dest_sbox.repo_url)
-
-  expected_out = [
-    'Changed paths:\n',
-    '   A /A/P\n',
-    '   A /A/P/E\n',
-    '   A /A/P/E/alpha\n',
-    '   A /A/P/E/beta\n',
-    '   A /A/P/F\n',
-    '   A /A/P/lambda\n',
-    '\n',
-    '\n', # log message is stripped
-  ]
-
-  exit_code, out, err = svntest.main.run_svn(None,
-                                             'log',
-                                             '-r', '3',
-                                             '-v',
-                                             dest_sbox.repo_url)
-
-  if err:
-    raise SVNUnexpectedStderr(err)
-
-  svntest.verify.compare_and_display_lines(None,
-                                           'LOG',
-                                           expected_out,
-                                           out[2:11])
-
-  svntest.actions.run_and_verify_svn(None,
-                                     ['bar\n'],
-                                     [],
-                                     'pget',
-                                     'foo',
-                                     dest_sbox.repo_url + '/A/P/lambda')
-
-  svntest.actions.run_and_verify_svn(None,
-                                     ['zot\n'],
-                                     [],
-                                     'pget',
-                                     'baz',
-                                     dest_sbox.repo_url + '/A/P')
-
-# Issue 2705.
-@Issue(2705)
-@Skip(svntest.main.is_ra_type_file)
-def copy_with_mod_from_unreadable_dir(sbox):
-  "verify copies with mods from unreadable dirs"
-
-  sbox.build("svnsync-copy-with-mod-from-unreadable-dir")
-
-  # Make a copy of the B directory.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'cp',
-                                     sbox.wc_dir + '/A/B',
-                                     sbox.wc_dir + '/A/P')
-
-  # Set a property inside the copied directory.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'pset',
-                                     'foo',
-                                     'bar',
-                                     sbox.wc_dir + '/A/P/lambda')
-
-  # Add a new directory and file inside the copied directory.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'mkdir',
-                                     sbox.wc_dir + '/A/P/NEW-DIR')
-
-  svntest.main.file_append(sbox.wc_dir + '/A/P/E/new-file', "bla bla")
-  svntest.main.run_svn(None, 'add', sbox.wc_dir + '/A/P/E/new-file')
-
-  # Delete a file inside the copied directory.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'rm',
-                                     sbox.wc_dir + '/A/P/E/beta')
-
-  # Commit the copy-with-modification.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'ci',
-                                     sbox.wc_dir,
-                                     '-m', 'log_msg')
-
-  # Lock down the source repository.
-  write_restrictive_svnserve_conf(sbox.repo_dir)
-
-  dest_sbox = sbox.clone_dependent()
-  build_repos(dest_sbox)
-
-  svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
-
-  args = tuple(s.authz_name() for s in [sbox, sbox, dest_sbox])
-  open(sbox.authz_file, 'w').write(
-             "[%s:/]\n"
-             "* = r\n"
-             "\n"
-             "[%s:/A/B]\n"
-             "* = \n"
-             "\n"
-             "[%s:/]\n"
-             "* = rw"
-             % args)
-
-  run_init(dest_sbox.repo_url, sbox.repo_url)
-
-  run_sync(dest_sbox.repo_url)
-
-  expected_out = [
-    'Changed paths:\n',
-    '   A /A/P\n',
-    '   A /A/P/E\n',
-    '   A /A/P/E/alpha\n',
-    '   A /A/P/E/new-file\n',
-    '   A /A/P/F\n',
-    '   A /A/P/NEW-DIR\n',
-    '   A /A/P/lambda\n',
-    '\n',
-    '\n', # log message is stripped
-  ]
-
-  exit_code, out, err = svntest.main.run_svn(None,
-                                             'log',
-                                             '-r', '2',
-                                             '-v',
-                                             dest_sbox.repo_url)
-
-  if err:
-    raise SVNUnexpectedStderr(err)
-
-  svntest.verify.compare_and_display_lines(None,
-                                           'LOG',
-                                           expected_out,
-                                           out[2:12])
-
-  svntest.actions.run_and_verify_svn(None,
-                                     ['bar\n'],
-                                     [],
-                                     'pget',
-                                     'foo',
-                                     dest_sbox.repo_url + '/A/P/lambda')
-
-# Issue 2705.
-@Issue(2705)
-@Skip(svntest.main.is_ra_type_file)
-def copy_with_mod_from_unreadable_dir_and_copy(sbox):
-  "verify copies with mods from unreadable dirs +copy"
-
-  sbox.build("svnsync-copy-with-mod-from-unreadable-dir-and-copy")
-
-  # Make a copy of the B directory.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'cp',
-                                     sbox.wc_dir + '/A/B',
-                                     sbox.wc_dir + '/A/P')
-
-
-  # Copy a (readable) file into the copied directory.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'cp',
-                                     sbox.wc_dir + '/A/D/gamma',
-                                     sbox.wc_dir + '/A/P/E')
-
-
-  # Commit the copy-with-modification.
-  svntest.actions.run_and_verify_svn(None,
-                                     None,
-                                     [],
-                                     'ci',
-                                     sbox.wc_dir,
-                                     '-m', 'log_msg')
-
-  # Lock down the source repository.
-  write_restrictive_svnserve_conf(sbox.repo_dir)
-
-  dest_sbox = sbox.clone_dependent()
-  build_repos(dest_sbox)
-
-  svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
-
-  args = tuple(s.authz_name() for s in [sbox, sbox, dest_sbox])
-  open(sbox.authz_file, 'w').write(
-             "[%s:/]\n"
-             "* = r\n"
-             "\n"
-             "[%s:/A/B]\n"
-             "* = \n"
-             "\n"
-             "[%s:/]\n"
-             "* = rw"
-             % args)
-
-  run_init(dest_sbox.repo_url, sbox.repo_url)
-
-  run_sync(dest_sbox.repo_url)
-
-  expected_out = [
-    'Changed paths:\n',
-    '   A /A/P\n',
-    '   A /A/P/E\n',
-    '   A /A/P/E/alpha\n',
-    '   A /A/P/E/beta\n',
-    '   A /A/P/E/gamma (from /A/D/gamma:1)\n',
-    '   A /A/P/F\n',
-    '   A /A/P/lambda\n',
-    '\n',
-    '\n', # log message is stripped
-  ]
-
-  exit_code, out, err = svntest.main.run_svn(None,
-                                             'log',
-                                             '-r', '2',
-                                             '-v',
-                                             dest_sbox.repo_url)
-
-  if err:
-    raise SVNUnexpectedStderr(err)
-
-  svntest.verify.compare_and_display_lines(None,
-                                           'LOG',
-                                           expected_out,
-                                           out[2:12])
-
 def url_encoding(sbox):
   "test url encoding issues"
   run_test(sbox, "url-encoding-bug.dump")
@@ -823,28 +479,6 @@ def copy_bad_encoding(sbox):
            exp_dump_file_name="copy-bad-encoding.expected.dump",
            bypass_prop_validation=True, source_prop_encoding="ISO-8859-3")
 
-def identity_copy(sbox):
-  "copy UTF-8 svn:* props identically"
-  orig_lc_all = locale.setlocale(locale.LC_ALL)
-  other_locales = [ "English.1252", "German.1252", "French.1252",
-                    "en_US.ISO-8859-1", "en_GB.ISO-8859-1", "de_DE.ISO-8859-1",
-                    "en_US.ISO8859-1", "en_GB.ISO8859-1", "de_DE.ISO8859-1" ]
-  for other_locale in other_locales:
-    try:
-      locale.setlocale(locale.LC_ALL, other_locale)
-      break
-    except:
-      pass
-  if locale.setlocale(locale.LC_ALL) != other_locale:
-    raise svntest.Skip
-
-  try:
-    run_test(sbox, "copy-bad-encoding.expected.dump",
-             exp_dump_file_name="copy-bad-encoding.expected.dump",
-             bypass_prop_validation=True)
-  finally:
-    locale.setlocale(locale.LC_ALL, orig_lc_all)
-
 #----------------------------------------------------------------------
 
 def delete_svn_props(sbox):
@@ -858,66 +492,6 @@ def commit_a_copy_of_root(sbox):
   run_test(sbox, "repo-with-copy-of-root-dir.dump")
 
 
-@Skip(svntest.main.is_ra_type_file)
-def specific_deny_authz(sbox):
-  "verify if specifically denied paths dont sync"
-
-  sbox.build("specific-deny-authz")
-
-  dest_sbox = sbox.clone_dependent()
-  build_repos(dest_sbox)
-
-  svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
-
-  run_init(dest_sbox.repo_url, sbox.repo_url)
-
-  svntest.main.run_svn(None, "cp",
-                       os.path.join(sbox.wc_dir, "A"),
-                       os.path.join(sbox.wc_dir, "A_COPY")
-                       )
-  svntest.main.run_svn(None, "ci", "-mm", sbox.wc_dir)
-
-  write_restrictive_svnserve_conf(sbox.repo_dir)
-
-  # For mod_dav_svn's parent path setup we need per-repos permissions in
-  # the authz file...
-  if sbox.repo_url.startswith('http'):
-    svntest.main.file_write(sbox.authz_file,
-                            "[specific-deny-authz:/]\n"
-                            "* = r\n"
-                            "\n"
-                            "[specific-deny-authz:/A]\n"
-                            "* = \n"
-                            "\n"
-                            "[specific-deny-authz:/A_COPY/B/lambda]\n"
-                            "* = \n"
-                            "\n"
-                            "[specific-deny-authz-1:/]\n"
-                            "* = rw\n")
-  # Otherwise we can just go with the permissions needed for the source
-  # repository.
-  else:
-    svntest.main.file_write(sbox.authz_file,
-                            "[/]\n"
-                            "* = r\n"
-                            "\n"
-                            "[/A]\n"
-                            "* = \n"
-                            "\n"
-                            "[/A_COPY/B/lambda]\n"
-                            "* = \n")
-
-  run_sync(dest_sbox.repo_url)
-
-  lambda_url = dest_sbox.repo_url + '/A_COPY/B/lambda'
-
-  # this file should have been blocked by authz
-  svntest.actions.run_and_verify_svn(None,
-                                     [], svntest.verify.AnyOutput,
-                                     'cat',
-                                     lambda_url)
-
-
 # issue #3641 'svnsync fails to partially copy a repository'.
 # This currently fails because while replacements with history
 # within copies are handled, replacements without history inside
@@ -1002,44 +576,6 @@ def fd_leak_sync_from_serf_to_local(sbox
   resource.setrlimit(resource.RLIMIT_NOFILE, (128, 128))
   run_test(sbox, "largemods.dump", is_src_ra_local=None, is_dest_ra_local=True)
 
-@Issue(4121)
-@Skip(svntest.main.is_ra_type_file)
-def copy_delete_unreadable_child(sbox):
-  "copy, then rm at-src-unreadable child"
-
-  # Prepare the source: Greek tree (r1), cp+rm (r2).
-  sbox.build("copy-delete-unreadable-child")
-  svntest.actions.run_and_verify_svnmucc(None, None, [],
-                                         '-m', 'r2',
-                                         '-U', sbox.repo_url,
-                                         'cp', 'HEAD', '/', 'branch',
-                                         'rm', 'branch/A')
-
-  # Create the destination.
-  dest_sbox = sbox.clone_dependent()
-  build_repos(dest_sbox)
-  svntest.actions.enable_revprop_changes(dest_sbox.repo_dir)
-
-  # Lock down the source.
-  authz = sbox.authz_name()
-  write_restrictive_svnserve_conf(sbox.repo_dir, anon_access='read')
-  svntest.main.file_write(sbox.authz_file,
-      "[%s:/]\n"
-      "* = r\n"
-      "[%s:/A]\n"
-      "* =  \n"
-      % (authz, authz))
-
-  dest_url = svntest.main.file_scheme_prefix \
-                    + urllib.pathname2url(os.path.abspath(dest_sbox.repo_dir))
-  run_init(dest_url, sbox.repo_url)
-  run_sync(dest_url)
-
-  # sanity check
-  svntest.actions.run_and_verify_svn(None,
-                                     ["iota\n"], [],
-                                     'ls', dest_url+'/branch@2')
-
 
 ########################################################################
 # Run the tests
@@ -1060,10 +596,6 @@ test_list = [ None,
               file_dir_file,
               copy_parent_modify_prop,
               detect_meddling,
-              basic_authz,
-              copy_from_unreadable_dir,
-              copy_with_mod_from_unreadable_dir,
-              copy_with_mod_from_unreadable_dir_and_copy,
               url_encoding,
               no_author,
               copy_revprops,
@@ -1075,19 +607,15 @@ test_list = [ None,
               copy_bad_line_endings,
               copy_bad_line_endings2,
               copy_bad_encoding,
-              identity_copy,
               delete_svn_props,
               commit_a_copy_of_root,
-              specific_deny_authz,
               descend_into_replace,
               delete_revprops,
               fd_leak_sync_from_serf_to_local, # calls setrlimit
-              copy_delete_unreadable_child,
              ]
-serial_only = True
 
 if __name__ == '__main__':
-  svntest.main.run_tests(test_list, serial_only = serial_only)
+  svntest.main.run_tests(test_list)
   # NOTREACHED
 
 

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump Thu May 31 22:29:24 2012
@@ -1,6 +1,6 @@
 SVN-fs-dump-format-version: 2
 
-UUID: 728f5e1e-a57c-4dd4-8b4f-ca752f5178f3
+UUID: 11659000-ab01-11e1-8800-0080c8fbf679
 
 Revision-number: 0
 Prop-content-length: 56

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump Thu May 31 22:29:24 2012
@@ -1,6 +1,6 @@
 SVN-fs-dump-format-version: 2
 
-UUID: 728f5e1e-a57c-4dd4-8b4f-ca752f5178f3
+UUID: 11659000-ab01-11e1-8800-0080c8fbf679
 
 Revision-number: 0
 Prop-content-length: 56

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump Thu May 31 22:29:24 2012
@@ -1,6 +1,6 @@
 SVN-fs-dump-format-version: 2
 
-UUID: 728f5e1e-a57c-4dd4-8b4f-ca752f5178f3
+UUID: a6952d52-ab01-11e1-b37f-0080c8fbf679
 
 Revision-number: 0
 Prop-content-length: 56

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump?rev=1344934&r1=1344933&r2=1344934&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump Thu May 31 22:29:24 2012
@@ -1,6 +1,6 @@
 SVN-fs-dump-format-version: 2
 
-UUID: 728f5e1e-a57c-4dd4-8b4f-ca752f5178f3
+UUID: a6952d52-ab01-11e1-b37f-0080c8fbf679
 
 Revision-number: 0
 Prop-content-length: 56



Mime
View raw message