You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/03/30 21:02:33 UTC

svn commit: r1462850 [10/14] - in /subversion/branches/fsfs-format7: ./ build/ build/ac-macros/ build/generator/ contrib/client-side/svncopy/ notes/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subvers...

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c Sat Mar 30 20:02:27 2013
@@ -198,7 +198,7 @@ svn_wc_merge_props3(svn_wc_notify_state_
 {
   int i;
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   apr_hash_t *pristine_props = NULL;
   apr_hash_t *actual_props;
   apr_hash_t *new_actual_props;
@@ -310,7 +310,7 @@ svn_wc_merge_props3(svn_wc_notify_state_
   {
     const char *dir_abspath;
 
-    if (kind == svn_kind_dir)
+    if (kind == svn_node_dir)
       dir_abspath = local_abspath;
     else
       dir_abspath = svn_dirent_dirname(local_abspath, scratch_pool);
@@ -1142,13 +1142,13 @@ svn_wc__merge_props(svn_skel_t **conflic
         = &APR_ARRAY_IDX(propchanges, i, svn_prop_t);
       const char *propname = incoming_change->name;
       const svn_string_t *base_val  /* Pristine in WC */
-        = apr_hash_get(pristine_props, propname, APR_HASH_KEY_STRING);
+        = svn_hash_gets(pristine_props, propname);
       const svn_string_t *from_val  /* Merge left */
-        = apr_hash_get(server_baseprops, propname, APR_HASH_KEY_STRING);
+        = svn_hash_gets(server_baseprops, propname);
       const svn_string_t *to_val    /* Merge right */
         = incoming_change->value;
       const svn_string_t *working_val  /* Mine */
-        = apr_hash_get(actual_props, propname, APR_HASH_KEY_STRING);
+        = svn_hash_gets(actual_props, propname);
       const svn_string_t *result_val;
       svn_boolean_t conflict_remains;
       svn_boolean_t did_merge = FALSE;
@@ -1157,7 +1157,7 @@ svn_wc__merge_props(svn_skel_t **conflic
 
       to_val = to_val ? svn_string_dup(to_val, result_pool) : NULL;
 
-      apr_hash_set(their_props, propname, APR_HASH_KEY_STRING, to_val);
+      svn_hash_sets(their_props, propname, to_val);
       
 
       /* We already know that state is at least `changed', so mark
@@ -1185,8 +1185,7 @@ svn_wc__merge_props(svn_skel_t **conflic
                                          result_pool, iterpool));
 
       if (result_val != working_val)
-        apr_hash_set(*new_actual_props, propname, APR_HASH_KEY_STRING,
-                     result_val);
+        svn_hash_sets(*new_actual_props, propname, result_val);
       if (did_merge)
         set_prop_merge_state(state, svn_wc_notify_state_merged);
 
@@ -1200,7 +1199,7 @@ svn_wc__merge_props(svn_skel_t **conflic
           if (!conflict_props)
             conflict_props = apr_hash_make(scratch_pool);
 
-          apr_hash_set(conflict_props, propname, APR_HASH_KEY_STRING, "");
+          svn_hash_sets(conflict_props, propname, "");
         }
 
     }  /* foreach propchange ... */
@@ -1256,7 +1255,7 @@ wcprop_set(svn_wc__db_t *db,
   if (prophash == NULL)
     prophash = apr_hash_make(scratch_pool);
 
-  apr_hash_set(prophash, name, APR_HASH_KEY_STRING, value);
+  svn_hash_sets(prophash, name, value);
   return svn_error_trace(svn_wc__db_base_set_dav_cache(db, local_abspath,
                                                        prophash,
                                                        scratch_pool));
@@ -1308,13 +1307,12 @@ propname_filter_receiver(void *baton,
                          apr_pool_t *scratch_pool)
 {
   struct propname_filter_baton_t *pfb = baton;
-  const svn_string_t *propval = apr_hash_get(props, pfb->propname,
-                                             APR_HASH_KEY_STRING);
+  const svn_string_t *propval = svn_hash_gets(props, pfb->propname);
 
   if (propval)
     {
       props = apr_hash_make(scratch_pool);
-      apr_hash_set(props, pfb->propname, APR_HASH_KEY_STRING, propval);
+      svn_hash_sets(props, pfb->propname, propval);
 
       SVN_ERR(pfb->receiver_func(pfb->receiver_baton, local_abspath, props,
                                  scratch_pool));
@@ -1510,7 +1508,7 @@ svn_wc__internal_propget(const svn_strin
     }
 
   if (prophash)
-    *value = apr_hash_get(prophash, name, APR_HASH_KEY_STRING);
+    *value = svn_hash_gets(prophash, name);
   else
     *value = NULL;
 
@@ -1628,7 +1626,8 @@ validate_eol_prop_against_file(const cha
   if (mime_type && svn_mime_type_is_binary(mime_type->data))
     return svn_error_createf
       (SVN_ERR_ILLEGAL_TARGET, NULL,
-       _("File '%s' has binary mime type property"),
+       _("Can't set '" SVN_PROP_EOL_STYLE "': "
+         "file '%s' has binary mime type property"),
        path_display);
 
   /* Now ask the getter for the contents of the file; this will do a
@@ -1684,8 +1683,7 @@ do_propset(svn_wc__db_t *db,
       const svn_string_t *new_value;
       struct getter_baton gb;
 
-      gb.mime_type = apr_hash_get(prophash,
-                                  SVN_PROP_MIME_TYPE, APR_HASH_KEY_STRING);
+      gb.mime_type = svn_hash_gets(prophash, SVN_PROP_MIME_TYPE);
       gb.local_abspath = local_abspath;
 
       SVN_ERR(svn_wc_canonicalize_svn_prop(&new_value, name, value,
@@ -1714,8 +1712,7 @@ do_propset(svn_wc__db_t *db,
    */
   if (kind == svn_node_file && strcmp(name, SVN_PROP_KEYWORDS) == 0)
     {
-      svn_string_t *old_value = apr_hash_get(prophash, SVN_PROP_KEYWORDS,
-                                             APR_HASH_KEY_STRING);
+      svn_string_t *old_value = svn_hash_gets(prophash, SVN_PROP_KEYWORDS);
       apr_hash_t *old_keywords, *new_keywords;
 
       if (old_value)
@@ -1755,8 +1752,7 @@ do_propset(svn_wc__db_t *db,
     }
   else if (kind == svn_node_file && strcmp(name, SVN_PROP_EOL_STYLE) == 0)
     {
-      svn_string_t *old_value = apr_hash_get(prophash, SVN_PROP_EOL_STYLE,
-                                             APR_HASH_KEY_STRING);
+      svn_string_t *old_value = svn_hash_gets(prophash, SVN_PROP_EOL_STYLE);
 
       if (((value == NULL) != (old_value == NULL))
           || (value && ! svn_string_compare(value, old_value)))
@@ -1767,7 +1763,7 @@ do_propset(svn_wc__db_t *db,
 
   /* Find out what type of property change we are doing: add, modify, or
      delete. */
-  if (apr_hash_get(prophash, name, APR_HASH_KEY_STRING) == NULL)
+  if (svn_hash_gets(prophash, name) == NULL)
     {
       if (value == NULL)
         /* Deleting a non-existent property. */
@@ -1788,7 +1784,7 @@ do_propset(svn_wc__db_t *db,
 
   /* Now we have all the properties in our hash.  Simply merge the new
      property into it. */
-  apr_hash_set(prophash, name, APR_HASH_KEY_STRING, value);
+  svn_hash_sets(prophash, name, value);
 
   /* Drop it right into the db..  */
   SVN_ERR(svn_wc__db_op_set_props(db, local_abspath, prophash,
@@ -1867,7 +1863,7 @@ svn_wc_prop_set4(svn_wc_context_t *wc_ct
 {
   enum svn_prop_kind prop_kind = svn_property_kind2(name);
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   svn_wc__db_t *db = wc_ctx->db;
 
   /* we don't do entry properties here */
@@ -1913,7 +1909,7 @@ svn_wc_prop_set4(svn_wc_context_t *wc_ct
   {
     const char *dir_abspath;
 
-    if (kind == svn_kind_dir)
+    if (kind == svn_node_dir)
       dir_abspath = local_abspath;
     else
       dir_abspath = svn_dirent_dirname(local_abspath, scratch_pool);
@@ -1922,7 +1918,7 @@ svn_wc_prop_set4(svn_wc_context_t *wc_ct
     SVN_ERR(svn_wc__write_check(db, dir_abspath, scratch_pool));
   }
 
-  if (depth == svn_depth_empty || kind != svn_kind_dir)
+  if (depth == svn_depth_empty || kind != svn_node_dir)
     {
       apr_hash_t *changelist_hash = NULL;
 
@@ -1935,7 +1931,7 @@ svn_wc_prop_set4(svn_wc_context_t *wc_ct
         return SVN_NO_ERROR;
 
       SVN_ERR(do_propset(wc_ctx->db, local_abspath,
-                         kind == svn_kind_dir
+                         kind == svn_node_dir
                             ? svn_node_dir
                             : svn_node_file,
                          name, value, skip_checks,
@@ -2004,16 +2000,14 @@ svn_wc__canonicalize_props(apr_hash_t **
 
   /* Before we can canonicalize svn:eol-style we need to know svn:mime-type,
    * so process that first. */
-  mime_type = apr_hash_get((apr_hash_t *)props,
-                           SVN_PROP_MIME_TYPE, APR_HASH_KEY_STRING);
+  mime_type = svn_hash_gets((apr_hash_t *)props, SVN_PROP_MIME_TYPE);
   if (mime_type)
     {
       SVN_ERR(svn_wc_canonicalize_svn_prop(
                 &mime_type, SVN_PROP_MIME_TYPE, mime_type,
                 local_abspath, node_kind, skip_some_checks,
                 NULL, NULL, scratch_pool));
-      apr_hash_set(*prepared_props, SVN_PROP_MIME_TYPE, APR_HASH_KEY_STRING,
-                   mime_type);
+      svn_hash_sets(*prepared_props, SVN_PROP_MIME_TYPE, mime_type);
     }
 
   /* Set up the context for canonicalizing the other properties. */
@@ -2035,7 +2029,7 @@ svn_wc__canonicalize_props(apr_hash_t **
                 &value, name, value,
                 local_abspath, node_kind, skip_some_checks,
                 get_file_for_validation, &gb, scratch_pool));
-      apr_hash_set(*prepared_props, name, APR_HASH_KEY_STRING, value);
+      svn_hash_sets(*prepared_props, name, value);
     }
 
   return SVN_NO_ERROR;

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/questions.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/questions.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/questions.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/questions.c Sat Mar 30 20:02:27 2013
@@ -224,7 +224,7 @@ svn_wc__internal_file_modified_p(svn_boo
   svn_stream_t *pristine_stream;
   svn_filesize_t pristine_size;
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   const svn_checksum_t *checksum;
   svn_filesize_t recorded_size;
   apr_time_t recorded_mod_time;
@@ -245,7 +245,7 @@ svn_wc__internal_file_modified_p(svn_boo
   /* If we don't have a pristine or the node has a status that allows a
      pristine, just say that the node is modified */
   if (!checksum
-      || (kind != svn_kind_file)
+      || (kind != svn_node_file)
       || ((status != svn_wc__db_status_normal)
           && (status != svn_wc__db_status_added)))
     {

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/relocate.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/relocate.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/relocate.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/relocate.c Sat Mar 30 20:02:27 2013
@@ -85,7 +85,7 @@ svn_wc_relocate4(svn_wc_context_t *wc_ct
                  void *validator_baton,
                  apr_pool_t *scratch_pool)
 {
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   const char *repos_relpath;
   const char *old_repos_root, *old_url;
   const char *new_repos_root, *new_url;
@@ -131,7 +131,7 @@ svn_wc_relocate4(svn_wc_context_t *wc_ct
                                wc_ctx->db, local_abspath, scratch_pool,
                                scratch_pool));
 
-  if (kind != svn_kind_dir)
+  if (kind != svn_node_dir)
     return svn_error_create(SVN_ERR_CLIENT_INVALID_RELOCATION, NULL,
                             _("Cannot relocate a single file"));
 

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/revert.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/revert.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/revert.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/revert.c Sat Mar 30 20:02:27 2013
@@ -180,7 +180,7 @@ revert_restore_handle_copied_dirs(svn_bo
       if (cancel_func)
         SVN_ERR(cancel_func(cancel_baton));
 
-      if (child_info->kind != svn_kind_file)
+      if (child_info->kind != svn_node_file)
         continue;
 
       svn_pool_clear(iterpool);
@@ -210,7 +210,7 @@ revert_restore_handle_copied_dirs(svn_bo
       if (cancel_func)
         SVN_ERR(cancel_func(cancel_baton));
 
-      if (child_info->kind != svn_kind_dir)
+      if (child_info->kind != svn_node_dir)
         continue;
 
       svn_pool_clear(iterpool);
@@ -270,7 +270,7 @@ revert_restore(svn_wc__db_t *db,
 {
   svn_error_t *err;
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   svn_node_kind_t on_disk;
   svn_boolean_t notify_required;
   const apr_array_header_t *conflict_files;
@@ -281,7 +281,7 @@ revert_restore(svn_wc__db_t *db,
   svn_boolean_t special;
 #endif
   svn_boolean_t copied_here;
-  svn_kind_t reverted_kind;
+  svn_node_kind_t reverted_kind;
   svn_boolean_t is_wcroot;
 
   if (cancel_func)
@@ -345,7 +345,7 @@ revert_restore(svn_wc__db_t *db,
            * ### trying to restore anything to disk.
            * ### 'status' should be status_unknown but that doesn't exist. */
           status = svn_wc__db_status_normal;
-          kind = svn_kind_unknown;
+          kind = svn_node_unknown;
           recorded_size = SVN_INVALID_FILESIZE;
           recorded_time = 0;
         }
@@ -388,12 +388,12 @@ revert_restore(svn_wc__db_t *db,
   if (copied_here)
     {
       /* The revert target itself is the op-root of a copy. */
-      if (reverted_kind == svn_kind_file && on_disk == svn_node_file)
+      if (reverted_kind == svn_node_file && on_disk == svn_node_file)
         {
           SVN_ERR(svn_io_remove_file2(local_abspath, TRUE, scratch_pool));
           on_disk = svn_node_none;
         }
-      else if (reverted_kind == svn_kind_dir && on_disk == svn_node_dir)
+      else if (reverted_kind == svn_node_dir && on_disk == svn_node_dir)
         {
           svn_boolean_t removed;
 
@@ -415,18 +415,18 @@ revert_restore(svn_wc__db_t *db,
       && status != svn_wc__db_status_excluded
       && status != svn_wc__db_status_not_present)
     {
-      if (on_disk == svn_node_dir && kind != svn_kind_dir)
+      if (on_disk == svn_node_dir && kind != svn_node_dir)
         {
           SVN_ERR(svn_io_remove_dir2(local_abspath, FALSE,
                                      cancel_func, cancel_baton, scratch_pool));
           on_disk = svn_node_none;
         }
-      else if (on_disk == svn_node_file && kind != svn_kind_file)
+      else if (on_disk == svn_node_file && kind != svn_node_file)
         {
 #ifdef HAVE_SYMLINK
           /* Preserve symlinks pointing at directories. Changes on the
            * directory node have been reverted. The symlink should remain. */
-          if (!(special && kind == svn_kind_dir))
+          if (!(special && kind == svn_node_dir))
 #endif
             {
               SVN_ERR(svn_io_remove_file2(local_abspath, FALSE, scratch_pool));
@@ -445,8 +445,7 @@ revert_restore(svn_wc__db_t *db,
                                                  scratch_pool, scratch_pool));
 
 #ifdef HAVE_SYMLINK
-          special_prop = apr_hash_get(props, SVN_PROP_SPECIAL,
-                                      APR_HASH_KEY_STRING);
+          special_prop = svn_hash_gets(props, SVN_PROP_SPECIAL);
 
           if ((special_prop != NULL) != special)
             {
@@ -499,8 +498,8 @@ revert_restore(svn_wc__db_t *db,
                       SVN_ERR(svn_io__is_finfo_read_only(&read_only, &finfo,
                                                          scratch_pool));
 
-                      needs_lock_prop = apr_hash_get(props, SVN_PROP_NEEDS_LOCK,
-                                                     APR_HASH_KEY_STRING);
+                      needs_lock_prop = svn_hash_gets(props,
+                                                      SVN_PROP_NEEDS_LOCK);
                       if (needs_lock_prop && !read_only)
                         {
                           SVN_ERR(svn_io_set_file_read_only(local_abspath,
@@ -527,8 +526,8 @@ revert_restore(svn_wc__db_t *db,
 
                       SVN_ERR(svn_io__is_finfo_executable(&executable, &finfo,
                                                           scratch_pool));
-                      executable_prop = apr_hash_get(props, SVN_PROP_EXECUTABLE,
-                                                     APR_HASH_KEY_STRING);
+                      executable_prop = svn_hash_gets(props,
+                                                      SVN_PROP_EXECUTABLE);
                       if (executable_prop && !executable)
                         {
                           SVN_ERR(svn_io_set_file_executable(local_abspath,
@@ -558,10 +557,10 @@ revert_restore(svn_wc__db_t *db,
       && status != svn_wc__db_status_excluded
       && status != svn_wc__db_status_not_present)
     {
-      if (kind == svn_kind_dir)
+      if (kind == svn_node_dir)
         SVN_ERR(svn_io_dir_make(local_abspath, APR_OS_DEFAULT, scratch_pool));
 
-      if (kind == svn_kind_file)
+      if (kind == svn_node_file)
         {
           svn_skel_t *work_item;
 
@@ -595,7 +594,7 @@ revert_restore(svn_wc__db_t *db,
                                      scratch_pool),
                 scratch_pool);
 
-  if (depth == svn_depth_infinity && kind == svn_kind_dir)
+  if (depth == svn_depth_infinity && kind == svn_node_dir)
     {
       apr_pool_t *iterpool = svn_pool_create(scratch_pool);
       const apr_array_header_t *children;
@@ -811,14 +810,14 @@ revert_partial(svn_wc__db_t *db,
       /* For svn_depth_files: don't revert non-files.  */
       if (depth == svn_depth_files)
         {
-          svn_kind_t kind;
+          svn_node_kind_t kind;
 
           SVN_ERR(svn_wc__db_read_kind(&kind, db, child_abspath,
                                        FALSE /* allow_missing */,
                                        TRUE /* show_deleted */,
                                        FALSE /* show_hidden */,
                                        iterpool));
-          if (kind != svn_kind_file)
+          if (kind != svn_node_file)
             continue;
         }
 

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/status.c Sat Mar 30 20:02:27 2013
@@ -276,7 +276,7 @@ read_info(const struct svn_wc__db_info_t
   if (mtb->have_base
       && (mtb->status == svn_wc__db_status_added
           || mtb->status == svn_wc__db_status_deleted
-          || mtb->kind == svn_kind_file))
+          || mtb->kind == svn_node_file))
     {
       svn_boolean_t update_root;
       svn_wc__db_lock_t **lock_arg = NULL;
@@ -291,7 +291,7 @@ read_info(const struct svn_wc__db_info_t
                                        db, local_abspath,
                                        result_pool, scratch_pool));
 
-      mtb->file_external = (update_root && mtb->kind == svn_kind_file);
+      mtb->file_external = (update_root && mtb->kind == svn_node_file);
 
       if (mtb->status == svn_wc__db_status_deleted)
         {
@@ -361,7 +361,7 @@ read_info(const struct svn_wc__db_info_t
   mtb->copied = (original_repos_relpath != NULL);
 
 #ifdef HAVE_SYMLINK
-  if (mtb->kind == svn_kind_file
+  if (mtb->kind == svn_node_file
       && (mtb->had_props || mtb->props_mod))
     {
       apr_hash_t *properties;
@@ -373,8 +373,7 @@ read_info(const struct svn_wc__db_info_t
         SVN_ERR(svn_wc__db_read_pristine_props(&properties, db, local_abspath,
                                                scratch_pool, scratch_pool));
 
-      mtb->special = (NULL != apr_hash_get(properties, SVN_PROP_SPECIAL,
-                                           APR_HASH_KEY_STRING));
+      mtb->special = (NULL != svn_hash_gets(properties, SVN_PROP_SPECIAL));
     }
 #endif
   *info = mtb;
@@ -538,7 +537,7 @@ assemble_status(svn_wc_status3_t **statu
     {
       /* Examine whether our target is missing or obstructed. To detect
        * obstructions, we have to look at the on-disk status in DIRENT. */
-      svn_node_kind_t expected_kind = (info->kind == svn_kind_dir) 
+      svn_node_kind_t expected_kind = (info->kind == svn_node_dir) 
                                         ? svn_node_dir
                                         : svn_node_file;
 
@@ -567,7 +566,7 @@ assemble_status(svn_wc_status3_t **statu
 
      If it was changed, then the subdir is incomplete or missing/obstructed.
    */
-  if (info->kind != svn_kind_dir
+  if (info->kind != svn_node_dir
       && node_status == svn_wc_status_normal)
     {
       svn_boolean_t text_modified_p = FALSE;
@@ -579,8 +578,8 @@ assemble_status(svn_wc_status3_t **statu
             precedence over M. */
 
       /* If the entry is a file, check for textual modifications */
-      if ((info->kind == svn_kind_file
-          || info->kind == svn_kind_symlink)
+      if ((info->kind == svn_node_file
+          || info->kind == svn_node_symlink)
 #ifdef HAVE_SYMLINK
              && (info->special == (dirent && dirent->special))
 #endif /* HAVE_SYMLINK */
@@ -738,14 +737,14 @@ assemble_status(svn_wc_status3_t **statu
 
   switch (info->kind)
     {
-      case svn_kind_dir:
+      case svn_node_dir:
         stat->kind = svn_node_dir;
         break;
-      case svn_kind_file:
-      case svn_kind_symlink:
+      case svn_node_file:
+      case svn_node_symlink:
         stat->kind = svn_node_file;
         break;
-      case svn_kind_unknown:
+      case svn_node_unknown:
       default:
         stat->kind = svn_node_unknown;
     }
@@ -915,10 +914,9 @@ send_status_structure(const struct walk_
         {
           /* repos_lock still uses the deprecated filesystem absolute path
              format */
-          repos_lock = apr_hash_get(wb->repos_locks,
-                                    svn_fspath__join("/", repos_relpath,
-                                                     scratch_pool),
-                                    APR_HASH_KEY_STRING);
+          repos_lock = svn_hash_gets(wb->repos_locks,
+                                     svn_fspath__join("/", repos_relpath,
+                                                      scratch_pool));
         }
     }
 
@@ -1037,7 +1035,7 @@ is_external_path(apr_hash_t *externals,
   apr_hash_index_t *hi;
 
   /* First try: does the path exist as a key in the hash? */
-  if (apr_hash_get(externals, local_abspath, APR_HASH_KEY_STRING))
+  if (svn_hash_gets(externals, local_abspath))
     return TRUE;
 
   /* Failing that, we need to check if any external is a child of
@@ -1196,11 +1194,11 @@ one_child_status(const struct walk_statu
       && info->status != svn_wc__db_status_not_present
       && info->status != svn_wc__db_status_excluded
       && info->status != svn_wc__db_status_server_excluded
-      && !(info->kind == svn_kind_unknown
+      && !(info->kind == svn_node_unknown
            && info->status == svn_wc__db_status_normal))
     {
       if (depth == svn_depth_files
-          && info->kind == svn_kind_dir)
+          && info->kind == svn_node_dir)
         {
           return SVN_NO_ERROR;
         }
@@ -1215,7 +1213,7 @@ one_child_status(const struct walk_statu
 
       /* Descend in subdirectories. */
       if (depth == svn_depth_infinity
-          && info->kind == svn_kind_dir)
+          && info->kind == svn_node_dir)
         {
           SVN_ERR(get_dir_status(wb, local_abspath, TRUE,
                                  dir_repos_root_url, dir_repos_relpath,
@@ -1560,9 +1558,9 @@ hash_stash(void *baton,
 {
   apr_hash_t *stat_hash = baton;
   apr_pool_t *hash_pool = apr_hash_pool_get(stat_hash);
-  assert(! apr_hash_get(stat_hash, path, APR_HASH_KEY_STRING));
-  apr_hash_set(stat_hash, apr_pstrdup(hash_pool, path),
-               APR_HASH_KEY_STRING, svn_wc_dup_status3(status, hash_pool));
+  assert(! svn_hash_gets(stat_hash, path));
+  svn_hash_sets(stat_hash, apr_pstrdup(hash_pool, path),
+                svn_wc_dup_status3(status, hash_pool));
 
   return SVN_NO_ERROR;
 }
@@ -1621,7 +1619,7 @@ tweak_statushash(void *baton,
   pool = apr_hash_pool_get(statushash);
 
   /* Is PATH already a hash-key? */
-  statstruct = apr_hash_get(statushash, local_abspath, APR_HASH_KEY_STRING);
+  statstruct = svn_hash_gets(statushash, local_abspath);
 
   /* If not, make it so. */
   if (! statstruct)
@@ -1644,8 +1642,7 @@ tweak_statushash(void *baton,
       SVN_ERR(internal_status(&statstruct, db, local_abspath, pool,
                               scratch_pool));
       statstruct->repos_lock = repos_lock;
-      apr_hash_set(statushash, apr_pstrdup(pool, local_abspath),
-                   APR_HASH_KEY_STRING, statstruct);
+      svn_hash_sets(statushash, apr_pstrdup(pool, local_abspath), statstruct);
     }
 
   /* Merge a repos "delete" + "add" into a single "replace". */
@@ -1747,9 +1744,8 @@ find_dir_repos_relpath(const struct dir_
     {
       const char *repos_relpath;
       struct dir_baton *pb = db->parent_baton;
-      const svn_wc_status3_t *status = apr_hash_get(pb->statii,
-                                                    db->local_abspath,
-                                                    APR_HASH_KEY_STRING);
+      const svn_wc_status3_t *status = svn_hash_gets(pb->statii,
+                                                     db->local_abspath);
       /* Note that status->repos_relpath could be NULL in the case of a missing
        * directory, which means we need to recurse up another level to get
        * a useful relpath. */
@@ -1829,8 +1825,7 @@ make_dir_baton(void **dir_baton,
   /* Get the status for this path's children.  Of course, we only want
      to do this if the path is versioned as a directory. */
   if (pb)
-    status_in_parent = apr_hash_get(pb->statii, d->local_abspath,
-                                    APR_HASH_KEY_STRING);
+    status_in_parent = svn_hash_gets(pb->statii, d->local_abspath);
   else
     status_in_parent = eb->anchor_status;
 
@@ -1862,8 +1857,7 @@ make_dir_baton(void **dir_baton,
                              dir_pool));
 
       /* If we found a depth here, it should govern. */
-      this_dir_status = apr_hash_get(d->statii, d->local_abspath,
-                                     APR_HASH_KEY_STRING);
+      this_dir_status = svn_hash_gets(d->statii, d->local_abspath);
       if (this_dir_status && this_dir_status->versioned
           && (d->depth == svn_depth_unknown
               || d->depth > status_in_parent->depth))
@@ -2266,8 +2260,7 @@ close_directory(void *dir_baton,
       const svn_wc_status3_t *dir_status;
 
       /* See if the directory was deleted or replaced. */
-      dir_status = apr_hash_get(pb->statii, db->local_abspath,
-                                APR_HASH_KEY_STRING);
+      dir_status = svn_hash_gets(pb->statii, db->local_abspath);
       if (dir_status &&
           ((dir_status->repos_node_status == svn_wc_status_deleted)
            || (dir_status->repos_node_status == svn_wc_status_replaced)))
@@ -2283,7 +2276,7 @@ close_directory(void *dir_baton,
                                            eb->get_all))
         SVN_ERR((eb->status_func)(eb->status_baton, db->local_abspath,
                                   dir_status, scratch_pool));
-      apr_hash_set(pb->statii, db->local_abspath, APR_HASH_KEY_STRING, NULL);
+      svn_hash_sets(pb->statii, db->local_abspath, NULL);
     }
   else if (! pb)
     {
@@ -2293,8 +2286,7 @@ close_directory(void *dir_baton,
         {
           const svn_wc_status3_t *tgt_status;
 
-          tgt_status = apr_hash_get(db->statii, eb->target_abspath,
-                                    APR_HASH_KEY_STRING);
+          tgt_status = svn_hash_gets(db->statii, eb->target_abspath);
           if (tgt_status)
             {
               if (tgt_status->versioned
@@ -2469,10 +2461,9 @@ close_file(void *file_baton,
           const char *repos_relpath = svn_relpath_join(dir_repos_relpath,
                                                        fb->name, pool);
 
-          repos_lock = apr_hash_get(fb->edit_baton->wb.repos_locks,
-                                    svn_fspath__join("/", repos_relpath,
-                                                     pool),
-                                    APR_HASH_KEY_STRING);
+          repos_lock = svn_hash_gets(fb->edit_baton->wb.repos_locks,
+                                     svn_fspath__join("/", repos_relpath,
+                                                      pool));
         }
     }
   else
@@ -2747,7 +2738,7 @@ svn_wc__internal_walk_status(svn_wc__db_
     }
 
   if (info
-      && info->kind == svn_kind_dir
+      && info->kind == svn_node_dir
       && info->status != svn_wc__db_status_not_present
       && info->status != svn_wc__db_status_excluded
       && info->status != svn_wc__db_status_server_excluded)
@@ -2847,9 +2838,9 @@ svn_wc_get_default_ignores(apr_array_hea
                            apr_hash_t *config,
                            apr_pool_t *pool)
 {
-  svn_config_t *cfg = config ? apr_hash_get(config,
-                                            SVN_CONFIG_CATEGORY_CONFIG,
-                                            APR_HASH_KEY_STRING) : NULL;
+  svn_config_t *cfg = config
+                      ? svn_hash_gets(config, SVN_CONFIG_CATEGORY_CONFIG)
+                      : NULL;
   const char *val;
 
   /* Check the Subversion run-time configuration for global ignores.
@@ -2874,7 +2865,7 @@ internal_status(svn_wc_status3_t **statu
                 apr_pool_t *scratch_pool)
 {
   const svn_io_dirent2_t *dirent;
-  svn_kind_t node_kind;
+  svn_node_kind_t node_kind;
   const char *parent_repos_relpath;
   const char *parent_repos_root_url;
   const char *parent_repos_uuid;
@@ -2898,7 +2889,7 @@ internal_status(svn_wc_status3_t **statu
         return svn_error_trace(err);
 
       svn_error_clear(err);
-      node_kind = svn_kind_unknown;
+      node_kind = svn_node_unknown;
       /* Ensure conflicted is always set, but don't hide tree conflicts
          on 'hidden' nodes. */
       conflicted = FALSE;
@@ -2910,15 +2901,15 @@ internal_status(svn_wc_status3_t **statu
     SVN_ERR(stat_wc_dirent_case_sensitive(&dirent, db, local_abspath,
                                           scratch_pool, scratch_pool));
 
-  if (node_kind != svn_kind_unknown
+  if (node_kind != svn_node_unknown
       && (node_status == svn_wc__db_status_not_present
           || node_status == svn_wc__db_status_server_excluded
           || node_status == svn_wc__db_status_excluded))
     {
-      node_kind = svn_kind_unknown;
+      node_kind = svn_node_unknown;
     }
 
-  if (node_kind == svn_kind_unknown)
+  if (node_kind == svn_node_unknown)
     return svn_error_trace(assemble_unversioned(status,
                                                 db, local_abspath,
                                                 dirent, conflicted,

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/token-map.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/token-map.h?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/token-map.h (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/token-map.h Sat Mar 30 20:02:27 2013
@@ -34,10 +34,10 @@ extern "C" {
 #endif
 
 static const svn_token_map_t kind_map[] = {
-  { "file", svn_kind_file }, /* MAP_FILE */
-  { "dir", svn_kind_dir }, /* MAP_DIR */
-  { "symlink", svn_kind_symlink }, /* MAP_SYMLINK */
-  { "unknown", svn_kind_unknown }, /* MAP_UNKNOWN */
+  { "file", svn_node_file }, /* MAP_FILE */
+  { "dir", svn_node_dir }, /* MAP_DIR */
+  { "symlink", svn_node_symlink }, /* MAP_SYMLINK */
+  { "unknown", svn_node_unknown }, /* MAP_UNKNOWN */
   { NULL }
 };
 

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/translate.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/translate.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/translate.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/translate.c Sat Mar 30 20:02:27 2013
@@ -33,6 +33,7 @@
 #include "svn_types.h"
 #include "svn_string.h"
 #include "svn_dirent_uri.h"
+#include "svn_hash.h"
 #include "svn_path.h"
 #include "svn_error.h"
 #include "svn_subst.h"
@@ -365,7 +366,7 @@ svn_wc__sync_flags_with_props(svn_boolea
                               apr_pool_t *scratch_pool)
 {
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   svn_wc__db_lock_t *lock;
   apr_hash_t *props = NULL;
   svn_boolean_t had_props;
@@ -388,7 +389,7 @@ svn_wc__sync_flags_with_props(svn_boolea
      early-out for all other types.
 
      Also bail if there is no in-wc representation of the file. */
-  if (kind != svn_kind_file
+  if (kind != svn_node_file
       || (status != svn_wc__db_status_normal
           && status != svn_wc__db_status_added))
     return SVN_NO_ERROR;
@@ -407,7 +408,7 @@ svn_wc__sync_flags_with_props(svn_boolea
   /* Handle the read-write bit. */
   if (status != svn_wc__db_status_normal
       || props == NULL
-      || ! apr_hash_get(props, SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING)
+      || ! svn_hash_gets(props, SVN_PROP_NEEDS_LOCK)
       || lock)
     {
       SVN_ERR(svn_io_set_file_read_write(local_abspath, FALSE, scratch_pool));
@@ -427,8 +428,7 @@ svn_wc__sync_flags_with_props(svn_boolea
         pristine_props = NULL;
 
       if (pristine_props
-            && apr_hash_get(pristine_props,
-                            SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING) )
+            && svn_hash_gets(pristine_props, SVN_PROP_NEEDS_LOCK) )
             /*&& props
             && apr_hash_get(props, SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING) )*/
         SVN_ERR(svn_io_set_file_read_only(local_abspath, FALSE, scratch_pool));
@@ -438,7 +438,7 @@ svn_wc__sync_flags_with_props(svn_boolea
 #ifndef WIN32
 
   if (props == NULL
-      || ! apr_hash_get(props, SVN_PROP_EXECUTABLE, APR_HASH_KEY_STRING))
+      || ! svn_hash_gets(props, SVN_PROP_EXECUTABLE))
     {
       /* Turn off the execute bit */
       SVN_ERR(svn_io_set_file_executable(local_abspath, FALSE, FALSE,

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/tree_conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/tree_conflicts.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/tree_conflicts.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/tree_conflicts.c Sat Mar 30 20:02:27 2013
@@ -38,6 +38,8 @@
 
 /* ### this should move to a more general location...  */
 /* A map for svn_node_kind_t values. */
+/* FIXME: this mapping defines a different representation of
+          svn_node_unknown than the one defined in token-map.h */
 static const svn_token_map_t node_kind_map[] =
 {
   { "none", svn_node_none },

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/update_editor.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/update_editor.c Sat Mar 30 20:02:27 2013
@@ -275,11 +275,11 @@ remember_skipped_tree(struct edit_baton 
 {
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
-  apr_hash_set(eb->skipped_trees,
-               apr_pstrdup(eb->pool,
-                           svn_dirent_skip_ancestor(eb->wcroot_abspath,
-                                                    local_abspath)),
-               APR_HASH_KEY_STRING, (void*)1);
+  svn_hash_sets(eb->skipped_trees,
+                apr_pstrdup(eb->pool,
+                            svn_dirent_skip_ancestor(eb->wcroot_abspath,
+                                                     local_abspath)),
+                (void *)1);
 
   return SVN_NO_ERROR;
 }
@@ -1125,8 +1125,9 @@ path_join_under_root(const char **result
     {
       return svn_error_createf(
           SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
-          _("'%s' is not valid as filename in a working copy path"),
-          svn_dirent_local_style(add_path, pool));
+          _("'%s' is not valid as filename in directory '%s'"),
+          svn_dirent_local_style(add_path, pool),
+          svn_dirent_local_style(base_path, pool));
     }
 
   return SVN_NO_ERROR;
@@ -1171,7 +1172,7 @@ open_root(void *edit_baton,
   svn_error_t *err;
   svn_wc__db_status_t status;
   svn_wc__db_status_t base_status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   svn_boolean_t have_work;
 
   /* Note that something interesting is actually happening in this
@@ -1683,7 +1684,7 @@ delete_entry(const char *path,
   const char *base = svn_relpath_basename(path, NULL);
   const char *local_abspath;
   const char *repos_relpath;
-  svn_kind_t kind, base_kind;
+  svn_node_kind_t kind, base_kind;
   svn_revnum_t old_revision;
   svn_boolean_t conflicted;
   svn_boolean_t have_work;
@@ -1814,7 +1815,7 @@ delete_entry(const char *path,
     {
       SVN_ERR(check_tree_conflict(&tree_conflict, eb, local_abspath,
                                   status, TRUE,
-                                  (kind == svn_kind_dir)
+                                  (kind == svn_node_dir)
                                         ? svn_node_dir
                                         : svn_node_file,
                                   svn_wc_conflict_action_delete,
@@ -1833,8 +1834,8 @@ delete_entry(const char *path,
       if (!pb->deletion_conflicts)
         pb->deletion_conflicts = apr_hash_make(pb->pool);
 
-      apr_hash_set(pb->deletion_conflicts, apr_pstrdup(pb->pool, base),
-                   APR_HASH_KEY_STRING, tree_conflict);
+      svn_hash_sets(pb->deletion_conflicts, apr_pstrdup(pb->pool, base),
+                    tree_conflict);
 
       SVN_ERR(svn_wc__conflict_read_tree_conflict(&reason, NULL, NULL,
                                                   eb->db, local_abspath,
@@ -1871,7 +1872,7 @@ delete_entry(const char *path,
 
   SVN_ERR(complete_conflict(tree_conflict, eb, local_abspath, repos_relpath,
                             old_revision, NULL,
-                            (kind == svn_kind_dir)
+                            (kind == svn_node_dir)
                                 ? svn_node_dir
                                 : svn_node_file,
                             svn_node_none,
@@ -1927,7 +1928,7 @@ delete_entry(const char *path,
       if (pb->shadowed || pb->edit_obstructed)
         action = svn_wc_notify_update_shadowed_delete;
 
-      if (kind == svn_kind_dir)
+      if (kind == svn_node_dir)
         node_kind = svn_node_dir;
       else
         node_kind = svn_node_file;
@@ -1954,7 +1955,7 @@ add_directory(const char *path,
   struct dir_baton *db;
   svn_node_kind_t kind;
   svn_wc__db_status_t status;
-  svn_kind_t wc_kind;
+  svn_node_kind_t wc_kind;
   svn_boolean_t conflicted;
   svn_boolean_t versioned_locally_and_present;
   svn_skel_t *tree_conflict = NULL;
@@ -2010,13 +2011,13 @@ add_directory(const char *path,
         return svn_error_trace(err);
 
       svn_error_clear(err);
-      wc_kind = svn_kind_unknown;
+      wc_kind = svn_node_unknown;
       status = svn_wc__db_status_normal;
       conflicted = FALSE;
 
       versioned_locally_and_present = FALSE;
     }
-  else if (wc_kind == svn_kind_dir
+  else if (wc_kind == svn_node_dir
            && status == svn_wc__db_status_normal)
     {
       /* !! We found the root of a separate working copy obstructing the wc !!
@@ -2034,7 +2035,7 @@ add_directory(const char *path,
                                                    eb->repos_root,
                                                    eb->repos_uuid,
                                                    *eb->target_revision,
-                                                   svn_kind_file,
+                                                   svn_node_file,
                                                    NULL, NULL,
                                                    pool));
 
@@ -2048,8 +2049,8 @@ add_directory(const char *path,
       return SVN_NO_ERROR;
     }
   else if (status == svn_wc__db_status_normal
-           && (wc_kind == svn_kind_file
-               || wc_kind == svn_kind_symlink))
+           && (wc_kind == svn_node_file
+               || wc_kind == svn_node_symlink))
     {
       /* We found a file external occupating the place we need in BASE.
 
@@ -2071,7 +2072,7 @@ add_directory(const char *path,
 
       return SVN_NO_ERROR;
     }
-  else if (wc_kind == svn_kind_unknown)
+  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);
@@ -2080,8 +2081,7 @@ add_directory(const char *path,
   if (conflicted)
     {
       if (pb->deletion_conflicts)
-        tree_conflict = apr_hash_get(pb->deletion_conflicts, db->name,
-                                     APR_HASH_KEY_STRING);
+        tree_conflict = svn_hash_gets(pb->deletion_conflicts, db->name);
 
       if (tree_conflict)
         {
@@ -2144,7 +2144,7 @@ add_directory(const char *path,
                                                    eb->repos_root,
                                                    eb->repos_uuid,
                                                    *eb->target_revision,
-                                                   svn_kind_dir,
+                                                   svn_node_dir,
                                                    NULL, NULL,
                                                    pool));
 
@@ -2183,7 +2183,7 @@ add_directory(const char *path,
 
 
       /* Is there *something* that is not a dir? */
-      local_is_non_dir = (wc_kind != svn_kind_dir
+      local_is_non_dir = (wc_kind != svn_node_dir
                           && status != svn_wc__db_status_deleted);
 
       /* Do tree conflict checking if
@@ -2239,7 +2239,7 @@ add_directory(const char *path,
     SVN_ERR(complete_conflict(tree_conflict, eb, db->local_abspath,
                               db->old_repos_relpath, db->old_revision,
                               db->new_relpath,
-                              svn__node_kind_from_kind(wc_kind),
+                              wc_kind,
                               svn_node_dir,
                               db->pool, pool));
 
@@ -2307,7 +2307,7 @@ open_directory(const char *path,
   svn_boolean_t conflicted;
   svn_skel_t *tree_conflict = NULL;
   svn_wc__db_status_t status, base_status;
-  svn_kind_t wc_kind;
+  svn_node_kind_t wc_kind;
 
   SVN_ERR(make_dir_baton(&db, path, eb, pb, FALSE, pool));
   *child_baton = db;
@@ -2553,8 +2553,7 @@ close_directory(void *dir_baton,
         {
           const svn_prop_t *prop;
           prop = &APR_ARRAY_IDX(regular_prop_changes, i, svn_prop_t);
-          apr_hash_set(props_to_delete, prop->name,
-                       APR_HASH_KEY_STRING, NULL);
+          svn_hash_sets(props_to_delete, prop->name, NULL);
         }
 
       /* Add these props to the incoming propchanges (in
@@ -2589,8 +2588,7 @@ close_directory(void *dir_baton,
               const svn_string_t *new_val_s = change->value;
               const svn_string_t *old_val_s;
 
-              old_val_s = apr_hash_get(base_props, SVN_PROP_EXTERNALS,
-                                       APR_HASH_KEY_STRING);
+              old_val_s = svn_hash_gets(base_props, SVN_PROP_EXTERNALS);
 
               if ((new_val_s == NULL) && (old_val_s == NULL))
                 ; /* No value before, no value after... so do nothing. */
@@ -2647,8 +2645,7 @@ close_directory(void *dir_baton,
   /* Check if we should add some not-present markers before marking the
      directory complete (Issue #3569) */
   {
-    apr_hash_t *new_children = apr_hash_get(eb->dir_dirents, db->new_relpath,
-                                            APR_HASH_KEY_STRING);
+    apr_hash_t *new_children = svn_hash_gets(eb->dir_dirents, db->new_relpath);
 
     if (new_children != NULL)
       {
@@ -2664,7 +2661,7 @@ close_directory(void *dir_baton,
             const char *child_relpath;
             const svn_dirent_t *dirent;
             svn_wc__db_status_t status;
-            svn_kind_t child_kind;
+            svn_node_kind_t child_kind;
             svn_error_t *err;
 
             svn_pool_clear(iterpool);
@@ -2675,11 +2672,11 @@ close_directory(void *dir_baton,
 
             dirent = svn__apr_hash_index_val(hi);
             child_kind = (dirent->kind == svn_node_dir)
-                                        ? svn_kind_dir
-                                        : svn_kind_file;
+                                        ? svn_node_dir
+                                        : svn_node_file;
 
             if (db->ambient_depth < svn_depth_immediates
-                && child_kind == svn_kind_dir)
+                && child_kind == svn_node_dir)
               continue; /* We don't need the subdirs */
 
             /* ### We just check if there is some node in BASE at this path */
@@ -2750,7 +2747,7 @@ close_directory(void *dir_baton,
                                                        eb->repos_root,
                                                        eb->repos_uuid,
                                                        *eb->target_revision,
-                                                       svn_kind_file,
+                                                       svn_node_file,
                                                        NULL, NULL,
                                                        iterpool));
         }
@@ -2834,8 +2831,7 @@ close_directory(void *dir_baton,
       /* Any inherited props to be set set for this base node? */
       if (eb->wcroot_iprops)
         {
-          iprops = apr_hash_get(eb->wcroot_iprops, db->local_abspath,
-                                APR_HASH_KEY_STRING);
+          iprops = svn_hash_gets(eb->wcroot_iprops, db->local_abspath);
 
           /* close_edit may also update iprops for switched nodes, catching
              those for which close_directory is never called (e.g. a switch
@@ -2843,8 +2839,7 @@ close_directory(void *dir_baton,
              iprops from the hash so as not to set them again in
              close_edit. */
           if (iprops)
-            apr_hash_set(eb->wcroot_iprops, db->local_abspath,
-                         APR_HASH_KEY_STRING, NULL);
+            svn_hash_sets(eb->wcroot_iprops, db->local_abspath, NULL);
         }
 
       /* Update the BASE data for the directory and mark the directory
@@ -2921,7 +2916,7 @@ close_directory(void *dir_baton,
 /* Common code for 'absent_file' and 'absent_directory'. */
 static svn_error_t *
 absent_node(const char *path,
-            svn_kind_t absent_kind,
+            svn_node_kind_t absent_kind,
             void *parent_baton,
             apr_pool_t *pool)
 {
@@ -2932,7 +2927,7 @@ absent_node(const char *path,
   const char *local_abspath;
   svn_error_t *err;
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
 
   if (pb->skip_this)
     return SVN_NO_ERROR;
@@ -2957,11 +2952,11 @@ absent_node(const char *path,
 
       svn_error_clear(err);
       status = svn_wc__db_status_not_present;
-      kind = svn_kind_unknown;
+      kind = svn_node_unknown;
     }
 
   if (status == svn_wc__db_status_normal
-      && kind == svn_kind_dir)
+      && kind == svn_node_dir)
     {
       /* We found an obstructing working copy!
 
@@ -3027,7 +3022,7 @@ absent_file(const char *path,
             void *parent_baton,
             apr_pool_t *pool)
 {
-  return absent_node(path, svn_kind_file, parent_baton, pool);
+  return absent_node(path, svn_node_file, parent_baton, pool);
 }
 
 
@@ -3037,7 +3032,7 @@ absent_directory(const char *path,
                  void *parent_baton,
                  apr_pool_t *pool)
 {
-  return absent_node(path, svn_kind_dir, parent_baton, pool);
+  return absent_node(path, svn_node_dir, parent_baton, pool);
 }
 
 
@@ -3054,7 +3049,7 @@ add_file(const char *path,
   struct edit_baton *eb = pb->edit_baton;
   struct file_baton *fb;
   svn_node_kind_t kind = svn_node_none;
-  svn_kind_t wc_kind = svn_kind_unknown;
+  svn_node_kind_t wc_kind = svn_node_unknown;
   svn_wc__db_status_t status = svn_wc__db_status_normal;
   apr_pool_t *scratch_pool;
   svn_boolean_t conflicted = FALSE;
@@ -3103,12 +3098,12 @@ add_file(const char *path,
         return svn_error_trace(err);
 
       svn_error_clear(err);
-      wc_kind = svn_kind_unknown;
+      wc_kind = svn_node_unknown;
       conflicted = FALSE;
 
       versioned_locally_and_present = FALSE;
     }
-  else if (wc_kind == svn_kind_dir
+  else if (wc_kind == svn_node_dir
            && status == svn_wc__db_status_normal)
     {
       /* !! We found the root of a separate working copy obstructing the wc !!
@@ -3119,8 +3114,8 @@ add_file(const char *path,
          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. */
-      apr_hash_set(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
-                   APR_HASH_KEY_STRING, (void*)1);
+      svn_hash_sets(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
+                    (void *)1);
 
       SVN_ERR(remember_skipped_tree(eb, fb->local_abspath, pool));
       fb->skip_this = TRUE;
@@ -3134,8 +3129,8 @@ add_file(const char *path,
       return SVN_NO_ERROR;
     }
   else if (status == svn_wc__db_status_normal
-           && (wc_kind == svn_kind_file
-               || wc_kind == svn_kind_symlink))
+           && (wc_kind == svn_node_file
+               || wc_kind == svn_node_symlink))
     {
       /* We found a file external occupating the place we need in BASE.
 
@@ -3158,7 +3153,7 @@ add_file(const char *path,
 
       return SVN_NO_ERROR;
     }
-  else if (wc_kind == svn_kind_unknown)
+  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);
@@ -3170,8 +3165,7 @@ add_file(const char *path,
   else if (conflicted)
     {
       if (pb->deletion_conflicts)
-        tree_conflict = apr_hash_get(pb->deletion_conflicts, fb->name,
-                                     APR_HASH_KEY_STRING);
+        tree_conflict = svn_hash_gets(pb->deletion_conflicts, fb->name);
 
       if (tree_conflict)
         {
@@ -3228,8 +3222,8 @@ 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.
        */
-      apr_hash_set(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
-                   APR_HASH_KEY_STRING, (void*)1);
+      svn_hash_sets(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
+                    (void *)1);
 
       do_notification(eb, fb->local_abspath, svn_node_unknown,
                       svn_wc_notify_skip_conflicted, scratch_pool);
@@ -3269,8 +3263,8 @@ add_file(const char *path,
                                          scratch_pool, scratch_pool));
 
       /* Is there something that is a file? */
-      local_is_file = (wc_kind == svn_kind_file
-                       || wc_kind == svn_kind_symlink);
+      local_is_file = (wc_kind == svn_node_file
+                       || wc_kind == svn_node_symlink);
 
       /* Do tree conflict checking if
        *  - if there is a local copy.
@@ -3329,8 +3323,8 @@ add_file(const char *path,
       || *eb->target_basename == '\0'
       || (strcmp(fb->local_abspath, eb->target_abspath) != 0))
     {
-      apr_hash_set(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
-                   APR_HASH_KEY_STRING, (void*)1);
+      svn_hash_sets(pb->not_present_files, apr_pstrdup(pb->pool, fb->name),
+                    (void *)1);
     }
 
   if (tree_conflict != NULL)
@@ -3341,7 +3335,7 @@ add_file(const char *path,
                                 fb->old_repos_relpath,
                                 fb->old_revision,
                                 fb->new_relpath,
-                                svn__node_kind_from_kind(wc_kind),
+                                wc_kind,
                                 svn_node_file,
                                 fb->pool, scratch_pool));
 
@@ -3375,7 +3369,7 @@ open_file(const char *path,
   svn_boolean_t conflicted;
   svn_boolean_t have_work;
   svn_wc__db_status_t status;
-  svn_kind_t wc_kind;
+  svn_node_kind_t wc_kind;
   svn_skel_t *tree_conflict = NULL;
 
   /* the file_pool can stick around for a *long* time, so we want to use
@@ -3676,8 +3670,7 @@ change_file_prop(void *file_baton,
                                             scratch_pool, scratch_pool));
 
           was_symlink = ((props
-                              && apr_hash_get(props, SVN_PROP_SPECIAL,
-                                              APR_HASH_KEY_STRING) != NULL)
+                              && svn_hash_gets(props, SVN_PROP_SPECIAL) != NULL)
                               ? svn_tristate_true
                               : svn_tristate_false);
         }
@@ -4439,8 +4432,7 @@ close_file(void *file_baton,
   /* Any inherited props to be set set for this base node? */
   if (eb->wcroot_iprops)
     {
-      iprops = apr_hash_get(eb->wcroot_iprops, fb->local_abspath,
-                            APR_HASH_KEY_STRING);
+      iprops = svn_hash_gets(eb->wcroot_iprops, fb->local_abspath);
 
       /* close_edit may also update iprops for switched nodes, catching
          those for which close_directory is never called (e.g. a switch
@@ -4448,8 +4440,7 @@ close_file(void *file_baton,
          iprops from the hash so as not to set them again in
          close_edit. */
       if (iprops)
-        apr_hash_set(eb->wcroot_iprops, fb->local_abspath,
-                     APR_HASH_KEY_STRING, NULL);
+        svn_hash_sets(eb->wcroot_iprops, fb->local_abspath, NULL);
     }
 
   SVN_ERR(svn_wc__db_base_add_file(eb->db, fb->local_abspath,
@@ -4489,8 +4480,7 @@ close_file(void *file_baton,
 
   /* Deal with the WORKING tree, based on updates to the BASE tree.  */
 
-  apr_hash_set(fb->dir_baton->not_present_files, fb->name,
-               APR_HASH_KEY_STRING, NULL);
+  svn_hash_sets(fb->dir_baton->not_present_files, fb->name, NULL);
 
   /* Send a notification to the callback function.  (Skip notifications
      about files which were already notified for another reason.) */
@@ -4807,7 +4797,7 @@ make_editor(svn_revnum_t *target_revisio
          depth. In this case the update won't describe additions that would
          have been reported if we updated at the ambient depth. */
       svn_error_t *err;
-      svn_kind_t dir_kind;
+      svn_node_kind_t dir_kind;
       svn_wc__db_status_t dir_status;
       const char *dir_repos_relpath;
       svn_depth_t dir_depth;
@@ -4821,7 +4811,7 @@ make_editor(svn_revnum_t *target_revisio
                                      scratch_pool, scratch_pool);
 
       if (!err
-          && dir_kind == svn_kind_dir
+          && dir_kind == svn_node_dir
           && dir_status == svn_wc__db_status_normal)
         {
           if (dir_depth > depth)
@@ -4837,10 +4827,9 @@ make_editor(svn_revnum_t *target_revisio
                                          edit_pool, scratch_pool));
 
               if (dirents != NULL && apr_hash_count(dirents))
-                apr_hash_set(eb->dir_dirents,
-                             apr_pstrdup(edit_pool, dir_repos_relpath),
-                             APR_HASH_KEY_STRING,
-                             dirents);
+                svn_hash_sets(eb->dir_dirents,
+                              apr_pstrdup(edit_pool, dir_repos_relpath),
+                              dirents);
             }
 
           if (depth == svn_depth_immediates)
@@ -4877,7 +4866,7 @@ make_editor(svn_revnum_t *target_revisio
                                                    db, child_abspath,
                                                    iterpool, iterpool));
 
-                  if (dir_kind == svn_kind_dir
+                  if (dir_kind == svn_node_dir
                       && dir_status == svn_wc__db_status_normal
                       && dir_depth > svn_depth_empty)
                     {
@@ -4894,10 +4883,10 @@ make_editor(svn_revnum_t *target_revisio
                                                  edit_pool, iterpool));
 
                       if (dirents != NULL && apr_hash_count(dirents))
-                        apr_hash_set(eb->dir_dirents,
-                                     apr_pstrdup(edit_pool, dir_repos_relpath),
-                                     APR_HASH_KEY_STRING,
-                                     dirents);
+                        svn_hash_sets(eb->dir_dirents,
+                                      apr_pstrdup(edit_pool,
+                                                  dir_repos_relpath),
+                                      dirents);
                     }
                 }
             }
@@ -5072,7 +5061,7 @@ svn_wc_add_repos_file4(svn_wc_context_t 
   svn_wc__db_t *db = wc_ctx->db;
   const char *dir_abspath = svn_dirent_dirname(local_abspath, scratch_pool);
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   const char *tmp_text_base_abspath;
   svn_checksum_t *new_text_base_md5_checksum;
   svn_checksum_t *new_text_base_sha1_checksum;
@@ -5143,7 +5132,7 @@ svn_wc_add_repos_file4(svn_wc_context_t 
                                  svn_dirent_local_style(local_abspath,
                                                         scratch_pool));
     }
-  if (kind != svn_kind_dir)
+  if (kind != svn_node_dir)
     return svn_error_createf(SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
                              _("Can't schedule an addition of '%s'"
                                " below a not-directory node"),
@@ -5342,7 +5331,7 @@ svn_wc__complete_directory_add(svn_wc_co
                                apr_pool_t *scratch_pool)
 {
   svn_wc__db_status_t status;
-  svn_kind_t kind;
+  svn_node_kind_t kind;
   const char *original_repos_relpath;
   const char *original_root_url;
   const char *original_uuid;
@@ -5364,7 +5353,7 @@ svn_wc__complete_directory_add(svn_wc_co
                                scratch_pool, scratch_pool));
 
   if (status != svn_wc__db_status_added
-      || kind != svn_kind_dir
+      || kind != svn_node_dir
       || had_props
       || props_mod
       || !original_repos_relpath)

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/upgrade.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/upgrade.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/upgrade.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/upgrade.c Sat Mar 30 20:02:27 2013
@@ -151,7 +151,7 @@ read_one_proplist(apr_hash_t *all_wcprop
 
   proplist = apr_hash_make(result_pool);
   SVN_ERR(svn_hash_read2(proplist, stream, SVN_HASH_TERMINATOR, result_pool));
-  apr_hash_set(all_wcprops, name, APR_HASH_KEY_STRING, proplist);
+  svn_hash_sets(all_wcprops, name, proplist);
 
   return SVN_NO_ERROR;
 }
@@ -180,8 +180,7 @@ read_many_wcprops(apr_hash_t **all_wcpro
                                        scratch_pool);
   SVN_ERR(read_propfile(&wcprops, propfile_abspath, result_pool, iterpool));
   if (wcprops != NULL)
-    apr_hash_set(*all_wcprops, SVN_WC_ENTRY_THIS_DIR, APR_HASH_KEY_STRING,
-                 wcprops);
+    svn_hash_sets(*all_wcprops, SVN_WC_ENTRY_THIS_DIR, wcprops);
 
   props_dir_abspath = svn_wc__adm_child(dir_abspath, WCPROPS_SUBDIR_FOR_FILES,
                                         scratch_pool);
@@ -203,9 +202,7 @@ read_many_wcprops(apr_hash_t **all_wcpro
       SVN_ERR(read_propfile(&wcprops, propfile_abspath,
                             result_pool, iterpool));
       SVN_ERR_ASSERT(wcprops != NULL);
-      apr_hash_set(*all_wcprops,
-                   apr_pstrdup(result_pool, name), APR_HASH_KEY_STRING,
-                   wcprops);
+      svn_hash_sets(*all_wcprops, apr_pstrdup(result_pool, name), wcprops);
     }
 
   svn_pool_destroy(iterpool);
@@ -701,9 +698,9 @@ read_tree_conflicts(apr_hash_t **conflic
       SVN_ERR(svn_wc__deserialize_conflict(&conflict, skel, dir_path,
                                            pool, iterpool));
       if (conflict != NULL)
-        apr_hash_set(*conflicts, svn_dirent_basename(conflict->local_abspath,
-                                                     pool),
-                     APR_HASH_KEY_STRING, conflict);
+        svn_hash_sets(*conflicts,
+                      svn_dirent_basename(conflict->local_abspath, pool),
+                      conflict);
     }
   svn_pool_destroy(iterpool);
 
@@ -1121,16 +1118,14 @@ migrate_text_bases(apr_hash_t **text_bas
 
         /* Create a new info struct for this versioned file, or fill in the
          * existing one if this is the second text-base we've found for it. */
-        info = apr_hash_get(*text_bases_info, versioned_file_name,
-                            APR_HASH_KEY_STRING);
+        info = svn_hash_gets(*text_bases_info, versioned_file_name);
         if (info == NULL)
           info = apr_pcalloc(result_pool, sizeof (*info));
         file_info = (is_revert_base ? &info->revert_base : &info->normal_base);
 
         file_info->sha1_checksum = svn_checksum_dup(sha1_checksum, result_pool);
         file_info->md5_checksum = svn_checksum_dup(md5_checksum, result_pool);
-        apr_hash_set(*text_bases_info, versioned_file_name, APR_HASH_KEY_STRING,
-                     info);
+        svn_hash_sets(*text_bases_info, versioned_file_name, info);
       }
     }
 
@@ -1710,21 +1705,20 @@ upgrade_to_wcng(void **dir_baton,
   SVN_ERR(svn_wc__read_entries_old(&entries, dir_abspath,
                                    scratch_pool, scratch_pool));
 
-  this_dir = apr_hash_get(entries, SVN_WC_ENTRY_THIS_DIR, APR_HASH_KEY_STRING);
+  this_dir = svn_hash_gets(entries, SVN_WC_ENTRY_THIS_DIR);
   SVN_ERR(ensure_repos_info(this_dir, dir_abspath,
                             repos_info_func, repos_info_baton,
                             repos_cache,
                             scratch_pool, scratch_pool));
 
   /* Cache repos UUID pairs for when a subdir doesn't have this information */
-  if (!apr_hash_get(repos_cache, this_dir->repos, APR_HASH_KEY_STRING))
+  if (!svn_hash_gets(repos_cache, this_dir->repos))
     {
       apr_pool_t *hash_pool = apr_hash_pool_get(repos_cache);
 
-      apr_hash_set(repos_cache,
-                   apr_pstrdup(hash_pool, this_dir->repos),
-                   APR_HASH_KEY_STRING,
-                   apr_pstrdup(hash_pool, this_dir->uuid));
+      svn_hash_sets(repos_cache,
+                    apr_pstrdup(hash_pool, this_dir->repos),
+                    apr_pstrdup(hash_pool, this_dir->uuid));
     }
 
   old_wcroot_abspath = svn_dirent_get_longest_ancestor(dir_abspath,
@@ -2056,7 +2050,7 @@ is_old_wcroot(const char *local_abspath,
       return SVN_NO_ERROR;
     }
 
-  entry = apr_hash_get(entries, name, APR_HASH_KEY_STRING);
+  entry = svn_hash_gets(entries, name);
   if (!entry
       || entry->absent
       || (entry->deleted && entry->schedule != svn_wc_schedule_add)
@@ -2076,7 +2070,7 @@ is_old_wcroot(const char *local_abspath,
           parent_abspath = svn_dirent_join(parent_abspath, name, scratch_pool);
           break;
         }
-      entry = apr_hash_get(entries, name, APR_HASH_KEY_STRING);
+      entry = svn_hash_gets(entries, name);
       if (!entry
           || entry->absent
           || (entry->deleted && entry->schedule != svn_wc_schedule_add)
@@ -2196,18 +2190,16 @@ svn_wc_upgrade(svn_wc_context_t *wc_ctx,
   SVN_ERR(svn_wc__read_entries_old(&entries, local_abspath,
                                    scratch_pool, scratch_pool));
 
-  this_dir = apr_hash_get(entries, SVN_WC_ENTRY_THIS_DIR,
-                          APR_HASH_KEY_STRING);
+  this_dir = svn_hash_gets(entries, SVN_WC_ENTRY_THIS_DIR);
   SVN_ERR(ensure_repos_info(this_dir, local_abspath, repos_info_func,
                             repos_info_baton, repos_cache,
                             scratch_pool, scratch_pool));
 
   /* Cache repos UUID pairs for when a subdir doesn't have this information */
-  if (!apr_hash_get(repos_cache, this_dir->repos, APR_HASH_KEY_STRING))
-    apr_hash_set(repos_cache,
-                 apr_pstrdup(scratch_pool, this_dir->repos),
-                 APR_HASH_KEY_STRING,
-                 apr_pstrdup(scratch_pool, this_dir->uuid));
+  if (!svn_hash_gets(repos_cache, this_dir->repos))
+    svn_hash_sets(repos_cache,
+                  apr_pstrdup(scratch_pool, this_dir->repos),
+                  apr_pstrdup(scratch_pool, this_dir->uuid));
 
   /* Create the new DB in the temporary root wc/.svn/tmp/wcng/.svn */
   data.root_abspath = svn_dirent_join(svn_wc__adm_child(local_abspath, "tmp",
@@ -2302,19 +2294,19 @@ svn_wc__upgrade_add_external_info(svn_wc
                                   svn_revnum_t def_revision,
                                   apr_pool_t *scratch_pool)
 {
-  svn_kind_t db_kind;
+  svn_node_kind_t db_kind;
   switch (kind)
     {
       case svn_node_dir:
-        db_kind = svn_kind_dir;
+        db_kind = svn_node_dir;
         break;
 
       case svn_node_file:
-        db_kind = svn_kind_file;
+        db_kind = svn_node_file;
         break;
 
       case svn_node_unknown:
-        db_kind = svn_kind_unknown;
+        db_kind = svn_node_unknown;
         break;
 
       default:

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/util.c?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/util.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/util.c Sat Mar 30 20:02:27 2013
@@ -542,7 +542,7 @@ svn_wc__status2_from_3(svn_wc_status2_t 
 
 
 svn_error_t *
-svn_wc__fetch_kind_func(svn_kind_t *kind,
+svn_wc__fetch_kind_func(svn_node_kind_t *kind,
                         void *baton,
                         const char *path,
                         svn_revnum_t base_revision,

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/wc-queries.sql?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/wc-queries.sql Sat Mar 30 20:02:27 2013
@@ -919,6 +919,27 @@ INSERT OR REPLACE INTO nodes (
     parent_relpath, presence, kind)
 VALUES(?1, ?2, ?3, ?4, MAP_BASE_DELETED, ?5)
 
+-- STMT_DELETE_NO_LOWER_LAYER
+DELETE FROM nodes
+ WHERE wc_id = ?1
+   AND (local_relpath = ?2 OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
+   AND op_depth = ?3
+   AND NOT EXISTS (SELECT 1 FROM nodes n
+                    WHERE n.wc_id = ?1
+                    AND n.local_relpath = nodes.local_relpath
+                    AND n.op_depth = ?4
+                    AND n.presence IN (MAP_NORMAL, MAP_INCOMPLETE))
+
+-- STMT_REPLACE_WITH_BASE_DELETED
+INSERT OR REPLACE INTO nodes (wc_id, local_relpath, op_depth, parent_relpath,
+                              kind, moved_to, presence)
+SELECT wc_id, local_relpath, op_depth, parent_relpath,
+       kind, moved_to, MAP_BASE_DELETED
+  FROM nodes
+ WHERE wc_id = ?1
+   AND (local_relpath = ?2 OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
+   AND op_depth = ?3
+
 /* If this query is updated, STMT_INSERT_DELETE_LIST should too. */
 -- STMT_INSERT_DELETE_FROM_NODE_RECURSIVE
 INSERT INTO nodes (
@@ -931,6 +952,7 @@ WHERE wc_id = ?1
        OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
   AND op_depth = ?3
   AND presence NOT IN (MAP_BASE_DELETED, MAP_NOT_PRESENT, MAP_EXCLUDED, MAP_SERVER_EXCLUDED)
+  AND file_external IS NULL
 
 -- STMT_INSERT_WORKING_NODE_FROM_BASE_COPY
 INSERT INTO nodes (
@@ -1222,10 +1244,15 @@ INSERT INTO target_prop_cache(local_relp
                    AND a.local_relpath = n.local_relpath),
                n.properties)
    FROM targets_list AS t
-   JOIN nodes_current AS n ON t.wc_id= n.wc_id
-                          AND t.local_relpath = n.local_relpath
+   JOIN nodes AS n
+     ON n.wc_id = ?1
+    AND n.local_relpath = t.local_relpath
+    AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3
+                      WHERE n3.wc_id = ?1
+                        AND n3.local_relpath = t.local_relpath)
   WHERE t.wc_id = ?1
     AND (presence=MAP_NORMAL OR presence=MAP_INCOMPLETE)
+  ORDER BY t.local_relpath
 
 -- STMT_CACHE_TARGET_PRISTINE_PROPS
 INSERT INTO target_prop_cache(local_relpath, kind, properties)
@@ -1239,12 +1266,17 @@ INSERT INTO target_prop_cache(local_relp
                  ORDER BY p.op_depth DESC /* LIMIT 1 */)
           ELSE properties END
   FROM targets_list AS t
-  JOIN nodes_current AS n ON t.wc_id= n.wc_id
-                          AND t.local_relpath = n.local_relpath
+  JOIN nodes AS n
+    ON n.wc_id = ?1
+   AND n.local_relpath = t.local_relpath
+   AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3
+                     WHERE n3.wc_id = ?1
+                       AND n3.local_relpath = t.local_relpath)
   WHERE t.wc_id = ?1
     AND (presence = MAP_NORMAL
          OR presence = MAP_INCOMPLETE
          OR presence = MAP_BASE_DELETED)
+  ORDER BY t.local_relpath
 
 -- STMT_SELECT_ALL_TARGET_PROP_CACHE
 SELECT local_relpath, properties FROM target_prop_cache
@@ -1368,6 +1400,7 @@ WHERE wc_id = ?1
                   WHERE s.wc_id = ?1
                     AND s.local_relpath = n.local_relpath)
   AND presence NOT IN (MAP_BASE_DELETED, MAP_NOT_PRESENT, MAP_EXCLUDED, MAP_SERVER_EXCLUDED)
+  AND file_external IS NULL
 
 -- STMT_SELECT_DELETE_LIST
 SELECT local_relpath FROM delete_list

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/wc.h?rev=1462850&r1=1462849&r2=1462850&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/wc.h (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/wc.h Sat Mar 30 20:02:27 2013
@@ -388,10 +388,12 @@ svn_wc__internal_file_modified_p(svn_boo
                                  apr_pool_t *scratch_pool);
 
 
-/* Prepare to merge a file content change into the working copy.  This
-   does not merge properties; see svn_wc__merge_props() for that.  This
-   does not change the working file on disk; it returns work items that
-   will replace the working file on disk when they are run.
+/* Prepare to merge a file content change into the working copy.
+
+   This does not merge properties; see svn_wc__merge_props() for that.
+   This does not necessarily change the file TARGET_ABSPATH on disk; it
+   may instead return work items that will replace the file on disk when
+   they are run.  ### Can we be more consistent about this?
 
    Merge the difference between LEFT_ABSPATH and RIGHT_ABSPATH into
    TARGET_ABSPATH.
@@ -740,7 +742,7 @@ struct svn_wc__shim_fetch_baton_t
 
 /* Using a BATON of struct shim_fetch_baton, return KIND for PATH. */
 svn_error_t *
-svn_wc__fetch_kind_func(svn_kind_t *kind,
+svn_wc__fetch_kind_func(svn_node_kind_t *kind,
                         void *baton,
                         const char *path,
                         svn_revnum_t base_revision,