subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From julianf...@apache.org
Subject svn commit: r1619127 [5/5] - in /subversion/branches/move-tracking-2: ./ build/generator/ notes/ notes/api-errata/1.8/ notes/api-errata/1.9/ subversion/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ sub...
Date Wed, 20 Aug 2014 15:31:36 GMT
Modified: subversion/branches/move-tracking-2/subversion/po/fr.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/fr.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/fr.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/fr.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -22,7 +22,7 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2012-07-07 14:51+0200\n"
 "PO-Revision-Date: 2012-07-07 17:04+0200\n"

Modified: subversion/branches/move-tracking-2/subversion/po/it.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/it.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/it.po (original)
+++ subversion/branches/move-tracking-2/subversion/po/it.po Wed Aug 20 15:31:32 2014
@@ -101,7 +101,7 @@
 # working copy: copia di lavoro (CL)
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2010-11-12 08:49-0600\n"
 "PO-Revision-Date: 2007-10-12 10:09+0200\n"

Modified: subversion/branches/move-tracking-2/subversion/po/ja.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/ja.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/ja.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/ja.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -195,7 +195,7 @@
 # zero byte               ゼロバイト文字
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2010-11-12 08:49-0600\n"
 "PO-Revision-Date: 2007-10-28 01:23+0900\n"

Modified: subversion/branches/move-tracking-2/subversion/po/ko.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/ko.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/ko.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/ko.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -19,7 +19,7 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2011-03-07 00:53+0900\n"
 "PO-Revision-Date: 2011-03-03 18:16+0900\n"

Modified: subversion/branches/move-tracking-2/subversion/po/nb.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/nb.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/nb.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/nb.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -87,7 +87,7 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2010-11-12 08:49-0600\n"
 "PO-Revision-Date: 2009-10-14 16:21+0200\n"

Modified: subversion/branches/move-tracking-2/subversion/po/pl.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/pl.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/pl.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/pl.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -55,7 +55,7 @@
 # work queue - kolejka pracy
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2010-11-12 08:49-0600\n"
 "PO-Revision-Date: 2009-11-14 22:00+0100\n"

Modified: subversion/branches/move-tracking-2/subversion/po/pt_BR.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/pt_BR.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/pt_BR.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/pt_BR.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -19,7 +19,7 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2010-11-12 08:49-0600\n"
 "PO-Revision-Date: 2004-07-26 19:19-300\n"

Modified: subversion/branches/move-tracking-2/subversion/po/zh_TW.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/zh_TW.po?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/zh_TW.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/zh_TW.po [UTF-8] Wed Aug 20 15:31:32 2014
@@ -22,7 +22,7 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: subversion 1.7\n"
+"Project-Id-Version: subversion 1.9\n"
 "Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
 "POT-Creation-Date: 2010-11-12 08:49-0600\n"
 "PO-Revision-Date: 2004-09-12 22:05+0800\n"

Modified: subversion/branches/move-tracking-2/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svn/conflict-callbacks.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/move-tracking-2/subversion/svn/conflict-callbacks.c Wed Aug 20 15:31:32 2014
@@ -204,6 +204,8 @@ show_diff(const svn_wc_conflict_descript
  * and 'my' files of DESC. */
 static svn_error_t *
 show_conflicts(const svn_wc_conflict_description2_t *desc,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
                apr_pool_t *pool)
 {
   svn_diff_t *diff;
@@ -220,7 +222,7 @@ show_conflicts(const svn_wc_conflict_des
                                 options, pool));
   /* ### Consider putting the markers/labels from
      ### svn_wc__merge_internal in the conflict description. */
-  return svn_diff_file_output_merge2(output, diff,
+  return svn_diff_file_output_merge3(output, diff,
                                      desc->base_abspath,
                                      desc->my_abspath,
                                      desc->their_abspath,
@@ -229,6 +231,8 @@ show_conflicts(const svn_wc_conflict_des
                                      _(">>>>>>> THEIRS (select with 'tc')"),
                                      "=======",
                                      svn_diff_conflict_display_only_conflicts,
+                                     cancel_func,
+                                     cancel_baton,
                                      pool);
 }
 
@@ -244,6 +248,8 @@ static svn_error_t *
 merge_prop_conflict(svn_stream_t *output,
                     const svn_wc_conflict_description2_t *desc,
                     const char *merged_abspath,
+                    svn_cancel_func_t cancel_func,
+                    void *cancel_baton,
                     apr_pool_t *pool)
 {
   const char *base_abspath = desc->base_abspath;
@@ -275,7 +281,7 @@ merge_prop_conflict(svn_stream_t *output
                                 merged_abspath ? merged_abspath : my_abspath,
                                 their_abspath,
                                 options, pool));
-  SVN_ERR(svn_diff_file_output_merge2(output, diff,
+  SVN_ERR(svn_diff_file_output_merge3(output, diff,
                                       base_abspath,
                                       merged_abspath ? merged_abspath
                                                      : my_abspath,
@@ -285,6 +291,8 @@ merge_prop_conflict(svn_stream_t *output
                                       _(">>>>>>> THEIRS"),
                                       "=======",
                                       svn_diff_conflict_display_modified_original_latest,
+                                      cancel_func,
+                                      cancel_baton,
                                       pool));
 
   return SVN_NO_ERROR;
@@ -300,12 +308,15 @@ merge_prop_conflict(svn_stream_t *output
 static svn_error_t *
 show_prop_conflict(const svn_wc_conflict_description2_t *desc,
                    const char *merged_abspath,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
                    apr_pool_t *pool)
 {
   svn_stream_t *output;
 
   SVN_ERR(svn_stream_for_stdout(&output, pool));
-  SVN_ERR(merge_prop_conflict(output, desc, merged_abspath, pool));
+  SVN_ERR(merge_prop_conflict(output, desc, merged_abspath,
+                              cancel_func, cancel_baton, pool));
 
   return SVN_NO_ERROR;
 }
@@ -374,7 +385,10 @@ edit_prop_conflict(const char **merged_f
                                    result_pool, scratch_pool));
   merged_prop = svn_stream_from_aprfile2(file, TRUE /* disown */,
                                          scratch_pool);
-  SVN_ERR(merge_prop_conflict(merged_prop, desc, NULL, scratch_pool));
+  SVN_ERR(merge_prop_conflict(merged_prop, desc, NULL,
+                              b->pb->cancel_func,
+                              b->pb->cancel_baton,
+                              scratch_pool));
   SVN_ERR(svn_stream_close(merged_prop));
   SVN_ERR(svn_io_file_flush(file, scratch_pool));
   SVN_ERR(open_editor(&performed_edit, file_path, b, scratch_pool));
@@ -778,7 +792,10 @@ handle_text_conflict(svn_wc_conflict_res
                                             "files not available.\n\n")));
               continue;
             }
-          SVN_ERR(show_conflicts(desc, iterpool));
+          SVN_ERR(show_conflicts(desc,
+                                 b->pb->cancel_func,
+                                 b->pb->cancel_baton,
+                                 iterpool));
           knows_something = TRUE;
         }
       else if (strcmp(opt->code, "df") == 0)
@@ -1025,7 +1042,9 @@ handle_prop_conflict(svn_wc_conflict_res
         }
       else if (strcmp(opt->code, "dc") == 0)
         {
-          SVN_ERR(show_prop_conflict(desc, merged_file_path, scratch_pool));
+          SVN_ERR(show_prop_conflict(desc, merged_file_path,
+                                     b->pb->cancel_func, b->pb->cancel_baton,
+                                     scratch_pool));
         }
       else if (strcmp(opt->code, "e") == 0)
         {

Modified: subversion/branches/move-tracking-2/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svn/status.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svn/status.c (original)
+++ subversion/branches/move-tracking-2/subversion/svn/status.c Wed Aug 20 15:31:32 2014
@@ -284,15 +284,14 @@ print_status(const char *target_abspath,
 
       if (tree_conflicted)
         {
-          const svn_wc_conflict_description3_t *tree_conflict;
+          const svn_wc_conflict_description2_t *tree_conflict;
           SVN_ERR(svn_wc__get_tree_conflict(&tree_conflict, ctx->wc_ctx,
                                             local_abspath, pool, pool));
           SVN_ERR_ASSERT(tree_conflict != NULL);
 
           tree_status_code = 'C';
           SVN_ERR(svn_cl__get_human_readable_tree_conflict_description(
-                            &desc, svn_wc__cd3_to_cd2(tree_conflict, pool),
-                            pool));
+                            &desc, tree_conflict, pool));
           tree_desc_line = apr_psprintf(pool, "\n      >   %s", desc);
           (*tree_conflicts)++;
         }

Modified: subversion/branches/move-tracking-2/subversion/svn_private_config.hw
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svn_private_config.hw?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svn_private_config.hw (original)
+++ subversion/branches/move-tracking-2/subversion/svn_private_config.hw Wed Aug 20 15:31:32 2014
@@ -118,6 +118,10 @@
 #define SVN__PREDICT_TRUE(x)  (x)
 #define SVN__PREDICT_FALSE(x)  (x)
 
+/* Macro used to specify that a variable is intentionally left unused.
+   Supresses compiler warnings about the variable being unused.  */
+#define SVN_UNUSED(v) ( (void)(v) )
+
 #endif /* SVN_PRIVATE_CONFIG_HW */
 
 /* Inclusion of Berkeley DB header */

Modified: subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c Wed Aug 20 15:31:32 2014
@@ -811,7 +811,9 @@ display_prop_diffs(svn_stream_t *outstre
 
   SVN_ERR(svn_diff__display_prop_diffs(
             outstream, encoding, propchanges, original_props,
-            FALSE /* pretty_print_mergeinfo */, pool));
+            FALSE /* pretty_print_mergeinfo */,
+            -1 /* context_size */,
+            check_cancel, NULL, pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/svnserve/logger.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnserve/logger.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnserve/logger.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnserve/logger.c Wed Aug 20 15:31:32 2014
@@ -60,7 +60,7 @@ logger__create_for_stderr(logger_t **log
   result->pool = svn_pool_create(pool);
   
   SVN_ERR(svn_stream_for_stderr(&result->stream, pool));
-  SVN_ERR(svn_mutex__init(&result->mutex, TRUE, FALSE, pool));
+  SVN_ERR(svn_mutex__init(&result->mutex, TRUE, pool));
 
   *logger = result;
 
@@ -78,7 +78,7 @@ logger__create(logger_t **logger,
   SVN_ERR(svn_io_file_open(&file, filename,
                            APR_WRITE | APR_CREATE | APR_APPEND,
                            APR_OS_DEFAULT, pool));
-  SVN_ERR(svn_mutex__init(&result->mutex, TRUE, FALSE, pool));
+  SVN_ERR(svn_mutex__init(&result->mutex, TRUE, pool));
 
   result->stream = svn_stream_from_aprfile2(file, FALSE,  pool);
   result->pool = svn_pool_create(pool);

Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/externals_tests.py Wed Aug 20 15:31:32 2014
@@ -3431,7 +3431,6 @@ def update_deletes_file_external(sbox):
                                      sbox.repo_url + '/A_copy')
 
   # Update the working copy
-  sbox.simple_commit()
   sbox.simple_update()
 
   # Remove the branch

Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/lock-helper.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/lock-helper.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/lock-helper.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/lock-helper.c Wed Aug 20 15:31:32 2014
@@ -26,7 +26,6 @@
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
 #include "svn_fs.h"
-#include "svn_fs.h"
 
 int
 main(int argc, const char *argv[])

Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py Wed Aug 20 15:31:32 2014
@@ -106,6 +106,20 @@ def check_hotcopy_fsfs_fsx(src, dst):
           raise svntest.Failure("%s does not exist in hotcopy "
                                 "destination" % dst_path)
 
+        # Special case for db/uuid: Only the UUID in the first line needs
+        # to match. Source and target must have the same number of lines
+        # (due to having the same format).
+        if src_path == os.path.join(src, 'db', 'uuid'):
+          lines1 = open(src_path, 'rb').read().split("\n")
+          lines2 = open(dst_path, 'rb').read().split("\n")
+          if len(lines1) != len(lines2):
+            raise svntest.Failure("%s differs in number of lines"
+                                  % dst_path)
+          if lines1[0] != lines2[0]:
+            raise svntest.Failure("%s contains different uuid: '%s' vs. '%s'"
+                                   % (dst_path, lines1[0], lines2[0]))
+          continue
+
         # Special case for rep-cache: It will always differ in a byte-by-byte
         # comparison, so compare db tables instead.
         if src_file == 'rep-cache.db':
@@ -122,7 +136,7 @@ def check_hotcopy_fsfs_fsx(src, dst):
           for i in range(len(rows1)):
             if rows1[i] != rows2[i]:
               raise svntest.Failure("rep-cache row %i differs: '%s' vs. '%s'"
-                                    % (row, rows1[i]))
+                                    % (i, rows1[i], rows2[i]))
           continue
 
         # Special case for revprop-generation: It will always be zero in
@@ -213,6 +227,24 @@ def get_txns(repo_dir):
 
   return txns
 
+def patch_format(repo_dir, shard_size):
+  """Rewrite the format of the FSFS or FSX repository REPO_DIR so
+  that it would use sharding with SHARDS revisions per shard."""
+
+  format_path = os.path.join(repo_dir, "db", "format")
+  contents = open(format_path, 'rb').read()
+  processed_lines = []
+
+  for line in contents.split("\n"):
+    if line.startswith("layout "):
+      processed_lines.append("layout sharded %d" % shard_size)
+    else:
+      processed_lines.append(line)
+
+  new_contents = "\n".join(processed_lines)
+  os.chmod(format_path, 0666)
+  open(format_path, 'wb').write(new_contents)
+
 def load_and_verify_dumpstream(sbox, expected_stdout, expected_stderr,
                                revs, check_props, dump, *varargs):
   """Load the array of lines passed in DUMP into the current tests'
@@ -267,11 +299,8 @@ class FSFS_Index:
   The interface returns P2L information and allows for item offsets
   and lengths to be modified. """
 
-  by_item = { }
-  revision = -1
-  repo_dir = None
-
   def __init__(self, sbox, revision):
+    self.by_item = { }
     self.revision = revision
     self.repo_dir = sbox.repo_dir
 
@@ -1833,24 +1862,21 @@ def hotcopy_incremental(sbox):
 @SkipUnless(svntest.main.fs_has_pack)
 def hotcopy_incremental_packed(sbox):
   "'svnadmin hotcopy --incremental' with packing"
+
+  # Configure two files per shard to trigger packing.
   sbox.build()
+  patch_format(sbox.repo_dir, shard_size=2)
 
   backup_dir, backup_url = sbox.add_repo_path('backup')
   os.mkdir(backup_dir)
   cwd = os.getcwd()
 
-  # Configure two files per shard to trigger packing
-  format_file = open(os.path.join(sbox.repo_dir, 'db', 'format'), 'wb')
-  if svntest.main.options.server_minor_version >= 9:
-    format_file.write("7\nlayout sharded 2\naddressing logical 0\n")
-  else:
-    format_file.write("6\nlayout sharded 2\n")
-  format_file.close()
-
-  # Pack revisions 0 and 1.
-  svntest.actions.run_and_verify_svnadmin(
-    None, ['Packing revisions in shard 0...done.\n'], [], "pack",
-    os.path.join(cwd, sbox.repo_dir))
+  # Pack revisions 0 and 1 if not already packed.
+  if not (svntest.main.is_fs_type_fsfs and svntest.main.options.fsfs_packing
+          and svntest.main.options.fsfs_sharding == 2):
+    svntest.actions.run_and_verify_svnadmin(
+      None, ['Packing revisions in shard 0...done.\n'], [], "pack",
+      os.path.join(cwd, sbox.repo_dir))
 
   # Commit 5 more revs, hotcopy and pack after each commit.
   for i in [1, 2, 3, 4, 5]:
@@ -1866,7 +1892,8 @@ def hotcopy_incremental_packed(sbox):
     if i < 5:
       sbox.simple_mkdir("newdir-%i" % i)
       sbox.simple_commit()
-      if not i % 2:
+      if (svntest.main.is_fs_type_fsfs and not svntest.main.options.fsfs_packing
+          and not i % 2):
         expected_output = ['Packing revisions in shard %d...done.\n' % (i/2)]
       else:
         expected_output = []
@@ -2486,23 +2513,10 @@ def fsfs_hotcopy_old_with_id_changes(sbo
 @SkipUnless(svntest.main.fs_has_pack)
 def verify_packed(sbox):
   "verify packed with small shards"
-  sbox.build()
 
   # Configure two files per shard to trigger packing.
-  if svntest.main.is_fs_type_fsx():
-    format = "1\nlayout sharded 2\n"
-  elif svntest.main.is_fs_type_fsfs and \
-       svntest.main.options.server_minor_version >= 9:
-    format = "7\nlayout sharded 2\naddressing logical 0\n"
-  elif svntest.main.is_fs_type_fsfs and \
-       svntest.main.options.server_minor_version < 9:
-    format = "6\nlayout sharded 2\n"
-  else:
-    raise svntest.Failure
-
-  format_file = open(os.path.join(sbox.repo_dir, 'db', 'format'), 'wb')
-  format_file.write(format)
-  format_file.close()
+  sbox.build()
+  patch_format(sbox.repo_dir, shard_size=2)
 
   # Play with our greek tree.  These changesets fall into two
   # separate shards with r2 and r3 being in shard 1 ...
@@ -2565,19 +2579,30 @@ def verify_packed(sbox):
 def freeze_freeze(sbox):
   "svnadmin freeze svnadmin freeze (some-cmd)"
 
-  sbox.build(read_only=True) # need working copy as location for arg-file
+  sbox.build(create_wc=False, read_only=True)
   second_repo_dir, _ = sbox.add_repo_path('backup')
   svntest.actions.run_and_verify_svnadmin(None, None, [], "hotcopy",
                                           sbox.repo_dir, second_repo_dir)
-  svntest.actions.run_and_verify_svnadmin(None, [], None,
-                                          'setuuid', second_repo_dir)
+
+  if svntest.main.is_fs_type_fsx() or \
+     (svntest.main.is_fs_type_fsfs() and \
+      svntest.main.options.server_minor_version < 9):
+    # FSFS repositories created with --compatible-version=1.8 and less
+    # erroneously share the filesystem data (locks, shared transaction
+    # data, ...) between hotcopy source and destination.  This is fixed
+    # for new FS formats, but in order to avoid SVN_ERR_RECURSIVE_LOCK
+    # for old formats, we have to manually assign a new UUID for the
+    # hotcopy destination.  As of trunk@1618024, the same applies to
+    # FSX repositories.
+    svntest.actions.run_and_verify_svnadmin(None, [], None,
+                                            'setuuid', second_repo_dir)
 
   svntest.actions.run_and_verify_svnadmin(None, None, [],
                  'freeze', '--', sbox.repo_dir,
                  svntest.main.svnadmin_binary, 'freeze', '--', second_repo_dir,
                  sys.executable, '-c', 'True')
 
-  arg_file = sbox.ospath('arg-file')
+  arg_file = sbox.get_tempname()
   svntest.main.file_write(arg_file,
                           "%s\n%s\n" % (sbox.repo_dir, second_repo_dir))
 
@@ -2662,17 +2687,7 @@ def fsfs_hotcopy_progress(sbox):
   sbox.build(create_wc=False)
   svntest.main.safe_rmtree(sbox.repo_dir, True)
   svntest.main.create_repos(sbox.repo_dir)
-
-  if svntest.main.options.server_minor_version >= 9:
-    format = "7\nlayout sharded 3\naddressing logical 0\n"
-  elif svntest.main.options.server_minor_version < 9:
-    format = "6\nlayout sharded 3\n"
-  else:
-    raise svntest.Failure
-
-  format_file = open(os.path.join(sbox.repo_dir, 'db', 'format'), 'wb')
-  format_file.write(format)
-  format_file.close()
+  patch_format(sbox.repo_dir, shard_size=3)
 
   inc_backup_dir, inc_backup_url = sbox.add_repo_path('incremental-backup')
 
@@ -2881,6 +2896,44 @@ def fsfs_hotcopy_progress_old(sbox):
                                           sbox.repo_dir, inc_backup_dir)
 
 
+@SkipUnless(svntest.main.is_fs_type_fsfs)
+def freeze_same_uuid(sbox):
+  "freeze multiple repositories with same UUID"
+
+  sbox.build(create_wc=False)
+
+  first_repo_dir, _ = sbox.add_repo_path('first')
+  second_repo_dir, _ = sbox.add_repo_path('second')
+
+  # Test that 'svnadmin freeze A (svnadmin freeze B)' does not deadlock or
+  # error out with SVN_ERR_RECURSIVE_LOCK for new FSFS formats, even if 'A'
+  # and 'B' share the same UUID.  Create two repositories by loading the
+  # same dump file, ...
+  svntest.main.create_repos(first_repo_dir)
+  svntest.main.create_repos(second_repo_dir)
+
+  dump_path = os.path.join(os.path.dirname(sys.argv[0]),
+                                           'svnadmin_tests_data',
+                                           'skeleton_repos.dump')
+  dump_contents = open(dump_path, 'rb').readlines()
+  svntest.actions.run_and_verify_load(first_repo_dir, dump_contents)
+  svntest.actions.run_and_verify_load(second_repo_dir, dump_contents)
+
+  # ...and execute the 'svnadmin freeze -F' command.
+  if svntest.main.options.server_minor_version < 9:
+    expected_error = ".*svnadmin: E200043:.*"
+  else:
+    expected_error = None
+
+  arg_file = sbox.get_tempname()
+  svntest.main.file_write(arg_file,
+                          "%s\n%s\n" % (first_repo_dir, second_repo_dir))
+
+  svntest.actions.run_and_verify_svnadmin(None, None, expected_error,
+                                          'freeze', '-F', arg_file, '--',
+                                          sys.executable, '-c', 'True')
+
+
 ########################################################################
 # Run the tests
 
@@ -2932,6 +2985,7 @@ test_list = [ None,
               fsfs_hotcopy_progress,
               fsfs_hotcopy_progress_with_revprop_changes,
               fsfs_hotcopy_progress_old,
+              freeze_same_uuid,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py Wed Aug 20 15:31:32 2014
@@ -155,6 +155,7 @@ svnsync_binary = P('svnsync/svnsync')
 svnversion_binary = P('svnversion/svnversion')
 svndumpfilter_binary = P('svndumpfilter/svndumpfilter')
 svnmucc_binary = P('svnmucc/svnmucc')
+svnfsfs_binary = P('svnfsfs/svnfsfs')
 entriesdump_binary = P('tests/cmdline/entries-dump')
 lock_helper_binary = P('tests/cmdline/lock-helper')
 atomic_ra_revprop_change_binary = P('tests/cmdline/atomic-ra-revprop-change')
@@ -171,14 +172,6 @@ svnauthz_validate_binary = os.path.abspa
     '../../../tools/server-side/svnauthz-validate' + _exe
 )
 
-######################################################################
-# The location of svnfsfs binary, relative to the only scripts that
-# import this file right now (they live in ../).
-# Use --tools to overide these defaults.
-svnfsfs_binary = os.path.abspath(
-    '../../../tools/server-side/svnfsfs/svnfsfs' + _exe
-)
-
 # Location to the pristine repository, will be calculated from test_area_url
 # when we know what the user specified for --url.
 pristine_greek_repos_url = None
@@ -1011,7 +1004,7 @@ def create_repos(path, minor_version = N
     # post-commit
     # Note that some tests (currently only commit_tests) create their own
     # post-commit hooks, which would override this one. :-(
-    if options.fsfs_packing:
+    if options.fsfs_packing and minor_version >=6:
       # some tests chdir.
       abs_path = os.path.abspath(path)
       create_python_hook_script(get_post_commit_hook_path(abs_path),
@@ -1508,6 +1501,10 @@ class TestSpawningThread(threading.Threa
       args.append('--exclusive-wc-locks')
     if options.memcached_server:
       args.append('--memcached-server=' + options.memcached_server)
+    if options.fsfs_sharding:
+      args.append('--fsfs-sharding=' + str(options.fsfs_sharding))
+    if options.fsfs_packing:
+      args.append('--fsfs-packing')
 
     result, stdout_lines, stderr_lines = spawn_process(command, 0, False, None,
                                                        *args)

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/diff-diff3-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/diff-diff3-test.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/diff-diff3-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/diff-diff3-test.c Wed Aug 20 15:31:32 2014
@@ -173,13 +173,15 @@ three_way_merge(const char *base_filenam
   actual = svn_stringbuf_create_empty(pool);
   ostream = svn_stream_from_stringbuf(actual, pool);
 
-  SVN_ERR(svn_diff_mem_string_output_merge2
+  SVN_ERR(svn_diff_mem_string_output_merge3
           (ostream, diff, original, modified, latest,
            apr_psprintf(pool, "||||||| %s", base_filename1),
            apr_psprintf(pool, "<<<<<<< %s", base_filename2),
            apr_psprintf(pool, ">>>>>>> %s", base_filename3),
            NULL, /* separator */
-           style, pool));
+           style,
+           NULL, NULL, /* cancel */
+           pool));
 
   SVN_ERR(svn_stream_close(ostream));
   if (strcmp(actual->data, expected) != 0)
@@ -199,14 +201,16 @@ three_way_merge(const char *base_filenam
                            APR_OS_DEFAULT, pool));
 
   ostream = svn_stream_from_aprfile2(output, FALSE, pool);
-  SVN_ERR(svn_diff_file_output_merge2(
+  SVN_ERR(svn_diff_file_output_merge3(
               ostream, diff,
               filename1, filename2, filename3,
               apr_psprintf(pool, "||||||| %s", base_filename1),
               apr_psprintf(pool, "<<<<<<< %s", base_filename2),
               apr_psprintf(pool, ">>>>>>> %s", base_filename3),
               NULL, /* separator */
-              style, pool));
+              style,
+              NULL, NULL, /* cancel */
+              pool));
   SVN_ERR(svn_stream_close(ostream));
   SVN_ERR(svn_stringbuf_from_file2(&actual, merge_name, pool));
   if (strcmp(actual->data, expected))

Propchange: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Aug 20 15:31:32 2014
@@ -1,6 +1,5 @@
 .libs
-test-fs-*
-test-repo-*
+test-*
 locks-test
 fs-test
 *.o

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c Wed Aug 20 15:31:32 2014
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <apr_pools.h>
+#include <apr_thread_proc.h>
 #include <assert.h>
 
 #include "../svn_test.h"
@@ -37,6 +38,7 @@
 #include "svn_props.h"
 #include "svn_version.h"
 
+#include "svn_private_config.h"
 #include "private/svn_fs_util.h"
 #include "private/svn_fs_private.h"
 
@@ -5307,6 +5309,100 @@ dir_prop_merge(const svn_test_opts_t *op
   return SVN_NO_ERROR;
 }
 
+#if APR_HAS_THREADS
+struct reopen_modify_baton_t {
+  const char *fs_path;
+  const char *txn_name;
+  apr_pool_t *pool;
+  svn_error_t *err;
+};
+
+static void * APR_THREAD_FUNC
+reopen_modify_child(apr_thread_t *tid, void *data)
+{
+  struct reopen_modify_baton_t *baton = data;
+  svn_fs_t *fs;
+  svn_fs_txn_t *txn;
+  svn_fs_root_t *root;
+
+  baton->err = svn_fs_open(&fs, baton->fs_path, NULL, baton->pool);
+  if (!baton->err)
+    baton->err = svn_fs_open_txn(&txn, fs, baton->txn_name, baton->pool);
+  if (!baton->err)
+    baton->err = svn_fs_txn_root(&root, txn, baton->pool);
+  if (!baton->err)
+    baton->err = svn_fs_change_node_prop(root, "A", "name",
+                                         svn_string_create("value",
+                                                           baton->pool),
+                                         baton->pool);
+  svn_pool_destroy(baton->pool);
+  apr_thread_exit(tid, 0);
+  return NULL;
+}
+#endif
+
+static svn_error_t *
+reopen_modify(const svn_test_opts_t *opts,
+              apr_pool_t *pool)
+{
+#if APR_HAS_THREADS
+  svn_fs_t *fs;
+  svn_revnum_t head_rev = 0;
+  svn_fs_root_t *root;
+  svn_fs_txn_t *txn;
+  const char *fs_path, *txn_name;
+  svn_string_t *value;
+  struct reopen_modify_baton_t baton;
+  apr_status_t status, child_status;
+  apr_threadattr_t *tattr;
+  apr_thread_t *tid;
+
+  /* Create test repository with greek tree. */
+  fs_path = "test-reopen-modify";
+  SVN_ERR(svn_test__create_fs(&fs, fs_path, opts, pool));
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, head_rev, pool));
+  SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+  SVN_ERR(svn_test__create_greek_tree(root, pool));
+  SVN_ERR(test_commit_txn(&head_rev, txn, NULL, pool));
+
+  /* Create txn with changes. */
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, head_rev, pool));
+  SVN_ERR(svn_fs_txn_name(&txn_name, txn, pool)); 
+  SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+  SVN_ERR(svn_fs_make_dir(root, "X", pool));
+
+  /* In another thread: reopen fs and txn, and add more changes.  This
+     works in BDB and FSX but in FSFS the txn_dir_cache becomes
+     out-of-date and the thread's changes don't reach the revision. */
+  baton.fs_path = fs_path;
+  baton.txn_name = txn_name;
+  baton.pool = svn_pool_create(pool);
+  status = apr_threadattr_create(&tattr, pool);
+  if (status)
+    return svn_error_wrap_apr(status, _("Can't create threadattr"));
+  status = apr_thread_create(&tid, tattr, reopen_modify_child, &baton, pool);
+  if (status)
+    return svn_error_wrap_apr(status, _("Can't create thread"));
+  status = apr_thread_join(&child_status, tid);
+  if (status)
+    return svn_error_wrap_apr(status, _("Can't join thread"));
+  if (baton.err)
+    return svn_error_trace(baton.err);
+
+  /* Commit */
+  SVN_ERR(test_commit_txn(&head_rev, txn, NULL, pool));
+
+  /* Check for change made by thread. */
+  SVN_ERR(svn_fs_revision_root(&root, fs, head_rev, pool));
+  SVN_ERR(svn_fs_node_prop(&value, root, "A", "name", pool));
+  SVN_TEST_ASSERT(value && !strcmp(value->data, "value"));
+
+  return SVN_NO_ERROR;
+#else
+  return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, "no thread support");
+#endif
+}
+
 
 /* ------------------------------------------------------------------------ */
 
@@ -5402,6 +5498,9 @@ static struct svn_test_descriptor_t test
                        "test svn_fs__compatible_version"),
     SVN_TEST_OPTS_PASS(dir_prop_merge,
                        "test merge directory properties"),
+    SVN_TEST_OPTS_WIMP(reopen_modify,
+                       "test reopen and modify txn",
+                       "txn_dir_cache fail in FSFS"),
     SVN_TEST_NULL
   };
 

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Wed Aug 20 15:31:32 2014
@@ -1113,46 +1113,6 @@ upgrade_old_txns_to_log_addressing(const
 
 /* ------------------------------------------------------------------------ */
 
-static svn_error_t *
-never_reached(void *baton,
-              apr_pool_t *pool)
-{
-  return SVN_NO_ERROR;
-}
-
-static svn_error_t *
-lock_again(void *baton,
-           apr_pool_t *pool)
-{
-  svn_fs_t *fs = baton;
-  SVN_TEST_ASSERT_ERROR(svn_fs_fs__with_all_locks(fs, never_reached, fs,
-                                                  pool),
-                        SVN_ERR_RECURSIVE_LOCK);
-  return SVN_NO_ERROR;
-}
-
-#define REPO_NAME "recursive_locking"
-static svn_error_t *
-recursive_locking(const svn_test_opts_t *opts,
-                  apr_pool_t *pool)
-{
-  svn_fs_t *fs;
-
-  /* Bail (with success) on known-untestable scenarios */
-  if (strcmp(opts->fs_type, "bdb") == 0)
-    return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL,
-                            "BDB won't test for recursive locks");
-
-  SVN_ERR(svn_test__create_fs(&fs, REPO_NAME, opts, pool));
-  SVN_ERR(svn_fs_fs__with_all_locks(fs, lock_again, fs, pool));
-
-  return SVN_NO_ERROR;
-}
-
-#undef REPO_NAME
-
-/* ------------------------------------------------------------------------ */
-
 #define REPO_NAME "metadata_checksumming"
 static svn_error_t *
 metadata_checksumming(const svn_test_opts_t *opts,
@@ -1208,6 +1168,55 @@ metadata_checksumming(const svn_test_opt
 #undef REPO_NAME
 
 /* ------------------------------------------------------------------------ */
+
+#define REPO_NAME "revprop_caching_on_off"
+static svn_error_t *
+revprop_caching_on_off(const svn_test_opts_t *opts,
+                       apr_pool_t *pool)
+{
+  svn_fs_t *fs1;
+  svn_fs_t *fs2;
+  apr_hash_t *fs_config;
+  svn_string_t *value;
+  const svn_string_t *another_value_for_avoiding_warnings_from_a_broken_api;
+  const svn_string_t *new_value = svn_string_create("new", pool);
+
+  if (strcmp(opts->fs_type, "fsfs") != 0)
+    return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, NULL);
+
+  /* Revision property caching requires named atomics. */
+  if (!svn_named_atomic__is_supported())
+    return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, NULL);
+
+  /* Open two filesystem objects, enable revision property caching
+   * in one of them. */
+  SVN_ERR(svn_test__create_fs(&fs1, REPO_NAME, opts, pool));
+
+  fs_config = apr_hash_make(pool);
+  svn_hash_sets(fs_config, SVN_FS_CONFIG_FSFS_CACHE_REVPROPS, "1");
+
+  SVN_ERR(svn_fs_open2(&fs2, svn_fs_path(fs1, pool), fs_config, pool, pool));
+
+  SVN_ERR(svn_fs_revision_prop(&value, fs2, 0, "svn:date", pool));
+  another_value_for_avoiding_warnings_from_a_broken_api = value;
+  SVN_ERR(svn_fs_change_rev_prop2(
+              fs1, 0, "svn:date",
+              &another_value_for_avoiding_warnings_from_a_broken_api,
+              new_value, pool));
+
+  /* Expect the change to be visible through both objects.*/
+  SVN_ERR(svn_fs_revision_prop(&value, fs1, 0, "svn:date", pool));
+  SVN_TEST_STRING_ASSERT(value->data, "new");
+
+  SVN_ERR(svn_fs_revision_prop(&value, fs2, 0, "svn:date", pool));
+  SVN_TEST_STRING_ASSERT(value->data, "new");
+
+  return SVN_NO_ERROR;
+}
+
+#undef REPO_NAME
+
+/* ------------------------------------------------------------------------ */
 
 /* The test table.  */
 
@@ -1244,10 +1253,10 @@ static struct svn_test_descriptor_t test
                        "upgrade txns to log addressing in shared FSFS"),
     SVN_TEST_OPTS_PASS(upgrade_old_txns_to_log_addressing,
                        "upgrade txns started before svnadmin upgrade"),
-    SVN_TEST_OPTS_PASS(recursive_locking,
-                       "prevent recursive locking"),
     SVN_TEST_OPTS_PASS(metadata_checksumming,
                        "metadata checksums being checked"),
+    SVN_TEST_OPTS_XFAIL(revprop_caching_on_off,
+                        "change revprops with enabled and disabled caching"),
     SVN_TEST_NULL
   };
 

Propchange: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/
------------------------------------------------------------------------------
  Merged /subversion/trunk/subversion/tests/libsvn_fs_x:r1606692-1619125

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c Wed Aug 20 15:31:32 2014
@@ -814,11 +814,12 @@ test_reps(const svn_test_opts_t *opts,
   builder = svn_fs_x__reps_builder_create(fs, pool);
   for (i = 10000; i > 10; --i)
     {
+      apr_size_t idx;
       svn_string_t string;
       string.data = contents->data;
       string.len = i;
 
-      svn_fs_x__reps_add(builder, &string);
+      SVN_ERR(svn_fs_x__reps_add(&idx, builder, &string));
     }
 
   serialized = svn_stringbuf_create_empty(pool);

Propchange: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Aug 20 15:31:32 2014
@@ -50,3 +50,5 @@ root-pools-test
 aligned_seek_tmp
 read_length_tmp
 bit-array-test
+io-test-*
+sqlite-test-*

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/dirent_uri-test.c Wed Aug 20 15:31:32 2014
@@ -37,6 +37,7 @@
 #include "svn_pools.h"
 #include "svn_dirent_uri.h"
 #include "private/svn_fspath.h"
+#include "private/svn_cert.h"
 
 #include "../svn_test.h"
 
@@ -2715,6 +2716,145 @@ test_fspath_get_longest_ancestor(apr_poo
   return SVN_NO_ERROR;
 }
 
+struct cert_match_dns_test {
+  const char *pattern;
+  const char *hostname;
+  svn_boolean_t expected;
+};
+
+static svn_error_t *
+run_cert_match_dns_tests(struct cert_match_dns_test *tests, apr_pool_t *pool)
+{
+  struct cert_match_dns_test *ct;
+  apr_pool_t *iterpool = svn_pool_create(pool);
+
+  for (ct = tests; ct->pattern; ct++)
+    {
+      svn_boolean_t result;
+      svn_string_t *pattern, *hostname;
+
+      svn_pool_clear(iterpool);
+
+      pattern = svn_string_create(ct->pattern, iterpool);
+      hostname = svn_string_create(ct->hostname, iterpool);
+
+      result = svn_cert__match_dns_identity(pattern, hostname);
+      if (result != ct->expected)
+        return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                                 "Expected %s but got %s for pattern '%s' on "
+                                 "hostname '%s'",
+                                 ct->expected ? "match" : "no match",
+                                 result ? "match" : "no match",
+                                 pattern->data, hostname->data);
+
+    }
+
+  svn_pool_destroy(iterpool);
+
+  return SVN_NO_ERROR;
+}
+
+static struct cert_match_dns_test cert_match_dns_tests[] = {
+  { "foo.example.com", "foo.example.com", TRUE }, /* exact match */
+  { "foo.example.com", "FOO.EXAMPLE.COM", TRUE }, /* case differences */
+  { "FOO.EXAMPLE.COM", "foo.example.com", TRUE },
+  { "*.example.com", "FoO.ExAmPlE.CoM", TRUE },
+  { "*.ExAmPlE.CoM", "foo.example.com", TRUE },
+  { "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz", TRUE },
+  { "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", TRUE },
+  { "foo.example.com", "bar.example.com", FALSE }, /* difference at start */
+  { "foo.example.com", "foo.example.net", FALSE }, /* difference at end */
+  { "foo.example.com", "foo.example.commercial", FALSE }, /* hostname longer */
+  { "foo.example.commercial", "foo.example.com", FALSE }, /* pattern longer */
+  { "foo.example.comcom", "foo.example.com", FALSE }, /* repeated suffix */
+  { "foo.example.com", "foo.example.comcom", FALSE },
+  { "foo.example.com.com", "foo.example.com", FALSE },
+  { "foo.example.com", "foo.example.com.com", FALSE },
+  { "foofoo.example.com", "foo.example.com", FALSE }, /* repeated prefix */
+  { "foo.example.com", "foofoo.example.com", FALSE },
+  { "foo.foo.example.com", "foo.example.com", FALSE },
+  { "foo.example.com", "foo.foo.example.com", FALSE },
+  { "foo.*.example.com", "foo.bar.example.com", FALSE }, /* RFC 6125 s. 6.4.3
+                                                            Rule 1 */
+  { "*.example.com", "foo.example.com", TRUE }, /* RFC 6125 s. 6.4.3 Rule 2 */
+  { "*.example.com", "bar.foo.example.com", FALSE }, /* Rule 2 */
+  { "*.example.com", "example.com", FALSE }, /* Rule 2 */
+  { "*.example.com", ".example.com", FALSE }, /* RFC doesn't say what to do
+                                                 here and a leading period on
+                                                 a hostname doesn't make sense
+                                                 so we'll just reject this. */
+  { "*", "foo.example.com", FALSE }, /* wildcard must be left-most label,
+                                        implies that there must be more than
+                                        one label. */
+  { "*", "example.com", FALSE },
+  { "*", "com", FALSE },
+  { "*.example.com", "foo.example.net", FALSE }, /* difference in literal text
+                                                    with a wildcard. */
+  { "*.com", "example.com", TRUE }, /* See Errata ID 3090 for RFC 6125,
+                                       probably shouldn't allow this but
+                                       we do for now. */
+  { "*.", "example.com", FALSE }, /* test some dubious 2 character wildcard
+                                     patterns */
+  { "*.", "example.", TRUE }, /* This one feels questionable */
+  { "*.", "example", FALSE },
+  { "*.", ".", FALSE },
+  { "a", "a", TRUE }, /* check that single letter exact matches work */
+  { "a", "b", FALSE }, /* and single letter not matches shouldn't */
+  { "*.*.com", "foo.example.com", FALSE }, /* unsupported wildcards */
+  { "*.*.com", "example.com", FALSE },
+  { "**.example.com", "foo.example.com", FALSE },
+  { "**.example.com", "example.com", FALSE },
+  { "f*.example.com", "foo.example.com", FALSE },
+  { "f*.example.com", "bar.example.com", FALSE },
+  { "*o.example.com", "foo.example.com", FALSE },
+  { "*o.example.com", "bar.example.com", FALSE },
+  { "f*o.example.com", "foo.example.com", FALSE },
+  { "f*o.example.com", "bar.example.com", FALSE },
+  { "foo.e*.com", "foo.example.com", FALSE },
+  { "foo.*e.com", "foo.example.com", FALSE },
+  { "foo.e*e.com", "foo.example.com", FALSE },
+  { "foo.example.com", "foo.example.com.", TRUE }, /* trailing dot */
+  { "*.example.com", "foo.example.com.", TRUE },
+  { "foo", "foo.", TRUE },
+  { "foo.example.com.", "foo.example.com", FALSE },
+  { "*.example.com.", "foo.example.com", FALSE },
+  { "foo.", "foo", FALSE },
+  { "foo.example.com", "foo.example.com..", FALSE },
+  { "*.example.com", "foo.example.com..", FALSE },
+  { "foo", "foo..", FALSE },
+  { "foo.example.com..", "foo.example.com", FALSE },
+  { "*.example.com..", "foo.example.com", FALSE },
+  { "foo..", "foo", FALSE },
+  { NULL }
+};
+
+static svn_error_t *
+test_cert_match_dns_identity(apr_pool_t *pool)
+{
+  return run_cert_match_dns_tests(cert_match_dns_tests, pool);
+}
+
+/* This test table implements results that should happen if we supported
+ * RFC 6125 s. 6.4.3 Rule 3.  We don't so it's expected to fail for now. */
+static struct cert_match_dns_test rule3_tests[] = {
+  { "baz*.example.net", "baz1.example.net", TRUE },
+  { "*baz.example.net", "foobaz.example.net", TRUE },
+  { "b*z.example.net", "buuz.example.net", TRUE },
+  { "b*z.example.net", "bz.example.net", FALSE }, /* presume wildcard can't
+                                                     match nothing */
+  { "baz*.example.net", "baz.example.net", FALSE },
+  { "*baz.example.net", "baz.example.net", FALSE },
+  { "b*z.example.net", "buuzuuz.example.net", TRUE }, /* presume wildcard
+                                                         should be greedy */
+  { NULL }
+};
+
+static svn_error_t *
+test_rule3(apr_pool_t *pool)
+{
+  return run_cert_match_dns_tests(rule3_tests, pool);
+}
+
 
 /* The test table.  */
 
@@ -2815,6 +2955,10 @@ static struct svn_test_descriptor_t test
                    "test svn_fspath__dirname/basename/split"),
     SVN_TEST_PASS2(test_fspath_get_longest_ancestor,
                    "test svn_fspath__get_longest_ancestor"),
+    SVN_TEST_PASS2(test_cert_match_dns_identity,
+                   "test svn_cert__match_dns_identity"),
+    SVN_TEST_XFAIL2(test_rule3,
+                    "test match with RFC 6125 s. 6.4.3 Rule 3"),
     SVN_TEST_NULL
   };
 

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/named_atomic-test-common.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/named_atomic-test-common.h?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/named_atomic-test-common.h (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/named_atomic-test-common.h Wed Aug 20 15:31:32 2014
@@ -48,7 +48,8 @@ typedef struct watchdog_t
   apr_time_t deadline;
   svn_named_atomic__t *atomic_counter;
   int iterations;
-  int call_count; /* don't call apr_time_now() too often '*/
+  int call_count;             /* don't call apr_time_now() too often '*/
+  svn_boolean_t throttle;     /* TRUE -> we are using file locks for sync */
 } watchdog_t;
 
 /* init the WATCHDOG data structure for checking ATOMIC_COUNTER to reach
@@ -65,6 +66,7 @@ init_watchdog(watchdog_t *watchdog,
   watchdog->atomic_counter = atomic_counter;
   watchdog->iterations = iterations;
   watchdog->call_count = 0;
+  watchdog->throttle = !svn_named_atomic__is_efficient();
 }
 
 /* test for watchdog conditions */
@@ -84,6 +86,12 @@ check_watchdog(watchdog_t *watchdog, svn
       return SVN_NO_ERROR;
     }
 
+  /* If we are using file locks for synchronization, our polling loops will
+   * simply hammering them instead of giving the system time to actually
+   * do something.  So, slow down to get faster ... */
+  if (watchdog->throttle)
+    apr_sleep(1000);
+
   /* Check the system time and indicate when deadline has passed */
   if (++watchdog->call_count > 100)
     {
@@ -154,8 +162,11 @@ test_pipeline_loop(svn_named_atomic__t *
       do
         {
           SVN_ERR(svn_named_atomic__write(&value, 0, atomic_in));
-          SVN_ERR(check_watchdog(watchdog, &done));
-          if (done) return SVN_NO_ERROR;
+          if (!value)
+            {
+              SVN_ERR(check_watchdog(watchdog, &done));
+              if (done) return SVN_NO_ERROR;
+            }
         }
       while (value == 0);
 
@@ -170,8 +181,11 @@ test_pipeline_loop(svn_named_atomic__t *
                                             value,
                                             0,
                                             atomic_out));
-          SVN_ERR(check_watchdog(watchdog, &done));
-          if (done) return SVN_NO_ERROR;
+          if (old_value)
+            {
+              SVN_ERR(check_watchdog(watchdog, &done));
+              if (done) return SVN_NO_ERROR;
+            }
         }
       while (old_value != 0);
 

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/conflict-data-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/conflict-data-test.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/conflict-data-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/conflict-data-test.c Wed Aug 20 15:31:32 2014
@@ -88,8 +88,8 @@ compare_version(const svn_wc_conflict_ve
  * (including names of temporary files), or are both NULL.  Return an
  * error if not. */
 static svn_error_t *
-compare_conflict(const svn_wc_conflict_description3_t *actual,
-                 const svn_wc_conflict_description3_t *expected)
+compare_conflict(const svn_wc_conflict_description2_t *actual,
+                 const svn_wc_conflict_description2_t *expected)
 {
   if (actual == NULL && expected == NULL)
     return SVN_NO_ERROR;
@@ -107,7 +107,7 @@ compare_conflict(const svn_wc_conflict_d
   ASSERT_STR_EQ(actual->base_abspath,   expected->base_abspath);
   ASSERT_STR_EQ(actual->their_abspath,  expected->their_abspath);
   ASSERT_STR_EQ(actual->my_abspath,     expected->my_abspath);
-  ASSERT_STR_EQ(actual->merged_abspath, expected->merged_abspath);
+  ASSERT_STR_EQ(actual->merged_file,    expected->merged_file);
   ASSERT_INT_EQ(actual->operation,      expected->operation);
   SVN_ERR(compare_version(actual->src_left_version,
                           expected->src_left_version));
@@ -134,7 +134,7 @@ compare_file_content(const char *file_ab
  * conflict, or are both NULL.  Return an error if not.
  *
  * Compare the property values found in files named by
- * ACTUAL->base_abspath, ACTUAL->my_abspath, ACTUAL->merged_abspath
+ * ACTUAL->base_abspath, ACTUAL->my_abspath, ACTUAL->merged_file
  * with EXPECTED_BASE_VAL, EXPECTED_MY_VAL, EXPECTED_THEIR_VAL
  * respectively, ignoring the corresponding fields in EXPECTED. */
 static svn_error_t *
@@ -181,7 +181,7 @@ compare_prop_conflict(const svn_wc_confl
 }
 
 /* Create and return a tree conflict description */
-static svn_wc_conflict_description3_t *
+static svn_wc_conflict_description2_t *
 tree_conflict_create(const char *local_abspath,
                      svn_node_kind_t node_kind,
                      svn_wc_operation_t operation,
@@ -198,14 +198,14 @@ tree_conflict_create(const char *local_a
                      apr_pool_t *result_pool)
 {
   svn_wc_conflict_version_t *left, *right;
-  svn_wc_conflict_description3_t *conflict;
+  svn_wc_conflict_description2_t *conflict;
 
   left = svn_wc_conflict_version_create2(left_repo, NULL, left_path,
                                          left_revnum, left_kind, result_pool);
   right = svn_wc_conflict_version_create2(right_repo, NULL, right_path,
                                           right_revnum, right_kind,
                                           result_pool);
-  conflict = svn_wc_conflict_description_create_tree3(
+  conflict = svn_wc_conflict_description_create_tree2(
                     local_abspath, node_kind, operation,
                     left, right, result_pool);
   conflict->action = action;
@@ -216,8 +216,8 @@ tree_conflict_create(const char *local_a
 static svn_error_t *
 test_deserialize_tree_conflict(apr_pool_t *pool)
 {
-  const svn_wc_conflict_description3_t *conflict;
-  svn_wc_conflict_description3_t *exp_conflict;
+  const svn_wc_conflict_description2_t *conflict;
+  svn_wc_conflict_description2_t *exp_conflict;
   const char *tree_conflict_data;
   const char *local_abspath;
   const svn_skel_t *skel;
@@ -226,7 +226,7 @@ test_deserialize_tree_conflict(apr_pool_
                         "(version 0  2 -1 0  0 ) (version 0  2 -1 0  0 ))";
 
   SVN_ERR(svn_dirent_get_absolute(&local_abspath, "Foo.c", pool));
-  exp_conflict = svn_wc_conflict_description_create_tree3(
+  exp_conflict = svn_wc_conflict_description_create_tree2(
                         local_abspath, svn_node_file, svn_wc_operation_update,
                         NULL, NULL, pool);
   exp_conflict->action = svn_wc_conflict_action_delete;
@@ -236,8 +236,8 @@ test_deserialize_tree_conflict(apr_pool_
   SVN_ERR(svn_wc__deserialize_conflict(&conflict, skel, "", pool, pool));
 
   if ((conflict->node_kind != exp_conflict->node_kind) ||
-      (conflict->action    != exp_conflict->action) ||
-      (conflict->reason    != exp_conflict->reason) ||
+      (conflict->action != exp_conflict->action) ||
+      (conflict->reason != exp_conflict->reason) ||
       (conflict->operation != exp_conflict->operation) ||
       (strcmp(conflict->local_abspath, exp_conflict->local_abspath) != 0))
     return fail(pool, "Unexpected tree conflict");
@@ -248,7 +248,7 @@ test_deserialize_tree_conflict(apr_pool_
 static svn_error_t *
 test_serialize_tree_conflict_data(apr_pool_t *pool)
 {
-  svn_wc_conflict_description3_t *conflict;
+  svn_wc_conflict_description2_t *conflict;
   const char *tree_conflict_data;
   const char *expected;
   const char *local_abspath;
@@ -256,7 +256,7 @@ test_serialize_tree_conflict_data(apr_po
 
   SVN_ERR(svn_dirent_get_absolute(&local_abspath, "Foo.c", pool));
 
-  conflict = svn_wc_conflict_description_create_tree3(
+  conflict = svn_wc_conflict_description_create_tree2(
                     local_abspath, svn_node_file, svn_wc_operation_update,
                     NULL, NULL, pool);
   conflict->action = svn_wc_conflict_action_delete;
@@ -285,7 +285,7 @@ test_read_write_tree_conflicts(const svn
 
   const char *parent_abspath;
   const char *child1_abspath, *child2_abspath;
-  svn_wc_conflict_description3_t *conflict1, *conflict2;
+  svn_wc_conflict_description2_t *conflict1, *conflict2;
 
   SVN_ERR(svn_test__sandbox_create(&sbox, "read_write_tree_conflicts", opts, pool));
   parent_abspath = svn_dirent_join(sbox.wc_abspath, "A", pool);
@@ -337,7 +337,7 @@ test_read_write_tree_conflicts(const svn
 
   /* Read conflicts back */
   {
-    const svn_wc_conflict_description3_t *read_conflict;
+    const svn_wc_conflict_description2_t *read_conflict;
 
     SVN_ERR(svn_wc__get_tree_conflict(&read_conflict, sbox.wc_ctx,
                                       child1_abspath, pool, pool));
@@ -606,20 +606,20 @@ test_serialize_tree_conflict(const svn_t
   SVN_TEST_ASSERT(complete); /* Everything available */
 
   {
-    svn_wc_conflict_reason_t local_change;
-    svn_wc_conflict_action_t incoming_change;
+    svn_wc_conflict_reason_t reason;
+    svn_wc_conflict_action_t action;
     const char *moved_away_op_root_abspath;
 
-    SVN_ERR(svn_wc__conflict_read_tree_conflict(&local_change,
-                                                &incoming_change,
+    SVN_ERR(svn_wc__conflict_read_tree_conflict(&reason,
+                                                &action,
                                                 &moved_away_op_root_abspath,
                                                 sbox.wc_ctx->db,
                                                 sbox.wc_abspath,
                                                 conflict_skel,
                                                 pool, pool));
 
-    SVN_TEST_ASSERT(local_change == svn_wc_conflict_reason_moved_away);
-    SVN_TEST_ASSERT(incoming_change == svn_wc_conflict_action_delete);
+    SVN_TEST_ASSERT(reason == svn_wc_conflict_reason_moved_away);
+    SVN_TEST_ASSERT(action == svn_wc_conflict_action_delete);
     SVN_TEST_ASSERT(!strcmp(moved_away_op_root_abspath,
                             sbox_wc_path(&sbox, "A/B")));
   }

Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/utils.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/utils.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/utils.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/utils.c Wed Aug 20 15:31:32 2014
@@ -282,7 +282,7 @@ sbox_wc_revert(svn_test__sandbox_t *b, c
   SVN_ERR(svn_wc__acquire_write_lock(&lock_root_abspath, b->wc_ctx,
                                      dir_abspath, FALSE /* lock_anchor */,
                                      b->pool, b->pool));
-  SVN_ERR(svn_wc_revert4(b->wc_ctx, abspath, depth, FALSE, NULL,
+  SVN_ERR(svn_wc_revert5(b->wc_ctx, abspath, depth, FALSE, NULL, FALSE,
                          NULL, NULL, /* cancel baton + func */
                          NULL, NULL, /* notify baton + func */
                          b->pool));

Modified: subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c Wed Aug 20 15:31:32 2014
@@ -719,7 +719,7 @@ svn_test_main(int argc, const char *argv
    * usage but make it thread-safe to allow for multi-threaded tests.
    */
   pool = apr_allocator_owner_get(svn_pool_create_allocator(TRUE));
-  err = svn_mutex__init(&log_mutex, TRUE, TRUE, pool);
+  err = svn_mutex__init(&log_mutex, TRUE, pool);
   if (err)
     {
       svn_handle_error2(err, stderr, TRUE, "svn_tests: ");

Modified: subversion/branches/move-tracking-2/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd (original)
+++ subversion/branches/move-tracking-2/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd Wed Aug 20 15:31:32 2014
@@ -28,10 +28,10 @@ PUSHD ..\deps
 ECHO Checking dependencies in %CD%
 
 IF NOT EXIST "imports\" (
-    svn co --username guest --password "" https://ctf.open.collab.net/svn/repos/sharpsvn/trunk/imports imports
+    svn co https://ctf.open.collab.net/svn/repos/sharpsvn/trunk/imports imports --username guest --password ""
 )
 IF NOT EXIST build\imports.done (
-    svn up imports
+    svn up imports --username guest --password ""
     copy /y imports\dev-default.build default.build
     nant prep-dev %NANTARGS%
     IF ERRORLEVEL 1 (

Modified: subversion/branches/move-tracking-2/tools/dev/build-svn-deps-win.pl
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dev/build-svn-deps-win.pl?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dev/build-svn-deps-win.pl (original)
+++ subversion/branches/move-tracking-2/tools/dev/build-svn-deps-win.pl Wed Aug 20 15:31:32 2014
@@ -85,10 +85,10 @@ our $APU_VER = '1.5.2'; # apr-util versi
 our $API_VER = '1.2.1'; # arp-iconv version
 our $ZLIB_VER = '1.2.8';
 our $OPENSSL_VER = '1.0.1e';
-our $PCRE_VER = '8.32';
+our $PCRE_VER = '8.35';
 our $BDB_VER = '5.3.21';
 our $SQLITE_VER = '3071602';
-our $SERF_VER = '1.2.1';
+our $SERF_VER = '1.3.6';
 our $NEON_VER = '0.29.6';
 
 # Sources for files to download
@@ -177,7 +177,7 @@ sub set_defaults {
   set_default(\$PCRE_URL, "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-$PCRE_VER.zip");
   set_default(\$BDB_URL, "http://download.oracle.com/berkeley-db/db-5.3.21.zip");
   set_default(\$SQLITE_URL, "http://www.sqlite.org/2013/sqlite-amalgamation-$SQLITE_VER.zip");
-  set_default(\$SERF_URL, "http://serf.googlecode.com/files/serf-$SERF_VER.zip");
+  set_default(\$SERF_URL, "http://serf.googlecode.com/svn/src_releases/serf-$SERF_VER.zip");
   set_default(\$NEON_URL, "http://www.webdav.org/neon/neon-$NEON_VER.tar.gz");
   set_default(\$INSTDIR, $TOPDIR);
   set_default(\$BLDDIR, "$TOPDIR\\build");
@@ -310,7 +310,10 @@ sub check_vs_ver {
   my ($major_version) = $help_output =~ /Version (\d+)\./s;
 
   if (defined($major_version)) {
-    if ($major_version eq '11') {
+    if ($major_version eq '12') {
+      $VS_VER = '2013';
+      return;
+    } elsif ($major_version eq '11') {
       $VS_VER = '2012';
       return;
     } elsif ($major_version eq '10') {
@@ -501,9 +504,10 @@ sub build_pcre {
   my $pcre_generator = 'NMake Makefiles';
   # Have to use RelWithDebInfo since httpd looks for the pdb files
   my $pcre_build_type = '-DCMAKE_BUILD_TYPE:STRING=' . ($DEBUG ? 'Debug' : 'RelWithDebInfo');
+  my $pcre_options = '-DPCRE_NO_RECURSE:BOOL=ON';
   my $pcre_shared_libs = '-DBUILD_SHARED_LIBS:BOOL=ON';
   my $pcre_install_prefix = "-DCMAKE_INSTALL_PREFIX:PATH=$INSTDIR";
-  my $cmake_cmd = qq("$CMAKE" -G "$pcre_generator" "$pcre_build_type" "$pcre_shared_libs" "$pcre_install_prefix" .); 
+  my $cmake_cmd = qq("$CMAKE" -G "$pcre_generator" "$pcre_build_type" "$pcre_shared_libs" "$pcre_install_prefix" "$pcre_options" .); 
   system_or_die("Failure generating pcre Makefiles", $cmake_cmd);
   system_or_die("Failure building pcre", qq("$NMAKE"));
   system_or_die("Failure testing pcre", qq("$NMAKE" test));
@@ -708,6 +712,7 @@ sub httpd_fix_debug {
 sub build_httpd {
   chdir_or_die($HTTPD);
 
+  my $vs_2013 = $VS_VER eq '2013';
   my $vs_2012 = $VS_VER eq '2012';
   my $vs_2010 = $VS_VER eq '2010';
 
@@ -734,7 +739,7 @@ sub build_httpd {
          }
        }, 'modules', 'support');
 
-  if ($vs_2012) {
+  if ($vs_2012 or $vs_2013) {
     # Turn off pre-compiled headers for apr-iconv to avoid:
     # LNK2011: http://msdn.microsoft.com/en-us/library/3ay26wa2(v=vs.110).aspx
     disable_pch('srclib\apr-iconv\build\modules.mk.win');

Modified: subversion/branches/move-tracking-2/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c (original)
+++ subversion/branches/move-tracking-2/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c Wed Aug 20 15:31:32 2014
@@ -170,7 +170,7 @@ raise_tree_conflict(int argc, const char
 {
   int i = 0;
   svn_wc_conflict_version_t *left, *right;
-  svn_wc_conflict_description3_t *c;
+  svn_wc_conflict_description2_t *c;
   svn_wc_context_t *wc_ctx;
 
   /* Conflict description parameters */
@@ -206,8 +206,8 @@ raise_tree_conflict(int argc, const char
                                          peg_rev1, kind1, pool);
   right = svn_wc_conflict_version_create2(repos_url2, NULL, path_in_repos2,
                                           peg_rev2, kind2, pool);
-  c = svn_wc_conflict_description_create_tree3(wc_abspath, kind,
-                                              operation, left, right, pool);
+  c = svn_wc_conflict_description_create_tree2(wc_abspath, kind,
+                                               operation, left, right, pool);
   c->action = (svn_wc_conflict_action_t)action;
   c->reason = (svn_wc_conflict_reason_t)reason;
 

Modified: subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn Wed Aug 20 15:31:32 2014
@@ -68,24 +68,23 @@ OBJDIR		= $(PWD)/objdir
 
 BDB_MAJOR_VER	= 4.7
 BDB_VER		= $(BDB_MAJOR_VER).25
-APR_VER		= 1.5.0
+APR_VER		= 1.5.1
 APR_ICONV_VER	= 1.2.1
 GNU_ICONV_VER	= 1.14
 APR_UTIL_VER	= 1.5.3
 HTTPD_VER	= 2.2.27
-NEON_VER	= 0.29.6
-SERF_VER	= 1.3.6
+NEON_VER	= 0.30.0
+SERF_VER	= 1.3.7
 SERF_OLD_VER	= 0.3.1
 CYRUS_SASL_VER	= 2.1.25
-SQLITE_VER	= 3080403
-LIBMAGIC_VER	= 5.17
+SQLITE_VER	= 3080500
+LIBMAGIC_VER	= 5.19
 RUBY_VER	= 1.8.7-p358
 BZ2_VER	= 1.0.6
-PYTHON_VER	= 2.7.3
+PYTHON_VER	= 2.7.8
 JUNIT_VER	= 4.10
 GETTEXT_VER	= 0.18.3.1
 
-APR_1_5_PATCH	= apr-1.5.0-out-of-tree-build.patch
 BDB_DIST	= db-$(BDB_VER).tar.gz
 APR_ICONV_DIST	= apr-iconv-$(APR_ICONV_VER).tar.gz
 GNU_ICONV_DIST	= libiconv-$(GNU_ICONV_VER).tar.gz
@@ -100,6 +99,33 @@ PYTHON_DIST	= Python-$(PYTHON_VER).tgz
 JUNIT_DIST	= junit-${JUNIT_VER}.jar
 GETTEXT_DIST	= gettext-$(GETTEXT_VER).tar.gz
 
+SHA256_${BDB_DIST} = f14fd96dd38915a1d63dcb94a63fbb8092334ceba6b5060760427096f631263e
+SHA256_${APR_ICONV_DIST} = 19381959d50c4a5f3b9c84d594a5f9ffb3809786919b3058281f4c87e1f4b245
+SHA256_${GNU_ICONV_DIST} = 72b24ded17d687193c3366d0ebe7cde1e6b18f0df8c55438ac95be39e8a30613
+SHA256_${HTTPD_DIST} = 205973ded6ca55c056ce9c84d73ab708f7829f330193bd39b651463b8d4f8147
+SHA256_${NEON_DIST} = 2962cfcb5d30f3272e3d2fa0e473434419770a3801afe3d46e5d1650787990c2
+SHA256_${CYRUS_SASL_DIST} = 418c16e6240a4f9b637cbe3d62937b9675627bad27c622191d47de8686fe24fe
+SHA256_${SQLITE_DIST} = 98c33abe4106e508e73fda648b2657ac9e969fe24695f543dcde68cc71f3091b
+SHA256_${LIBMAGIC_DIST} = 9484b3bbda1acc7b13a4f71031a85ce10c77bd0ffec7226741a219ef587e3a7c
+SHA256_${RUBY_DIST} = 9e0856d58830e08f1e38233947d859898ae09d4780cb1a502108e41308de33cb
+SHA256_${BZ2_DIST} = a2848f34fcd5d6cf47def00461fcb528a0484d8edef8208d6d2e2909dc61d9cd
+SHA256_${PYTHON_DIST} = 74d70b914da4487aa1d97222b29e9554d042f825f26cb2b93abd20fdda56b557
+SHA256_${JUNIT_DIST} = 36a747ca1e0b86f6ea88055b8723bb87030d627766da6288bf077afdeeb0f75a
+SHA256_${GETTEXT_DIST} = 0d8f9a33531b77776b3dc473e7940019ca19bfca5b4c06db6e96065eeb07245d
+
+define do_check_sha256
+if [ -x /bin/sha256 ]; then \
+	(cd $(DISTDIR) && \
+		echo "SHA256 (${1}) = ${SHA256_${1}}" | /bin/sha256 -C /dev/stdin "${1}"); \
+elif [ -x /usr/bin/sha256sum ]; then \
+	(cd $(DISTDIR) && \
+		echo "${SHA256_${1}} ${1}" | /usr/bin/sha256sum --quiet --check); \
+else \
+	echo "Error: No tool found to verify checksum"; \
+	false; \
+fi
+endef
+
 DISTFILES	= $(DISTDIR)/$(NEON_DIST) \
 		$(DISTDIR)/$(SERF_DIST) \
 		$(DISTDIR)/$(SQLITE_DIST) \
@@ -118,24 +144,23 @@ FETCH_CMD	= wget -c
 
 SUBVERSION_REPOS_URL = https://svn.apache.org/repos/asf/subversion
 BDB_URL		= http://download.oracle.com/berkeley-db/$(BDB_DIST)
-APR_URL		= http://svn.apache.org/repos/asf/apr/apr
-APR_PATCHES_URL	= http://www.apache.org/dist/apr/patches
-APR_ICONV_URL	= http://www.apache.org/dist/apr/$(APR_ICONV_DIST)
-GNU_ICONV_URL	= http://ftp.gnu.org/pub/gnu/libiconv/$(GNU_ICONV_DIST)
-APR_UTIL_URL	= http://svn.apache.org/repos/asf/apr/apr-util
-HTTPD_URL	= http://archive.apache.org/dist/httpd/$(HTTPD_DIST)
+APR_URL		= https://svn.apache.org/repos/asf/apr/apr
+APR_ICONV_URL	= https://www.apache.org/dist/apr/$(APR_ICONV_DIST)
+GNU_ICONV_URL	= https://ftp.gnu.org/pub/gnu/libiconv/$(GNU_ICONV_DIST)
+APR_UTIL_URL	= https://svn.apache.org/repos/asf/apr/apr-util
+HTTPD_URL	= https://archive.apache.org/dist/httpd/$(HTTPD_DIST)
 NEON_URL	= http://webdav.org/neon/$(NEON_DIST)
 #SERF_URL	= http://serf.googlecode.com/files/$(SERF_DIST)
-SERF_URL	= http://serf.googlecode.com/svn/tags/$(SERF_VER)
-SERF_OLD_URL	= http://serf.googlecode.com/svn/tags/$(SERF_OLD_VER)
-SQLITE_URL	= http://www.sqlite.org/2014/$(SQLITE_DIST)
+SERF_URL	= https://serf.googlecode.com/svn/tags/$(SERF_VER)
+SERF_OLD_URL	= https://serf.googlecode.com/svn/tags/$(SERF_OLD_VER)
+SQLITE_URL	= https://www.sqlite.org/2014/$(SQLITE_DIST)
 CYRUS_SASL_URL	= ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST)
 LIBMAGIC_URL	= ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST)
 RUBY_URL	= http://ftp.ruby-lang.org/pub/ruby/1.8/$(RUBY_DIST)
 BZ2_URL		= http://bzip.org/$(BZ2_VER)/$(BZ2_DIST)
-PYTHON_URL	= http://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST)
-JUNIT_URL	= http://downloads.sourceforge.net/project/junit/junit/$(JUNIT_VER)/$(JUNIT_DIST)
-GETTEXT_URL	= http://ftp.gnu.org/pub/gnu/gettext/$(GETTEXT_DIST)
+PYTHON_URL	= https://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST)
+JUNIT_URL	= https://downloads.sourceforge.net/project/junit/junit/$(JUNIT_VER)/$(JUNIT_DIST)
+GETTEXT_URL	= https://ftp.gnu.org/pub/gnu/gettext/$(GETTEXT_DIST)
 
 
 BDB_SRCDIR	= $(SRCDIR)/db-$(BDB_VER)
@@ -190,7 +215,7 @@ LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREF
 # Main targets.
 #######################################################################
 
-.PHONY: all reset clean nuke
+.PHONY: all reset clean nuke fetch
 
 all: dirs-create bdb-install apr-install iconv-install apr-util-install \
 	httpd-install neon-install serf-install serf-old-install \
@@ -233,6 +258,8 @@ nuke:
 				;; \
 		esac
 
+fetch: $(DISTFILES)
+
 #######################################################################
 # directories
 #######################################################################
@@ -267,6 +294,7 @@ $(DISTDIR)/$(BDB_DIST):
 
 # retrieve bdb
 $(BDB_OBJDIR)/.retrieved: $(DISTDIR)/$(BDB_DIST)
+	$(call do_check_sha256,$(BDB_DIST))
 	[ -d $(BDB_OBJDIR) ] || mkdir -p $(BDB_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(BDB_DIST)
 	touch $@
@@ -311,9 +339,6 @@ $(APR_OBJDIR)/.retrieved:
 	if [ ! -d $(APR_SRCDIR) ]; then \
 		svn export $(APR_URL)/tags/$(APR_VER)/ $(APR_SRCDIR); \
 	fi
-	-(cd $(APR_SRCDIR) && \
-		$(FETCH_CMD) $(APR_PATCHES_URL)/$(APR_1_5_PATCH) && \
-		patch -N -p1 < $(APR_1_5_PATCH))
 	touch $@
 
 ifeq ($(THREADING),yes)
@@ -373,6 +398,7 @@ $(DISTDIR)/$(APR_ICONV_DIST):
 
 # retrieve apr-iconv
 $(APR_ICONV_OBJDIR)/.retrieved: $(DISTDIR)/$(APR_ICONV_DIST)
+	$(call do_check_sha256,$(APR_ICONV_DIST))
 	[ -d $(APR_ICONV_OBJDIR) ] || mkdir -p $(APR_ICONV_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(APR_ICONV_DIST)
 	touch $@
@@ -453,6 +479,7 @@ $(GNU_ICONV_OBJDIR)/lib_aliases.gperf.di
 $(GNU_ICONV_OBJDIR)/.retrieved: $(DISTDIR)/$(GNU_ICONV_DIST) \
 		$(GNU_ICONV_OBJDIR)/lib_encodings.def.diff \
 		$(GNU_ICONV_OBJDIR)/lib_aliases.gperf.diff
+	$(call do_check_sha256,$(GNU_ICONV_DIST))
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(GNU_ICONV_DIST)
 	cd $(SRCDIR)/libiconv-$(GNU_ICONV_VER) && \
 		patch -p0 < $(GNU_ICONV_OBJDIR)/lib_encodings.def.diff && \
@@ -597,6 +624,7 @@ $(HTTPD_OBJDIR)/chil-engine.diff:
 # retrieve httpd
 $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$(HTTPD_DIST) \
 	$(HTTPD_OBJDIR)/chil-engine.diff
+	$(call do_check_sha256,$(HTTPD_DIST))
 	[ -d $(HTTPD_OBJDIR) ] || mkdir -p $(HTTPD_OBJDIR)
 	tar -C $(SRCDIR) -jxf $(DISTDIR)/$(HTTPD_DIST)
 	cd $(HTTPD_SRCDIR) && patch -p0 < $(HTTPD_OBJDIR)/chil-engine.diff
@@ -605,6 +633,11 @@ $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$
 	sed '/^#define HAVE_SSL_RAND_EGD/d' \
 		< $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h.orig \
 		> $(HTTPD_SRCDIR)/modules/ssl/ssl_toolkit_compat.h
+	cp $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c \
+		$(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c.orig
+	sed 's/^\(#if (OPENSSL_VERSION_NUMBER >= 0x00908000)\)$$/\1 \&\& !defined(OPENSSL_NO_COMP)/' \
+		< $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c.orig \
+		> $(HTTPD_SRCDIR)/modules/ssl/ssl_engine_vars.c
 	touch $@
 
 # configure httpd
@@ -675,19 +708,10 @@ $(DISTDIR)/$(NEON_DIST):
 	cd $(DISTDIR) && $(FETCH_CMD) $(NEON_URL)
 
 # retrieve neon
-NEON_SVN_URL=http://svn.webdav.org/repos/projects/neon/trunk
 $(NEON_OBJDIR)/.retrieved: $(DISTDIR)/$(NEON_DIST)
+	$(call do_check_sha256,$(NEON_DIST))
 	[ -d $(NEON_OBJDIR) ] || mkdir -p $(NEON_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(NEON_DIST)
-	# fix build with OpenSSL lacking SSLv2 support:
-	cd $(NEON_SRCDIR)/src && svn diff -c 1865 \
-		$(NEON_SVN_URL)/src/ne_openssl.c | patch -p0
-	cd $(NEON_SRCDIR)/src && svn diff -c 1872 \
-		$(NEON_SVN_URL)/src/ne_openssl.c | patch -p0
-	cd $(NEON_SRCDIR)/src && svn diff -c 1865 \
-		$(NEON_SVN_URL)/src/ne_ssl.h | patch -p0
-	cd $(NEON_SRCDIR)/src && svn diff -c 1865 \
-		$(NEON_SVN_URL)/src/ne_session.c | patch -p0
 	touch $@
 
 # OpenBSD does not have krb5-config in PATH, but the neon port has
@@ -845,6 +869,7 @@ $(DISTDIR)/$(SQLITE_DIST):
 
 # retrieve sqlite
 $(SQLITE_OBJDIR)/.retrieved: $(DISTDIR)/$(SQLITE_DIST)
+	$(call do_check_sha256,$(SQLITE_DIST))
 	[ -d $(SQLITE_OBJDIR) ] || mkdir -p $(SQLITE_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(SQLITE_DIST)
 	touch $@
@@ -895,6 +920,7 @@ $(DISTDIR)/$(CYRUS_SASL_DIST):
 
 # retrieve cyrus-sasl
 $(CYRUS_SASL_OBJDIR)/.retrieved: $(DISTDIR)/$(CYRUS_SASL_DIST)
+	$(call do_check_sha256,$(CYRUS_SASL_DIST))
 	[ -d $(CYRUS_SASL_OBJDIR) ] || mkdir -p $(CYRUS_SASL_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(CYRUS_SASL_DIST)
 	# fixes build on Debian:
@@ -970,6 +996,7 @@ $(DISTDIR)/$(LIBMAGIC_DIST):
 
 # retrieve libmagic
 $(LIBMAGIC_OBJDIR)/.retrieved: $(DISTDIR)/$(LIBMAGIC_DIST)
+	$(call do_check_sha256,$(LIBMAGIC_DIST))
 	[ -d $(LIBMAGIC_OBJDIR) ] || mkdir -p $(LIBMAGIC_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(LIBMAGIC_DIST)
 	touch $@
@@ -1015,6 +1042,7 @@ $(DISTDIR)/$(RUBY_DIST):
 # retrieve ruby
 #
 $(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST)
+	$(call do_check_sha256,$(RUBY_DIST))
 	[ -d $(RUBY_OBJDIR) ] || mkdir -p $(RUBY_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST)
 	touch $@
@@ -1065,6 +1093,7 @@ $(DISTDIR)/$(BZ2_DIST):
 
 # retrieve bz2
 $(BZ2_OBJDIR)/.retrieved: $(DISTDIR)/$(BZ2_DIST)
+	$(call do_check_sha256,$(BZ2_DIST))
 	[ -d $(BZ2_OBJDIR) ] || mkdir -p $(BZ2_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(BZ2_DIST)
 	touch $@
@@ -1102,13 +1131,14 @@ $(DISTDIR)/$(PYTHON_DIST):
 # retrieve python
 #
 $(PYTHON_OBJDIR)/.retrieved: $(DISTDIR)/$(PYTHON_DIST)
+	$(call do_check_sha256,$(PYTHON_DIST))
 	[ -d $(PYTHON_OBJDIR) ] || mkdir -p $(PYTHON_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(PYTHON_DIST)
 	# Make setup.py use our own dependencies instead of system ones
 	sed -e "s#sqlite_inc_paths = \[ '/usr/include',#sqlite_inc_paths = [ '$(PREFIX)/sqlite/include',#" \
 		-e "s#'/usr/include/db4'#'$(PREFIX)/bdb/include'#" \
-		-e "s|\(add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')\)|#\1|" \
-		-e "s|\(add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')\)|#\1|" \
+		-e "s|\(add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')\)|pass #\1|" \
+		-e "s|\(add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')\)|pass #\1|" \
 		-e "s#find_library_file(lib_dirs, 'bz2'#find_library_file(['$(PREFIX)/bz2/lib'] + lib_dirs, 'bz2'#" \
 		< $(PYTHON_SRCDIR)/setup.py \
 		> $(PYTHON_SRCDIR)/setup.py.patched
@@ -1162,6 +1192,8 @@ $(PYTHON_OBJDIR)/.installed: $(PYTHON_OB
 # fetch distfile for junit
 $(DISTDIR)/$(JUNIT_DIST):
 	cd $(DISTDIR) && $(FETCH_CMD) $(JUNIT_URL)
+	$(call do_check_sha256,$(JUNIT_DIST))
+
 
 #######################################################################
 # gettext
@@ -1184,6 +1216,7 @@ $(DISTDIR)/$(GETTEXT_DIST):
 
 # retrieve gettext
 $(GETTEXT_OBJDIR)/.retrieved: $(DISTDIR)/$(GETTEXT_DIST)
+	$(call do_check_sha256,$(GETTEXT_DIST))
 	[ -d $(GETTEXT_OBJDIR) ] || mkdir -p $(GETTEXT_OBJDIR)
 	tar -C $(SRCDIR) -zxf $(DISTDIR)/$(GETTEXT_DIST)
 	touch $@

Modified: subversion/branches/move-tracking-2/tools/diff/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/diff/diff.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/diff/diff.c (original)
+++ subversion/branches/move-tracking-2/tools/diff/diff.c Wed Aug 20 15:31:32 2014
@@ -43,9 +43,11 @@ do_diff(svn_stream_t *ostream,
 
   SVN_ERR(svn_diff_file_diff_2(&diff, original, modified, options, pool));
   *has_changes = svn_diff_contains_diffs(diff);
-  return svn_diff_file_output_unified3(ostream, diff, original, modified,
+  return svn_diff_file_output_unified4(ostream, diff, original, modified,
                                        NULL, NULL, SVN_APR_LOCALE_CHARSET,
-                                       NULL, show_c_function, pool);
+                                       NULL, show_c_function,
+                                       options->context_size,
+                                       NULL, NULL, pool);
 }
 
 static void
@@ -112,7 +114,16 @@ int main(int argc, const char *argv[])
               diff_options->ignore_space = svn_diff_file_ignore_space_all;
               continue;
             }
+
           APR_ARRAY_PUSH(options_array, const char *) = argv[i];
+
+          /* Special case: '-U' takes an argument, so capture the 
+           * next argument in the array. */
+          if (argv[i][1] == 'U' && !argv[i][2])
+            {
+              i++;
+              APR_ARRAY_PUSH(options_array, const char *) = argv[i];
+            }
         }
       else
         {

Modified: subversion/branches/move-tracking-2/tools/diff/diff3.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/diff/diff3.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/diff/diff3.c (original)
+++ subversion/branches/move-tracking-2/tools/diff/diff3.c Wed Aug 20 15:31:32 2014
@@ -51,13 +51,14 @@ do_diff3(svn_stream_t *ostream,
 
   *has_changes = svn_diff_contains_diffs(diff);
 
-  SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
+  SVN_ERR(svn_diff_file_output_merge3(ostream, diff,
                                       original, modified, latest,
                                       conflict_original,
                                       conflict_modified,
                                       conflict_latest,
                                       "=======",
                                       conflict_style,
+                                      NULL, NULL, /* cancel */
                                       pool));
 
   return NULL;

Modified: subversion/branches/move-tracking-2/tools/diff/diff4.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/diff/diff4.c?rev=1619127&r1=1619126&r2=1619127&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/diff/diff4.c (original)
+++ subversion/branches/move-tracking-2/tools/diff/diff4.c Wed Aug 20 15:31:32 2014
@@ -42,10 +42,11 @@ do_diff4(svn_stream_t *ostream,
 
   SVN_ERR(svn_diff_file_diff4_2(&diff, original, modified, latest, ancestor,
                                 svn_diff_file_options_create(pool), pool));
-  SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
+  SVN_ERR(svn_diff_file_output_merge3(ostream, diff,
                                       original, modified, latest,
                                       NULL, NULL, NULL, NULL,
                                       svn_diff_conflict_display_modified_latest,
+                                      NULL, NULL, /* cancel */
                                       pool));
 
   return NULL;



Mime
View raw message