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

svn commit: r1072522 [9/9] - in /subversion/branches/performance: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ notes/ notes/wc-ng/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/...

Modified: subversion/branches/performance/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/tests/libsvn_wc/op-depth-test.c?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/branches/performance/subversion/tests/libsvn_wc/op-depth-test.c Sun Feb 20 07:45:48 2011
@@ -1236,8 +1236,7 @@ base_dir_insert_remove(wc_baton_t *b,
                        nodes_row_t *added)
 {
   nodes_row_t *after;
-  const char *dir_abspath = svn_path_join(b->wc_abspath, local_relpath,
-                                          b->pool);
+  const char *dir_abspath = wc_path(b, local_relpath);
   int i;
   apr_int64_t num_before = count_rows(before), num_added = count_rows(added);
 
@@ -1917,6 +1916,375 @@ test_del_replace_not_present(const svn_t
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+insert_actual(wc_baton_t *b,
+              const char **local_relpaths)
+{
+  svn_sqlite__db_t *sdb;
+  svn_sqlite__stmt_t *stmt;
+  const char *dbpath = svn_dirent_join_many(b->pool,
+                                            b->wc_abspath, ".svn", "wc.db",
+                                            NULL);
+  const char * const statements[] = {
+    "DELETE FROM actual_node;",
+    "INSERT INTO actual_node (local_relpath, wc_id) VALUES (?1, 1);",
+    "INSERT INTO actual_node (local_relpath, parent_relpath, wc_id)"
+    "                 VALUES (?1, ?2, 1)",
+    NULL,
+  };
+
+  if (!local_relpaths)
+    return SVN_NO_ERROR;
+
+  SVN_ERR(svn_sqlite__open(&sdb, dbpath, svn_sqlite__mode_readwrite,
+                           statements, 0, NULL,
+                           b->pool, b->pool));
+
+  SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 0));
+  SVN_ERR(svn_sqlite__step_done(stmt));
+
+  while(*local_relpaths)
+    {
+      if (**local_relpaths)
+        {
+          SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 2));
+          SVN_ERR(svn_sqlite__bindf(stmt, "ss",
+                                    *local_relpaths,
+                                    svn_relpath_dirname(*local_relpaths,
+                                                        b->pool)));
+        }
+      else
+        {
+          SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 2));
+          SVN_ERR(svn_sqlite__bindf(stmt, "s", *local_relpaths));
+        }
+      SVN_ERR(svn_sqlite__step_done(stmt));
+      ++local_relpaths;
+    }
+  SVN_ERR(svn_sqlite__close(sdb));
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+check_db_actual(wc_baton_t* b,
+                const char **local_relpaths)
+{
+  svn_sqlite__db_t *sdb;
+  svn_sqlite__stmt_t *stmt;
+  const char *dbpath = svn_dirent_join_many(b->pool,
+                                            b->wc_abspath, ".svn", "wc.db",
+                                            NULL);
+  const char * const statements[] = {
+    "SELECT local_relpath FROM actual_node WHERE wc_id = 1;",
+    NULL,
+  };
+  svn_boolean_t have_row;
+  apr_hash_t *path_hash = apr_hash_make(b->pool);
+
+  if (!local_relpaths)
+    return SVN_NO_ERROR;
+
+  while(*local_relpaths)
+    {
+      apr_hash_set(path_hash, *local_relpaths, APR_HASH_KEY_STRING, (void*)1);
+      ++local_relpaths;
+    }
+
+  SVN_ERR(svn_sqlite__open(&sdb, dbpath, svn_sqlite__mode_readwrite,
+                           statements, 0, NULL,
+                           b->pool, b->pool));
+
+  SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 0));
+  SVN_ERR(svn_sqlite__step(&have_row, stmt));
+  while (have_row)
+    {
+      const char *local_relpath = svn_sqlite__column_text(stmt, 0, NULL);
+      if (!apr_hash_get(path_hash, local_relpath, APR_HASH_KEY_STRING))
+        return svn_error_createf(SVN_ERR_TEST_FAILED, svn_sqlite__reset(stmt),
+                                 "actual '%s' unexpected", local_relpath);
+      apr_hash_set(path_hash, local_relpath, APR_HASH_KEY_STRING, NULL);
+      SVN_ERR(svn_sqlite__step(&have_row, stmt));
+    }
+
+  if (apr_hash_count(path_hash))
+    {
+      const char *local_relpath
+        = svn__apr_hash_index_key(apr_hash_first(b->pool, path_hash));
+      return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                               "actual '%s' expected", local_relpath);
+    }
+
+  SVN_ERR(svn_sqlite__reset(stmt));
+  SVN_ERR(svn_sqlite__close(sdb));
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+revert(wc_baton_t *b,
+       const char *local_relpath,
+       nodes_row_t *before_nodes,
+       nodes_row_t *after_nodes,
+       const char **before_actual,
+       const char **after_actual)
+{
+  const char *local_abspath = wc_path(b, local_relpath);
+  svn_error_t *err;
+
+  if (!before_actual)
+    {
+      const char *actual[] = { NULL };
+      SVN_ERR(insert_actual(b, actual));
+    }
+
+  SVN_ERR(insert_dirs(b, before_nodes));
+  SVN_ERR(insert_actual(b, before_actual));
+  SVN_ERR(check_db_rows(b, "", before_nodes));
+  SVN_ERR(check_db_actual(b, before_actual));
+  err = svn_wc__db_op_revert(b->wc_ctx->db, local_abspath, b->pool);
+  if (err)
+    {
+      /* If db_op_revert returns an error the DB should be unchanged so
+         verify and return a verification error if a change is detected
+         or the revert error if unchanged. */
+      err = svn_error_compose_create(check_db_rows(b, "", before_nodes), err);
+      err = svn_error_compose_create(check_db_actual(b, before_actual), err);
+      return err;
+    }
+  SVN_ERR(check_db_rows(b, "", after_nodes));
+  SVN_ERR(check_db_actual(b, after_actual));
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_op_revert(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  wc_baton_t b;
+  svn_error_t *err;
+
+  b.pool = pool;
+  SVN_ERR(svn_test__create_repos_and_wc(&b.repos_url, &b.wc_abspath,
+                                        "test_op_revert", opts, pool));
+  SVN_ERR(svn_wc_context_create(&b.wc_ctx, NULL, pool, pool));
+
+  {
+    nodes_row_t before[] = {
+      { 0, "",    "normal", 4, "" },
+      { 0, "A",   "normal", 4, "A" },
+      { 2, "A/B", "normal", NO_COPY_FROM },
+      { 0 },
+    };
+    nodes_row_t after[] = {
+      { 0, "",    "normal", 4, "" },
+      { 0, "A",   "normal", 4, "A" },
+      { 0 },
+    };
+    const char *before_actual1[] = { "A", "A/B", NULL };
+    const char *after_actual1[] = { "A", NULL };
+    const char *before_actual2[] = { "A/B", "A/B/C", NULL };
+    const char *after_actual2[] = { "A/B", NULL };
+    const char *before_actual3[] = { "", "A", "A/B", NULL };
+    const char *after_actual3[] = { "", "A/B", NULL };
+    const char *before_actual4[] = { "", "A/B", NULL };
+    const char *after_actual4[] = { "A/B", NULL };
+    const char *common_actual5[] = { "A/B", "A/B/C", NULL };
+    const char *common_actual6[] = { "A/B", "A/B/C", "A/B/C/D", NULL };
+    SVN_ERR(revert(&b, "A/B", before, after, NULL, NULL));
+    SVN_ERR(revert(&b, "A/B", before, after, before_actual1, after_actual1));
+    SVN_ERR(revert(&b, "A/B/C", before, before, before_actual2, after_actual2));
+    SVN_ERR(revert(&b, "A", before, before, before_actual3, after_actual3));
+    SVN_ERR(revert(&b, "", before, before, before_actual4, after_actual4));
+    err = revert(&b, "A/B", before, before, common_actual5, common_actual5);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+    err = revert(&b, "A/B/C", before, before, common_actual6, common_actual6);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+  }
+
+  {
+    nodes_row_t common[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "P",       "normal", 4, "P" },
+      { 0, "P/Q",     "normal", 4, "P/Q" },
+      { 1, "P",       "normal", 3, "V" },
+      { 1, "P/Q",     "normal", 3, "V/Q" },
+      { 2, "A/B",     "normal", 2, "X/B" },
+      { 2, "A/B/C",   "normal", 2, "X/B/C" },
+      { 2, "A/B/C/D", "normal", 2, "X/B/C/D" },
+      { 1, "X",       "normal", NO_COPY_FROM },
+      { 2, "X/Y",     "normal", NO_COPY_FROM },
+      { 0 },
+    };
+    const char *common_actual[] = { "A/B/C/D", "A/B/C", "A/B", "P", "X", NULL};
+
+    err = revert(&b, "A/B/C/D", common, common, NULL, NULL);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+    err = revert(&b, "A/B/C/D", common, common, common_actual, common_actual);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+
+    err = revert(&b, "A/B/C", common, common, NULL, NULL);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+    err = revert(&b, "A/B/C", common, common, common_actual, common_actual);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+
+    err = revert(&b, "A/B", common, common, NULL, NULL);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+    err = revert(&b, "A/B", common, common, common_actual, common_actual);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+
+    err = revert(&b, "P", common, common, NULL, NULL);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+    err = revert(&b, "P", common, common, common_actual, common_actual);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+
+    err = revert(&b, "X", common, common, NULL, NULL);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+    err = revert(&b, "X", common, common, common_actual, common_actual);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+  }
+
+  {
+    nodes_row_t before[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 3, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    nodes_row_t after[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 0 },
+    };
+    const char *before_actual[] = { "A/B", "A/B/C", NULL };
+    const char *after_actual[] = {"A/B", NULL };
+    SVN_ERR(revert(&b, "A/B/C", before, after, NULL, NULL));
+    SVN_ERR(revert(&b, "A/B/C", before, after, before_actual, after_actual));
+  }
+
+  {
+    nodes_row_t before[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 2, "A/B",     "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/D", "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    nodes_row_t after[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 3, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 3, "A/B/C/D", "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    SVN_ERR(revert(&b, "A/B", before, after, NULL, NULL));
+  }
+
+  {
+    nodes_row_t before[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 1, "A",       "normal", NO_COPY_FROM },
+      { 1, "A/B",     "base-deleted", NO_COPY_FROM },
+      { 1, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B",     "normal", NO_COPY_FROM },
+      { 3, "A/B/C",   "normal", NO_COPY_FROM },
+      { 0 },
+    };
+    nodes_row_t after1[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 1, "A",       "normal", NO_COPY_FROM },
+      { 1, "A/B",     "base-deleted", NO_COPY_FROM },
+      { 1, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B",     "normal", NO_COPY_FROM },
+      { 0 },
+    };
+    nodes_row_t after2[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 1, "A",       "normal", NO_COPY_FROM },
+      { 1, "A/B",     "base-deleted", NO_COPY_FROM },
+      { 1, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    SVN_ERR(revert(&b, "A/B/C", before, after1, NULL, NULL));
+    SVN_ERR(revert(&b, "A/B", after1, after2, NULL, NULL));
+  }
+
+  {
+    nodes_row_t before[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 0, "A/B/C/D", "normal", 4, "A/B/C/D" },
+      { 2, "A/B",     "normal", NO_COPY_FROM },
+      { 2, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/D", "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    nodes_row_t after[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 0, "A/B/C/D", "normal", 4, "A/B/C/D" },
+      { 3, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 3, "A/B/C/D", "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    SVN_ERR(revert(&b, "A/B", before, after, NULL, NULL));
+  }
+
+  {
+    nodes_row_t common[] = {
+      { 0, "",        "normal", 4, "" },
+      { 0, "A",       "normal", 4, "A" },
+      { 0, "A/B",     "normal", 4, "A/B" },
+      { 0, "A/B/C",   "normal", 4, "A/B/C" },
+      { 0, "A/B/C/D", "normal", 4, "A/B/C/D" },
+      { 1, "A",       "normal", 2, "X/Y" },
+      { 1, "A/B",     "normal", 2, "X/Y/B" },
+      { 1, "A/B/C",   "base-deleted", NO_COPY_FROM },
+      { 1, "A/B/C/D", "base-deleted", NO_COPY_FROM },
+      { 0 },
+    };
+    err = revert(&b, "A", common, common, NULL, NULL);
+    SVN_TEST_ASSERT(err && err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH);
+    svn_error_clear(err);
+  }
+
+  return SVN_NO_ERROR;
+}
 
 /* ---------------------------------------------------------------------- */
 /* The list of test functions */
@@ -1954,5 +2322,7 @@ struct svn_test_descriptor_t test_funcs[
                        "test_delete_of_replace"),
     SVN_TEST_OPTS_PASS(test_del_replace_not_present,
                        "test_del_replace_not_present"),
+    SVN_TEST_OPTS_PASS(test_op_revert,
+                       "test_op_revert"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c (original)
+++ subversion/branches/performance/tools/client-side/svnmucc/svnmucc.c Sun Feb 20 07:45:48 2011
@@ -298,10 +298,9 @@ drive(struct operation *operation,
               if (apr_err)
                 return svn_error_wrap_apr(apr_err, "Can't open stdin");
             }
-          contents = svn_stream_from_aprfile(f, pool);
+          contents = svn_stream_from_aprfile2(f, FALSE, pool);
           SVN_ERR(svn_txdelta_send_stream(contents, handler,
                                           handler_baton, NULL, pool));
-          SVN_ERR(svn_io_file_close(f, pool));
         }
       /* If we opened a file, we need to apply outstanding propmods,
          then close it. */
@@ -631,7 +630,7 @@ execute(const apr_array_header_t *action
   SVN_ERR(svn_config_get_config(&config, config_dir, pool));
   SVN_ERR(create_ra_callbacks(&ra_callbacks, username, password,
                               non_interactive, pool));
-  SVN_ERR(svn_ra_open3(&session, anchor, NULL, ra_callbacks,
+  SVN_ERR(svn_ra_open4(&session, NULL, anchor, NULL, ra_callbacks,
                        NULL, config, pool));
 
   SVN_ERR(svn_ra_get_latest_revnum(session, &head, pool));
@@ -850,7 +849,7 @@ main(int argc, const char **argv)
             svn_stringbuf_t *contents;
             err = svn_utf_cstring_to_utf8(&arg_utf8, arg, pool);
             if (! err)
-              err = svn_stringbuf_from_file(&contents, arg, pool);
+              err = svn_stringbuf_from_file2(&contents, arg, pool);
             if (! err)
               err = svn_utf_cstring_to_utf8(&message, contents->data, pool);
             if (err)

Modified: subversion/branches/performance/tools/dev/svnraisetreeconflict/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/dev/svnraisetreeconflict/main.c?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/tools/dev/svnraisetreeconflict/main.c (original)
+++ subversion/branches/performance/tools/dev/svnraisetreeconflict/main.c Sun Feb 20 07:45:48 2011
@@ -192,7 +192,7 @@ raise_tree_conflict(int argc, const char
   const char *wc_path, *wc_abspath;
   const char *repos_url1, *repos_url2, *path_in_repos1, *path_in_repos2;
   int operation, action, reason;
-  int peg_rev1, peg_rev2;
+  long peg_rev1, peg_rev2;
   int kind, kind1, kind2;
 
   if (argc != 13)

Modified: subversion/branches/performance/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/dev/unix-build/Makefile.svn?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/performance/tools/dev/unix-build/Makefile.svn Sun Feb 20 07:45:48 2011
@@ -495,7 +495,7 @@ $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$
 # configure httpd
 $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJDIR)/.retrieved
 	cd $(HTTPD_OBJDIR) \
-		&& CFLAGS="$(PROFILE_CFLAGS)" \
+		&& CFLAGS="-g $(PROFILE_CFLAGS)" \
 		$(HTTPD_SRCDIR)/configure \
 		--prefix=$(PREFIX)/httpd \
 		--enable-maintainer-mode \
@@ -852,37 +852,49 @@ $(SVN_OBJDIR)/.retrieved:
 	fi
 	touch $@
 
-ifeq ($(BRANCH_MAJOR),1.5)
+ifeq ($(BRANCH_MAJOR),1.6)
+BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
+SERF_FLAG=--with-serf="$(PREFIX)/serf"
+MOD_DAV_SVN=modules/svn-$(WC)/mod_dav_svn.so
+MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_authz_svn.so
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
+else ifeq ($(BRANCH_MAJOR),1.5)
 BDB_FLAG=$(PREFIX)/bdb
 SERF_FLAG=--with-serf="$(PREFIX)/serf-old"
 MOD_DAV_SVN=modules/mod_dav_svn.so
 MOD_AUTHZ_SVN=modules/mod_authz_svn.so
 DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
 else ifeq ($(BRANCH_MAJOR),1.4)
 BDB_FLAG=$(PREFIX)/bdb
 MOD_DAV_SVN=modules/mod_dav_svn.so
 MOD_AUTHZ_SVN=modules/mod_authz_svn.so
 DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
 else ifeq ($(BRANCH_MAJOR),1.3)
 BDB_FLAG=$(PREFIX)/bdb
 MOD_DAV_SVN=modules/mod_dav_svn.so
 MOD_AUTHZ_SVN=modules/mod_authz_svn.so
 DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
 else ifeq ($(BRANCH_MAJOR),1.2)
 BDB_FLAG=$(PREFIX)/bdb
 MOD_DAV_SVN=modules/mod_dav_svn.so
 MOD_AUTHZ_SVN=modules/mod_authz_svn.so
 DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
 else ifeq ($(BRANCH_MAJOR),1.1)
 BDB_FLAG=$(PREFIX)/bdb
 MOD_DAV_SVN=modules/mod_dav_svn.so
 MOD_AUTHZ_SVN=modules/mod_authz_svn.so
 DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
 else ifeq ($(BRANCH_MAJOR),1.0)
 BDB_FLAG=$(PREFIX)/bdb
 MOD_DAV_SVN=modules/mod_dav_svn.so
 MOD_AUTHZ_SVN=modules/mod_authz_svn.so
 DISABLE_NEON_VERSION_CHECK=--disable-neon-version-check
+W_NO_SYSTEM_HEADERS=-Wno-system-headers
 else
 BDB_FLAG=db.h:$(PREFIX)/bdb/include:$(PREFIX)/bdb/lib:db-$(BDB_MAJOR_VER)
 SERF_FLAG=--with-serf="$(PREFIX)/serf"
@@ -939,7 +951,7 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)
 # compile svn
 $(SVN_OBJDIR)/.compiled: $(SVN_OBJDIR)/.configured
 	cd $(svn_builddir) \
-		&& make EXTRA_CFLAGS="$(PROFILE_CFLAGS)"
+		&& make EXTRA_CFLAGS="$(PROFILE_CFLAGS) $(W_NO_SYSTEM_HEADERS)"
 	touch $@
 
 # install svn
@@ -1049,6 +1061,7 @@ HTTPD_CMD = env LD_LIBRARY_PATH=$(LD_LIB
 			$(PREFIX)/httpd/bin/apachectl \
 			-f conf/httpd-svn-check-$(WC).conf
 HTTPD_START_CMD = $(HTTPD_CMD) -k start
+HTTPD_START_CMD_DEBUG = $(HTTPD_START_CMD) -X
 HTTPD_STOP_CMD = $(HTTPD_CMD) -k stop; sleep 3
 
 SVNSERVE_START_CMD = $(SVN_PREFIX)/bin/svnserve \
@@ -1065,6 +1078,16 @@ start-httpd: httpd-conf
 	@echo "The URL http://localhost:$(HTTPD_CHECK_PORT)/svn/"
 	@echo "lets you access repositories dropped into /tmp"
 
+start-httpd-debug: httpd-conf
+	$(HTTPD_START_CMD_DEBUG) &
+	@echo "To run tests over http, run:"
+	@echo "    make check BASE_URL=http://localhost:$(HTTPD_CHECK_PORT)"
+	@echo "The URL http://localhost:$(HTTPD_CHECK_PORT)/svn/"
+	@echo "lets you access repositories dropped into /tmp"
+	@echo "Trying to attach gdb to httpd..."
+	@sleep 1
+	gdb $(PREFIX)/httpd/bin/httpd `cat $(PREFIX)/httpd/logs/httpd.pid`
+
 stop-httpd:
 	$(HTTPD_STOP_CMD)
 

Modified: subversion/branches/performance/tools/diff/diff3.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/diff/diff3.c?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/tools/diff/diff3.c (original)
+++ subversion/branches/performance/tools/diff/diff3.c Sun Feb 20 07:45:48 2011
@@ -38,16 +38,16 @@ do_diff3(svn_stream_t *ostream,
 {
   svn_diff_t *diff;
 
-  SVN_ERR(svn_diff_file_diff3(&diff, original, modified, latest, pool));
+  SVN_ERR(svn_diff_file_diff3_2(&diff, original, modified, latest,
+                                svn_diff_file_options_create(pool), pool));
 
   *has_changes = svn_diff_contains_diffs(diff);
 
-  SVN_ERR(svn_diff_file_output_merge(ostream, diff,
-                                     original, modified, latest,
-                                     NULL, NULL, NULL, NULL,
-                                     FALSE,
-                                     FALSE,
-                                     pool));
+  SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
+                                      original, modified, latest,
+                                      NULL, NULL, NULL, NULL,
+                                      svn_diff_conflict_display_modified_latest,
+                                      pool));
 
   return NULL;
 }

Modified: subversion/branches/performance/tools/diff/diff4.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/diff/diff4.c?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/tools/diff/diff4.c (original)
+++ subversion/branches/performance/tools/diff/diff4.c Sun Feb 20 07:45:48 2011
@@ -40,15 +40,13 @@ do_diff4(svn_stream_t *ostream,
 {
   svn_diff_t *diff;
 
-  SVN_ERR(svn_diff_file_diff4(&diff,
-                              original, modified, latest, ancestor,
-                              pool));
-  SVN_ERR(svn_diff_file_output_merge(ostream, diff,
-                                     original, modified, latest,
-                                     NULL, NULL, NULL, NULL,
-                                     FALSE,
-                                     FALSE,
-                                     pool));
+  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,
+                                      original, modified, latest,
+                                      NULL, NULL, NULL, NULL,
+                                      svn_diff_conflict_display_modified_latest,
+                                      pool));
 
   return NULL;
 }

Modified: subversion/branches/performance/tools/server-side/svn-populate-node-origins-index.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/tools/server-side/svn-populate-node-origins-index.c?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/tools/server-side/svn-populate-node-origins-index.c (original)
+++ subversion/branches/performance/tools/server-side/svn-populate-node-origins-index.c Sun Feb 20 07:45:48 2011
@@ -77,7 +77,7 @@ index_revision_adds(int *count, svn_fs_t
 
   *count = 0;
   SVN_ERR(svn_fs_revision_root(&root, fs, revision, pool));
-  SVN_ERR(svn_fs_paths_changed(&changes, root, pool));
+  SVN_ERR(svn_fs_paths_changed2(&changes, root, pool));
 
   /* No paths changed in this revision?  Nothing to do.  */
   if (apr_hash_count(changes) == 0)
@@ -88,7 +88,7 @@ index_revision_adds(int *count, svn_fs_t
     {
       const void *path;
       void *val;
-      svn_fs_path_change_t *change;
+      svn_fs_path_change2_t *change;
 
       svn_pool_clear(subpool);
       apr_hash_this(hi, &path, NULL, &val);
@@ -96,12 +96,8 @@ index_revision_adds(int *count, svn_fs_t
       if ((change->change_kind == svn_fs_path_change_add)
           || (change->change_kind == svn_fs_path_change_replace))
         {
-          const char *copyfrom_path;
-          svn_revnum_t copyfrom_rev;
-
-          SVN_ERR(svn_fs_copied_from(&copyfrom_rev, &copyfrom_path,
-                                     root, path, subpool));
-          if (! (copyfrom_path && SVN_IS_VALID_REVNUM(copyfrom_rev)))
+          if (! (change->copyfrom_path
+                            && SVN_IS_VALID_REVNUM(change->copyfrom_rev)))
             {
               svn_revnum_t origin;
               SVN_ERR(svn_fs_node_origin_rev(&origin, root, path, subpool));

Modified: subversion/branches/performance/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/win-tests.py?rev=1072522&r1=1072521&r2=1072522&view=diff
==============================================================================
--- subversion/branches/performance/win-tests.py (original)
+++ subversion/branches/performance/win-tests.py Sun Feb 20 07:45:48 2011
@@ -79,6 +79,10 @@ def _usage_exit():
   print("  --http-library         : dav library to use, neon (default) or serf")
   print("  --javahl               : Run the javahl tests instead of the normal tests")
   print("  --list                 : print test doc strings only")
+  print("  --milestone-filter=RE  : RE is a regular expression pattern that (when")
+  print("                           used with --list) limits the tests listed to")
+  print("                           those with an associated issue in the tracker")
+  print("                           which has a target milestone that matches RE.")
   print("  --mode-filter=TYPE     : limit tests to expected TYPE = XFAIL, SKIP, PASS,")
   print("                           or 'ALL' (default)")
   print("  --enable-sasl          : enable Cyrus SASL authentication for")
@@ -123,7 +127,7 @@ opts, args = my_getopt(sys.argv[1:], 'hr
                         'fsfs-packing', 'fsfs-sharding=', 'javahl',
                         'list', 'enable-sasl', 'bin=', 'parallel',
                         'config-file=', 'server-minor-version=',
-                        'log-to-stdout', 'mode-filter='])
+                        'log-to-stdout', 'mode-filter=', 'milestone-filter='])
 if len(args) > 1:
   print('Warning: non-option arguments after the first one will be ignored')
 
@@ -140,6 +144,7 @@ httpd_port = None
 httpd_service = None
 http_library = 'neon'
 list_tests = None
+milestone_filter = None
 test_javahl = None
 enable_sasl = None
 svn_bin = None
@@ -195,6 +200,8 @@ for opt, val in opts:
     test_javahl = 1
   elif opt == '--list':
     list_tests = 1
+  elif opt == '--milestone-filter':
+    milestone_filter = val
   elif opt == '--mode-filter':
     mode_filter = val
   elif opt == '--enable-sasl':
@@ -688,7 +695,8 @@ if not test_javahl:
                              server_minor_version, not quiet,
                              cleanup, enable_sasl, parallel, config_file,
                              fsfs_sharding, fsfs_packing,
-                             list_tests, svn_bin, mode_filter)
+                             list_tests, svn_bin, mode_filter,
+                             milestone_filter)
   old_cwd = os.getcwd()
   try:
     os.chdir(abs_builddir)