You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/03/31 16:40:11 UTC

svn commit: r1583338 [2/2] - in /subversion/branches/remote-only-status: ./ build/generator/templates/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_fs/ subversion/libsvn_fs_fs/ subversion/libsvn_fs_x/ subv...

Modified: subversion/branches/remote-only-status/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/libsvn_wc/update_editor.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/remote-only-status/subversion/libsvn_wc/update_editor.c Mon Mar 31 14:40:09 2014
@@ -345,9 +345,10 @@ struct dir_baton
      and reinstall it. */
   apr_hash_t *deletion_conflicts;
 
-  /* A hash of file names (only the hash key matters) seen by add_file
-     and not yet added to the database by close_file. */
-  apr_hash_t *not_present_files;
+  /* A hash of file names (only the hash key matters) seen by add_file and
+     add_directory and not yet added to the database, mapping to a const
+     char * node kind (via svn_node_kind_to_word(). */
+  apr_hash_t *not_present_nodes;
 
   /* Set if an unversioned dir of the same name already existed in
      this directory. */
@@ -608,7 +609,7 @@ make_dir_baton(struct dir_baton **d_p,
   d->old_revision = SVN_INVALID_REVNUM;
   d->adding_dir   = adding;
   d->changed_rev  = SVN_INVALID_REVNUM;
-  d->not_present_files = apr_hash_make(dir_pool);
+  d->not_present_nodes = apr_hash_make(dir_pool);
 
   /* Copy some flags from the parent baton */
   if (pb)
@@ -1974,6 +1975,7 @@ add_directory(const char *path,
   struct dir_baton *pb = parent_baton;
   struct edit_baton *eb = pb->edit_baton;
   struct dir_baton *db;
+  apr_pool_t *scratch_pool = svn_pool_create(pool);
   svn_node_kind_t kind;
   svn_wc__db_status_t status;
   svn_node_kind_t wc_kind;
@@ -1987,7 +1989,7 @@ add_directory(const char *path,
 
   SVN_ERR(make_dir_baton(&db, path, eb, pb, TRUE, pool));
   SVN_ERR(calculate_repos_relpath(&db->new_repos_relpath, db->local_abspath,
-                                  NULL, eb, pb, db->pool, pool));
+                                  NULL, eb, pb, db->pool, scratch_pool));
   *child_baton = db;
 
   if (db->skip_this)
@@ -2022,13 +2024,26 @@ add_directory(const char *path,
          "administrative directory"),
        svn_dirent_local_style(db->local_abspath, pool));
 
-  SVN_ERR(svn_io_check_path(db->local_abspath, &kind, db->pool));
+  if (!eb->clean_checkout)
+    {
+      SVN_ERR(svn_io_check_path(db->local_abspath, &kind, db->pool));
+
+      err = svn_wc__db_read_info(&status, &wc_kind, NULL, NULL, NULL, NULL, NULL,
+                                NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                                NULL, NULL, NULL, NULL, NULL,
+                                &conflicted, NULL, NULL, NULL, NULL, NULL, NULL,
+                                eb->db, db->local_abspath,
+                                scratch_pool, scratch_pool);
+    }
+  else
+    {
+      kind = svn_node_none;
+      status = svn_wc__db_status_not_present;
+      wc_kind = svn_node_unknown;
+      conflicted = FALSE;
+      err = NULL;
+    }
 
-  err = svn_wc__db_read_info(&status, &wc_kind, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL,
-                             &conflicted, NULL, NULL, NULL, NULL, NULL, NULL,
-                             eb->db, db->local_abspath, db->pool, db->pool);
   if (err)
     {
       if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
@@ -2041,63 +2056,55 @@ add_directory(const char *path,
 
       versioned_locally_and_present = FALSE;
     }
-  else if (wc_kind == svn_node_dir
-           && status == svn_wc__db_status_normal)
+  else if (status == svn_wc__db_status_normal && wc_kind == svn_node_unknown)
     {
-      /* !! We found the root of a separate working copy obstructing the wc !!
+      SVN_ERR_ASSERT(conflicted);
+      versioned_locally_and_present = FALSE; /* Tree conflict ACTUAL-only node */
+    }
+  else if (status == svn_wc__db_status_normal)
+    {
+      if (wc_kind == svn_node_dir)
+        {
+          /* !! We found the root of a working copy obstructing the wc !!
 
-         If the directory would be part of our own working copy then
-         we wouldn't have been called as an add_directory().
+             If the directory would be part of our own working copy then
+             we wouldn't have been called as an add_directory().
 
-         The only thing we can do is add a not-present node, to allow
-         a future update to bring in the new files when the problem is
-         resolved.  Note that svn_wc__db_base_add_not_present_node()
-         explicitly adds the node into the parent's node database. */
-
-      SVN_ERR(svn_wc__db_base_add_not_present_node(eb->db, db->local_abspath,
-                                                   db->new_repos_relpath,
-                                                   eb->repos_root,
-                                                   eb->repos_uuid,
-                                                   *eb->target_revision,
-                                                   svn_node_file,
-                                                   NULL, NULL,
-                                                   pool));
+             The only thing we can do is add a not-present node, to allow
+             a future update to bring in the new files when the problem is
+             resolved.  Note that svn_wc__db_base_add_not_present_node()
+             explicitly adds the node into the parent's node database. */
 
-      SVN_ERR(remember_skipped_tree(eb, db->local_abspath, pool));
-      db->skip_this = TRUE;
-      db->already_notified = TRUE;
+          svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, db->name),
+                        svn_node_kind_to_word(svn_node_dir));
+        }
+      else
+        {
+          /* We found a file external occupating the place we need in BASE.
 
-      do_notification(eb, db->local_abspath, svn_node_dir,
-                      svn_wc_notify_update_skip_obstruction, pool);
+            We can't add a not-present node in this case as that would overwrite
+            the file external. Luckily the file external itself stops us from
+            forgetting a child of this parent directory like an obstructing
+            working copy would.
 
-      return SVN_NO_ERROR;
-    }
-  else if (status == svn_wc__db_status_normal
-           && (wc_kind == svn_node_file
-               || wc_kind == svn_node_symlink))
-    {
-      /* We found a file external occupating the place we need in BASE.
-
-         We can't add a not-present node in this case as that would overwrite
-         the file external. Luckily the file external itself stops us from
-         forgetting a child of this parent directory like an obstructing
-         working copy would.
-
-         The reason we get here is that the adm crawler doesn't report
-         file externals.
-      */
+            The reason we get here is that the adm crawler doesn't report
+            file externals.
+          */
+          SVN_ERR_ASSERT(wc_kind == svn_node_file
+                         || wc_kind == svn_node_symlink);
+        }
 
-      SVN_ERR(remember_skipped_tree(eb, db->local_abspath, pool));
+      SVN_ERR(remember_skipped_tree(eb, db->local_abspath, scratch_pool));
       db->skip_this = TRUE;
       db->already_notified = TRUE;
 
-      do_notification(eb, db->local_abspath, svn_node_file,
-                      svn_wc_notify_update_skip_obstruction, pool);
+      do_notification(eb, db->local_abspath, wc_kind,
+                      svn_wc_notify_update_skip_obstruction, scratch_pool);
+
+      svn_pool_destroy(scratch_pool);
 
       return SVN_NO_ERROR;
     }
-  else if (wc_kind == svn_node_unknown)
-    versioned_locally_and_present = FALSE; /* Tree conflict ACTUAL-only node */
   else
     versioned_locally_and_present = IS_NODE_PRESENT(status);
 
@@ -2120,7 +2127,7 @@ add_directory(const char *path,
                                                       eb->db,
                                                       db->local_abspath,
                                                       tree_conflict,
-                                                      db->pool, db->pool));
+                                                      db->pool, scratch_pool));
 
           tree_conflict = svn_wc__conflict_skel_create(db->pool);
 
@@ -2129,7 +2136,7 @@ add_directory(const char *path,
                                         eb->db, db->local_abspath,
                                         reason, svn_wc_conflict_action_replace,
                                         NULL,
-                                        db->pool, db->pool));
+                                        db->pool, scratch_pool));
 
           /* And now stop checking for conflicts here and just perform
              a shadowed update */
@@ -2140,7 +2147,8 @@ add_directory(const char *path,
         }
       else
         SVN_ERR(node_already_conflicted(&conflicted, &conflict_ignored,
-                                        eb->db, db->local_abspath, pool));
+                                        eb->db, db->local_abspath,
+                                        scratch_pool));
     }
 
   /* Now the "usual" behaviour if already conflicted. Skip it. */
@@ -2163,18 +2171,13 @@ add_directory(const char *path,
          Note that we can safely assume that no present base node exists,
          because then we would not have received an add_directory.
        */
-      SVN_ERR(svn_wc__db_base_add_not_present_node(eb->db, db->local_abspath,
-                                                   db->new_repos_relpath,
-                                                   eb->repos_root,
-                                                   eb->repos_uuid,
-                                                   *eb->target_revision,
-                                                   svn_node_dir,
-                                                   NULL, NULL,
-                                                   pool));
+      svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, db->name),
+                    svn_node_kind_to_word(svn_node_dir));
 
-      /* ### TODO: Also print victim_path in the skip msg. */
       do_notification(eb, db->local_abspath, svn_node_dir,
-                      svn_wc_notify_skip_conflicted, pool);
+                      svn_wc_notify_skip_conflicted, scratch_pool);
+
+      svn_pool_destroy(scratch_pool);
       return SVN_NO_ERROR;
     }
   else if (conflict_ignored)
@@ -2207,7 +2210,7 @@ add_directory(const char *path,
         SVN_ERR(svn_wc__db_scan_addition(&add_status, NULL, NULL, NULL, NULL,
                                          NULL, NULL, NULL, NULL,
                                          eb->db, db->local_abspath,
-                                         pool, pool));
+                                         scratch_pool, scratch_pool));
 
 
       /* Is there *something* that is not a dir? */
@@ -2230,7 +2233,7 @@ add_directory(const char *path,
                                       db->local_abspath,
                                       status, FALSE, svn_node_none,
                                       svn_wc_conflict_action_add,
-                                      pool, pool));
+                                      db->pool, scratch_pool));
         }
 
       if (tree_conflict == NULL)
@@ -2258,7 +2261,7 @@ add_directory(const char *path,
                                         eb->db, db->local_abspath,
                                         svn_wc_conflict_reason_unversioned,
                                         svn_wc_conflict_action_add, NULL,
-                                        db->pool, pool));
+                                        db->pool, scratch_pool));
           db->edit_conflict = tree_conflict;
         }
     }
@@ -2269,7 +2272,7 @@ add_directory(const char *path,
                               db->new_repos_relpath,
                               wc_kind,
                               svn_node_dir,
-                              db->pool, pool));
+                              db->pool, scratch_pool));
 
   SVN_ERR(svn_wc__db_base_add_incomplete_directory(
                                      eb->db, db->local_abspath,
@@ -2282,12 +2285,12 @@ add_directory(const char *path,
                                      (! db->shadowed
                                       && status == svn_wc__db_status_added),
                                      tree_conflict, NULL,
-                                     pool));
+                                     scratch_pool));
 
   /* Make sure there is a real directory at LOCAL_ABSPATH, unless we are just
      updating the DB */
   if (!db->shadowed)
-    SVN_ERR(svn_wc__ensure_directory(db->local_abspath, pool));
+    SVN_ERR(svn_wc__ensure_directory(db->local_abspath, scratch_pool));
 
   if (tree_conflict != NULL)
     {
@@ -2299,11 +2302,11 @@ add_directory(const char *path,
                                                  eb->conflict_baton,
                                                  eb->cancel_func,
                                                  eb->cancel_baton,
-                                                 pool));
+                                                 scratch_pool));
 
       db->already_notified = TRUE;
       do_notification(eb, db->local_abspath, svn_node_dir,
-                      svn_wc_notify_tree_conflict, pool);
+                      svn_wc_notify_tree_conflict, scratch_pool);
     }
 
 
@@ -2325,9 +2328,12 @@ add_directory(const char *path,
 
       db->already_notified = TRUE;
 
-      do_notification(eb, db->local_abspath, svn_node_dir, action, pool);
+      do_notification(eb, db->local_abspath, svn_node_dir, action,
+                      scratch_pool);
     }
 
+  svn_pool_destroy(scratch_pool);
+
   return SVN_NO_ERROR;
 }
 
@@ -2767,7 +2773,7 @@ close_directory(void *dir_baton,
       }
   }
 
-  if (apr_hash_count(db->not_present_files))
+  if (apr_hash_count(db->not_present_nodes))
     {
       apr_hash_index_t *hi;
       apr_pool_t *iterpool = svn_pool_create(scratch_pool);
@@ -2777,12 +2783,14 @@ close_directory(void *dir_baton,
          transaction, but I can't even trigger it.  I've tried
          ra_local, ra_svn, ra_neon, ra_serf and they all call
          close_file before close_dir. */
-      for (hi = apr_hash_first(scratch_pool, db->not_present_files);
+      for (hi = apr_hash_first(scratch_pool, db->not_present_nodes);
            hi;
            hi = apr_hash_next(hi))
         {
           const char *child = svn__apr_hash_index_key(hi);
           const char *child_abspath, *child_relpath;
+          svn_node_kind_t kind = svn_node_kind_from_word(
+                                      svn__apr_hash_index_val(hi));
 
           svn_pool_clear(iterpool);
 
@@ -2795,7 +2803,7 @@ close_directory(void *dir_baton,
                                                        eb->repos_root,
                                                        eb->repos_uuid,
                                                        *eb->target_revision,
-                                                       svn_node_file,
+                                                       kind,
                                                        NULL, NULL,
                                                        iterpool));
         }
@@ -2917,6 +2925,9 @@ close_directory(void *dir_baton,
                          eb->cancel_func, eb->cancel_baton,
                          scratch_pool));
 
+  if (db->parent_baton)
+    svn_hash_sets(db->parent_baton->not_present_nodes, db->name, NULL);
+
   if (conflict_skel && eb->conflict_func)
     SVN_ERR(svn_wc__conflict_invoke_resolver(eb->db, db->local_abspath,
                                              conflict_skel,
@@ -3136,13 +3147,13 @@ add_file(const char *path,
   struct dir_baton *pb = parent_baton;
   struct edit_baton *eb = pb->edit_baton;
   struct file_baton *fb;
-  svn_node_kind_t kind = svn_node_none;
-  svn_node_kind_t wc_kind = svn_node_unknown;
-  svn_wc__db_status_t status = svn_wc__db_status_normal;
+  svn_node_kind_t kind;
+  svn_node_kind_t wc_kind;
+  svn_wc__db_status_t status;
   apr_pool_t *scratch_pool;
-  svn_boolean_t conflicted = FALSE;
+  svn_boolean_t conflicted;
   svn_boolean_t conflict_ignored = FALSE;
-  svn_boolean_t versioned_locally_and_present = FALSE;
+  svn_boolean_t versioned_locally_and_present;
   svn_skel_t *tree_conflict = NULL;
   svn_error_t *err = SVN_NO_ERROR;
 
@@ -3182,6 +3193,13 @@ add_file(const char *path,
                                 eb->db, fb->local_abspath,
                                 scratch_pool, scratch_pool);
     }
+  else
+    {
+      kind =  svn_node_none;
+      status = svn_wc__db_status_not_present;
+      wc_kind = svn_node_unknown;
+      conflicted = FALSE;
+    }
 
   if (err)
     {
@@ -3194,58 +3212,53 @@ add_file(const char *path,
 
       versioned_locally_and_present = FALSE;
     }
-  else if (wc_kind == svn_node_dir
-           && status == svn_wc__db_status_normal)
+  else if (status == svn_wc__db_status_normal && wc_kind == svn_node_unknown)
     {
-      /* !! We found the root of a separate working copy obstructing the wc !!
-
-         If the directory would be part of our own working copy then
-         we wouldn't have been called as an add_file().
+      SVN_ERR_ASSERT(conflicted);
+      versioned_locally_and_present = FALSE; /* Tree conflict ACTUAL-only node */
+    }
+  else if (status == svn_wc__db_status_normal)
+    {
+      if (wc_kind == svn_node_dir)
+        {
+          /* !! We found the root of a working copy obstructing the wc !!
 
-         The only thing we can do is add a not-present node, to allow
-         a future update to bring in the new files when the problem is
-         resolved. */
-      svn_hash_sets(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
-                    (void *)1);
+             If the directory would be part of our own working copy then
+             we wouldn't have been called as an add_file().
 
-      SVN_ERR(remember_skipped_tree(eb, fb->local_abspath, pool));
-      fb->skip_this = TRUE;
-      fb->already_notified = TRUE;
+             The only thing we can do is add a not-present node, to allow
+             a future update to bring in the new files when the problem is
+             resolved. */
+          svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, fb->name),
+                        svn_node_kind_to_word(svn_node_file));
+        }
+      else
+        {
+          /* We found a file external occupating the place we need in BASE.
 
-      do_notification(eb, fb->local_abspath, svn_node_file,
-                      svn_wc_notify_update_skip_obstruction, scratch_pool);
+             We can't add a not-present node in this case as that would overwrite
+             the file external. Luckily the file external itself stops us from
+             forgetting a child of this parent directory like an obstructing
+             working copy would.
 
-      svn_pool_destroy(scratch_pool);
+             The reason we get here is that the adm crawler doesn't report
+             file externals.
+           */
+          SVN_ERR_ASSERT(wc_kind == svn_node_file
+                         || wc_kind == svn_node_symlink);
+        }
 
-      return SVN_NO_ERROR;
-    }
-  else if (status == svn_wc__db_status_normal
-           && (wc_kind == svn_node_file
-               || wc_kind == svn_node_symlink))
-    {
-      /* We found a file external occupating the place we need in BASE.
-
-         We can't add a not-present node in this case as that would overwrite
-         the file external. Luckily the file external itself stops us from
-         forgetting a child of this parent directory like an obstructing
-         working copy would.
-
-         The reason we get here is that the adm crawler doesn't report
-         file externals.
-      */
       SVN_ERR(remember_skipped_tree(eb, fb->local_abspath, pool));
       fb->skip_this = TRUE;
       fb->already_notified = TRUE;
 
-      do_notification(eb, fb->local_abspath, svn_node_file,
+      do_notification(eb, fb->local_abspath, wc_kind,
                       svn_wc_notify_update_skip_obstruction, scratch_pool);
 
       svn_pool_destroy(scratch_pool);
 
       return SVN_NO_ERROR;
     }
-  else if (wc_kind == svn_node_unknown)
-    versioned_locally_and_present = FALSE; /* Tree conflict ACTUAL-only node */
   else
     versioned_locally_and_present = IS_NODE_PRESENT(status);
 
@@ -3313,10 +3326,10 @@ add_file(const char *path,
          Note that we can safely assume that no present base node exists,
          because then we would not have received an add_file.
        */
-      svn_hash_sets(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
-                    (void *)1);
+      svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, fb->name),
+                    svn_node_kind_to_word(svn_node_file));
 
-      do_notification(eb, fb->local_abspath, svn_node_unknown,
+      do_notification(eb, fb->local_abspath, svn_node_file,
                       svn_wc_notify_skip_conflicted, scratch_pool);
 
       svn_pool_destroy(scratch_pool);
@@ -3418,8 +3431,8 @@ add_file(const char *path,
       || *eb->target_basename == '\0'
       || (strcmp(fb->local_abspath, eb->target_abspath) != 0))
     {
-      svn_hash_sets(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
-                    (void *)1);
+      svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, fb->name),
+                    svn_node_kind_to_word(svn_node_file));
     }
 
   if (tree_conflict != NULL)
@@ -4619,7 +4632,7 @@ close_file(void *file_baton,
 
   /* Deal with the WORKING tree, based on updates to the BASE tree.  */
 
-  svn_hash_sets(fb->dir_baton->not_present_files, fb->name, NULL);
+  svn_hash_sets(fb->dir_baton->not_present_nodes, fb->name, NULL);
 
   /* Send a notification to the callback function.  (Skip notifications
      about files which were already notified for another reason.) */

Modified: subversion/branches/remote-only-status/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/libsvn_wc/util.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/libsvn_wc/util.c (original)
+++ subversion/branches/remote-only-status/subversion/libsvn_wc/util.c Mon Mar 31 14:40:09 2014
@@ -272,8 +272,8 @@ svn_wc__conflict_description3_dup(const 
     new_conflict->their_abspath = apr_pstrdup(pool, conflict->their_abspath);
   if (conflict->my_abspath)
     new_conflict->my_abspath = apr_pstrdup(pool, conflict->my_abspath);
-  if (conflict->merged_file)
-    new_conflict->merged_file = apr_pstrdup(pool, conflict->merged_file);
+  if (conflict->merged_abspath)
+    new_conflict->merged_abspath = apr_pstrdup(pool, conflict->merged_abspath);
   if (conflict->src_left_version)
     new_conflict->src_left_version =
       svn_wc_conflict_version_dup(conflict->src_left_version, pool);
@@ -407,9 +407,9 @@ svn_wc__cd3_to_cd2(const svn_wc_conflict
         new_conflict->their_abspath = apr_pstrdup(result_pool,
                                                   conflict->their_abspath);
 
-      if (conflict->merged_file)
+      if (conflict->merged_abspath)
         new_conflict->merged_file = apr_pstrdup(result_pool,
-                                                conflict->merged_file);
+                                                conflict->merged_abspath);
     }
   if (conflict->my_abspath)
     new_conflict->my_abspath = apr_pstrdup(result_pool, conflict->my_abspath);

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/authz.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/authz.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/authz.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/authz.c Mon Mar 31 14:40:09 2014
@@ -80,7 +80,8 @@ dav_svn__allow_read(request_rec *r,
     uri_type = DAV_SVN__BUILD_URI_PUBLIC;
 
   /* Build a Version Resource uri representing (rev, path). */
-  uri = dav_svn__build_uri(repos, uri_type, rev, path, FALSE, pool);
+  uri = dav_svn__build_uri(repos, uri_type, rev, path, FALSE /* add_href */,
+                           pool);
 
   /* Check if GET would work against this uri. */
   subreq = ap_sub_req_method_uri("GET", uri, r, r->output_filters);

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/dav_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/dav_svn.h?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/dav_svn.h (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/dav_svn.h Mon Mar 31 14:40:09 2014
@@ -876,7 +876,7 @@ dav_svn__build_uri(const dav_svn_repos *
                    enum dav_svn__build_what what,
                    svn_revnum_t revision,
                    const char *path,
-                   int add_href,
+                   svn_boolean_t add_href,
                    apr_pool_t *pool);
 
 

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/liveprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/liveprops.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/liveprops.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/liveprops.c Mon Mar 31 14:40:09 2014
@@ -549,7 +549,7 @@ insert_prop_internal(const dav_resource 
         return DAV_PROP_INSERT_NOTSUPP;
       value = dav_svn__build_uri(resource->info->repos, DAV_SVN__BUILD_URI_BC,
                                  resource->info->root.rev, NULL,
-                                 1 /* add_href */, scratch_pool);
+                                 TRUE /* add_href */, scratch_pool);
       break;
 
     case DAV_PROPID_checked_in:
@@ -578,7 +578,8 @@ insert_prop_internal(const dav_resource 
             }
           s = dav_svn__build_uri(resource->info->repos,
                                  DAV_SVN__BUILD_URI_BASELINE,
-                                 revnum, NULL, 0 /* add_href */, scratch_pool);
+                                 revnum, NULL, FALSE /* add_href */,
+                                 scratch_pool);
           value = apr_psprintf(scratch_pool, "<D:href>%s</D:href>",
                                apr_xml_quote_string(scratch_pool, s, 1));
         }
@@ -596,7 +597,7 @@ insert_prop_internal(const dav_resource 
           s = dav_svn__build_uri(resource->info->repos,
                                  DAV_SVN__BUILD_URI_VERSION,
                                  rev_to_use, resource->info->repos_path,
-                                0 /* add_href */, scratch_pool);
+                                 FALSE /* add_href */, scratch_pool);
           value = apr_psprintf(scratch_pool, "<D:href>%s</D:href>",
                                apr_xml_quote_string(scratch_pool, s, 1));
         }
@@ -610,7 +611,7 @@ insert_prop_internal(const dav_resource 
         return DAV_PROP_INSERT_NOTSUPP;
       value = dav_svn__build_uri(resource->info->repos, DAV_SVN__BUILD_URI_VCC,
                                  SVN_IGNORED_REVNUM, NULL,
-                                 1 /* add_href */, scratch_pool);
+                                 TRUE /* add_href */, scratch_pool);
       break;
 
     case DAV_PROPID_version_name:

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/merge.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/merge.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/merge.c Mon Mar 31 14:40:09 2014
@@ -85,7 +85,7 @@ send_response(const dav_svn_repos *repos
                             SVN_IGNORED_REVNUM, path, 0 /* add_href */, pool);
   rev_to_use = dav_svn__get_safe_cr(root, path, pool);
   vsn_url = dav_svn__build_uri(repos, DAV_SVN__BUILD_URI_VERSION,
-                               rev_to_use, path, 0 /* add_href */, pool);
+                               rev_to_use, path, FALSE /* add_href */, pool);
   status = ap_fputstrs(output, bb,
                        "<D:response>" DEBUG_CR
                        "<D:href>",
@@ -243,7 +243,7 @@ dav_svn__merge_response(ap_filter_t *out
 
   /* the HREF for the baseline is actually the VCC */
   vcc = dav_svn__build_uri(repos, DAV_SVN__BUILD_URI_VCC, SVN_IGNORED_REVNUM,
-                           NULL, 0 /* add_href */, pool);
+                           NULL, FALSE /* add_href */, pool);
 
   /* the version-name of the baseline is the revision number */
   rev = apr_psprintf(pool, "%ld", new_rev);

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/reports/update.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/reports/update.c Mon Mar 31 14:40:09 2014
@@ -253,13 +253,13 @@ send_vsn_url(item_baton_t *baton, apr_po
     {
       href = dav_svn__build_uri(baton->uc->resource->info->repos,
                                 DAV_SVN__BUILD_URI_REVROOT,
-                                revision, path, 0 /* add_href */, pool);
+                                revision, path, FALSE /* add_href */, pool);
     }
   else
     {
       href = dav_svn__build_uri(baton->uc->resource->info->repos,
                                 DAV_SVN__BUILD_URI_VERSION,
-                                revision, path, 0 /* add_href */, pool);
+                                revision, path, FALSE /* add_href */, pool);
     }
 
   return dav_svn__brigade_printf(baton->uc->bb, baton->uc->output,
@@ -346,7 +346,7 @@ add_helper(svn_boolean_t is_dir,
           bc_url = dav_svn__build_uri(child->uc->resource->info->repos,
                                       DAV_SVN__BUILD_URI_BC,
                                       revision, real_path,
-                                      0 /* add_href */, pool);
+                                      FALSE /* add_href */, pool);
           bc_url = svn_urlpath__canonicalize(bc_url, pool);
 
           /* ugh, build_uri ignores the path and just builds the root

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/repos.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/repos.c Mon Mar 31 14:40:09 2014
@@ -894,7 +894,7 @@ prep_version(dav_resource_combined *comb
   comb->res.uri = dav_svn__build_uri(comb->priv.repos,
                                      DAV_SVN__BUILD_URI_BASELINE,
                                      comb->priv.root.rev, NULL,
-                                     0 /* add_href */,
+                                     FALSE /* add_href */,
                                      pool);
 
   return NULL;
@@ -4403,7 +4403,7 @@ dav_svn__working_to_regular_resource(dav
       /* if rev was specific, create baseline-collection URL */
       path = dav_svn__build_uri(repos, DAV_SVN__BUILD_URI_BC,
                                 priv->root.rev, priv->repos_path,
-                                0, resource->pool);
+                                FALSE /* add_href */, resource->pool);
     }
   path = svn_path_uri_encode(path, resource->pool);
   priv->uri_path = svn_stringbuf_create(path, resource->pool);

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/util.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/util.c Mon Mar 31 14:40:09 2014
@@ -227,7 +227,7 @@ dav_svn__build_uri(const dav_svn_repos *
                    enum dav_svn__build_what what,
                    svn_revnum_t revision,
                    const char *path,
-                   int add_href,
+                   svn_boolean_t add_href,
                    apr_pool_t *pool)
 {
   const char *root_path = repos->root_path;

Modified: subversion/branches/remote-only-status/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/mod_dav_svn/version.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/remote-only-status/subversion/mod_dav_svn/version.c Mon Mar 31 14:40:09 2014
@@ -178,7 +178,8 @@ get_option(const dav_resource *resource,
   request_rec *r = resource->info->r;
   const char *repos_root_uri =
     dav_svn__build_uri(resource->info->repos, DAV_SVN__BUILD_URI_PUBLIC,
-                       SVN_IGNORED_REVNUM, "", 0, resource->pool);
+                       SVN_IGNORED_REVNUM, "", FALSE /* add_href */,
+                       resource->pool);
 
   /* ### DAV:version-history-collection-set */
   if (elem->ns != APR_XML_NS_DAV_ID
@@ -199,7 +200,7 @@ get_option(const dav_resource *resource,
                   dav_svn__build_uri(resource->info->repos,
                                      DAV_SVN__BUILD_URI_ACT_COLLECTION,
                                      SVN_INVALID_REVNUM, NULL,
-                                     1 /* add_href */,
+                                     TRUE /* add_href */,
                                      resource->pool));
   apr_text_append(resource->pool, option,
                   "</D:activity-collection-set>");
@@ -1040,7 +1041,7 @@ dav_svn__checkin(dav_resource *resource,
           uri = dav_svn__build_uri(resource->info->repos,
                                    DAV_SVN__BUILD_URI_VERSION,
                                    new_rev, resource->info->repos_path,
-                                   0, resource->pool);
+                                   FALSE /* add_href */, resource->pool);
 
           err = dav_svn__create_version_resource(version_resource, uri,
                                                  resource->pool);

Modified: subversion/branches/remote-only-status/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svn/cl.h?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svn/cl.h (original)
+++ subversion/branches/remote-only-status/subversion/svn/cl.h Mon Mar 31 14:40:09 2014
@@ -534,7 +534,8 @@ svn_cl__merge_file_externally(const char
 /* Like svn_cl__merge_file_externally, but using a built-in merge tool
  * with help from an external editor specified by EDITOR_CMD. */
 svn_error_t *
-svn_cl__merge_file(const char *base_path,
+svn_cl__merge_file(svn_boolean_t *remains_in_conflict,
+                   const char *base_path,
                    const char *their_path,
                    const char *my_path,
                    const char *merged_path,
@@ -542,7 +543,8 @@ svn_cl__merge_file(const char *base_path
                    const char *path_prefix,
                    const char *editor_cmd,
                    apr_hash_t *config,
-                   svn_boolean_t *remains_in_conflict,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
                    apr_pool_t *scratch_pool);
 
 

Modified: subversion/branches/remote-only-status/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svn/conflict-callbacks.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/remote-only-status/subversion/svn/conflict-callbacks.c Mon Mar 31 14:40:09 2014
@@ -129,6 +129,8 @@ svn_cl__accept_from_word(const char *wor
 static svn_error_t *
 show_diff(const svn_wc_conflict_description2_t *desc,
           const char *path_prefix,
+          svn_cancel_func_t cancel_func,
+          void *cancel_baton,
           apr_pool_t *pool)
 {
   const char *path1, *path2;
@@ -186,11 +188,12 @@ show_diff(const svn_wc_conflict_descript
   SVN_ERR(svn_stream_for_stdout(&output, pool));
   SVN_ERR(svn_diff_file_diff_2(&diff, path1, path2,
                                options, pool));
-  return svn_diff_file_output_unified3(output, diff,
+  return svn_diff_file_output_unified4(output, diff,
                                        path1, path2,
                                        label1, label2,
                                        APR_LOCALE_CHARSET,
                                        NULL, FALSE,
+                                       cancel_func, cancel_baton,
                                        pool);
 }
 
@@ -796,7 +799,9 @@ handle_text_conflict(svn_wc_conflict_res
               continue;
             }
 
-          SVN_ERR(show_diff(desc, b->path_prefix, iterpool));
+          SVN_ERR(show_diff(desc, b->path_prefix,
+                            b->pb->cancel_func, b->pb->cancel_baton,
+                            iterpool));
           knows_something = TRUE;
         }
       else if (strcmp(opt->code, "e") == 0 || strcmp(opt->code, ":-E") == 0)
@@ -850,7 +855,8 @@ handle_text_conflict(svn_wc_conflict_res
                   continue;
                 }
 
-              SVN_ERR(svn_cl__merge_file(desc->base_abspath,
+              SVN_ERR(svn_cl__merge_file(&remains_in_conflict,
+                                         desc->base_abspath,
                                          desc->their_abspath,
                                          desc->my_abspath,
                                          desc->merged_file,
@@ -858,7 +864,8 @@ handle_text_conflict(svn_wc_conflict_res
                                          b->path_prefix,
                                          b->editor_cmd,
                                          b->config,
-                                         &remains_in_conflict,
+                                         b->pb->cancel_func,
+                                         b->pb->cancel_baton,
                                          iterpool));
             }
           else

Modified: subversion/branches/remote-only-status/subversion/svn/file-merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svn/file-merge.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svn/file-merge.c (original)
+++ subversion/branches/remote-only-status/subversion/svn/file-merge.c Mon Mar 31 14:40:09 2014
@@ -853,7 +853,8 @@ static svn_diff_output_fns_t file_merge_
 };
 
 svn_error_t *
-svn_cl__merge_file(const char *base_path,
+svn_cl__merge_file(svn_boolean_t *remains_in_conflict,
+                   const char *base_path,
                    const char *their_path,
                    const char *my_path,
                    const char *merged_path,
@@ -861,7 +862,8 @@ svn_cl__merge_file(const char *base_path
                    const char *path_prefix,
                    const char *editor_cmd,
                    apr_hash_t *config,
-                   svn_boolean_t *remains_in_conflict,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
                    apr_pool_t *scratch_pool)
 {
   svn_diff_t *diff;
@@ -918,7 +920,8 @@ svn_cl__merge_file(const char *base_path
   fmb.abort_merge = FALSE;
   fmb.scratch_pool = scratch_pool;
 
-  SVN_ERR(svn_diff_output(diff, &fmb, &file_merge_diff_output_fns));
+  SVN_ERR(svn_diff_output2(diff, &fmb, &file_merge_diff_output_fns,
+                           cancel_func, cancel_baton));
 
   SVN_ERR(svn_io_file_close(original_file, scratch_pool));
   SVN_ERR(svn_io_file_close(modified_file, scratch_pool));

Modified: subversion/branches/remote-only-status/subversion/svn/list-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svn/list-cmd.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svn/list-cmd.c (original)
+++ subversion/branches/remote-only-status/subversion/svn/list-cmd.c Mon Mar 31 14:40:09 2014
@@ -420,6 +420,8 @@ svn_cl__list(apr_getopt_t *os,
   if (seen_nonexistent_target)
     err = svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
           _("Could not list all targets because some targets don't exist"));
+  else
+    err = NULL;
 
   return svn_error_compose_create(externals_err, err);
 }

Modified: subversion/branches/remote-only-status/subversion/svnlook/svnlook.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svnlook/svnlook.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svnlook/svnlook.c (original)
+++ subversion/branches/remote-only-status/subversion/svnlook/svnlook.c Mon Mar 31 14:40:09 2014
@@ -1058,11 +1058,12 @@ print_diff_tree(svn_stream_t *out_stream
                     SVN_ERR(generate_label(&orig_label, base_root,
                                            base_path, pool));
                   SVN_ERR(generate_label(&new_label, root, path, pool));
-                  SVN_ERR(svn_diff_file_output_unified3
-                          (out_stream, diff, orig_path, new_path,
+                  SVN_ERR(svn_diff_file_output_unified4(
+                           out_stream, diff, orig_path, new_path,
                            orig_label, new_label,
                            svn_cmdline_output_encoding(pool), NULL,
-                           opts->show_c_function, pool));
+                           opts->show_c_function, 
+                           check_cancel, NULL, pool));
                   SVN_ERR(svn_stream_printf_from_utf8(out_stream, encoding, pool,
                                                       "\n"));
                   diff_header_printed = TRUE;

Modified: subversion/branches/remote-only-status/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svnserve/serve.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svnserve/serve.c (original)
+++ subversion/branches/remote-only-status/subversion/svnserve/serve.c Mon Mar 31 14:40:09 2014
@@ -1066,8 +1066,7 @@ get_props(apr_hash_t **props,
       /* Hardcode the values for the committed revision, date, and author. */
       SVN_ERR(svn_repos_get_committed_info(&crev, &cdate, &cauthor, root,
                                            path, pool));
-      str = svn_string_create(apr_psprintf(pool, "%ld", crev),
-                              pool);
+      str = svn_string_createf(pool, "%ld", crev);
       svn_hash_sets(*props, SVN_PROP_ENTRY_COMMITTED_REV, str);
       str = (cdate) ? svn_string_create(cdate, pool) : NULL;
       svn_hash_sets(*props, SVN_PROP_ENTRY_COMMITTED_DATE, str);
@@ -3374,26 +3373,13 @@ repos_path_valid(const char *path)
   return TRUE;
 }
 
-/* APR pool cleanup callback that resets the REPOS pointer in ARG. */
-static apr_status_t
-reset_repos(void *arg)
-{
-  repository_t *repository = arg;
-  repository->repos = NULL;
-
-  return APR_SUCCESS;
-}
-
 /* Look for the repository given by URL, using ROOT as the virtual
  * repository root.  If we find one, fill in the repos, fs, repos_url,
- * and fs_path fields of REPOSITORY.  REPOSITORY->REPO will be allocated
- * SCRATCH_POOL because repositories may be closed and re-opened during
- * the lifetime of a connection.   All other parts in REPOSITORY must
- * be allocated in RESULT_POOL.  VHOST and READ_ONLY flags are the same
- * as in the server baton.
+ * and fs_path fields of REPOSITORY.  VHOST and READ_ONLY flags are the
+ * same as in the server baton.
  *
- * CONFIG_POOL, AUTHZ_POOL and REPOS_POOL shall be used to load any
- * object of the respective type.
+ * CONFIG_POOL and AUTHZ_POOL shall be used to load any object of the
+ * respective type.
  */
 static svn_error_t *
 find_repos(const char *url,
@@ -3404,9 +3390,8 @@ find_repos(const char *url,
            repository_t *repository,
            svn_repos__config_pool_t *config_pool,
            svn_repos__authz_pool_t *authz_pool,
-           svn_repos__repos_pool_t *repos_pool,
-           apr_pool_t *result_pool,
-           apr_pool_t *scratch_pool)
+           apr_hash_t *fs_config,
+           apr_pool_t *pool)
 {
   const char *path, *full_path, *fs_path, *hooks_env;
   svn_stringbuf_t *url_buf;
@@ -3423,8 +3408,8 @@ find_repos(const char *url,
       if (path == NULL)
         path = "";
     }
-  path = svn_relpath_canonicalize(path, result_pool);
-  path = svn_path_uri_decode(path, result_pool);
+  path = svn_relpath_canonicalize(path, pool);
+  path = svn_path_uri_decode(path, pool);
 
   /* Ensure that it isn't possible to escape the root by disallowing
      '..' segments. */
@@ -3433,61 +3418,55 @@ find_repos(const char *url,
                             "Couldn't determine repository path");
 
   /* Join the server-configured root with the client path. */
-  full_path = svn_dirent_join(svn_dirent_canonicalize(root, result_pool),
-                              path, result_pool);
+  full_path = svn_dirent_join(svn_dirent_canonicalize(root, pool),
+                              path, pool);
 
   /* Search for a repository in the full path. */
-  repository->repos_root = svn_repos_find_root_path(full_path, result_pool);
+  repository->repos_root = svn_repos_find_root_path(full_path, pool);
   if (!repository->repos_root)
     return svn_error_createf(SVN_ERR_RA_SVN_REPOS_NOT_FOUND, NULL,
                              "No repository found in '%s'", url);
 
   /* Open the repository and fill in b with the resulting information. */
-  SVN_ERR(svn_repos__repos_pool_get(&repository->repos, repos_pool,
-                                    repository->repos_root, "",
-                                    scratch_pool));
+  SVN_ERR(svn_repos_open2(&repository->repos, repository->repos_root,
+                          fs_config, pool));
   SVN_ERR(svn_repos_remember_client_capabilities(repository->repos,
                                                  repository->capabilities));
   repository->fs = svn_repos_fs(repository->repos);
   fs_path = full_path + strlen(repository->repos_root);
   repository->fs_path = svn_stringbuf_create(*fs_path ? fs_path : "/",
-                                             result_pool);
-  url_buf = svn_stringbuf_create(url, result_pool);
+                                             pool);
+  url_buf = svn_stringbuf_create(url, pool);
   svn_path_remove_components(url_buf,
                         svn_path_component_count(repository->fs_path->data));
   repository->repos_url = url_buf->data;
   repository->authz_repos_name = svn_dirent_is_child(root,
                                                      repository->repos_root,
-                                                     result_pool);
+                                                     pool);
   if (repository->authz_repos_name == NULL)
     repository->repos_name = svn_dirent_basename(repository->repos_root,
-                                                 result_pool);
+                                                 pool);
   else
     repository->repos_name = repository->authz_repos_name;
   repository->repos_name = svn_path_uri_encode(repository->repos_name,
-                                               result_pool);
-
-  /* Reset the REPOS pointer as soon as the REPOS will be returned to the
-     REPOS_POOL. */
-  apr_pool_cleanup_register(scratch_pool, repository, reset_repos,
-                            apr_pool_cleanup_null);
+                                               pool);
 
   /* If the svnserve configuration has not been loaded then load it from the
    * repository. */
   if (NULL == cfg)
     {
-      repository->base = svn_repos_conf_dir(repository->repos, result_pool);
+      repository->base = svn_repos_conf_dir(repository->repos, pool);
 
       SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
                                          svn_repos_svnserve_conf
-                                            (repository->repos, result_pool), 
+                                            (repository->repos, pool),
                                          FALSE, FALSE, repository->repos,
-                                         result_pool));
+                                         pool));
     }
 
-  SVN_ERR(load_pwdb_config(repository, cfg, config_pool, result_pool));
+  SVN_ERR(load_pwdb_config(repository, cfg, config_pool, pool));
   SVN_ERR(load_authz_config(repository, repository->repos_root, cfg,
-                            authz_pool, result_pool));
+                            authz_pool, pool));
 
 #ifdef SVN_HAVE_SASL
     {
@@ -3509,10 +3488,10 @@ find_repos(const char *url,
 #endif
 
   /* Use the repository UUID as the default realm. */
-  SVN_ERR(svn_fs_get_uuid(repository->fs, &repository->realm, result_pool));
+  SVN_ERR(svn_fs_get_uuid(repository->fs, &repository->realm, pool));
   svn_config_get(cfg, &repository->realm, SVN_CONFIG_SECTION_GENERAL,
                  SVN_CONFIG_OPTION_REALM, repository->realm);
-  repository->realm = apr_pstrdup(result_pool, repository->realm);
+  repository->realm = apr_pstrdup(pool, repository->realm);
 
   /* Make sure it's possible for the client to authenticate.  Note
      that this doesn't take into account any authz configuration read
@@ -3524,9 +3503,9 @@ find_repos(const char *url,
   svn_config_get(cfg, &hooks_env, SVN_CONFIG_SECTION_GENERAL,
                  SVN_CONFIG_OPTION_HOOKS_ENV, NULL);
   if (hooks_env)
-    hooks_env = svn_dirent_internal_style(hooks_env, scratch_pool);
+    hooks_env = svn_dirent_internal_style(hooks_env, pool);
 
-  repository->hooks_env = apr_pstrdup(result_pool, hooks_env);
+  repository->hooks_env = apr_pstrdup(pool, hooks_env);
 
   return SVN_NO_ERROR;
 }
@@ -3815,8 +3794,8 @@ construct_server_baton(server_baton_t **
   err = handle_config_error(find_repos(client_url, params->root, b->vhost,
                                        b->read_only, params->cfg,
                                        b->repository, params->config_pool,
-                                       params->authz_pool, params->repos_pool, 
-                                       conn_pool, scratch_pool),
+                                       params->authz_pool, params->fs_config, 
+                                       conn_pool),
                             b);
   if (!err)
     {
@@ -3886,7 +3865,7 @@ construct_server_baton(server_baton_t **
                                           scratch_pool),
                       ra_client_string, client_string));
 
-  warn_baton = apr_pcalloc(scratch_pool, sizeof(*warn_baton));
+  warn_baton = apr_pcalloc(conn_pool, sizeof(*warn_baton));
   warn_baton->server = b;
   warn_baton->conn = conn;
   svn_fs_set_warning_func(b->repository->fs, fs_warning_func, warn_baton);
@@ -3909,45 +3888,6 @@ construct_server_baton(server_baton_t **
   return SVN_NO_ERROR;
 }
 
-/* Open a svn_repos object in CONNECTION for the same repository and with
-   the same settings as last time.  The repository object remains valid
-   until POOL gets cleaned up at which point the respective pointer in
-   CONNECTION reset.  The repository in CONNECTION must have been opened
-   at some point in the past using construct_server_baton.
- */
-static svn_error_t *
-reopen_repos(connection_t *connection,
-             apr_pool_t *pool)
-{
-  fs_warning_baton_t *warn_baton = apr_pcalloc(pool, sizeof(*warn_baton));
-  repository_t *repository = connection->baton->repository;
-
-  /* Open the repository and fill in b with the resulting information. */
-  SVN_ERR(svn_repos__repos_pool_get(&repository->repos,
-                                    connection->params->repos_pool,
-                                    repository->repos_root, repository->uuid,
-                                    pool));
-  repository->fs = svn_repos_fs(repository->repos);
-
-  /* Reset the REPOS pointer as soon as the REPOS will be returned to the
-     REPOS_POOL. */
-  apr_pool_cleanup_register(pool, repository, reset_repos,
-                            apr_pool_cleanup_null);
-
-  /* Configure svn_repos object */
-  SVN_ERR(svn_repos_remember_client_capabilities(repository->repos,
-                                                 repository->capabilities));
-  SVN_ERR(svn_repos_hooks_setenv(repository->repos, repository->hooks_env,
-                                 pool));
-  
-  warn_baton->server = connection->baton;
-  warn_baton->conn = connection->conn;
-  svn_fs_set_warning_func(connection->baton->repository->fs,
-                          fs_warning_func, &warn_baton);
-
-  return SVN_NO_ERROR;
-}
-
 svn_error_t *
 serve_interruptable(svn_boolean_t *terminate_p,
                     connection_t *connection,
@@ -3964,14 +3904,8 @@ serve_interruptable(svn_boolean_t *termi
   for (command = main_commands; command->cmdname; command++)
     svn_hash_sets(cmd_hash, command->cmdname, command);
 
-  /* Auto-initialize connection & open repository */
-  if (connection->conn)
-    {
-      /* This is not the first call for CONNECTION. */
-      if (connection->baton->repository->repos == NULL)
-        err = reopen_repos(connection, pool);
-    }
-  else
+  /* Auto-initialize connection */
+  if (! connection->conn)
     {
       apr_status_t ar;
 

Modified: subversion/branches/remote-only-status/subversion/svnserve/server.h
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svnserve/server.h?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svnserve/server.h (original)
+++ subversion/branches/remote-only-status/subversion/svnserve/server.h Mon Mar 31 14:40:09 2014
@@ -128,8 +128,9 @@ typedef struct serve_params_t {
   /* all authz data should be opened through this factory */
   svn_repos__authz_pool_t *authz_pool;
 
-  /* all repositories should be opened through this factory */
-  svn_repos__repos_pool_t *repos_pool;
+  /* The FS configuration to be applied to all repositories.
+     It mainly contains things like cache settings. */
+  apr_hash_t *fs_config;
 
   /* Username case normalization style. */
   enum username_case_type username_case;
@@ -175,9 +176,6 @@ typedef struct connection_t
   /* memory pool for objects with connection lifetime */
   apr_pool_t *pool;
 
-  /* source and ultimate destiny for POOL */
-  svn_root_pools__t *root_pools;
-  
   /* Number of threads using the pool.
      The pool passed to apr_thread_create can only be released when both
 

Modified: subversion/branches/remote-only-status/subversion/svnserve/svnserve.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svnserve/svnserve.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svnserve/svnserve.c (original)
+++ subversion/branches/remote-only-status/subversion/svnserve/svnserve.c Mon Mar 31 14:40:09 2014
@@ -441,9 +441,9 @@ static apr_status_t redirect_stdout(void
 static svn_error_t *
 accept_connection(connection_t **connection,
                   apr_socket_t *sock,
-                  svn_root_pools__t *connection_pools,
                   serve_params_t *params,
-                  enum connection_handling_mode handling_mode)
+                  enum connection_handling_mode handling_mode,
+                  apr_pool_t *pool)
 {
   apr_status_t status;
   
@@ -451,11 +451,10 @@ accept_connection(connection_t **connect
    *         the connection threads so it cannot clean up after each one.  So
    *         separate pools that can be cleared at thread exit are used. */
   
-  apr_pool_t *pool = svn_root_pools__acquire_pool(connection_pools);
-  *connection = apr_pcalloc(pool, sizeof(**connection));
-  (*connection)->pool = pool;
+  apr_pool_t *connection_pool = svn_pool_create(pool);
+  *connection = apr_pcalloc(connection_pool, sizeof(**connection));
+  (*connection)->pool = connection_pool;
   (*connection)->params = params;
-  (*connection)->root_pools = connection_pools;
   (*connection)->ref_count = 1;
   
   do
@@ -465,14 +464,15 @@ accept_connection(connection_t **connect
         exit(0);
       #endif
       
-      status = apr_socket_accept(&(*connection)->usock, sock, pool);
+      status = apr_socket_accept(&(*connection)->usock, sock,
+                                 connection_pool);
       if (handling_mode == connection_mode_fork)
         {
           apr_proc_t proc;
           
           /* Collect any zombie child processes. */
           while (apr_proc_wait_all_procs(&proc, NULL, NULL, APR_NOWAIT,
-            pool) == APR_CHILD_DONE)
+            connection_pool) == APR_CHILD_DONE)
             ;
         }
     }
@@ -502,7 +502,7 @@ close_connection(connection_t *connectio
 {
   /* this will automatically close USOCK */
   if (svn_atomic_dec(&connection->ref_count) == 0)
-    svn_root_pools__release_pool(connection->pool, connection->root_pools);
+    svn_pool_destroy(connection->pool);
 }
 
 /* Wrapper around serve() that takes a socket instead of a connection.
@@ -638,7 +638,6 @@ sub_main(int *exit_code, int argc, const
 #endif
   svn_boolean_t is_multi_threaded;
   enum connection_handling_mode handling_mode = CONNECTION_DEFAULT;
-  apr_hash_t *fs_config = NULL;
   svn_boolean_t cache_fulltexts = TRUE;
   svn_boolean_t cache_txdeltas = TRUE;
   svn_boolean_t cache_revprops = FALSE;
@@ -657,7 +656,6 @@ sub_main(int *exit_code, int argc, const
   const char *pid_filename = NULL;
   const char *log_filename = NULL;
   svn_node_kind_t kind;
-  svn_root_pools__t *socket_pools;
 
 #ifdef SVN_HAVE_SASL
   SVN_ERR(cyrus_init(pool));
@@ -681,7 +679,7 @@ sub_main(int *exit_code, int argc, const
   params.logger = NULL;
   params.config_pool = NULL;
   params.authz_pool = NULL;
-  params.repos_pool = NULL;
+  params.fs_config = NULL;
   params.vhost = FALSE;
   params.username_case = CASE_ASIS;
   params.memory_cache_size = (apr_uint64_t)-1;
@@ -922,12 +920,12 @@ sub_main(int *exit_code, int argc, const
 
   /* construct object pools */
   is_multi_threaded = handling_mode == connection_mode_thread;
-  fs_config = apr_hash_make(pool);
-  svn_hash_sets(fs_config, SVN_FS_CONFIG_FSFS_CACHE_DELTAS,
+  params.fs_config = apr_hash_make(pool);
+  svn_hash_sets(params.fs_config, SVN_FS_CONFIG_FSFS_CACHE_DELTAS,
                 cache_txdeltas ? "1" :"0");
-  svn_hash_sets(fs_config, SVN_FS_CONFIG_FSFS_CACHE_FULLTEXTS,
+  svn_hash_sets(params.fs_config, SVN_FS_CONFIG_FSFS_CACHE_FULLTEXTS,
                 cache_fulltexts ? "1" :"0");
-  svn_hash_sets(fs_config, SVN_FS_CONFIG_FSFS_CACHE_REVPROPS,
+  svn_hash_sets(params.fs_config, SVN_FS_CONFIG_FSFS_CACHE_REVPROPS,
                 cache_revprops ? "2" :"0");
 
   SVN_ERR(svn_repos__config_pool_create(&params.config_pool,
@@ -937,10 +935,6 @@ sub_main(int *exit_code, int argc, const
                                        params.config_pool,
                                        is_multi_threaded,
                                        pool));
-  SVN_ERR(svn_repos__repos_pool_create(&params.repos_pool,
-                                       fs_config,
-                                       is_multi_threaded,
-                                       pool));
 
   /* If a configuration file is specified, load it and any referenced
    * password and authorization files. */
@@ -1182,10 +1176,6 @@ sub_main(int *exit_code, int argc, const
     svn_cache_config_set(&settings);
   }
 
-  /* we use (and recycle) separate pools for sockets (many small ones)
-     and connections (fewer but larger ones) */
-  SVN_ERR(svn_root_pools__create(&socket_pools));
-
 #if APR_HAS_THREADS
   SVN_ERR(svn_root_pools__create(&connection_pools));
 
@@ -1217,8 +1207,8 @@ sub_main(int *exit_code, int argc, const
   while (1)
     {
       connection_t *connection = NULL;
-      SVN_ERR(accept_connection(&connection, sock, socket_pools, &params,
-                                handling_mode));
+      SVN_ERR(accept_connection(&connection, sock, &params, handling_mode,
+                                pool));
       if (run_mode == run_mode_listen_once)
         {
           err = serve_socket(connection, connection->pool);
@@ -1290,7 +1280,7 @@ main(int argc, const char *argv[])
     return EXIT_FAILURE;
 
   /* Create our top-level pool. */
-  pool = svn_pool_create(NULL);
+  pool = apr_allocator_owner_get(svn_pool_create_allocator(TRUE));
 
   err = sub_main(&exit_code, argc, argv, pool);
 

Modified: subversion/branches/remote-only-status/subversion/svnsync/svnsync.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/svnsync/svnsync.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/svnsync/svnsync.c (original)
+++ subversion/branches/remote-only-status/subversion/svnsync/svnsync.c Mon Mar 31 14:40:09 2014
@@ -1342,7 +1342,7 @@ replay_rev_finished(svn_revnum_t revisio
 
   svn_pool_clear(subpool);
 
-  rev_str = svn_string_create(apr_psprintf(pool, "%ld", revision), subpool);
+  rev_str = svn_string_createf(subpool, "%ld", revision);
 
   /* Ok, we're done, bring the last-merged-rev property up to date. */
   SVN_ERR(svn_ra_change_rev_prop2(

Modified: subversion/branches/remote-only-status/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/cmdline/davautocheck.sh?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/remote-only-status/subversion/tests/cmdline/davautocheck.sh Mon Mar 31 14:40:09 2014
@@ -25,7 +25,7 @@
 # This script simplifies preparation of environment for Subversion client
 # communicating with a server via DAV protocol. The prerequisites of such
 # testing are:
-#   - Subversion built using --enable-shared --enable-dso --with-apxs options,
+#   - Subversion built using --enable-shared --with-apxs options,
 #   - Working Apache 2 HTTPD Server with the apxs program reachable through
 #     PATH or specified via the APXS Makefile variable or environment variable,
 #   - Modules dav_module and log_config_module compiled as DSO or built into
@@ -232,11 +232,11 @@ else
 fi
 
 [ -r "$MOD_DAV_SVN" ] \
-  || fail "dav_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
+  || fail "dav_svn_module not found, please use '--enable-shared --with-apxs' with your 'configure' script"
 [ -r "$MOD_AUTHZ_SVN" ] \
-  || fail "authz_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
+  || fail "authz_svn_module not found, please use '--enable-shared --with-apxs' with your 'configure' script"
 [ -r "$MOD_DONTDOTHAT" ] \
-  || fail "dontdothat_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
+  || fail "dontdothat_module not found, please use '--enable-shared --with-apxs' with your 'configure' script"
 
 for d in "$ABS_BUILDDIR"/subversion/*/.libs; do
   if [ -z "$BUILDDIR_LIBRARY_PATH" ]; then

Propchange: subversion/branches/remote-only-status/subversion/tests/libsvn_fs_x/
------------------------------------------------------------------------------
  Merged /subversion/trunk/subversion/tests/libsvn_fs_x:r1581845-1583335

Modified: subversion/branches/remote-only-status/subversion/tests/libsvn_fs_x/string-table-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/libsvn_fs_x/string-table-test.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/libsvn_fs_x/string-table-test.c (original)
+++ subversion/branches/remote-only-status/subversion/tests/libsvn_fs_x/string-table-test.c Mon Mar 31 14:40:09 2014
@@ -171,8 +171,11 @@ large_string_table_body(svn_boolean_t do
   builder = svn_fs_x__string_table_builder_create(pool);
   for (i = 0; i < COUNT; ++i)
     {
-      strings[i] = generate_string(0x1234567876543210ull * (i + 1), 73000 + 1000 * i,  pool);
-      indexes[i] = svn_fs_x__string_table_builder_add(builder, strings[i]->data, strings[i]->len);
+      strings[i] = generate_string(APR_UINT64_C(0x1234567876543210) * (i + 1),
+                                   73000 + 1000 * i,  pool);
+      indexes[i] = svn_fs_x__string_table_builder_add(builder,
+                                                      strings[i]->data,
+                                                      strings[i]->len);
     }
 
   table = svn_fs_x__string_table_create(builder, pool);
@@ -210,7 +213,7 @@ many_strings_table_body(svn_boolean_t do
   builder = svn_fs_x__string_table_builder_create(pool);
   for (i = 0; i < COUNT; ++i)
     {
-      strings[i] = generate_string(0x1234567876543210ull * (i + 1),
+      strings[i] = generate_string(APR_UINT64_C(0x1234567876543210) * (i + 1),
                                    (i * i) % 23000,  pool);
       indexes[i] = svn_fs_x__string_table_builder_add(builder,
                                                       strings[i]->data,

Modified: subversion/branches/remote-only-status/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/libsvn_repos/repos-test.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/remote-only-status/subversion/tests/libsvn_repos/repos-test.c Mon Mar 31 14:40:09 2014
@@ -3327,7 +3327,6 @@ test_config_pool(const svn_test_opts_t *
   svn_config_t *cfg;
   apr_hash_t *sections1, *sections2;
   int i;
-  svn_boolean_t bvalue;
   svn_fs_txn_t *txn;
   svn_fs_root_t *root, *rev_root;
   svn_revnum_t rev;
@@ -3515,20 +3514,6 @@ test_config_pool(const svn_test_opts_t *
   svn_error_clear(err);
   svn_pool_clear(subpool);
 
-  /* as long as we keep a reference to a config, clearing the config pool
-     should not invalidate that reference */
-  SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
-                                     svn_dirent_join(wrk_dir,
-                                                     "config-pool-test1.cfg",
-                                                     pool),
-                                     TRUE, TRUE, NULL, pool));
-  svn_pool_clear(config_pool_pool);
-  for (i = 0; i < 64000; ++i)
-    apr_pcalloc(config_pool_pool, 80);
-
-  SVN_ERR(svn_config_get_bool(cfg, &bvalue, "booleans", "true3", FALSE));
-  SVN_TEST_ASSERT(bvalue);
-
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/remote-only-status/subversion/tests/libsvn_subr/packed-data-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/libsvn_subr/packed-data-test.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/libsvn_subr/packed-data-test.c (original)
+++ subversion/branches/remote-only-status/subversion/tests/libsvn_subr/packed-data-test.c Mon Mar 31 14:40:09 2014
@@ -117,14 +117,14 @@ test_uint_stream(apr_pool_t *pool)
   enum { COUNT = 8 };
   const apr_uint64_t values[COUNT] =
   {
-    0xffffffffffffffffull,
+    APR_UINT64_MAX,
     0,
-    0xffffffffffffffffull,
-    0x8000000000000000ull,
+    APR_UINT64_MAX,
+    APR_UINT64_C(0x8000000000000000),
     0,
-    0x7fffffffffffffffull,
-    0x1234567890abcdefull,
-    0x0fedcba987654321ull,
+    APR_UINT64_C(0x7fffffffffffffff),
+    APR_UINT64_C(0x1234567890abcdef),
+    APR_UINT64_C(0x0fedcba987654321),
   };
 
   SVN_ERR(verify_uint_stream(values, COUNT, FALSE, pool));
@@ -176,13 +176,13 @@ test_int_stream(apr_pool_t *pool)
   enum { COUNT = 7 };
   const apr_int64_t values[COUNT] =
   {
-     0x7fffffffffffffffll,
-    -0x8000000000000000ll,
-     0,
-     0x7fffffffffffffffll,
-    -0x7fffffffffffffffll,
-     0x1234567890abcdefll,
-    -0x0fedcba987654321ll,
+     APR_INT64_MAX, /* extreme value */
+     APR_INT64_MIN, /* other extreme, creating maximum delta to predecessor */
+     0,             /* delta to predecessor > APR_INT64_MAX */
+     APR_INT64_MAX, /* max value, again */
+    -APR_INT64_MAX, /* _almost_ min value, almost max delta */
+     APR_INT64_C(0x1234567890abcdef),  /* some arbitrary value */
+    -APR_INT64_C(0x0fedcba987654321),  /* arbitrary value, different sign */
   };
 
   SVN_ERR(verify_int_stream(values, COUNT, FALSE, pool));
@@ -280,20 +280,26 @@ static const sub_record_t sub_records[SU
 static const base_record_t test_data[BASE_RECORD_COUNT] =
 {
   { 1, { "maximum", 7},
-    0xffffffffffffffffull, 0xffffffffffffffffull, sub_records,
-    0x7fffffffffffffffll,  0x7fffffffffffffffll, 9967, sub_records + 1,
+    APR_UINT64_MAX, APR_UINT64_MAX, sub_records,
+    APR_INT64_MAX,  APR_INT64_MAX, 9967, sub_records + 1,
     { "\0\1\2\3\4\5\6\7\x8\x9\xa", 11} },
+
   { 2, { "minimum", 7},
     0, 0, sub_records + 6,
-    -0x8000000000000000ll, -0x8000000000000000ll, 6029, sub_records + 5,
+    APR_INT64_MIN, APR_INT64_MIN, 6029, sub_records + 5,
     { "X\0\0Y", 4} },
+
   { 3, { "mean", 4},
-    0x8000000000000000ull, 0x8000000000000000ull, sub_records + 2,
+    APR_UINT64_C(0x8000000000000000), APR_UINT64_C(0x8000000000000000),
+                                      sub_records + 2,
     0, 0, 653, sub_records + 3,
     { "\xff\0\1\2\3\4\5\6\7\x8\x9\xa", 12} },
+
   { 4, { "random", 6},
-    0x1234567890abcdefull, 0xfedcba987654321ull, sub_records + 4,
-    0x1234567890abcdll, -0xedcba987654321ll, 7309, sub_records + 1,
+    APR_UINT64_C(0x1234567890abcdef), APR_UINT64_C(0xfedcba987654321),
+                                      sub_records + 4,
+    APR_INT64_C(0x1234567890abcd), APR_INT64_C(-0xedcba987654321), 7309,
+                                   sub_records + 1,
     { "\x80\x7f\0\1\6", 5} }
 };
 

Modified: subversion/branches/remote-only-status/subversion/tests/libsvn_subr/string-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/libsvn_subr/string-test.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/libsvn_subr/string-test.c (original)
+++ subversion/branches/remote-only-status/subversion/tests/libsvn_subr/string-test.c Mon Mar 31 14:40:09 2014
@@ -521,19 +521,19 @@ test24(apr_pool_t *pool)
   SVN_TEST_ASSERT(length == 1);
   SVN_TEST_STRING_ASSERT(buffer, "0");
 
-  length = svn__i64toa(buffer, 0x8000000000000000ll);
+  length = svn__i64toa(buffer, APR_INT64_MIN);
   SVN_TEST_ASSERT(length == 20);
   SVN_TEST_STRING_ASSERT(buffer, "-9223372036854775808");
 
-  length = svn__i64toa(buffer, 0x7fffffffffffffffll);
+  length = svn__i64toa(buffer, APR_INT64_MAX);
   SVN_TEST_ASSERT(length == 19);
   SVN_TEST_STRING_ASSERT(buffer, "9223372036854775807");
 
-  length = svn__ui64toa(buffer, 0ull);
+  length = svn__ui64toa(buffer, 0u);
   SVN_TEST_ASSERT(length == 1);
   SVN_TEST_STRING_ASSERT(buffer, "0");
 
-  length = svn__ui64toa(buffer, 0xffffffffffffffffull);
+  length = svn__ui64toa(buffer, APR_UINT64_MAX);
   SVN_TEST_ASSERT(length == 20);
   SVN_TEST_STRING_ASSERT(buffer, "18446744073709551615");
 
@@ -567,10 +567,10 @@ static svn_error_t *
 test_base36(apr_pool_t *pool)
 {
   SVN_ERR(sub_test_base36(0, "0"));
-  SVN_ERR(sub_test_base36(1234567890ull, "kf12oi"));
-  SVN_ERR(sub_test_base36(0x7fffffffffffffffull, "1y2p0ij32e8e7"));
-  SVN_ERR(sub_test_base36(0x8000000000000000ull, "1y2p0ij32e8e8"));
-  SVN_ERR(sub_test_base36(0xffffffffffffffffull, "3w5e11264sgsf"));
+  SVN_ERR(sub_test_base36(APR_UINT64_C(1234567890), "kf12oi"));
+  SVN_ERR(sub_test_base36(APR_UINT64_C(0x7fffffffffffffff), "1y2p0ij32e8e7"));
+  SVN_ERR(sub_test_base36(APR_UINT64_C(0x8000000000000000), "1y2p0ij32e8e8"));
+  SVN_ERR(sub_test_base36(APR_UINT64_MAX, "3w5e11264sgsf"));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/remote-only-status/subversion/tests/libsvn_wc/conflict-data-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/libsvn_wc/conflict-data-test.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/libsvn_wc/conflict-data-test.c (original)
+++ subversion/branches/remote-only-status/subversion/tests/libsvn_wc/conflict-data-test.c Mon Mar 31 14:40:09 2014
@@ -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_file,    expected->merged_file);
+  ASSERT_STR_EQ(actual->merged_abspath, expected->merged_abspath);
   ASSERT_INT_EQ(actual->operation,      expected->operation);
   SVN_ERR(compare_version(actual->src_left_version,
                           expected->src_left_version));

Modified: subversion/branches/remote-only-status/subversion/tests/svn_test_main.c
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/subversion/tests/svn_test_main.c?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/subversion/tests/svn_test_main.c (original)
+++ subversion/branches/remote-only-status/subversion/tests/svn_test_main.c Mon Mar 31 14:40:09 2014
@@ -147,7 +147,29 @@ static const apr_getopt_option_t cl_opti
 static svn_boolean_t skip_cleanup = FALSE;
 
 /* All cleanup actions are registered as cleanups on this pool. */
+#if !defined(thread_local) && APR_HAS_THREADS
+
+#  if __STDC_VERSION__ >= 201112 && !defined __STDC_NO_THREADS__
+#    define thread_local _Thread_local
+#  elif defined(WIN32) && defined(_MSC_VER)
+#    define thread_local __declspec(thread)
+#  elif defined(__thread)
+     /* ### Might work somewhere? */
+#    define thread_local __thread
+#  else
+     /* gcc defines __thread in some versions, but not all.
+        ### Who knows how to check for this?
+        ### stackoverflow recommends __GNUC__ but that breaks on
+        ### openbsd. */
+#  endif
+#endif
+
+#ifdef thread_local
+#define HAVE_PER_THREAD_CLEANUP
+static thread_local apr_pool_t * cleanup_pool = NULL;
+#else
 static apr_pool_t *cleanup_pool = NULL;
+#endif
 
 /* Used by test_thread to serialize access to stdout. */
 static svn_mutex__t *log_mutex = NULL;
@@ -176,6 +198,7 @@ cleanup_rmtree(void *data)
 }
 
 
+
 void
 svn_test_add_dir_cleanup(const char *path)
 {
@@ -461,15 +484,24 @@ test_thread(apr_thread_t *thread, void *
   svn_boolean_t run_this_test; /* This test's mode matches DESC->MODE. */
   test_params_t *params = data;
   svn_atomic_t test_num;
-
-  apr_pool_t *pool
+  apr_pool_t *pool;
+  apr_pool_t *thread_root
     = apr_allocator_owner_get(svn_pool_create_allocator(FALSE));
 
+#ifdef HAVE_PER_THREAD_CLEANUP
+  cleanup_pool = svn_pool_create(thread_root);
+#endif
+
+  pool = svn_pool_create(thread_root);
+
   for (test_num = svn_atomic_inc(&params->test_num);
        test_num <= params->test_count;
        test_num = svn_atomic_inc(&params->test_num))
     {
       svn_pool_clear(pool);
+#ifdef HAVE_PER_THREAD_CLEANUP
+      svn_pool_clear(cleanup_pool); /* after clearing pool*/
+#endif
 
       desc = &params->test_funcs[test_num];
       skip = desc->mode == svn_test_skip;
@@ -494,8 +526,10 @@ test_thread(apr_thread_t *thread, void *
       svn_error_clear(svn_mutex__unlock(log_mutex, NULL));
     }
 
-  /* release all test memory */
-  svn_pool_destroy(pool);
+  svn_pool_clear(pool); /* Make sure this is cleared before cleanup_pool*/
+
+  /* Release all test memory. Possibly includes cleanup_pool */
+  svn_pool_destroy(thread_root);
 
   /* End thread explicitly to prevent APR_INCOMPLETE return codes in
      apr_thread_join(). */

Modified: subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh (original)
+++ subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh Mon Mar 31 14:40:09 2014
@@ -23,15 +23,26 @@ set -x
 echo "============ autogen.sh"
 ./autogen.sh || exit $?
 
+SVN_VER_MINOR=`awk '/define SVN_VER_MINOR/ { print $3 }' subversion/include/svn_version.h`
+
+cd ../obj
+grep obj/subversion/tests /etc/mnttab > /dev/null || mount-tmpfs
+
+if [ $SVN_VER_MINOR -eq 8 ]; then
+  # A bug causes 1.8 --enable-optimize to add -flto which isn't supported
+  OPTIONS_1_8='--disable-optimize'
+fi
+
 echo "============ configure"
-./configure CC='cc -m64' \
+../build/configure CC='cc -m64 -v' \
   --with-apr=/export/home/wandisco/buildbot/install \
   --with-apr-util=/export/home/wandisco/buildbot/install \
   --with-serf=/export/home/wandisco/buildbot/install \
   --with-apxs=/export/home/wandisco/buildbot/install/bin/apxs \
   --with-sqlite=/export/home/wandisco/buildbot/sqlite-amalgamation-3071501/sqlite3.c \
   --enable-optimize \
-  --disable-static \
+  --disable-shared \
+  $OPTIONS_1_8 \
   || exit $?
 
 echo "============ make"

Modified: subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncheck.sh?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncheck.sh (original)
+++ subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncheck.sh Mon Mar 31 14:40:09 2014
@@ -20,8 +20,17 @@
 set -x
 . ../svnenv.sh
 
-echo "============ make check"
-make check CLEANUP=1 PARALLEL=30
+SVN_VER_MINOR=`awk '/define SVN_VER_MINOR/ { print $3 }' subversion/include/svn_version.h`
+
+cd ../obj
+
+if [ $SVN_VER_MINOR -eq 9 ]; then
+  echo "============ make svnserveautocheck"
+  make svnserveautocheck CLEANUP=1 PARALLEL=30 THREADED=1
+else
+  echo "============ make check"
+  make check CLEANUP=1 PARALLEL=30 THREADED=1
+fi
 
 # 'make check' will FAIL due to lack of UTF-8 conversion, so whitelist
 # those known failures.
@@ -41,6 +50,9 @@ known="${known}|"
 known="${known} svnsync_tests.py 24: copy and reencode non-UTF-8 svn:. props"
 known="${known})"
 
+# tests.log must exist
+test -f tests.log || exit 1
+
 # No FAIL other than the known ones.
 egrep -v "$known" tests.log | grep '^FAIL' && exit 1
 

Modified: subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncleanup.sh
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncleanup.sh?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncleanup.sh (original)
+++ subversion/branches/remote-only-status/tools/buildbot/slaves/svn-sparc-solaris/svncleanup.sh Mon Mar 31 14:40:09 2014
@@ -20,7 +20,11 @@
 set -x
 . ../svnenv.sh
 
+cd ../obj
+
 echo "============ make extraclean"
-test -f Makefile && make extraclean || exit $?
+test -f Makefile && (make extraclean || exit $?)
+
+grep obj/subversion/tests /etc/mnttab > /dev/null && umount-tmpfs
 
 exit 0

Modified: subversion/branches/remote-only-status/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/remote-only-status/tools/dev/unix-build/Makefile.svn?rev=1583338&r1=1583337&r2=1583338&view=diff
==============================================================================
--- subversion/branches/remote-only-status/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/remote-only-status/tools/dev/unix-build/Makefile.svn Mon Mar 31 14:40:09 2014
@@ -1443,6 +1443,7 @@ endif
 	echo >>$@.tmp '</Location>'
 	echo >>$@.tmp 'RedirectMatch permanent ^/svn-test-work/repositories/REDIRECT-PERM-(.*)$$ /svn-test-work/repositories/$$1'
 	echo >>$@.tmp 'RedirectMatch ^/svn-test-work/repositories/REDIRECT-TEMP-(.*)$$ /svn-test-work/repositories/$$1'
+	echo >>$@.tmp 'Include "conf/$(SVN_REL_WC)*-custom.conf"'
 	mv -f $@.tmp $@
 
 .PHONY: libpath