subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
Subject svn commit: r993141 [14/25] - in /subversion/branches/performance: ./ build/ac-macros/ build/generator/ contrib/server-side/ notes/ notes/wc-ng/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/...
Date Mon, 06 Sep 2010 20:02:24 GMT
Modified: subversion/branches/performance/subversion/libsvn_wc/node.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/node.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/node.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/node.c Mon Sep  6 20:02:15 2010
@@ -47,7 +47,6 @@
 #include "wc.h"
 #include "props.h"
 #include "entries.h"
-#include "log.h"
 #include "wc_db.h"
 
 #include "svn_private_config.h"
@@ -137,7 +136,10 @@ svn_wc__node_get_repos_info(const char *
 
   if (scan_added
       && (status == svn_wc__db_status_added
-          || status == svn_wc__db_status_obstructed_add))
+#ifndef SVN_WC__SINGLE_DB
+          || status == svn_wc__db_status_obstructed_add
+#endif
+          ))
     {
       /* We have an addition. scan_addition() will find the intended
          repository location by scanning up the tree.  */
@@ -154,12 +156,15 @@ svn_wc__node_get_repos_info(const char *
   if (((repos_root_url != NULL && *repos_root_url == NULL)
        || (repos_uuid != NULL && *repos_uuid == NULL))
       && (status == svn_wc__db_status_normal
-          || status == svn_wc__db_status_obstructed
           || status == svn_wc__db_status_absent
           || status == svn_wc__db_status_excluded
           || status == svn_wc__db_status_not_present
           || (scan_deleted && (status == svn_wc__db_status_deleted))
-          || (scan_deleted && (status == svn_wc__db_status_obstructed_delete))))
+#ifndef SVN_WC__SINGLE_DB
+          || status == svn_wc__db_status_obstructed
+          || (scan_deleted && (status == svn_wc__db_status_obstructed_delete))
+#endif
+          ))
     {
       SVN_ERR(svn_wc__db_scan_base_repos(NULL, repos_root_url, repos_uuid,
                                          wc_ctx->db, local_abspath,
@@ -173,15 +178,20 @@ svn_wc__node_get_repos_info(const char *
 svn_error_t *
 svn_wc_read_kind(svn_node_kind_t *kind,
                  svn_wc_context_t *wc_ctx,
-                 const char *abspath,
+                 const char *local_abspath,
                  svn_boolean_t show_hidden,
                  apr_pool_t *scratch_pool)
 {
+  svn_wc__db_status_t db_status;
   svn_wc__db_kind_t db_kind;
   svn_error_t *err;
 
-  err = svn_wc__db_read_kind(&db_kind, wc_ctx->db, abspath, FALSE,
-                             scratch_pool);
+  err = svn_wc__db_read_info(&db_status, &db_kind, NULL, NULL, NULL, NULL,
+                             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                             NULL, NULL, NULL,
+                             wc_ctx->db, local_abspath,
+                             scratch_pool, scratch_pool);
 
   if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
     {
@@ -212,14 +222,16 @@ svn_wc_read_kind(svn_node_kind_t *kind,
 
   /* Make sure hidden nodes return svn_node_none. */
   if (! show_hidden)
-    {
-      svn_boolean_t hidden;
+    switch (db_status)
+      {
+        case svn_wc__db_status_not_present:
+        case svn_wc__db_status_absent:
+        case svn_wc__db_status_excluded:
+          *kind = svn_node_none;
 
-      SVN_ERR(svn_wc__db_node_hidden(&hidden, wc_ctx->db, abspath,
-                                     scratch_pool));
-      if (hidden)
-        *kind = svn_node_none;
-    }
+        default:
+          break;
+      }
 
   return SVN_NO_ERROR;
 }
@@ -359,7 +371,10 @@ svn_wc__internal_node_get_url(const char
                || status == svn_wc__db_status_not_present
                || (!have_base
                    && (status == svn_wc__db_status_deleted
-                       || status == svn_wc__db_status_obstructed_delete)))
+#ifndef SVN_WC__SINGLE_DB
+                       || status == svn_wc__db_status_obstructed_delete
+#endif
+                       )))
         {
           const char *parent_abspath;
 
@@ -440,7 +455,10 @@ svn_wc__node_get_repos_relpath(const cha
       else if (status == svn_wc__db_status_excluded
                || (!have_base
                    && (status == svn_wc__db_status_deleted
-                       || status == svn_wc__db_status_obstructed_delete)))
+#ifndef SVN_WC__SINGLE_DB
+                       || status == svn_wc__db_status_obstructed_delete
+#endif
+                       )))
         {
           const char *parent_abspath, *name, *parent_relpath;
 
@@ -467,17 +485,16 @@ svn_wc__node_get_repos_relpath(const cha
 }
 
 svn_error_t *
-svn_wc__node_get_copyfrom_info(const char **copyfrom_root_url,
-                               const char **copyfrom_repos_relpath,
-                               const char **copyfrom_url,
-                               svn_revnum_t *copyfrom_rev,
-                               svn_boolean_t *is_copy_target,
-                               svn_wc_context_t *wc_ctx,
-                               const char *local_abspath,
-                               apr_pool_t *result_pool,
-                               apr_pool_t *scratch_pool)
+svn_wc__internal_get_copyfrom_info(const char **copyfrom_root_url,
+                                   const char **copyfrom_repos_relpath,
+                                   const char **copyfrom_url,
+                                   svn_revnum_t *copyfrom_rev,
+                                   svn_boolean_t *is_copy_target,
+                                   svn_wc__db_t *db,
+                                   const char *local_abspath,
+                                   apr_pool_t *result_pool,
+                                   apr_pool_t *scratch_pool)
 {
-  svn_wc__db_t *db = wc_ctx->db;
   const char *original_root_url;
   const char *original_repos_relpath;
   svn_revnum_t original_revision;
@@ -544,11 +561,12 @@ svn_wc__node_get_copyfrom_info(const cha
 
           /* This is a copied node, so we should never fall off the top of a
            * working copy here. */
-          SVN_ERR(svn_wc__node_get_copyfrom_info(NULL, NULL,
-                                                 &parent_copyfrom_url,
-                                                 NULL, NULL,
-                                                 wc_ctx, parent_abspath,
-                                                 scratch_pool, scratch_pool));
+          SVN_ERR(svn_wc__internal_get_copyfrom_info(NULL, NULL,
+                                                     &parent_copyfrom_url,
+                                                     NULL, NULL,
+                                                     db, parent_abspath,
+                                                     scratch_pool,
+                                                     scratch_pool));
 
           /* So, count this as a separate copy target only if the URLs
            * don't match up, or if the parent isn't copied at all. */
@@ -561,7 +579,10 @@ svn_wc__node_get_copyfrom_info(const cha
         }
     }
   else if ((status == svn_wc__db_status_added
-            || status == svn_wc__db_status_obstructed_add)
+#ifndef SVN_WC__SINGLE_DB
+            || status == svn_wc__db_status_obstructed_add
+#endif
+            )
            && (copyfrom_rev || copyfrom_url || copyfrom_root_url
                || copyfrom_repos_relpath))
     {
@@ -607,8 +628,39 @@ svn_wc__node_get_copyfrom_info(const cha
   return SVN_NO_ERROR;
 }
 
+svn_error_t *
+svn_wc__node_get_copyfrom_info(const char **copyfrom_root_url,
+                               const char **copyfrom_repos_relpath,
+                               const char **copyfrom_url,
+                               svn_revnum_t *copyfrom_rev,
+                               svn_boolean_t *is_copy_target,
+                               svn_wc_context_t *wc_ctx,
+                               const char *local_abspath,
+                               apr_pool_t *result_pool,
+                               apr_pool_t *scratch_pool)
+{
+  return
+    svn_error_return(svn_wc__internal_get_copyfrom_info(copyfrom_root_url,
+                                                        copyfrom_repos_relpath,
+                                                        copyfrom_url,
+                                                        copyfrom_rev,
+                                                        is_copy_target,
+                                                        wc_ctx->db,
+                                                        local_abspath,
+                                                        result_pool,
+                                                        scratch_pool));
+}
 
-/* A recursive node-walker, helper for svn_wc__node_walk_children(). */
+/* A recursive node-walker, helper for svn_wc__node_walk_children().
+ *
+ * Call WALK_CALLBACK with WALK_BATON on all children (recursively) of
+ * DIR_ABSPATH in DB, but not on DIR_ABSPATH itself. DIR_ABSPATH must be a
+ * versioned directory. If SHOW_HIDDEN is true, visit hidden nodes, else
+ * ignore them. Restrict the depth of the walk to DEPTH.
+ *
+ * ### Is it possible for a subdirectory to be hidden and known to be a
+ *     directory?  If so, and if show_hidden is true, this will try to
+ *     recurse into it.  */
 static svn_error_t *
 walker_helper(svn_wc__db_t *db,
               const char *dir_abspath,
@@ -635,6 +687,7 @@ walker_helper(svn_wc__db_t *db,
     {
       const char *child_abspath;
       svn_wc__db_kind_t child_kind;
+      svn_wc__db_status_t child_status;
 
       svn_pool_clear(iterpool);
 
@@ -647,27 +700,31 @@ walker_helper(svn_wc__db_t *db,
                                                     const char *),
                                       iterpool);
 
-      if (!show_hidden)
-        {
-          svn_boolean_t hidden;
-
-          SVN_ERR(svn_wc__db_node_hidden(&hidden, db, child_abspath, iterpool));
-          if (hidden)
-            continue;
-        }
-
-      SVN_ERR(svn_wc__db_read_info(NULL, &child_kind, NULL, NULL, NULL, NULL,
+      SVN_ERR(svn_wc__db_read_info(&child_status, &child_kind, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL,
-                                   NULL,
+                                   NULL, NULL, NULL,
                                    db, child_abspath, iterpool, iterpool));
 
+      if (!show_hidden)
+        switch (child_status)
+          {
+            case svn_wc__db_status_not_present:
+            case svn_wc__db_status_absent:
+            case svn_wc__db_status_excluded:
+              continue;
+            default:
+              break;
+          }
+
       /* Return the child, if appropriate.  (For a directory,
        * this is the first visit: as a child.) */
       if (child_kind == svn_wc__db_kind_file
             || depth >= svn_depth_immediates)
         {
+          /* ### Maybe we should pass kind to the callback?.
+             ### almost every callee starts by asking for this */
           SVN_ERR(walk_callback(child_abspath, walk_baton, iterpool));
         }
 
@@ -771,12 +828,16 @@ svn_wc__node_is_status_deleted(svn_boole
                                wc_ctx->db, local_abspath,
                                scratch_pool, scratch_pool));
 
-  *is_deleted = (status == svn_wc__db_status_deleted) ||
-                (status == svn_wc__db_status_obstructed_delete);
+  *is_deleted = (status == svn_wc__db_status_deleted)
+#ifndef SVN_WC__SINGLE_DB
+                || (status == svn_wc__db_status_obstructed_delete)
+#endif
+                ;
 
   return SVN_NO_ERROR;
 }
 
+#ifndef SVN_WC__SINGLE_DB
 svn_error_t *
 svn_wc__node_is_status_obstructed(svn_boolean_t *is_obstructed,
                                   svn_wc_context_t *wc_ctx,
@@ -799,6 +860,7 @@ svn_wc__node_is_status_obstructed(svn_bo
 
   return SVN_NO_ERROR;
 }
+#endif
 
 svn_error_t *
 svn_wc__node_is_status_absent(svn_boolean_t *is_absent,
@@ -856,7 +918,10 @@ svn_wc__node_is_added(svn_boolean_t *is_
                                wc_ctx->db, local_abspath,
                                scratch_pool, scratch_pool));
   *is_added = (status == svn_wc__db_status_added
-               || status == svn_wc__db_status_obstructed_add);
+#ifndef SVN_WC__SINGLE_DB
+               || status == svn_wc__db_status_obstructed_add
+#endif
+               );
 
   return SVN_NO_ERROR;
 }
@@ -892,7 +957,10 @@ svn_wc__internal_is_replaced(svn_boolean
                                      scratch_pool, scratch_pool));
 
   *replaced = ((status == svn_wc__db_status_added
-                || status == svn_wc__db_status_obstructed_add)
+#ifndef SVN_WC__SINGLE_DB
+                || status == svn_wc__db_status_obstructed_add
+#endif
+                )
                && have_base
                && base_status != svn_wc__db_status_not_present);
 
@@ -1086,8 +1154,12 @@ svn_wc__node_get_commit_base_rev(svn_rev
                                        wc_ctx->db, parent_abspath,
                                        scratch_pool, scratch_pool));
 
+#ifndef SVN_WC__SINGLE_DB
           SVN_ERR_ASSERT(parent_status == svn_wc__db_status_added
                          || parent_status == svn_wc__db_status_obstructed_add);
+#else
+          SVN_ERR_ASSERT(parent_status == svn_wc__db_status_added);
+#endif
 
           SVN_ERR(svn_wc__db_scan_addition(NULL, NULL, NULL, NULL, NULL, NULL,
                                            NULL, NULL,
@@ -1203,25 +1275,6 @@ svn_wc__node_check_conflicts(svn_boolean
 }
 
 svn_error_t *
-svn_wc__temp_get_keep_local(svn_boolean_t *keep_local,
-                            svn_wc_context_t *wc_ctx,
-                            const char *local_abspath,
-                            apr_pool_t *scratch_pool)
-{
-  svn_boolean_t is_deleted;
-
-  SVN_ERR(svn_wc__node_is_status_deleted(&is_deleted, wc_ctx, local_abspath,
-                                         scratch_pool));
-  if (is_deleted)
-    SVN_ERR(svn_wc__db_temp_determine_keep_local(keep_local, wc_ctx->db,
-                                                 local_abspath, scratch_pool));
-  else
-    *keep_local = FALSE;
-
-  return SVN_NO_ERROR;
-}
-
-svn_error_t *
 svn_wc__internal_node_get_schedule(svn_wc_schedule_t *schedule,
                                    svn_boolean_t *copied,
                                    svn_wc__db_t *db,
@@ -1255,11 +1308,15 @@ svn_wc__internal_node_get_schedule(svn_w
 
       case svn_wc__db_status_normal:
       case svn_wc__db_status_incomplete:
+#ifndef SVN_WC__SINGLE_DB
       case svn_wc__db_status_obstructed:
+#endif
         break;
 
       case svn_wc__db_status_deleted:
+#ifndef SVN_WC__SINGLE_DB
       case svn_wc__db_status_obstructed_delete:
+#endif
         {
           const char *work_del_abspath;
 
@@ -1288,7 +1345,9 @@ svn_wc__internal_node_get_schedule(svn_w
           break;
         }
       case svn_wc__db_status_added:
+#ifndef SVN_WC__SINGLE_DB
       case svn_wc__db_status_obstructed_add:
+#endif
         {
           const char *op_root_abspath;
           const char *parent_abspath;

Modified: subversion/branches/performance/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/props.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/props.c Mon Sep  6 20:02:15 2010
@@ -52,11 +52,8 @@
 #include "private/svn_skel.h"
 
 #include "wc.h"
-#include "log.h"
-#include "adm_files.h"
 #include "props.h"
 #include "translate.h"
-#include "lock.h"  /* for svn_wc__write_check()  */
 #include "workqueue.h"
 #include "conflicts.h"
 
@@ -71,190 +68,6 @@ message_from_skel(const svn_skel_t *skel
                   apr_pool_t *result_pool,
                   apr_pool_t *scratch_pool);
 
-
-#if (SVN_WC__VERSION < SVN_WC__PROPS_IN_DB)
-
-/* Get PATH's properies of PROPS_KIND, and put them into *HASH.
-   PATH should be of kind NODE_KIND. */
-static svn_error_t *
-load_props(apr_hash_t **hash,
-           svn_wc__db_t *db,
-           const char *local_abspath,
-           svn_wc__props_kind_t props_kind,
-           apr_pool_t *pool)
-{
-  svn_error_t *err;
-  svn_stream_t *stream;
-  apr_finfo_t finfo;
-  const char *prop_path;
-  svn_wc__db_kind_t kind;
-
-  SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
-
-  SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, FALSE, pool));
-  SVN_ERR(svn_wc__prop_path(&prop_path, local_abspath, kind, props_kind,
-                            pool));
-
-  /* We shouldn't be calling load_prop_file() with an empty file, but
-     we do.  This check makes sure that we don't call svn_hash_read2()
-     on an empty stream.  Ugly, hacky and crude. */
-  err = svn_io_stat(&finfo, prop_path, APR_FINFO_SIZE, pool);
-  if (err)
-    {
-      if (APR_STATUS_IS_ENOENT(err->apr_err)
-            || APR_STATUS_IS_ENOTDIR(err->apr_err))
-        {
-          svn_error_clear(err);
-
-          /* NOTE: we need to signal that this file is NOT PRESENT, as
-             opposed to merely devoid of properties. */
-          if (props_kind == svn_wc__props_working)
-            *hash = NULL;
-          else
-            *hash = apr_hash_make(pool);
-
-          return SVN_NO_ERROR;
-        }
-      else
-        return err;
-    }
-
-  *hash = apr_hash_make(pool);
-
-  if (finfo.size == 0)
-    return SVN_NO_ERROR;
-
-  SVN_ERR(svn_stream_open_readonly(&stream, prop_path, pool, pool));
-
-  SVN_ERR(svn_hash_read2(*hash, stream, SVN_HASH_TERMINATOR, pool));
-
-  return svn_stream_close(stream);
-}
-
-#endif /* (SVN_WC__VERSION < SVN_WC__PROPS_IN_DB) */
-
-
-static svn_error_t *
-load_pristine_props(apr_hash_t **props,
-                    svn_wc__db_t *db,
-                    const char *local_abspath,
-                    apr_pool_t *result_pool,
-                    apr_pool_t *scratch_pool)
-{
-#if (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)
-
-  SVN_ERR(svn_wc__db_read_pristine_props(props, db, local_abspath,
-                                         result_pool, scratch_pool));
-
-#ifdef TEST_DB_PROPS
-  {
-    SVN_ERR_MALFUNCTION();  /* ### not yet implemented  */
-  }
-#endif
-
-#else /* (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB) */
-
-  /* NOTE: svn_wc__props_base really means "pristine" props, which may
-     come from BASE or WORKING.  */
-  SVN_ERR(load_props(props, db, local_abspath, svn_wc__props_base,
-                     result_pool));
-
-#ifdef TEST_DB_PROPS
-  {
-    apr_hash_t *db_base_props;
-
-    SVN_ERR(svn_wc__db_read_pristine_props(&db_base_props, db,
-                                           local_abspath,
-                                           scratch_pool, scratch_pool));
-
-    if (*props != NULL && apr_hash_count(*props) > 0)
-      {
-        apr_array_header_t *diffs;
-
-        SVN_ERR_ASSERT(db_base_props != NULL);
-
-        SVN_ERR(svn_prop_diffs(&diffs, *props, db_base_props, scratch_pool));
-        SVN_ERR_ASSERT(diffs->nelts == 0);
-      }
-    else
-      {
-        /* If the propfile is missing, then we should see no/empty props
-           in the database.  */
-        SVN_ERR_ASSERT(db_base_props == NULL
-                       || apr_hash_count(db_base_props) == 0);
-      }
-  }
-#endif /* TEST_DB_PROPS */
-#endif /* (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB) */
-
-  return SVN_NO_ERROR;
-}
-
-
-static svn_error_t *
-load_actual_props(apr_hash_t **props,
-                  svn_wc__db_t *db,
-                  const char *local_abspath,
-                  apr_pool_t *result_pool,
-                  apr_pool_t *scratch_pool)
-{
-#if (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)
-
-  SVN_ERR(svn_wc__db_read_props(props, db, local_abspath,
-                                result_pool, scratch_pool));
-
-#ifdef TEST_DB_PROPS
-  {
-    SVN_ERR_MALFUNCTION();  /* ### not yet implemented  */
-  }
-#endif
-
-#else /* (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB) */
-  /* NOTE: svn_wc__props_working really means ACTUAL.  */
-  SVN_ERR(load_props(props, db, local_abspath, svn_wc__props_working,
-                     result_pool));
-
-  /* It is possible that we'll get NULL back, meaning "no props file".
-     For this case, just use the pristine properties. This is very
-     different from an empty file, which means "all props deleted".  */
-  if (*props == NULL)
-    {
-      SVN_ERR(load_pristine_props(props, db, local_abspath,
-                                  result_pool, scratch_pool));
-
-      /* If pristines are not defined for this node, then define this
-         node to have an empty set of properties.  */
-      if (*props == NULL)
-        *props = apr_hash_make(result_pool);
-    }
-
-#ifdef TEST_DB_PROPS
-  {
-    apr_hash_t *db_props;
-    apr_array_header_t *diffs;
-
-    SVN_ERR_ASSERT(*props != NULL);
-
-    SVN_ERR(svn_wc__db_read_props(&db_props, db, local_abspath,
-                                  scratch_pool, scratch_pool));
-
-    if (db_props != NULL)
-      {
-        SVN_ERR(svn_prop_diffs(&diffs, *props, db_props, scratch_pool));
-        SVN_ERR_ASSERT(diffs->nelts == 0);
-      }
-    else
-      {
-        SVN_ERR_ASSERT(apr_hash_count(*props) == 0);
-      }
-  }
-#endif /* TEST_DB_PROPS  */
-#endif /* (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB) */
-
-  return SVN_NO_ERROR;
-}
-
-
 /* Given a *SINGLE* property conflict in PROP_SKEL, generate a message
    for it, and write it to STREAM, along with a trailing EOL sequence.
 
@@ -322,129 +135,6 @@ svn_wc__get_prejfile_abspath(const char 
   return SVN_NO_ERROR;
 }
 
-
-svn_error_t *
-svn_wc__get_revert_props(apr_hash_t **revert_props_p,
-                         svn_wc__db_t *db,
-                         const char *local_abspath,
-                         apr_pool_t *result_pool,
-                         apr_pool_t *scratch_pool)
-{
-  svn_boolean_t replaced;
-
-  SVN_ERR_ASSERT(revert_props_p != NULL);
-
-  SVN_ERR(svn_wc__internal_is_replaced(&replaced, db, local_abspath,
-                                       scratch_pool));
-  if (replaced)
-    {
-#if (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)
-      SVN_ERR(svn_wc__db_base_get_props(revert_props_p, db, local_abspath,
-                                        result_pool, scratch_pool));
-#else
-      SVN_ERR(load_props(revert_props_p, db, local_abspath,
-                         svn_wc__props_revert, result_pool));
-#endif
-    }
-  else
-    *revert_props_p = apr_hash_make(result_pool);
-
-#ifdef TEST_DB_PROPS
-  {
-    apr_hash_t *other_props;
-    apr_array_header_t *diffs;
-
-#if (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)
-    SVN_ERR(svn_wc__db_base_get_props(&other_props, db, local_abspath,
-                                      scratch_pool, scratch_pool));
-#else
-    SVN_ERR(load_props(&other_props, db, local_abspath,
-                       svn_wc__props_revert, scratch_pool));
-    if (other_props == NULL)
-      other_props = apr_hash_make(scratch_pool);
-#endif
-    SVN_ERR_ASSERT(other_props != NULL);
-
-    SVN_ERR(svn_prop_diffs(&diffs, *revert_props_p, other_props,
-                           scratch_pool));
-    SVN_ERR_ASSERT(diffs->nelts == 0);
-  }
-#endif /* TEST_DB_PROPS  */
-
-  return SVN_NO_ERROR;
-}
-
-
-/* See props.h  */
-#ifdef SVN__SUPPORT_BASE_MERGE
-
-/* Add a working queue item to install PROPS and, if INSTALL_PRISTINE_PROPS is
-   TRUE, BASE_PROPS for the LOCAL_ABSPATH in DB, updating the node to reflect
-   the changes.  PRISTINE_PROPS must be supplied even if INSTALL_PRISTINE_PROPS
-   is FALSE.
-
-   Use SCRATCH_POOL for temporary allocations. */
-static svn_error_t *
-queue_install_props(svn_wc__db_t *db,
-                    const char *local_abspath,
-                    svn_wc__db_kind_t kind,
-                    apr_hash_t *pristine_props,
-                    apr_hash_t *props,
-                    svn_boolean_t install_pristine_props,
-                    apr_pool_t *scratch_pool)
-{
-  apr_array_header_t *prop_diffs;
-  const char *prop_abspath;
-  svn_skel_t *work_item;
-
-  SVN_ERR_ASSERT(pristine_props != NULL);
-
-  /* Check if the props are modified. */
-  SVN_ERR(svn_prop_diffs(&prop_diffs, props, pristine_props, scratch_pool));
-
-  /* Save the actual properties file if it differs from base. */
-  if (prop_diffs->nelts == 0)
-    props = NULL; /* Remove actual properties*/
-
-  if (install_pristine_props)
-    {
-      /* Write out a new set of pristine properties.  */
-      SVN_ERR(svn_wc__prop_path(&prop_abspath, local_abspath, kind,
-                                svn_wc__props_base, scratch_pool));
-      SVN_ERR(svn_wc__wq_build_write_old_props(&work_item,
-                                               prop_abspath,
-                                               pristine_props,
-                                               scratch_pool));
-      SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item, scratch_pool));
-    }
-
-  /* For the old school: write the properties into the "working" (aka ACTUAL)
-     location. Note that PROPS may be NULL, indicating a removal of the
-     props file.  */
-  SVN_ERR(svn_wc__prop_path(&prop_abspath, local_abspath, kind,
-                            svn_wc__props_working, scratch_pool));
-  SVN_ERR(svn_wc__wq_build_write_old_props(&work_item,
-                                           prop_abspath,
-                                           props,
-                                           scratch_pool));
-  SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item, scratch_pool));
-
-  /* ### this is disappearing. for now, it is a delayed call to put
-     ### properties into wc_db.  */
-  if (!install_pristine_props)
-    pristine_props = NULL; /* Don't change the pristine properties */
-  SVN_ERR(svn_wc__wq_add_install_properties(db,
-                                            local_abspath,
-                                            pristine_props,
-                                            props,
-                                            scratch_pool));
-
-  return SVN_NO_ERROR;
-}
-
-#endif /* SVN__SUPPORT_BASE_MERGE  */
-
-
 /* */
 static svn_error_t *
 immediate_install_props(svn_wc__db_t *db,
@@ -454,17 +144,12 @@ immediate_install_props(svn_wc__db_t *db
                         apr_pool_t *scratch_pool)
 {
   apr_hash_t *base_props;
-  const char *propfile_abspath;
-  svn_skel_t *work_item;
 
   /* ### no pristines should be okay.  */
-  SVN_ERR_W(load_pristine_props(&base_props, db, local_abspath,
-                                scratch_pool, scratch_pool),
+  SVN_ERR_W(svn_wc__db_read_pristine_props(&base_props, db, local_abspath,
+                                           scratch_pool, scratch_pool),
             _("Failed to load pristine properties"));
 
-  SVN_ERR(svn_wc__prop_path(&propfile_abspath, local_abspath, kind,
-                            svn_wc__props_working, scratch_pool));
-
   /* Check if the props are modified. If no changes, then wipe out
      the ACTUAL props. No pristines defined means that any ACTUAL
      props are okay, so go ahead and set them.  */
@@ -478,78 +163,13 @@ immediate_install_props(svn_wc__db_t *db
         working_props = NULL;
     }
 
-  /* Save (if there are differences from "base") or remove the
-     ACTUAL (aka "props_working") properties file.  */
-  SVN_ERR(svn_wc__wq_build_write_old_props(&work_item,
-                                           propfile_abspath,
-                                           working_props,
-                                           scratch_pool));
-
   SVN_ERR(svn_wc__db_op_set_props(db, local_abspath,
                                   working_props,
                                   NULL /* conflict */,
-                                  work_item,
+                                  NULL, /* work_items */
                                   scratch_pool));
 
-  /* ### should really leave this to the caller. but for now... */
-  SVN_ERR(svn_wc__wq_run(db, local_abspath,
-                         NULL, NULL,  /* cancel_func/baton  */
-                         scratch_pool));
-
-  return SVN_NO_ERROR;
-}
-
-
-svn_error_t *
-svn_wc__working_props_committed(svn_wc__db_t *db,
-                                const char *local_abspath,
-                                apr_pool_t *scratch_pool)
-{
-#if (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)
-  return SVN_NO_ERROR;
-#else
-  svn_wc__db_kind_t kind;
-  const char *working;
-  const char *base;
-
-  SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, FALSE,
-                               scratch_pool));
-
-  /* The path is ensured not an excluded path. */
-  /* TODO(#2843) It seems that there is no need to
-     reveal hidden entry here? */
-
-  SVN_ERR(svn_wc__prop_path(&working, local_abspath, kind,
-                            svn_wc__props_working, scratch_pool));
-  SVN_ERR(svn_wc__prop_path(&base, local_abspath, kind,
-                            svn_wc__props_base, scratch_pool));
-
-  /* svn_io_file_rename() retains a read-only bit, so there's no
-     need to explicitly set it. */
-  return svn_error_return(svn_io_file_rename(working, base, scratch_pool));
-#endif
-}
-
-
-svn_error_t *
-svn_wc__props_delete(svn_wc__db_t *db,
-                     const char *local_abspath,
-                     svn_wc__props_kind_t props_kind,
-                     apr_pool_t *pool)
-{
-#if (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)
   return SVN_NO_ERROR;
-#else
-  const char *props_file;
-  svn_wc__db_kind_t kind;
-
-  SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
-
-  SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, FALSE, pool));
-  SVN_ERR(svn_wc__prop_path(&props_file, local_abspath, kind, props_kind,
-                            pool));
-  return svn_error_return(svn_io_remove_file2(props_file, TRUE, pool));
-#endif
 }
 
 
@@ -727,9 +347,35 @@ svn_wc__perform_props_merge(svn_wc_notif
 
 /* See props.h  */
 #ifdef SVN__SUPPORT_BASE_MERGE
-      SVN_ERR(queue_install_props(db, local_abspath, kind,
-                                  new_base_props, new_actual_props,
-                                  base_merge, pool));
+      {
+        svn_wc__db_status_t status;
+        svn_boolean_t have_base;
+        apr_array_header_t *prop_diffs;
+
+        SVN_ERR(svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                                     &have_base, NULL, NULL, NULL,
+                                     db, local_abspath, pool, pool));
+
+        if (status == svn_wc__db_status_added)
+          SVN_ERR(svn_wc__db_temp_working_set_props(db, local_abspath,
+                                                    new_base_props, pool));
+        else
+          SVN_ERR(svn_wc__db_temp_base_set_props(db, local_abspath,
+                                                 new_base_props, pool));
+
+        /* Check if the props are modified. */
+        SVN_ERR(svn_prop_diffs(&prop_diffs, actual_props, new_base_props, pool));
+
+        /* Save the actual properties file if it differs from base. */
+        if (prop_diffs->nelts == 0)
+          SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, NULL, NULL, NULL,
+                                          pool));
+        else
+          SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, actual_props,
+                                          NULL, NULL, pool));
+      }
 #else
       if (base_merge)
         return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
@@ -737,8 +383,6 @@ svn_wc__perform_props_merge(svn_wc_notif
 
       {
         apr_array_header_t *prop_diffs;
-        const char *props_abspath;
-        svn_skel_t *work_item;
 
         SVN_ERR(svn_prop_diffs(&prop_diffs, new_actual_props, new_base_props,
                                pool));
@@ -750,16 +394,11 @@ svn_wc__perform_props_merge(svn_wc_notif
         /* For the old school: write the properties into the "working"
            (aka ACTUAL) location. Note that PROPS may be NULL, indicating
            a removal of the props file.  */
-        SVN_ERR(svn_wc__prop_path(&props_abspath, local_abspath, kind,
-                                  svn_wc__props_working, pool));
-        SVN_ERR(svn_wc__wq_build_write_old_props(&work_item,
-                                                 props_abspath,
-                                                 new_actual_props,
-                                                 pool));
 
         SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, new_actual_props,
                                         NULL /* conflict */,
-                                        work_item, pool));
+                                        NULL /* work_item */,
+                                        pool));
       }
 #endif
 
@@ -2054,8 +1693,8 @@ svn_wc__get_actual_props(apr_hash_t **pr
   /* ### perform some state checking. for example, locally-deleted nodes
      ### should not have any ACTUAL props.  */
 
-  return svn_error_return(load_actual_props(props, db, local_abspath,
-                                            result_pool, scratch_pool));
+  return svn_error_return(svn_wc__db_read_props(props, db, local_abspath,
+                                                result_pool, scratch_pool));
 }
 
 
@@ -2119,6 +1758,7 @@ svn_wc__get_pristine_props(apr_hash_t **
       return SVN_NO_ERROR;
     }
 
+#ifndef SVN_WC__SINGLE_DB
   /* The node is obstructed:
 
      - subdir is missing, obstructed by a file, or missing admin area
@@ -2138,11 +1778,13 @@ svn_wc__get_pristine_props(apr_hash_t **
                                 "properties are not available."),
                              svn_dirent_local_style(local_abspath,
                                                     scratch_pool));
+#endif
 
   /* status: normal, moved_here, copied, deleted  */
 
   /* After the above checks, these pristines should always be present.  */
-  return svn_error_return(load_pristine_props(props, db, local_abspath,
+  return svn_error_return(
+               svn_wc__db_read_pristine_props(props, db, local_abspath,
                                               result_pool, scratch_pool));
 }
 
@@ -2482,8 +2124,8 @@ svn_wc__internal_propset(svn_wc__db_t *d
       /* If not, we'll set the file to read-only at commit time. */
     }
 
-  SVN_ERR_W(load_actual_props(&prophash, db, local_abspath,
-                              scratch_pool, scratch_pool),
+  SVN_ERR_W(svn_wc__db_read_props(&prophash, db, local_abspath,
+                                  scratch_pool, scratch_pool),
             _("Failed to load current properties"));
 
   /* If we're changing this file's list of expanded keywords, then
@@ -2734,77 +2376,28 @@ svn_wc__props_modified(svn_boolean_t *mo
                        const char *local_abspath,
                        apr_pool_t *scratch_pool)
 {
-  apr_array_header_t *local_propchanges;
-  apr_hash_t *localprops;
-  apr_hash_t *baseprops;
-  svn_wc__db_status_t status;
-  svn_error_t *err;
-
-  err = svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL,
-                             db, local_abspath,
-                             scratch_pool, scratch_pool);
-
-  /* If we have no entry, we can't have any prop mods. */
-  if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
-    {
-      *modified_p = FALSE;
-      svn_error_clear(err);
-      return SVN_NO_ERROR;
-    }
-  else if (err)
-    return err;
-
-  SVN_ERR(load_actual_props(&localprops, db, local_abspath,
-                            scratch_pool, scratch_pool));
-  SVN_ERR_ASSERT(localprops != NULL);
-
-  /* ### this should not apply nowadays. especially if
-                            (SVN_WC__VERSION >= SVN_WC__PROPS_IN_DB)  */
-#if 0
-  {
-    svn_boolean_t replaced;
-
-    /* If something is scheduled for replacement, we do *not* want to
-       pay attention to any base-props;  they might be residual from the
-       old deleted file. */
-    /* ### in modern WC formats, they should be the replaced file's
-       ### base props. hard to know on old WCs tho? (given the above
-       ### comment). just declare propmods if the node has any working
-       ### properties. */
-    SVN_ERR(svn_wc__internal_is_replaced(&replaced, db, local_abspath,
-                                         scratch_pool));
-    if (replaced)
-      {
-        *modified_p = apr_hash_count(localprops) > 0;
-        return SVN_NO_ERROR;
-      }
-  }
-#endif
-
-  /* The WORKING props are present, so let's dig in and see what the
-     differences are. On really old WCs, they might be the same. On
-     newer WCs, the file would have been removed if there was no delta. */
-  SVN_ERR(load_pristine_props(&baseprops, db, local_abspath,
-                              scratch_pool, scratch_pool));
-  if (baseprops == NULL)
-    {
-      /* No pristines are defined. Let's say mods exist if there are any
-         ACTUAL props on this node.  */
-      *modified_p = apr_hash_count(localprops) > 0;
-      return SVN_NO_ERROR;
-    }
-
-  SVN_ERR(svn_prop_diffs(&local_propchanges, localprops, baseprops,
-                         scratch_pool));
-
-  *modified_p = (local_propchanges->nelts > 0);
+  SVN_ERR(svn_wc__db_read_info(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                               NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                               NULL, NULL, NULL, NULL, NULL, modified_p,
+                               NULL, NULL, NULL, NULL,
+                               db, local_abspath,
+                               scratch_pool, scratch_pool));
 
   return SVN_NO_ERROR;
 }
 
+svn_error_t *
+svn_wc_props_modified_p2(svn_boolean_t *modified_p,
+                         svn_wc_context_t* wc_ctx,
+                         const char *local_abspath,
+                         apr_pool_t *scratch_pool)
+{
+  return svn_error_return(
+             svn_wc__props_modified(modified_p,
+                                    wc_ctx->db,
+                                    local_abspath,
+                                    scratch_pool));
+}
 
 svn_error_t *
 svn_wc__internal_propdiff(apr_array_header_t **propchanges,
@@ -2820,8 +2413,8 @@ svn_wc__internal_propdiff(apr_array_head
 
   /* ### if pristines are not defined, then should this raise an error,
      ### or use an empty set?  */
-  SVN_ERR(load_pristine_props(&baseprops, db, local_abspath,
-                              result_pool, scratch_pool));
+  SVN_ERR(svn_wc__db_read_pristine_props(&baseprops, db, local_abspath,
+                                         result_pool, scratch_pool));
 
   if (original_props != NULL)
     *original_props = baseprops;
@@ -2835,8 +2428,8 @@ svn_wc__internal_propdiff(apr_array_head
       if (baseprops == NULL)
         baseprops = apr_hash_make(scratch_pool);
 
-      SVN_ERR(load_actual_props(&actual_props, db, local_abspath,
-                                result_pool, scratch_pool));
+      SVN_ERR(svn_wc__db_read_props(&actual_props, db, local_abspath,
+                                    result_pool, scratch_pool));
       /* ### be wary. certain nodes don't have ACTUAL props either. we
          ### may want to raise an error. or maybe that is a deletion of
          ### any potential pristine props?  */

Modified: subversion/branches/performance/subversion/libsvn_wc/props.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/props.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/props.h (original)
+++ subversion/branches/performance/subversion/libsvn_wc/props.h Mon Sep  6 20:02:15 2010
@@ -49,15 +49,6 @@ extern "C" {
 */
 #undef SVN__SUPPORT_BASE_MERGE
 
-
-typedef enum svn_wc__props_kind_t
-{
-  svn_wc__props_base = 0,
-  svn_wc__props_revert,
-  svn_wc__props_working
-} svn_wc__props_kind_t;
-
-
 /* Internal function for diffing props. See svn_wc_get_prop_diffs2(). */
 svn_error_t *
 svn_wc__internal_propdiff(apr_array_header_t **propchanges,
@@ -148,14 +139,6 @@ svn_wc__merge_props(svn_wc_notify_state_
    changing the working file. */
 svn_boolean_t svn_wc__has_magic_property(const apr_array_header_t *properties);
 
-
-/* Delete PROPS_KIND props for LOCAL_ABSPATH */
-svn_error_t *
-svn_wc__props_delete(svn_wc__db_t *db,
-                     const char *local_abspath,
-                     svn_wc__props_kind_t props_kind,
-                     apr_pool_t *pool);
-
 /* Set *MODIFIED_P TRUE if the props for LOCAL_ABSPATH have been modified. */
 svn_error_t *
 svn_wc__props_modified(svn_boolean_t *modified_p,
@@ -163,13 +146,6 @@ svn_wc__props_modified(svn_boolean_t *mo
                        const char *local_abspath,
                        apr_pool_t *scratch_pool);
 
-/* Install LOCAL_ABSPATHs working props as base props. */
-svn_error_t *
-svn_wc__working_props_committed(svn_wc__db_t *db,
-                                const char *local_abspath,
-                                apr_pool_t *scratch_pool);
-
-
 /* Internal version of svn_wc_get_pristine_props().  */
 svn_error_t *
 svn_wc__get_pristine_props(apr_hash_t **props,
@@ -187,17 +163,6 @@ svn_wc__get_actual_props(apr_hash_t **pr
                          apr_pool_t *result_pool,
                          apr_pool_t *scratch_pool);
 
-
-/* Load the revert props for ENTRY at PATH returning them in *REVERT_PROPS_P.
-   Returned hash/values are allocated in RESULT_POOL. All temporary
-   allocations are made in SCRATCH_POOL.  */
-svn_error_t *
-svn_wc__get_revert_props(apr_hash_t **revert_props_p,
-                         svn_wc__db_t *db,
-                         const char *local_abspath,
-                         apr_pool_t *result_pool,
-                         apr_pool_t *scratch_pool);
-
 /* Set *MARKED to indicate whether the versioned file at LOCAL_ABSPATH in DB
  * has a "binary" file type, as indicated by its working svn:mime-type
  * property. See svn_mime_type_is_binary() for the interpretation. */

Modified: subversion/branches/performance/subversion/libsvn_wc/questions.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/questions.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/questions.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/questions.c Mon Sep  6 20:02:15 2010
@@ -239,7 +239,7 @@ svn_wc__internal_versioned_file_modcheck
                                              versioned_file_abspath,
                                              pristine_stream,
                                              compare_textbases,
-                                             FALSE,
+                                             FALSE /* verify_checksum */,
                                              scratch_pool));
 }
 

Modified: subversion/branches/performance/subversion/libsvn_wc/relocate.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/relocate.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/relocate.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/relocate.c Mon Sep  6 20:02:15 2010
@@ -118,7 +118,7 @@ svn_wc_relocate4(svn_wc_context_t *wc_ct
      and that only for DAV RA implementations that rely on the DAV
      cache. */
   SVN_ERR(svn_wc__db_global_relocate(wc_ctx->db, local_abspath, new_repos_root,
-                                     FALSE, scratch_pool));
+                                     scratch_pool));
 
   if (!recurse)
     {

Modified: subversion/branches/performance/subversion/libsvn_wc/revision_status.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/revision_status.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/revision_status.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/revision_status.c Mon Sep  6 20:02:15 2010
@@ -83,9 +83,12 @@ analyze_status(const char *local_abspath
       return SVN_NO_ERROR;
     }
   else if (status == svn_wc__db_status_added
-           || status == svn_wc__db_status_obstructed_add
            || status == svn_wc__db_status_deleted
-           || status == svn_wc__db_status_obstructed_delete)
+#ifndef SVN_WC__SINGLE_DB
+           || status == svn_wc__db_status_obstructed_add
+           || status == svn_wc__db_status_obstructed_delete
+#endif
+           )
     {
       wb->result->modified = TRUE; 
     }

Modified: subversion/branches/performance/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/status.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/status.c Mon Sep  6 20:02:15 2010
@@ -240,22 +240,20 @@ internal_status(svn_wc_status3_t **statu
                 apr_pool_t *result_pool,
                 apr_pool_t *scratch_pool);
 
-/* Fill in *STATUS for LOCAL_ABSPATH, whose entry data is available in DB.
-   Allocate *STATUS in RESULT_POOL.  Use SCRATCH_POOL for temporary
-   allocations.
+/* Fill in *STATUS for LOCAL_ABSPATH, using DB. Allocate *STATUS in
+   RESULT_POOL and use SCRATCH_POOL for temporary allocations.
 
    PARENT_REPOS_ROOT_URL and PARENT_REPOS_RELPATH are the the repository root
    and repository relative path of the parent of LOCAL_ABSPATH or NULL if
    LOCAL_ABSPATH doesn't have a versioned parent directory.
 
-   PATH_KIND is the node kind of LOCAL_ABSPATH as determined by the caller.
-   DIRENT contains more details about the in-wc node of LOCAL_ABSPATH,
-   including whether it is a symlink. If DIRENT is NULL, don't handle
-   LOCAL_ABSPATH as a symlink and assume no cached data.
+   DIRENT is the local representation of LOCAL_ABSPATH in the working copy or
+   NULL if the node does not exist on disk.
 
-   If GET_ALL is zero, and ENTRY is not locally modified, then *STATUS
-   will be set to NULL.  If GET_ALL is non-zero, then *STATUS will be
+   If GET_ALL is FALSE, and LOCAL_ABSPATH is not locally modified, then
+   *STATUS will be set to NULL.  If GET_ALL is non-zero, then *STATUS will be
    allocated and returned no matter what.
+
    The status struct's repos_lock field will be set to REPOS_LOCK.
 */
 static svn_error_t *
@@ -264,7 +262,6 @@ assemble_status(svn_wc_status3_t **statu
                 const char *local_abspath,
                 const char *parent_repos_root_url,
                 const char *parent_repos_relpath,
-                svn_node_kind_t path_kind,
                 const svn_io_dirent2_t *dirent,
                 svn_boolean_t get_all,
                 const svn_lock_t *repos_lock,
@@ -342,24 +339,14 @@ assemble_status(svn_wc_status3_t **statu
   if (!repos_root_url && parent_repos_root_url)
     repos_root_url = apr_pstrdup(result_pool, parent_repos_root_url);
 
-  /* Examine whether our directory metadata is present, and compensate
-     if it is missing.
-
-     There are a several kinds of obstruction that we detect here:
-
-     - versioned subdir is missing
-     - the versioned subdir's admin area is missing
-     - the versioned subdir has been replaced with a file/symlink
-
-     Net result: the target is obstructed and the metadata is unavailable.
-
-     Note: wc_db can also detect a versioned file that has been replaced
-     with a versioned subdir (moved from somewhere). We don't look for
-     that right away because the file's metadata is still present, so we
-     can examine properties and conflicts and whatnot.
+  /* Examine whether our target is missing or obstructed or missing.
 
-     ### note that most obstruction concepts disappear in single-db mode
-  */
+     While we are not completely in single-db mode yet, data about
+     obstructed or missing nodes might be incomplete here. This is
+     reported by svn_wc_db_status_obstructed_XXXX. In single-db
+     mode these obstructions are no longer reported and we have
+     to detect obstructions by looking at the on disk status in DIRENT.
+     */
   if (db_kind == svn_wc__db_kind_dir)
     {
       if (db_status == svn_wc__db_status_incomplete)
@@ -367,10 +354,19 @@ assemble_status(svn_wc_status3_t **statu
           /* Highest precedence.  */
           node_status = svn_wc_status_incomplete;
         }
+      else if (db_status == svn_wc__db_status_deleted)
+        {
+          node_status = svn_wc_status_deleted;
+
+          SVN_ERR(svn_wc__internal_node_get_schedule(NULL, &copied,
+                                                     db, local_abspath,
+                                                     scratch_pool));
+        }
+#ifndef SVN_WC__SINGLE_DB
       else if (db_status == svn_wc__db_status_obstructed_delete)
         {
           /* Deleted directories are never reported as missing.  */
-          if (path_kind == svn_node_none)
+          if (!dirent)
             node_status = svn_wc_status_deleted;
           else
             node_status = svn_wc_status_obstructed;
@@ -380,19 +376,22 @@ assemble_status(svn_wc_status3_t **statu
         {
           /* A present or added directory should be on disk, so it is
              reported missing or obstructed.  */
-          if (path_kind == svn_node_none)
+          if (!dirent)
             node_status = svn_wc_status_missing;
           else
             node_status = svn_wc_status_obstructed;
         }
-      else if (db_status == svn_wc__db_status_deleted)
+#else
+      else if (!dirent || dirent->kind != svn_node_dir)
         {
-          node_status = svn_wc_status_deleted;
-
-          SVN_ERR(svn_wc__internal_node_get_schedule(NULL, &copied,
-                                                     db, local_abspath,
-                                                     scratch_pool));
+          /* A present or added directory should be on disk, so it is
+             reported missing or obstructed.  */
+          if (!dirent || dirent->kind == svn_node_none)
+            node_status = svn_wc_status_missing;
+          else
+            node_status = svn_wc_status_obstructed;
         }
+#endif
     }
   else
     {
@@ -404,11 +403,11 @@ assemble_status(svn_wc_status3_t **statu
                                                      db, local_abspath,
                                                      scratch_pool));
         }
-      else if (path_kind != svn_node_file)
+      else if (!dirent || dirent->kind != svn_node_file)
         {
           /* A present or added file should be on disk, so it is
              reported missing or obstructed.  */
-          if (path_kind == svn_node_none)
+          if (!dirent || dirent->kind == svn_node_none)
             node_status = svn_wc_status_missing;
           else
             node_status = svn_wc_status_obstructed;
@@ -445,36 +444,18 @@ assemble_status(svn_wc_status3_t **statu
         {
           apr_hash_t *props;
         
-          SVN_ERR(svn_wc__get_pristine_props(&props, db, local_abspath,
-                                             scratch_pool, scratch_pool));
-        
-          if (props != NULL && apr_hash_count(props) > 0)
-            has_props = TRUE;
-          else
-            {
-              SVN_ERR(svn_wc__get_actual_props(&props, db, local_abspath,
-                                               scratch_pool, scratch_pool));
+          SVN_ERR(svn_wc__db_read_pristine_props(&props, db, local_abspath,
+                                                 scratch_pool, scratch_pool));
 
-              has_props = (props != NULL && apr_hash_count(props) > 0);
-            }
+          has_props = (props != NULL && apr_hash_count(props) > 0);
         }
       if (has_props)
         prop_status = svn_wc_status_normal;
 
-      /* If the entry has a property file, see if it has local changes. */
-      /* ### we could compute this ourself, based on the prop hashes
-         ### fetched above. but for now, there is some trickery we may
-         ### need to rely upon in ths function. keep it for now.  */
-      /* ### see r944980 as an example of the brittleness of this stuff.  */
+      /* If the entry has a properties, see if it has local changes. */
       if (has_props)
-        {
-#if (SVN_WC__VERSION < SVN_WC__PROPS_IN_DB)
-          SVN_ERR(svn_wc__props_modified(&prop_modified_p, db, local_abspath,
-                                         scratch_pool));
-#endif
-          prop_status = prop_modified_p ? svn_wc_status_modified
-                                        : svn_wc_status_normal;
-        }
+        prop_status = prop_modified_p ? svn_wc_status_modified
+                                      : svn_wc_status_normal;
 
 #ifdef HAVE_SYMLINK
       if (has_props)
@@ -487,10 +468,11 @@ assemble_status(svn_wc_status3_t **statu
 #endif /* HAVE_SYMLINK */
 
       /* If the entry is a file, check for textual modifications */
-      if ((db_kind == svn_wc__db_kind_file
-           || db_kind == svn_wc__db_kind_symlink)
+      if (node_status != svn_wc_status_missing
+          && (db_kind == svn_wc__db_kind_file
+              || db_kind == svn_wc__db_kind_symlink)
 #ifdef HAVE_SYMLINK
-          && (wc_special == (dirent && dirent->special))
+             && (wc_special == (dirent && dirent->special))
 #endif /* HAVE_SYMLINK */
           )
         {
@@ -535,19 +517,7 @@ assemble_status(svn_wc_status3_t **statu
         text_status = svn_wc_status_modified;
     }
 
-  /* While tree conflicts aren't stored on the node themselves, check
-     explicitly for tree conflicts to allow our users to ignore this detail */
-  if (!conflicted)
-    {
-      const svn_wc_conflict_description2_t *tree_conflict;
-
-      SVN_ERR(svn_wc__db_op_read_tree_conflict(&tree_conflict,
-                                               db, local_abspath,
-                                               scratch_pool, scratch_pool));
-
-      conflicted = (tree_conflict != NULL);
-    }
-  else
+  if (conflicted)
     {
       svn_boolean_t text_conflicted, prop_conflicted, tree_conflicted;
 
@@ -750,7 +720,6 @@ send_status_structure(const struct walk_
                       const char *local_abspath,
                       const char *parent_repos_root_url,
                       const char *parent_repos_relpath,
-                      svn_node_kind_t path_kind,
                       const svn_io_dirent2_t *dirent,
                       svn_boolean_t get_all,
                       svn_wc_status_func4_t status_func,
@@ -800,7 +769,7 @@ send_status_structure(const struct walk_
 
   SVN_ERR(assemble_status(&statstruct, wb->db, local_abspath,
                           parent_repos_root_url, parent_repos_relpath,
-                          path_kind, dirent, get_all,
+                          dirent, get_all,
                           repos_lock, scratch_pool, scratch_pool));
 
   if (statstruct && status_func)
@@ -958,14 +927,15 @@ send_unversioned_item(const struct walk_
 static svn_error_t *
 get_dir_status(const struct walk_status_baton *wb,
                const char *local_abspath,
+               const char *selected,
+               svn_boolean_t skip_this_dir,
                const char *parent_repos_root_url,
                const char *parent_repos_relpath,
-               const char *selected,
+               const svn_io_dirent2_t *dirent,
                const apr_array_header_t *ignores,
                svn_depth_t depth,
                svn_boolean_t get_all,
                svn_boolean_t no_ignore,
-               svn_boolean_t skip_this_dir,
                svn_wc_status_func4_t status_func,
                void *status_baton,
                svn_cancel_func_t cancel_func,
@@ -982,7 +952,6 @@ handle_dir_entry(const struct walk_statu
                  svn_wc__db_kind_t db_kind,
                  const char *dir_repos_root_url,
                  const char *dir_repos_relpath,
-                 svn_node_kind_t path_kind,
                  svn_io_dirent2_t *dirent,
                  const apr_array_header_t *ignores,
                  svn_depth_t depth,
@@ -994,24 +963,38 @@ handle_dir_entry(const struct walk_statu
                  void *cancel_baton,
                  apr_pool_t *pool)
 {
-  /* We are looking at a directory on-disk.  */
-  if (path_kind == svn_node_dir
-      && db_kind == svn_wc__db_kind_dir)
+  /* We are looking at a directory on-disk.
+     With a db per directory the directory must exist to recurse, but
+     with single-db we only have to check for obstructions.
+
+     (Without recursing you would only see the root of a delete operation
+      in single db mode.)
+     ### TODO: Should we recurse on obstructions anyway?
+     ###       (Requires  changes to the test suite)
+   */
+  if (db_kind == svn_wc__db_kind_dir
+#ifndef SVN_WC__SINGLE_DB
+      && dirent && dirent->kind == svn_node_dir
+#endif
+     )
     {
       /* Descend only if the subdirectory is a working copy directory (which
          we've discovered because we got a THIS_DIR entry. And only descend
          if DEPTH permits it, of course.  */
 
-      if (status != svn_wc__db_status_obstructed
+      if ((depth == svn_depth_unknown
+              || depth == svn_depth_immediates
+              || depth == svn_depth_infinity)
+#ifndef SVN_WC__SINGLE_DB
+          && status != svn_wc__db_status_obstructed
           && status != svn_wc__db_status_obstructed_add
           && status != svn_wc__db_status_obstructed_delete
-          && (depth == svn_depth_unknown
-              || depth == svn_depth_immediates
-              || depth == svn_depth_infinity))
+#endif
+          )
         {
-          SVN_ERR(get_dir_status(wb, local_abspath, dir_repos_root_url,
-                                 dir_repos_relpath, NULL, ignores, depth,
-                                 get_all, no_ignore, FALSE,
+          SVN_ERR(get_dir_status(wb, local_abspath, NULL, FALSE,
+                                 dir_repos_root_url, dir_repos_relpath,
+                                 dirent, ignores, depth, get_all, no_ignore,
                                  status_func, status_baton, cancel_func,
                                  cancel_baton,
                                  pool));
@@ -1022,7 +1005,7 @@ handle_dir_entry(const struct walk_statu
              directory entry but DEPTH is limiting our recursion.  */
           SVN_ERR(send_status_structure(wb, local_abspath,
                                         dir_repos_root_url,
-                                        dir_repos_relpath, svn_node_dir,
+                                        dir_repos_relpath,
                                         dirent, get_all,
                                         status_func, status_baton, pool));
         }
@@ -1032,7 +1015,7 @@ handle_dir_entry(const struct walk_statu
       /* This is a file/symlink on-disk or not a directory in the db.  */
       SVN_ERR(send_status_structure(wb, local_abspath,
                                     dir_repos_root_url,
-                                    dir_repos_relpath, path_kind,
+                                    dir_repos_relpath,
                                     dirent, get_all,
                                     status_func, status_baton, pool));
     }
@@ -1103,19 +1086,23 @@ handle_externals(const struct walk_statu
    status will not be reported.  However, upon recursing, all subdirs
    *will* be reported, regardless of this parameter's value.
 
+   DIRENT is LOCAL_ABSPATH's own dirent and is only needed if it is reported,
+   so if SKIP_THIS_DIR or SELECTED is not-NULL DIRENT can be left NULL.
+
    Other arguments are the same as those passed to
    svn_wc_get_status_editor5().  */
 static svn_error_t *
 get_dir_status(const struct walk_status_baton *wb,
                const char *local_abspath,
+               const char *selected,
+               svn_boolean_t skip_this_dir,
                const char *parent_repos_root_url,
                const char *parent_repos_relpath,
-               const char *selected,
+               const svn_io_dirent2_t *dirent,
                const apr_array_header_t *ignore_patterns,
                svn_depth_t depth,
                svn_boolean_t get_all,
                svn_boolean_t no_ignore,
-               svn_boolean_t skip_this_dir,
                svn_wc_status_func4_t status_func,
                void *status_baton,
                svn_cancel_func_t cancel_func,
@@ -1155,7 +1142,7 @@ get_dir_status(const struct walk_status_
 #ifdef SVN_WC__SINGLE_DB
   if (err
       && (APR_STATUS_IS_ENOENT(err->apr_err)
-         || APR_STATUS_IS_ENODIR(err->apr_err)))
+         || SVN__APR_STATUS_IS_ENOTDIR(err->apr_err)))
     {
       svn_error_clear(err);
       dirents = apr_hash_make(subpool);
@@ -1242,8 +1229,8 @@ get_dir_status(const struct walk_status_
       if (! skip_this_dir)
         SVN_ERR(send_status_structure(wb, local_abspath,
                                       parent_repos_root_url,
-                                      parent_repos_relpath, svn_node_dir,
-                                      FALSE /* path_special */, get_all,
+                                      parent_repos_relpath,
+                                      dirent, get_all,
                                       status_func, status_baton,
                                       iterpool));
 
@@ -1275,7 +1262,6 @@ get_dir_status(const struct walk_status_
           /* Versioned node */
           svn_wc__db_status_t node_status;
           svn_wc__db_kind_t node_kind;
-          svn_boolean_t hidden;
 
           SVN_ERR(svn_wc__db_read_info(&node_status, &node_kind, NULL, NULL,
                                    NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -1283,16 +1269,9 @@ get_dir_status(const struct walk_status_
                                    NULL, NULL, NULL, NULL, NULL, NULL,
                                    wb->db, node_abspath, iterpool, iterpool));
 
-          SVN_ERR(svn_wc__db_node_hidden(&hidden, wb->db, node_abspath,
-                                         iterpool));
-
-          /* Hidden looks in the parent stubs, which should not be necessary
-             later. Also skip excluded/absent/not-present working nodes, which
-             only have an implied status via their parent. */
-          if (!hidden
+          if (node_status != svn_wc__db_status_not_present
               && node_status != svn_wc__db_status_excluded
-              && node_status != svn_wc__db_status_absent
-              && node_status != svn_wc__db_status_not_present)
+              && node_status != svn_wc__db_status_absent)
             {
               if (depth == svn_depth_files && node_kind == svn_wc__db_kind_dir)
                 continue;
@@ -1304,8 +1283,6 @@ get_dir_status(const struct walk_status_
                                        node_kind,
                                        dir_repos_root_url,
                                        dir_repos_relpath,
-                                       dirent_p ? dirent_p->kind
-                                                : svn_node_none,
                                        dirent_p,
                                        ignore_patterns,
                                        depth == svn_depth_infinity
@@ -1632,8 +1609,10 @@ make_dir_baton(void **dir_baton,
      our purposes includes being an external or ignored item). */
   if (status_in_parent
       && (status_in_parent->node_status != svn_wc_status_unversioned)
+#ifndef SVN_WC__SINGLE_DB
       && (status_in_parent->node_status != svn_wc_status_missing)
       && (status_in_parent->node_status != svn_wc_status_obstructed)
+#endif
       && (status_in_parent->node_status != svn_wc_status_external)
       && (status_in_parent->node_status != svn_wc_status_ignored)
       && (status_in_parent->kind == svn_node_dir)
@@ -1647,13 +1626,17 @@ make_dir_baton(void **dir_baton,
       const svn_wc_status3_t *this_dir_status;
       const apr_array_header_t *ignores = eb->ignores;
 
-      SVN_ERR(get_dir_status(&eb->wb, local_abspath,
+      SVN_ERR(get_dir_status(&eb->wb, local_abspath, NULL, TRUE,
                              status_in_parent->repos_root_url,
                              status_in_parent->repos_relpath,
-                             NULL, ignores, d->depth == svn_depth_files ?
-                             svn_depth_files : svn_depth_immediates,
-                             TRUE, TRUE, TRUE, hash_stash, d->statii, NULL,
-                             NULL, pool));
+                             NULL /* dirent */, ignores,
+                             d->depth == svn_depth_files
+                                      ? svn_depth_files
+                                      : svn_depth_immediates,
+                             TRUE, TRUE,
+                             hash_stash, d->statii,
+                             eb->cancel_func, eb->cancel_baton,
+                             pool));
 
       /* If we found a depth here, it should govern. */
       this_dir_status = apr_hash_get(d->statii, d->local_abspath,
@@ -1801,7 +1784,7 @@ handle_statii(struct edit_baton *eb,
       status_baton = &sb;
     }
 
-  /* Loop over all the statuses still in our hash, handling each one. */
+  /* Loop over all the statii still in our hash, handling each one. */
   for (hi = apr_hash_first(pool, statii); hi; hi = apr_hash_next(hi))
     {
       const char *local_abspath = svn__apr_hash_index_key(hi);
@@ -1812,18 +1795,22 @@ handle_statii(struct edit_baton *eb,
 
       /* Now, handle the status.  We don't recurse for svn_depth_immediates
          because we already have the subdirectories' statii. */
-      if (status->node_status != svn_wc_status_obstructed
+      if (status->versioned && status->kind == svn_node_dir
+#ifndef SVN_WC__SINGLE_DB
+          && status->node_status != svn_wc_status_obstructed
           && status->node_status != svn_wc_status_missing
-          && status->versioned && status->kind == svn_node_dir
+#endif
           && (depth == svn_depth_unknown
               || depth == svn_depth_infinity))
         {
           SVN_ERR(get_dir_status(&eb->wb,
-                                 local_abspath, dir_repos_root_url,
-                                 dir_repos_relpath, NULL, ignores, depth,
-                                 eb->get_all, eb->no_ignore, TRUE,
-                                 status_func, status_baton, eb->cancel_func,
-                                 eb->cancel_baton, iterpool));
+                                 local_abspath, NULL, TRUE,
+                                 dir_repos_root_url, dir_repos_relpath,
+                                 NULL /* dirent */,
+                                 ignores, depth, eb->get_all, eb->no_ignore,
+                                 status_func, status_baton,
+                                 eb->cancel_func, eb->cancel_baton,
+                                 iterpool));
         }
       if (dir_was_deleted)
         status->repos_node_status = svn_wc_status_deleted;
@@ -2060,7 +2047,8 @@ close_directory(void *dir_baton,
         was_deleted = TRUE;
 
       /* Now do the status reporting. */
-      SVN_ERR(handle_statii(eb, dir_status ? dir_status->repos_root_url : NULL,
+      SVN_ERR(handle_statii(eb,
+                            dir_status ? dir_status->repos_root_url : NULL,
                             dir_status ? dir_status->repos_relpath : NULL,
                             db->statii, was_deleted, db->depth, pool));
       if (dir_status && svn_wc__is_sendable_status(dir_status, eb->no_ignore,
@@ -2084,10 +2072,12 @@ close_directory(void *dir_baton,
               if (tgt_status->versioned
                   && tgt_status->kind == svn_node_dir)
                 {
-                  SVN_ERR(get_dir_status(&eb->wb, eb->target_abspath,
-                                         NULL, NULL, NULL, eb->ignores, 
+                  SVN_ERR(get_dir_status(&eb->wb,
+                                         eb->target_abspath, NULL, TRUE,
+                                         NULL, NULL, NULL /* dirent */,
+                                         eb->ignores,
                                          eb->default_depth,
-                                         eb->get_all, eb->no_ignore, TRUE,
+                                         eb->get_all, eb->no_ignore,
                                          eb->status_func, eb->status_baton,
                                          eb->cancel_func, eb->cancel_baton,
                                          pool));
@@ -2103,7 +2093,8 @@ close_directory(void *dir_baton,
           /* Otherwise, we report on all our children and ourself.
              Note that our directory couldn't have been deleted,
              because it is the root of the edit drive. */
-          SVN_ERR(handle_statii(eb, eb->anchor_status->repos_root_url,
+          SVN_ERR(handle_statii(eb,
+                                eb->anchor_status->repos_root_url,
                                 eb->anchor_status->repos_relpath,
                                 db->statii, FALSE, eb->default_depth, pool));
           if (svn_wc__is_sendable_status(eb->anchor_status, eb->no_ignore,
@@ -2414,8 +2405,11 @@ svn_wc_walk_status(svn_wc_context_t *wc_
                    void *cancel_baton,
                    apr_pool_t *scratch_pool)
 {
-  svn_node_kind_t kind, local_kind;
+  svn_node_kind_t kind;
   struct walk_status_baton wb;
+  const svn_io_dirent2_t *dirent;
+  const char *anchor_abspath, *target_name;
+  svn_boolean_t skip_root;
 
   wb.db = wc_ctx->db;
   wb.target_abspath = local_abspath;
@@ -2436,62 +2430,41 @@ svn_wc_walk_status(svn_wc_context_t *wc_
     }
 
   SVN_ERR(svn_wc_read_kind(&kind, wc_ctx, local_abspath, FALSE, scratch_pool));
-  SVN_ERR(svn_io_check_path(local_abspath, &local_kind, scratch_pool));
+  SVN_ERR(svn_io_stat_dirent(&dirent, local_abspath, TRUE,
+                             scratch_pool, scratch_pool));
 
-  if (kind == svn_node_file && local_kind == svn_node_file)
+  if (kind == svn_node_file && dirent->kind == svn_node_file)
     {
-      SVN_ERR(get_dir_status(&wb,
-                             svn_dirent_dirname(local_abspath, scratch_pool),
-                             NULL,
-                             NULL,
-                             svn_dirent_basename(local_abspath, NULL),
-                             ignore_patterns,
-                             depth,
-                             get_all,
-                             TRUE,
-                             TRUE,
-                             status_func,
-                             status_baton,
-                             cancel_func,
-                             cancel_baton,
-                             scratch_pool));
-    }
-  else if (kind == svn_node_dir && local_kind == svn_node_dir)
-    {
-      SVN_ERR(get_dir_status(&wb,
-                             local_abspath,
-                             NULL,
-                             NULL,
-                             NULL,
-                             ignore_patterns,
-                             depth,
-                             get_all,
-                             no_ignore,
-                             FALSE,
-                             status_func,
-                             status_baton,
-                             cancel_func,
-                             cancel_baton,
-                             scratch_pool));
+      anchor_abspath = svn_dirent_dirname(local_abspath, scratch_pool);
+      target_name = svn_dirent_basename(local_abspath, NULL);
+      skip_root = TRUE;
     }
-  else
+  else if (kind == svn_node_dir && dirent->kind == svn_node_dir)
     {
-      SVN_ERR(get_dir_status(&wb,
-                             svn_dirent_dirname(local_abspath, scratch_pool),
-                             NULL,
-                             NULL,
-                             svn_dirent_basename(local_abspath, NULL),
-                             ignore_patterns,
-                             depth,
-                             get_all,
-                             no_ignore,
-                             TRUE,
-                             status_func,
-                             status_baton,
-                             cancel_func,
-                             cancel_baton,
-                             scratch_pool));
+      anchor_abspath = local_abspath;
+      target_name = NULL;
+      skip_root = FALSE;
     }
+  else
+    {
+      anchor_abspath = svn_dirent_dirname(local_abspath, scratch_pool);
+      target_name = svn_dirent_basename(local_abspath, NULL);
+      skip_root = FALSE;
+    }
+
+  SVN_ERR(get_dir_status(&wb,
+                         anchor_abspath,
+                         target_name,
+                         skip_root,
+                         NULL, NULL, /* parent info */
+                         dirent,
+                         ignore_patterns,
+                         depth,
+                         get_all,
+                         no_ignore,
+                         status_func, status_baton,
+                         cancel_func, cancel_baton,
+                         scratch_pool));
 
   return SVN_NO_ERROR;
 }
@@ -2562,10 +2535,15 @@ internal_status(svn_wc_status3_t **statu
                              scratch_pool, scratch_pool);
 
   if ((err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+      || node_status == svn_wc__db_status_not_present
+      || node_status == svn_wc__db_status_absent
+      || node_status == svn_wc__db_status_excluded
+#ifndef SVN_WC__SINGLE_DB
       || node_status == svn_wc__db_status_obstructed
       || node_status == svn_wc__db_status_obstructed_add
       || node_status == svn_wc__db_status_obstructed_delete
-      || node_status == svn_wc__db_status_not_present)
+#endif
+      )
     {
       svn_error_clear(err);
       node_kind = svn_wc__db_kind_unknown;
@@ -2573,18 +2551,6 @@ internal_status(svn_wc_status3_t **statu
   else
     SVN_ERR(err);
 
-  if (node_kind != svn_wc__db_kind_unknown)
-    {
-      svn_boolean_t hidden;
-
-      /* Check for hidden in the parent stub */
-      SVN_ERR(svn_wc__db_node_hidden(&hidden, db, local_abspath,
-                                     scratch_pool));
-
-      if (hidden)
-        node_kind = svn_wc__db_kind_unknown;
-    }
-
   if (node_kind == svn_wc__db_kind_unknown)
     return svn_error_return(assemble_unversioned(status,
                                                  db, local_abspath,
@@ -2634,7 +2600,6 @@ internal_status(svn_wc_status3_t **statu
   return svn_error_return(assemble_status(status, db, local_abspath,
                                           parent_repos_root_url,
                                           parent_repos_relpath,
-                                          dirent->kind,
                                           dirent,
                                           TRUE /* get_all */,
                                           NULL /* repos_lock */,

Modified: subversion/branches/performance/subversion/libsvn_wc/translate.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/translate.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/translate.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/translate.c Mon Sep  6 20:02:15 2010
@@ -43,7 +43,6 @@
 #include "adm_files.h"
 #include "translate.h"
 #include "props.h"
-#include "lock.h"
 
 #include "svn_private_config.h"
 #include "private/svn_wc_private.h"

Modified: subversion/branches/performance/subversion/libsvn_wc/tree_conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_wc/tree_conflicts.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_wc/tree_conflicts.c (original)
+++ subversion/branches/performance/subversion/libsvn_wc/tree_conflicts.c Mon Sep  6 20:02:15 2010
@@ -416,11 +416,6 @@ svn_wc__serialize_conflict(svn_skel_t **
 }
 
 
-/*
- * This function could be static, but we need to link to it
- * in a unit test in tests/libsvn_wc/, so it isn't.
- * (and we use it to serialize tree conflicts in log.c :( )
- */
 svn_error_t *
 svn_wc__write_tree_conflicts(const char **conflict_data,
                              apr_hash_t *conflicts,



Mime
View raw message