You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/10/13 16:30:10 UTC

svn commit: r1182877 [5/5] - in /subversion/branches/fs-py: ./ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/tigris/subversion/javahl/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subversion/include/ subversion...

Modified: subversion/branches/fs-py/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_wc/wc_db.c?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/fs-py/subversion/libsvn_wc/wc_db.c Thu Oct 13 14:30:07 2011
@@ -142,7 +142,7 @@ apr_int64_t svn_wc__db_op_depth_for_upgr
 typedef struct insert_base_baton_t {
   /* common to all insertions into BASE */
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   apr_int64_t repos_id;
   const char *repos_relpath;
   svn_revnum_t revision;
@@ -192,7 +192,7 @@ typedef struct insert_base_baton_t {
 typedef struct insert_working_baton_t {
   /* common to all insertions into WORKING (including NODE_DATA) */
   svn_wc__db_status_t presence;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   apr_int64_t op_depth;
 
   /* common to all "normal" presence insertions */
@@ -226,7 +226,7 @@ typedef struct insert_working_baton_t {
 
 typedef struct insert_external_baton_t {
   /* common to all insertions into EXTERNALS */
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_wc__db_status_t presence;
 
   /* The repository of the external */
@@ -274,10 +274,10 @@ typedef struct insert_external_baton_t {
 
 
 static const svn_token_map_t kind_map[] = {
-  { "file", svn_wc__db_kind_file },
-  { "dir", svn_wc__db_kind_dir },
-  { "symlink", svn_wc__db_kind_symlink },
-  { "unknown", svn_wc__db_kind_unknown },
+  { "file", svn_kind_file },
+  { "dir", svn_kind_dir },
+  { "symlink", svn_kind_symlink },
+  { "unknown", svn_kind_unknown },
   { NULL }
 };
 
@@ -329,7 +329,7 @@ db_read_pristine_props(apr_hash_t **prop
 
 static svn_error_t *
 read_info(svn_wc__db_status_t *status,
-          svn_wc__db_kind_t *kind,
+          svn_kind_t *kind,
           svn_revnum_t *revision,
           const char **repos_relpath,
           apr_int64_t *repos_id,
@@ -830,17 +830,17 @@ insert_base_node(void *baton,
                             pibb->repos_relpath,
                             pibb->revision,
                             presence_map, pibb->status, /* 8 */
-                            (pibb->kind == svn_wc__db_kind_dir) ? /* 9 */
+                            (pibb->kind == svn_kind_dir) ? /* 9 */
                                svn_depth_to_word(pibb->depth) : NULL,
                             kind_map, pibb->kind, /* 10 */
                             pibb->changed_rev,    /* 11 */
                             pibb->changed_date,   /* 12 */
                             pibb->changed_author, /* 13 */
-                            (pibb->kind == svn_wc__db_kind_symlink) ?
+                            (pibb->kind == svn_kind_symlink) ?
                                 pibb->target : NULL, /* 19 */
                             NULL /* 20 */,
                             moved_to_relpath /* 21 */));
-  if (pibb->kind == svn_wc__db_kind_file)
+  if (pibb->kind == svn_kind_file)
     {
       SVN_ERR(svn_sqlite__bind_checksum(stmt, 14, pibb->checksum,
                                         scratch_pool));
@@ -886,7 +886,7 @@ insert_base_node(void *baton,
                                wcroot->sdb, scratch_pool));
     }
 
-  if (pibb->kind == svn_wc__db_kind_dir && pibb->children)
+  if (pibb->kind == svn_kind_dir && pibb->children)
     SVN_ERR(insert_incomplete_children(wcroot->sdb, wcroot->wc_id,
                                        local_relpath,
                                        repos_id,
@@ -1023,18 +1023,18 @@ insert_working_node(void *baton,
                 piwb->op_depth,
                 parent_relpath,
                 presence_map, piwb->presence,
-                (piwb->kind == svn_wc__db_kind_dir)
+                (piwb->kind == svn_kind_dir)
                             ? svn_depth_to_word(piwb->depth) : NULL,
                 kind_map, piwb->kind,
                 piwb->changed_rev,
                 piwb->changed_date,
                 piwb->changed_author,
                 /* Note: incomplete nodes may have a NULL target.  */
-                (piwb->kind == svn_wc__db_kind_symlink)
+                (piwb->kind == svn_kind_symlink)
                             ? piwb->target : NULL,
                 (apr_int64_t)piwb->moved_here));
 
-  if (piwb->kind == svn_wc__db_kind_file)
+  if (piwb->kind == svn_kind_file)
     {
       SVN_ERR(svn_sqlite__bind_checksum(stmt, 14, piwb->checksum,
                                         scratch_pool));
@@ -1055,7 +1055,7 @@ insert_working_node(void *baton,
      The children are part of the same op and so have the same op_depth.
      (The only time we'd want a different depth is during a recursive
      simple add, but we never insert children here during a simple add.) */
-  if (piwb->kind == svn_wc__db_kind_dir && piwb->children)
+  if (piwb->kind == svn_kind_dir && piwb->children)
     SVN_ERR(insert_incomplete_children(wcroot->sdb, wcroot->wc_id,
                                        local_relpath,
                                        INVALID_REPOS_ID /* inherit repos_id */,
@@ -1065,7 +1065,7 @@ insert_working_node(void *baton,
                                        piwb->op_depth,
                                        scratch_pool));
 
-  if (piwb->kind == svn_wc__db_kind_dir)
+  if (piwb->kind == svn_kind_dir)
     {
       SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                         STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST));
@@ -1463,7 +1463,7 @@ svn_wc__db_init(svn_wc__db_t *db,
     ibb.status = svn_wc__db_status_incomplete;
   else
     ibb.status = svn_wc__db_status_normal;
-  ibb.kind = svn_wc__db_kind_dir;
+  ibb.kind = svn_kind_dir;
   ibb.repos_id = repos_id;
   ibb.repos_relpath = repos_relpath;
   ibb.revision = initial_rev;
@@ -1613,7 +1613,7 @@ svn_wc__db_base_add_directory(svn_wc__db
   ibb.repos_uuid = repos_uuid;
 
   ibb.status = svn_wc__db_status_normal;
-  ibb.kind = svn_wc__db_kind_dir;
+  ibb.kind = svn_kind_dir;
   ibb.repos_relpath = repos_relpath;
   ibb.revision = revision;
 
@@ -1694,7 +1694,7 @@ svn_wc__db_base_add_file(svn_wc__db_t *d
   ibb.repos_uuid = repos_uuid;
 
   ibb.status = svn_wc__db_status_normal;
-  ibb.kind = svn_wc__db_kind_file;
+  ibb.kind = svn_kind_file;
   ibb.repos_relpath = repos_relpath;
   ibb.revision = revision;
 
@@ -1773,7 +1773,7 @@ svn_wc__db_base_add_symlink(svn_wc__db_t
   ibb.repos_uuid = repos_uuid;
 
   ibb.status = svn_wc__db_status_normal;
-  ibb.kind = svn_wc__db_kind_symlink;
+  ibb.kind = svn_kind_symlink;
   ibb.repos_relpath = repos_relpath;
   ibb.revision = revision;
 
@@ -1812,7 +1812,7 @@ add_excluded_or_not_present_node(svn_wc_
                                  const char *repos_root_url,
                                  const char *repos_uuid,
                                  svn_revnum_t revision,
-                                 svn_wc__db_kind_t kind,
+                                 svn_kind_t kind,
                                  svn_wc__db_status_t status,
                                  const svn_skel_t *conflict,
                                  const svn_skel_t *work_items,
@@ -1884,7 +1884,7 @@ svn_wc__db_base_add_excluded_node(svn_wc
                                   const char *repos_root_url,
                                   const char *repos_uuid,
                                   svn_revnum_t revision,
-                                  svn_wc__db_kind_t kind,
+                                  svn_kind_t kind,
                                   svn_wc__db_status_t status,
                                   const svn_skel_t *conflict,
                                   const svn_skel_t *work_items,
@@ -1906,7 +1906,7 @@ svn_wc__db_base_add_not_present_node(svn
                                      const char *repos_root_url,
                                      const char *repos_uuid,
                                      svn_revnum_t revision,
-                                     svn_wc__db_kind_t kind,
+                                     svn_kind_t kind,
                                      const svn_skel_t *conflict,
                                      const svn_skel_t *work_items,
                                      apr_pool_t *scratch_pool)
@@ -1983,7 +1983,7 @@ svn_wc__db_base_remove(svn_wc__db_t *db,
    DB+LOCAL_ABSPATH and outputting REPOS_ID instead of URL+UUID. */
 static svn_error_t *
 base_get_info(svn_wc__db_status_t *status,
-              svn_wc__db_kind_t *kind,
+              svn_kind_t *kind,
               svn_revnum_t *revision,
               const char **repos_relpath,
               apr_int64_t *repos_id,
@@ -2013,7 +2013,7 @@ base_get_info(svn_wc__db_status_t *statu
 
   if (have_row)
     {
-      svn_wc__db_kind_t node_kind = svn_sqlite__column_token(stmt, 3,
+      svn_kind_t node_kind = svn_sqlite__column_token(stmt, 3,
                                                              kind_map);
 
       if (kind)
@@ -2047,7 +2047,7 @@ base_get_info(svn_wc__db_status_t *statu
         }
       if (depth)
         {
-          if (node_kind != svn_wc__db_kind_dir)
+          if (node_kind != svn_kind_dir)
             {
               *depth = svn_depth_unknown;
             }
@@ -2063,7 +2063,7 @@ base_get_info(svn_wc__db_status_t *statu
         }
       if (checksum)
         {
-          if (node_kind != svn_wc__db_kind_file)
+          if (node_kind != svn_kind_file)
             {
               *checksum = NULL;
             }
@@ -2081,7 +2081,7 @@ base_get_info(svn_wc__db_status_t *statu
         }
       if (target)
         {
-          if (node_kind != svn_wc__db_kind_symlink)
+          if (node_kind != svn_kind_symlink)
             *target = NULL;
           else
             *target = svn_sqlite__column_text(stmt, 11, result_pool);
@@ -2110,7 +2110,7 @@ base_get_info(svn_wc__db_status_t *statu
 
 svn_error_t *
 svn_wc__db_base_get_info(svn_wc__db_status_t *status,
-                         svn_wc__db_kind_t *kind,
+                         svn_kind_t *kind,
                          svn_revnum_t *revision,
                          const char **repos_relpath,
                          const char **repos_root_url,
@@ -2362,7 +2362,7 @@ svn_wc__db_base_clear_dav_cache_recursiv
    DB+LOCAL_ABSPATH and outputting REPOS_ID instead of URL+UUID. */
 static svn_error_t *
 depth_get_info(svn_wc__db_status_t *status,
-                svn_wc__db_kind_t *kind,
+                svn_kind_t *kind,
                 svn_revnum_t *revision,
                 const char **repos_relpath,
                 apr_int64_t *repos_id,
@@ -2391,7 +2391,7 @@ depth_get_info(svn_wc__db_status_t *stat
 
   if (have_row)
     {
-      svn_wc__db_kind_t node_kind = svn_sqlite__column_token(stmt, 3,
+      svn_kind_t node_kind = svn_sqlite__column_token(stmt, 3,
                                                              kind_map);
 
       if (kind)
@@ -2423,7 +2423,7 @@ depth_get_info(svn_wc__db_status_t *stat
         }
       if (depth)
         {
-          if (node_kind != svn_wc__db_kind_dir)
+          if (node_kind != svn_kind_dir)
             {
               *depth = svn_depth_unknown;
             }
@@ -2439,7 +2439,7 @@ depth_get_info(svn_wc__db_status_t *stat
         }
       if (checksum)
         {
-          if (node_kind != svn_wc__db_kind_file)
+          if (node_kind != svn_kind_file)
             {
               *checksum = NULL;
             }
@@ -2457,7 +2457,7 @@ depth_get_info(svn_wc__db_status_t *stat
         }
       if (target)
         {
-          if (node_kind != svn_wc__db_kind_symlink)
+          if (node_kind != svn_kind_symlink)
             *target = NULL;
           else
             *target = svn_sqlite__column_text(stmt, 11, result_pool);
@@ -2616,8 +2616,8 @@ insert_external_node(void *baton,
   else if (status == svn_wc__db_status_normal && !update_root)
     return svn_error_create(SVN_ERR_WC_PATH_UNEXPECTED_STATUS, NULL, NULL);
 
-  if (ieb->kind == svn_wc__db_kind_file
-      || ieb->kind == svn_wc__db_kind_symlink)
+  if (ieb->kind == svn_kind_file
+      || ieb->kind == svn_kind_symlink)
     {
       struct insert_base_baton_t ibb;
 
@@ -2738,7 +2738,7 @@ svn_wc__db_external_add_file(svn_wc__db_
 
   blank_ieb(&ieb);
 
-  ieb.kind = svn_wc__db_kind_file;
+  ieb.kind = svn_kind_file;
   ieb.presence = svn_wc__db_status_normal;
 
   ieb.repos_root_url = repos_root_url;
@@ -2822,7 +2822,7 @@ svn_wc__db_external_add_symlink(svn_wc__
 
   blank_ieb(&ieb);
 
-  ieb.kind = svn_wc__db_kind_symlink;
+  ieb.kind = svn_kind_symlink;
   ieb.presence = svn_wc__db_status_normal;
 
   ieb.repos_root_url = repos_root_url;
@@ -2895,7 +2895,7 @@ svn_wc__db_external_add_dir(svn_wc__db_t
 
   blank_ieb(&ieb);
 
-  ieb.kind = svn_wc__db_kind_dir;
+  ieb.kind = svn_kind_dir;
   ieb.presence = svn_wc__db_status_normal;
 
   ieb.repos_root_url = repos_root_url;
@@ -2972,7 +2972,7 @@ svn_wc__db_external_remove(svn_wc__db_t 
 
 svn_error_t *
 svn_wc__db_external_read(svn_wc__db_status_t *status,
-                         svn_wc__db_kind_t *kind,
+                         svn_kind_t *kind,
                          const char **definining_abspath,
                          const char **repos_root_url,
                          const char **repos_uuid,
@@ -3240,7 +3240,7 @@ cross_db_copy(svn_wc__db_wcroot_t *src_w
               svn_wc__db_status_t dst_status,
               apr_int64_t dst_op_depth,
               apr_int64_t dst_np_op_depth,
-              svn_wc__db_kind_t kind,
+              svn_kind_t kind,
               const apr_array_header_t *children,
               apr_int64_t copyfrom_id,
               const char *copyfrom_relpath,
@@ -3255,8 +3255,8 @@ cross_db_copy(svn_wc__db_wcroot_t *src_w
   apr_hash_t *props;
   svn_depth_t depth;
 
-  SVN_ERR_ASSERT(kind == svn_wc__db_kind_file
-                 || kind == svn_wc__db_kind_dir
+  SVN_ERR_ASSERT(kind == svn_kind_file
+                 || kind == svn_kind_dir
                  );
 
   SVN_ERR(read_info(NULL, NULL, NULL, NULL, NULL,
@@ -3307,7 +3307,7 @@ get_info_for_copy(apr_int64_t *copyfrom_
                   const char **copyfrom_relpath,
                   svn_revnum_t *copyfrom_rev,
                   svn_wc__db_status_t *status,
-                  svn_wc__db_kind_t *kind,
+                  svn_kind_t *kind,
                   svn_boolean_t *op_root,
                   svn_boolean_t *have_work,
                   svn_wc__db_wcroot_t *wcroot,
@@ -3332,7 +3332,7 @@ get_info_for_copy(apr_int64_t *copyfrom_
          adjust the relpath */
       const char *parent_relpath, *base_name;
       svn_wc__db_status_t parent_status;
-      svn_wc__db_kind_t parent_kind;
+      svn_kind_t parent_kind;
       svn_boolean_t parent_have_work;
 
       svn_dirent_split(&parent_relpath, &base_name, local_relpath,
@@ -3453,7 +3453,7 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcro
   apr_int64_t copyfrom_id;
   apr_int64_t dst_op_depth;
   apr_int64_t dst_np_op_depth;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   const apr_array_header_t *children;
 
   SVN_ERR(get_info_for_copy(&copyfrom_id, &copyfrom_relpath, &copyfrom_rev,
@@ -3464,7 +3464,7 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcro
                             copyfrom_relpath, copyfrom_rev,
                             dst_wcroot, dst_relpath, scratch_pool));
 
-  SVN_ERR_ASSERT(kind == svn_wc__db_kind_file || kind == svn_wc__db_kind_dir);
+  SVN_ERR_ASSERT(kind == svn_kind_file || kind == svn_kind_dir);
 
   /* ### New status, not finished, see notes/wc-ng/copying */
   switch (status)
@@ -3532,7 +3532,7 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcro
                                                       scratch_pool));
     }
 
-  if (kind == svn_wc__db_kind_dir)
+  if (kind == svn_kind_dir)
     {
       apr_int64_t src_op_depth;
 
@@ -3595,7 +3595,7 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcro
          The children are part of the same op and so have the same op_depth.
          (The only time we'd want a different depth is during a recursive
          simple add, but we never insert children here during a simple add.) */
-      if (kind == svn_wc__db_kind_dir
+      if (kind == svn_kind_dir
           && dst_presence == svn_wc__db_status_normal)
         SVN_ERR(insert_incomplete_children(
                   dst_wcroot->sdb,
@@ -3716,7 +3716,7 @@ db_op_copy_shadowed_layer(svn_wc__db_wcr
   const apr_array_header_t *children;
   apr_pool_t *iterpool;
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_revnum_t node_revision;
   const char *node_repos_relpath;
   apr_int64_t node_repos_id;
@@ -4203,7 +4203,7 @@ svn_wc__db_op_copy_dir(svn_wc__db_t *db,
   blank_iwb(&iwb);
 
   iwb.presence = svn_wc__db_status_normal;
-  iwb.kind = svn_wc__db_kind_dir;
+  iwb.kind = svn_kind_dir;
 
   iwb.props = props;
   iwb.changed_rev = changed_rev;
@@ -4278,7 +4278,7 @@ svn_wc__db_op_copy_file(svn_wc__db_t *db
   blank_iwb(&iwb);
 
   iwb.presence = svn_wc__db_status_normal;
-  iwb.kind = svn_wc__db_kind_file;
+  iwb.kind = svn_kind_file;
 
   iwb.props = props;
   iwb.changed_rev = changed_rev;
@@ -4347,7 +4347,7 @@ svn_wc__db_op_copy_symlink(svn_wc__db_t 
   blank_iwb(&iwb);
 
   iwb.presence = svn_wc__db_status_normal;
-  iwb.kind = svn_wc__db_kind_symlink;
+  iwb.kind = svn_kind_symlink;
 
   iwb.props = props;
   iwb.changed_rev = changed_rev;
@@ -4401,7 +4401,7 @@ svn_wc__db_op_add_directory(svn_wc__db_t
   blank_iwb(&iwb);
 
   iwb.presence = svn_wc__db_status_normal;
-  iwb.kind = svn_wc__db_kind_dir;
+  iwb.kind = svn_kind_dir;
   iwb.op_depth = relpath_depth(local_relpath);
 
   iwb.work_items = work_items;
@@ -4436,7 +4436,7 @@ svn_wc__db_op_add_file(svn_wc__db_t *db,
   blank_iwb(&iwb);
 
   iwb.presence = svn_wc__db_status_normal;
-  iwb.kind = svn_wc__db_kind_file;
+  iwb.kind = svn_kind_file;
   iwb.op_depth = relpath_depth(local_relpath);
 
   iwb.work_items = work_items;
@@ -4470,7 +4470,7 @@ svn_wc__db_op_add_symlink(svn_wc__db_t *
   blank_iwb(&iwb);
 
   iwb.presence = svn_wc__db_status_normal;
-  iwb.kind = svn_wc__db_kind_symlink;
+  iwb.kind = svn_kind_symlink;
   iwb.op_depth = relpath_depth(local_relpath);
 
   iwb.target = target;
@@ -5494,7 +5494,7 @@ struct revert_list_read_baton {
   const char **conflict_working;
   const char **prop_reject;
   svn_boolean_t *copied_here;
-  svn_wc__db_kind_t *kind;
+  svn_kind_t *kind;
   apr_pool_t *result_pool;
 };
 
@@ -5512,7 +5512,7 @@ revert_list_read(void *baton,
   *(b->conflict_new) = *(b->conflict_old) = *(b->conflict_working) = NULL;
   *(b->prop_reject) = NULL;
   *(b->copied_here) = FALSE;
-  *(b->kind) = svn_wc__db_kind_unknown;
+  *(b->kind) = svn_kind_unknown;
 
   SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                     STMT_SELECT_REVERT_LIST));
@@ -5587,7 +5587,7 @@ svn_wc__db_revert_list_read(svn_boolean_
                             const char **conflict_working,
                             const char **prop_reject,
                             svn_boolean_t *copied_here,
-                            svn_wc__db_kind_t *kind,
+                            svn_kind_t *kind,
                             svn_wc__db_t *db,
                             const char *local_abspath,
                             apr_pool_t *result_pool,
@@ -5901,7 +5901,7 @@ svn_wc__db_op_read_tree_conflict(
 struct remove_node_baton
 {
   svn_revnum_t not_present_rev;
-  svn_wc__db_kind_t not_present_kind;
+  svn_kind_t not_present_kind;
 };
 
 /* Implements svn_wc__db_txn_callback_t for svn_wc__db_op_remove_node */
@@ -5966,7 +5966,7 @@ svn_error_t *
 svn_wc__db_op_remove_node(svn_wc__db_t *db,
                           const char *local_abspath,
                           svn_revnum_t not_present_revision,
-                          svn_wc__db_kind_t not_present_kind,
+                          svn_kind_t not_present_kind,
                           apr_pool_t *scratch_pool)
 {
   svn_wc__db_wcroot_t *wcroot;
@@ -6108,11 +6108,7 @@ convert_to_working_status(svn_wc__db_sta
                  || work_status == svn_wc__db_status_incomplete
                  || work_status == svn_wc__db_status_excluded);
 
-  if (work_status == svn_wc__db_status_incomplete)
-    {
-      *working_status = svn_wc__db_status_incomplete;
-    }
-  else if (work_status == svn_wc__db_status_excluded)
+  if (work_status == svn_wc__db_status_excluded)
     {
       *working_status = svn_wc__db_status_excluded;
     }
@@ -6127,7 +6123,7 @@ convert_to_working_status(svn_wc__db_sta
 
       *working_status = svn_wc__db_status_deleted;
     }
-  else /* normal */
+  else /* normal or incomplete */
     {
       /* The caller should scan upwards to detect whether this
          addition has occurred because of a simple addition,
@@ -6238,7 +6234,7 @@ op_delete_txn(void *baton,
   svn_sqlite__stmt_t *stmt;
   apr_int64_t select_depth; /* Depth of what is to be deleted */
   svn_boolean_t refetch_depth = FALSE;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
 
   SVN_ERR(svn_sqlite__exec_statements(wcroot->sdb, STMT_CREATE_DELETE_LIST));
 
@@ -6300,7 +6296,7 @@ op_delete_txn(void *baton,
       /* If a subtree is being moved-away, we need to update moved-to
        * information in BASE for all children that were moved into this
        * subtree. */
-      if (kind == svn_wc__db_kind_dir)
+      if (kind == svn_kind_dir)
         {
           apr_pool_t *iterpool;
 
@@ -6590,7 +6586,7 @@ svn_wc__db_op_delete(svn_wc__db_t *db,
    DB+LOCAL_ABSPATH, and outputting repos ids instead of URL+UUID. */
 static svn_error_t *
 read_info(svn_wc__db_status_t *status,
-          svn_wc__db_kind_t *kind,
+          svn_kind_t *kind,
           svn_revnum_t *revision,
           const char **repos_relpath,
           apr_int64_t *repos_id,
@@ -6649,7 +6645,7 @@ read_info(svn_wc__db_status_t *status,
   if (have_info)
     {
       apr_int64_t op_depth;
-      svn_wc__db_kind_t node_kind;
+      svn_kind_t node_kind;
 
       op_depth = svn_sqlite__column_int64(stmt_info, 0);
       node_kind = svn_sqlite__column_token(stmt_info, 4, kind_map);
@@ -6708,7 +6704,7 @@ read_info(svn_wc__db_status_t *status,
         }
       if (depth)
         {
-          if (node_kind != svn_wc__db_kind_dir)
+          if (node_kind != svn_kind_dir)
             {
               *depth = svn_depth_unknown;
             }
@@ -6726,7 +6722,7 @@ read_info(svn_wc__db_status_t *status,
         }
       if (checksum)
         {
-          if (node_kind != svn_wc__db_kind_file)
+          if (node_kind != svn_kind_file)
             {
               *checksum = NULL;
             }
@@ -6752,7 +6748,7 @@ read_info(svn_wc__db_status_t *status,
         }
       if (target)
         {
-          if (node_kind != svn_wc__db_kind_symlink)
+          if (node_kind != svn_kind_symlink)
             *target = NULL;
           else
             *target = svn_sqlite__column_text(stmt_info, 12, result_pool);
@@ -6869,7 +6865,7 @@ read_info(svn_wc__db_status_t *status,
       if (status)
         *status = svn_wc__db_status_normal;  /* What! No it's not! */
       if (kind)
-        *kind = svn_wc__db_kind_unknown;
+        *kind = svn_kind_unknown;
       if (revision)
         *revision = SVN_INVALID_REVNUM;
       if (repos_relpath)
@@ -6934,7 +6930,7 @@ read_info(svn_wc__db_status_t *status,
 
 svn_error_t *
 svn_wc__db_read_info(svn_wc__db_status_t *status,
-                     svn_wc__db_kind_t *kind,
+                     svn_kind_t *kind,
                      svn_revnum_t *revision,
                      const char **repos_relpath,
                      const char **repos_root_url,
@@ -7068,6 +7064,8 @@ read_children_info(void *baton,
           child->status = svn_sqlite__column_token(stmt, 3, presence_map);
           if (op_depth != 0)
             {
+              if (child->status == svn_wc__db_status_incomplete)
+                child->incomplete = TRUE;
               err = convert_to_working_status(&child->status, child->status);
               if (err)
                 SVN_ERR(svn_error_compose_create(err, svn_sqlite__reset(stmt)));
@@ -7116,7 +7114,7 @@ read_children_info(void *baton,
           child->changed_author = svn_sqlite__column_text(stmt, 10,
                                                           result_pool);
 
-          if (child->kind != svn_wc__db_kind_dir)
+          if (child->kind != svn_kind_dir)
             child->depth = svn_depth_unknown;
           else
             {
@@ -7287,7 +7285,7 @@ svn_wc__db_read_children_info(apr_hash_t
 
 svn_error_t *
 svn_wc__db_read_pristine_info(svn_wc__db_status_t *status,
-                              svn_wc__db_kind_t *kind,
+                              svn_kind_t *kind,
                               svn_revnum_t *changed_rev,
                               apr_time_t *changed_date,
                               const char **changed_author,
@@ -7307,7 +7305,7 @@ svn_wc__db_read_pristine_info(svn_wc__db
   svn_error_t *err = NULL;
   apr_int64_t op_depth;
   svn_wc__db_status_t raw_status;
-  svn_wc__db_kind_t node_kind;
+  svn_kind_t node_kind;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
@@ -7377,7 +7375,7 @@ svn_wc__db_read_pristine_info(svn_wc__db
     }
   if (depth)
     {
-      if (node_kind != svn_wc__db_kind_dir)
+      if (node_kind != svn_kind_dir)
         {
           *depth = svn_depth_unknown;
         }
@@ -7395,7 +7393,7 @@ svn_wc__db_read_pristine_info(svn_wc__db
     }
   if (checksum)
     {
-      if (node_kind != svn_wc__db_kind_file)
+      if (node_kind != svn_kind_file)
         {
           *checksum = NULL;
         }
@@ -7421,7 +7419,7 @@ svn_wc__db_read_pristine_info(svn_wc__db
     }
   if (target)
     {
-      if (node_kind != svn_wc__db_kind_symlink)
+      if (node_kind != svn_kind_symlink)
         *target = NULL;
       else
         *target = svn_sqlite__column_text(stmt, 12, result_pool);
@@ -8537,7 +8535,7 @@ commit_node(void *baton,
   const char *changelist = NULL;
   const char *parent_relpath;
   svn_wc__db_status_t new_presence;
-  svn_wc__db_kind_t new_kind;
+  svn_kind_t new_kind;
   const char *new_depth_str = NULL;
   svn_sqlite__stmt_t *stmt;
   apr_int64_t repos_id;
@@ -8575,7 +8573,7 @@ commit_node(void *baton,
   new_kind = svn_sqlite__column_token(stmt_info, 4, kind_map);
 
   /* What will the new depth be?  */
-  if (new_kind == svn_wc__db_kind_dir)
+  if (new_kind == svn_kind_dir)
     new_depth_str = svn_sqlite__column_text(stmt_info, 11, scratch_pool);
 
   /* Check that the repository information is not being changed.  */
@@ -8713,7 +8711,7 @@ commit_node(void *baton,
         }
     }
 
-  if (new_kind == svn_wc__db_kind_dir)
+  if (new_kind == svn_kind_dir)
     {
       /* When committing a directory, we should have its new children.  */
       /* ### one day. just not today.  */
@@ -8810,7 +8808,7 @@ struct update_baton_t {
 svn_error_t *
 svn_wc__db_global_update(svn_wc__db_t *db,
                          const char *local_abspath,
-                         svn_wc__db_kind_t new_kind,
+                         svn_kind_t new_kind,
                          const char *new_repos_relpath,
                          svn_revnum_t new_revision,
                          const apr_hash_t *new_props,
@@ -8947,7 +8945,7 @@ bump_node_revision(svn_wc__db_wcroot_t *
   const apr_array_header_t *children;
   int i;
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t db_kind;
+  svn_kind_t db_kind;
   svn_revnum_t revision;
   const char *repos_relpath;
   apr_int64_t repos_id;
@@ -8967,11 +8965,11 @@ bump_node_revision(svn_wc__db_wcroot_t *
 
   /* Skip file externals */
   if (update_root
-      && db_kind == svn_wc__db_kind_file
+      && db_kind == svn_kind_file
       && !is_root)
     return SVN_NO_ERROR;
 
-  if (skip_when_dir && db_kind == svn_wc__db_kind_dir)
+  if (skip_when_dir && db_kind == svn_kind_dir)
     return SVN_NO_ERROR;
 
   /* If the node is still marked 'not-present', then the server did not
@@ -9003,7 +9001,7 @@ bump_node_revision(svn_wc__db_wcroot_t *
 
   /* Early out */
   if (depth <= svn_depth_empty
-      || db_kind != svn_wc__db_kind_dir
+      || db_kind != svn_kind_dir
       || status == svn_wc__db_status_server_excluded
       || status == svn_wc__db_status_excluded
       || status == svn_wc__db_status_not_present)
@@ -9068,7 +9066,7 @@ bump_revisions_post_update(void *baton,
 {
   struct bump_revisions_baton_t *brb = baton;
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_error_t *err;
   apr_int64_t new_repos_id = INVALID_REPOS_ID;
 
@@ -9463,7 +9461,9 @@ scan_addition_txn(void *baton,
     presence = svn_sqlite__column_token(stmt, 1, presence_map);
 
     /* The starting node should exist normally.  */
-    if (presence != svn_wc__db_status_normal)
+    op_depth = svn_sqlite__column_int64(stmt, 0);
+    if (op_depth == 0 || (presence != svn_wc__db_status_normal
+                          && presence != svn_wc__db_status_incomplete))
       /* reset the statement as part of the error generation process */
       return svn_error_createf(SVN_ERR_WC_PATH_UNEXPECTED_STATUS,
                                svn_sqlite__reset(stmt),
@@ -9477,11 +9477,15 @@ scan_addition_txn(void *baton,
 
     /* Provide the default status; we'll override as appropriate. */
     if (sab->status)
-      *sab->status = svn_wc__db_status_added;
+      {
+        if (presence == svn_wc__db_status_normal)
+          *sab->status = svn_wc__db_status_added;
+        else
+          *sab->status = svn_wc__db_status_incomplete;
+      }
 
 
     /* Calculate the op root local path components */
-    op_depth = svn_sqlite__column_int64(stmt, 0);
     op_root_relpath = local_relpath;
 
     for (i = (int)relpath_depth(local_relpath); i > op_depth; --i)
@@ -10368,7 +10372,7 @@ svn_wc__db_upgrade_apply_props(svn_sqlit
 svn_error_t *
 svn_wc__db_upgrade_insert_external(svn_wc__db_t *db,
                                    const char *local_abspath,
-                                   svn_wc__db_kind_t kind,
+                                   svn_kind_t kind,
                                    const char *parent_abspath,
                                    const char *def_local_abspath,
                                    const char *repos_relpath,
@@ -10977,7 +10981,7 @@ svn_wc__db_read_conflicts(const apr_arra
 
 
 svn_error_t *
-svn_wc__db_read_kind(svn_wc__db_kind_t *kind,
+svn_wc__db_read_kind(svn_kind_t *kind,
                      svn_wc__db_t *db,
                      const char *local_abspath,
                      svn_boolean_t allow_missing,
@@ -11003,7 +11007,7 @@ svn_wc__db_read_kind(svn_wc__db_kind_t *
     {
       if (allow_missing)
         {
-          *kind = svn_wc__db_kind_unknown;
+          *kind = svn_kind_unknown;
           SVN_ERR(svn_sqlite__reset(stmt_info));
           return SVN_NO_ERROR;
         }
@@ -12057,7 +12061,7 @@ svn_wc__db_temp_op_set_new_dir_to_incomp
   ibb.repos_uuid = repos_uuid;
 
   ibb.status = svn_wc__db_status_incomplete;
-  ibb.kind = svn_wc__db_kind_dir;
+  ibb.kind = svn_kind_dir;
   ibb.repos_relpath = repos_relpath;
   ibb.revision = revision;
   ibb.depth = depth;

Modified: subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/branches/fs-py/subversion/libsvn_wc/wc_db.h Thu Oct 13 14:30:07 2011
@@ -128,37 +128,6 @@ extern "C" {
 typedef struct svn_wc__db_t svn_wc__db_t;
 
 
-/* Enum indicating what kind of versioned object we're talking about.
-
-   ### KFF: That is, my understanding is that this is *not* an enum
-   ### indicating what kind of storage the DB is using, even though
-   ### one might think that from its name.  Rather, the "svn_wc__db_"
-   ### is a generic prefix, and this "_kind_t" type indicates the kind
-   ### of something that's being stored in the DB.
-
-   ### KFF: Does this overlap too much with what svn_node_kind_t does?
-
-   ### gjs: possibly. but that doesn't have a symlink kind. and that
-   ###   cannot simply be added. it would surprise too much code.
-   ###   (we could probably create svn_node_kind2_t though)
-*/
-typedef enum svn_wc__db_kind_t {
-    /* The node is a directory. */
-    svn_wc__db_kind_dir,
-
-    /* The node is a file. */
-    svn_wc__db_kind_file,
-
-    /* The node is a symbolic link. */
-    svn_wc__db_kind_symlink,
-
-    /* The type of the node is not known, due to its absence, exclusion,
-       deletion, or incomplete status. */
-    svn_wc__db_kind_unknown,
-
-} svn_wc__db_kind_t;
-
-
 /* Enumerated values describing the state of a node. */
 typedef enum svn_wc__db_status_t {
     /* The node is present and has no known modifications applied to it. */
@@ -630,7 +599,7 @@ svn_wc__db_base_add_excluded_node(svn_wc
                                   const char *repos_root_url,
                                   const char *repos_uuid,
                                   svn_revnum_t revision,
-                                  svn_wc__db_kind_t kind,
+                                  svn_kind_t kind,
                                   svn_wc__db_status_t status,
                                   const svn_skel_t *conflict,
                                   const svn_skel_t *work_items,
@@ -661,7 +630,7 @@ svn_wc__db_base_add_not_present_node(svn
                                      const char *repos_root_url,
                                      const char *repos_uuid,
                                      svn_revnum_t revision,
-                                     svn_wc__db_kind_t kind,
+                                     svn_kind_t kind,
                                      const svn_skel_t *conflict,
                                      const svn_skel_t *work_items,
                                      apr_pool_t *scratch_pool);
@@ -740,7 +709,7 @@ svn_wc__db_base_remove(svn_wc__db_t *db,
 */
 svn_error_t *
 svn_wc__db_base_get_info(svn_wc__db_status_t *status,
-                         svn_wc__db_kind_t *kind,
+                         svn_kind_t *kind,
                          svn_revnum_t *revision,
                          const char **repos_relpath,
                          const char **repos_root_url,
@@ -763,7 +732,7 @@ svn_wc__db_base_get_info(svn_wc__db_stat
    fields needed by the adm crawler. */
 struct svn_wc__db_base_info_t {
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_revnum_t revnum;
   const char *repos_relpath;
   const char *repos_root_url;
@@ -1148,7 +1117,7 @@ svn_wc__db_external_remove(svn_wc__db_t 
  */
 svn_error_t *
 svn_wc__db_external_read(svn_wc__db_status_t *status,
-                         svn_wc__db_kind_t *kind,
+                         svn_kind_t *kind,
                          const char **defining_abspath,
 
                          const char **repos_root_url,
@@ -1521,7 +1490,7 @@ svn_wc__db_revert_list_read(svn_boolean_
                             const char **conflict_working,
                             const char **prop_reject,
                             svn_boolean_t *copied_here,
-                            svn_wc__db_kind_t *kind,
+                            svn_kind_t *kind,
                             svn_wc__db_t *db,
                             const char *local_abspath,
                             apr_pool_t *result_pool,
@@ -1531,7 +1500,7 @@ svn_wc__db_revert_list_read(svn_boolean_
  * svn_wc__db_revert_list_read_copied_children(). */
 typedef struct svn_wc__db_revert_list_copied_child_info_t {
   const char *abspath;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
 } svn_wc__db_revert_list_copied_child_info_t ;
 
 /* Return in *CHILDREN a list of reverted copied nodes at or within
@@ -1642,7 +1611,7 @@ svn_wc__db_op_set_tree_conflict(svn_wc__
 
    The OUT parameters, and their "not available" values are:
      STATUS                  n/a (always available)
-     KIND                    svn_wc__db_kind_unknown   (For ACTUAL only nodes)
+     KIND                    svn_kind_unknown   (For ACTUAL only nodes)
      REVISION                SVN_INVALID_REVNUM
      REPOS_RELPATH           NULL
      REPOS_ROOT_URL          NULL
@@ -1710,8 +1679,8 @@ svn_wc__db_op_set_tree_conflict(svn_wc__
        node's revision.
 
      svn_wc__db_status_incomplete
-       The BASE or WORKING node is incomplete due to an interrupted
-       operation.
+       The BASE is incomplete due to an interrupted operation.  An
+       incomplete WORKING node will be svn_wc__db_status_added.
 
    If REVISION is requested, it will be set to the revision of the
    unmodified (BASE) node, or to SVN_INVALID_REVNUM if any structural
@@ -1791,7 +1760,7 @@ svn_wc__db_op_set_tree_conflict(svn_wc__
 */
 svn_error_t *
 svn_wc__db_read_info(svn_wc__db_status_t *status,  /* ### derived */
-                     svn_wc__db_kind_t *kind,
+                     svn_kind_t *kind,
                      svn_revnum_t *revision,
                      const char **repos_relpath,
                      const char **repos_root_url,
@@ -1839,7 +1808,7 @@ svn_wc__db_read_info(svn_wc__db_status_t
    fields needed by status. */
 struct svn_wc__db_info_t {
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_revnum_t revnum;
   const char *repos_relpath;
   const char *repos_root_url;
@@ -1868,6 +1837,7 @@ struct svn_wc__db_info_t {
 
   svn_boolean_t locked;     /* WC directory lock */
   svn_wc__db_lock_t *lock;  /* Repository file lock */
+  svn_boolean_t incomplete; /* TRUE if a working node is incomplete */
 
   const char *moved_to_abspath; /* Only on op-roots. See svn_wc_status3_t. */
   svn_boolean_t moved_here;     /* On both op-roots and children. */
@@ -1896,7 +1866,7 @@ svn_wc__db_read_children_info(apr_hash_t
    fields needed by svn_wc__internal_walk_children(). */
 struct svn_wc__db_walker_info_t {
   svn_wc__db_status_t status;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
 };
 
 /* When a node is deleted in WORKING, some of its information is no longer
@@ -1915,7 +1885,7 @@ struct svn_wc__db_walker_info_t {
  */
 svn_error_t *
 svn_wc__db_read_pristine_info(svn_wc__db_status_t *status,
-                              svn_wc__db_kind_t *kind,
+                              svn_kind_t *kind,
                               svn_revnum_t *changed_rev,
                               apr_time_t *changed_date,
                               const char **changed_author,
@@ -2122,13 +2092,13 @@ svn_wc__db_read_conflicts(const apr_arra
 
 /* Return the kind of the node in DB at LOCAL_ABSPATH. The WORKING tree will
    be examined first, then the BASE tree. If the node is not present in either
-   tree and ALLOW_MISSING is TRUE, then svn_wc__db_kind_unknown is returned.
+   tree and ALLOW_MISSING is TRUE, then svn_kind_unknown is returned.
    If the node is missing and ALLOW_MISSING is FALSE, then it will return
    SVN_ERR_WC_PATH_NOT_FOUND.
 
    Uses SCRATCH_POOL for temporary allocations.  */
 svn_error_t *
-svn_wc__db_read_kind(svn_wc__db_kind_t *kind,
+svn_wc__db_read_kind(svn_kind_t *kind,
                      svn_wc__db_t *db,
                      const char *local_abspath,
                      svn_boolean_t allow_missing,
@@ -2288,7 +2258,7 @@ svn_wc__db_global_commit(svn_wc__db_t *d
 svn_error_t *
 svn_wc__db_global_update(svn_wc__db_t *db,
                          const char *local_abspath,
-                         svn_wc__db_kind_t new_kind,
+                         svn_kind_t new_kind,
                          const char *new_repos_relpath,
                          svn_revnum_t new_revision,
                          const apr_hash_t *new_props,
@@ -2441,6 +2411,8 @@ svn_wc__db_scan_base_repos(const char **
        ancestor unshadowed BASE node. ORIGINAL_* will indicate the source
        of the copy.
 
+     svn_wc__db_status_incomplete -- this NODE is copied but incomplete.
+
      svn_wc__db_status_moved_here -- this NODE arrived as a result of a move.
        The root of the moved nodes will be stored in OP_ROOT_ABSPATH.
        Similar to the copied state, its parent may be a WORKING node or a
@@ -2656,7 +2628,7 @@ svn_wc__db_upgrade_apply_props(svn_sqlit
 svn_error_t *
 svn_wc__db_upgrade_insert_external(svn_wc__db_t *db,
                                    const char *local_abspath,
-                                   svn_wc__db_kind_t kind,
+                                   svn_kind_t kind,
                                    const char *parent_abspath,
                                    const char *def_local_abspath,
                                    const char *repos_relpath,
@@ -2784,7 +2756,7 @@ svn_error_t *
 svn_wc__db_op_remove_node(svn_wc__db_t *db,
                           const char *local_abspath,
                           svn_revnum_t not_present_revision,
-                          svn_wc__db_kind_t not_present_kind,
+                          svn_kind_t not_present_kind,
                           apr_pool_t *scratch_pool);
 
 /* Remove the WORKING_NODE row of LOCAL_ABSPATH in DB. */

Modified: subversion/branches/fs-py/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_wc/workqueue.c?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/branches/fs-py/subversion/libsvn_wc/workqueue.c Thu Oct 13 14:30:07 2011
@@ -109,7 +109,7 @@ remove_base_node(svn_wc__db_t *db,
                  apr_pool_t *scratch_pool)
 {
   svn_wc__db_status_t base_status, wrk_status;
-  svn_wc__db_kind_t base_kind, wrk_kind;
+  svn_kind_t base_kind, wrk_kind;
   svn_boolean_t have_base, have_work;
   svn_error_t *err;
 
@@ -148,7 +148,7 @@ remove_base_node(svn_wc__db_t *db,
                                      scratch_pool, scratch_pool));
 
   /* Children first */
-  if (base_kind == svn_wc__db_kind_dir
+  if (base_kind == svn_kind_dir
       && base_status == svn_wc__db_status_normal)
     {
       const apr_array_header_t *children;
@@ -179,12 +179,12 @@ remove_base_node(svn_wc__db_t *db,
       && wrk_status != svn_wc__db_status_excluded)
     {
       if (wrk_status != svn_wc__db_status_deleted
-          && (base_kind == svn_wc__db_kind_file
-              || base_kind == svn_wc__db_kind_symlink))
+          && (base_kind == svn_kind_file
+              || base_kind == svn_kind_symlink))
         {
           SVN_ERR(svn_io_remove_file2(local_abspath, TRUE, scratch_pool));
         }
-      else if (base_kind == svn_wc__db_kind_dir
+      else if (base_kind == svn_kind_dir
                && wrk_status != svn_wc__db_status_deleted)
         {
           err = svn_io_dir_remove_nonrecursive(local_abspath, scratch_pool);
@@ -218,7 +218,7 @@ run_base_remove(svn_wc__db_t *db,
   const char *local_relpath;
   const char *local_abspath;
   svn_revnum_t not_present_rev = SVN_INVALID_REVNUM;
-  svn_wc__db_kind_t not_present_kind;
+  svn_kind_t not_present_kind;
   const char *repos_relpath, *repos_root_url, *repos_uuid;
   apr_int64_t val;
 
@@ -232,7 +232,7 @@ run_base_remove(svn_wc__db_t *db,
       not_present_rev = (svn_revnum_t)val;
 
       SVN_ERR(svn_skel__parse_int(&val, arg1->next->next, scratch_pool));
-      not_present_kind = (svn_wc__db_kind_t)val;
+      not_present_kind = (svn_kind_t)val;
 
       if (SVN_IS_VALID_REVNUM(not_present_rev))
         {
@@ -295,7 +295,7 @@ svn_wc__wq_build_base_remove(svn_skel_t 
                              svn_wc__db_t *db,
                              const char *local_abspath,
                              svn_revnum_t not_present_revision,
-                             svn_wc__db_kind_t not_present_kind,
+                             svn_kind_t not_present_kind,
                              apr_pool_t *result_pool,
                              apr_pool_t *scratch_pool)
 {

Modified: subversion/branches/fs-py/subversion/libsvn_wc/workqueue.h
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_wc/workqueue.h?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_wc/workqueue.h (original)
+++ subversion/branches/fs-py/subversion/libsvn_wc/workqueue.h Thu Oct 13 14:30:07 2011
@@ -212,7 +212,7 @@ svn_wc__wq_build_base_remove(svn_skel_t 
                              svn_wc__db_t *db,
                              const char *local_abspath,
                              svn_revnum_t not_present_revision,
-                             svn_wc__db_kind_t not_present_kind,
+                             svn_kind_t not_present_kind,
                              apr_pool_t *result_pool,
                              apr_pool_t *scratch_pool);
 

Modified: subversion/branches/fs-py/subversion/svnserve/cyrus_auth.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/svnserve/cyrus_auth.c?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/svnserve/cyrus_auth.c (original)
+++ subversion/branches/fs-py/subversion/svnserve/cyrus_auth.c Thu Oct 13 14:30:07 2011
@@ -105,12 +105,7 @@ static sasl_callback_t callbacks[] =
 static svn_error_t *initialize(void *baton, apr_pool_t *pool)
 {
   int result;
-  apr_status_t status;
-
-  status = svn_ra_svn__sasl_common_init(pool);
-  if (status)
-    return svn_error_wrap_apr(status,
-                              _("Could not initialize the SASL library"));
+  SVN_ERR(svn_ra_svn__sasl_common_init(pool));
 
   /* The second parameter tells SASL to look for a configuration file
      named subversion.conf. */

Modified: subversion/branches/fs-py/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/authz_tests.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/authz_tests.py Thu Oct 13 14:30:07 2011
@@ -1002,6 +1002,7 @@ def multiple_matches(sbox):
                        '-m', 'second copy',
                        root_url, root_url + '/second')
 
+@Issues(4025,4026)
 @Skip(svntest.main.is_ra_type_file)
 def wc_wc_copy_revert(sbox):
   "wc-to-wc-copy with absent nodes and then revert"
@@ -1044,8 +1045,28 @@ def wc_wc_copy_revert(sbox):
   svntest.actions.run_and_verify_svn(None, expected_output, [],
                                      'st', '--verbose', sbox.ospath('A2'))
 
+
+  # Issue 4025, info SEGV on incomplete working node
+  svntest.actions.run_and_verify_svn(None, None,
+                                     'svn: E145000: .*unrecognized node kind',
+                                     'info', sbox.ospath('A2/B/E'))
+
+  # Issue 4026, copy assertion on incomplete working node
+  svntest.actions.run_and_verify_svn(None, None,
+                             'svn: E145001: cannot handle node kind',
+                             'cp', sbox.ospath('A2/B'), sbox.ospath('B3'))
+
+  expected_output = svntest.verify.ExpectedOutput(
+    ['A  +             -        1 jrandom      ' + sbox.ospath('B3') + '\n',
+     '!                -       ?   ?           ' + sbox.ospath('B3/E') + '\n',
+     ])
+  expected_output.match_all = False
+  svntest.actions.run_and_verify_svn(None, expected_output, [],
+                                     'st', '--verbose', sbox.ospath('B3'))
+
   svntest.actions.run_and_verify_svn(None, None, [],
-                                     'revert', '--recursive', sbox.ospath('A2'))
+                                     'revert', '--recursive',
+                                     sbox.ospath('A2'), sbox.ospath('B3'))
 
   expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
   expected_status.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta')

Modified: subversion/branches/fs-py/subversion/tests/cmdline/log_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/log_tests.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/log_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/log_tests.py Thu Oct 13 14:30:07 2011
@@ -2028,6 +2028,72 @@ def log_on_nonexistent_path_and_valid_re
   svntest.actions.run_and_verify_svn(None, None, expected_error,
                                      'log', '-q', bad_path_default_rev)
 
+#----------------------------------------------------------------------
+# Test for issue #4022 'svn log -g interprets change in inherited mergeinfo
+# due to move as a merge'.
+@Issue(4022)
+@XFail()
+def merge_sensitive_log_copied_path_inherited_mergeinfo(sbox):
+  "log -g on copied path with inherited mergeinfo"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+  wc_disk, wc_status = set_up_branch(sbox, branch_only=True)
+
+  A_path          = os.path.join(wc_dir, 'A')
+  gamma_COPY_path = os.path.join(wc_dir, 'A_COPY', 'D', 'gamma')
+  old_gamma_path  = os.path.join(wc_dir, 'A', 'D', 'gamma')
+  new_gamma_path  = os.path.join(wc_dir, 'A', 'C', 'gamma')
+
+  # r3 - Modify a file (A_COPY/D/gamma) on the branch
+  svntest.main.file_write(gamma_COPY_path, "Branch edit.\n")
+  svntest.main.run_svn(None, 'ci', '-m', 'Branch edit', wc_dir)
+
+  # r4 - Reintegrate A_COPY to A
+  svntest.main.run_svn(None, 'up', wc_dir)
+  svntest.main.run_svn(None, 'merge', '--reintegrate',
+                       sbox.repo_url + '/A_COPY', A_path)
+  svntest.main.run_svn(None, 'ci', '-m', 'Reintegrate A_COPY to A', wc_dir)
+
+  # r5 - Move file modified by reintegrate (A/D/gamma to A/C/gamma).
+  svntest.main.run_svn(None, 'move', old_gamma_path, new_gamma_path)
+  svntest.main.run_svn(None, 'ci', '-m', 'Move file', wc_dir)
+
+  # 'svn log -g --stop-on-copy ^/A/C/gamma' hould return *only* r5
+  # Currently this test fails because the change in gamma's inherited
+  # mergeinfo between r4 and r5, due to the move, is understood as a merge:
+  #
+  #   >svn log -v -g --stop-on-copy ^^/A/C/gamma
+  #   ------------------------------------------------------------------------
+  #   r5 | jrandom | 2011-10-11 14:37:57 -0700 (Tue, 11 Oct 2011) | 1 line  #
+  #   Changed paths:
+  #      A /A/C/gamma (from /A/D/gamma:4)
+  #      D /A/D/gamma
+  #
+  #   Move file
+  #   ------------------------------------------------------------------------
+  #   r3 | jrandom | 2011-10-11 14:37:56 -0700 (Tue, 11 Oct 2011) | 1 line
+  #   Changed paths:
+  #      M /A_COPY/D/gamma
+  #   Reverse merged via: r5
+  #
+  #   Branch edit
+  #   ------------------------------------------------------------------------
+  #   r2 | jrandom | 2011-10-11 14:37:56 -0700 (Tue, 11 Oct 2011) | 1 line
+  #   Changed paths:
+  #      A /A_COPY (from /A:1)
+  #   Reverse merged via: r5
+  #
+  #   log msg
+  #   ------------------------------------------------------------------------
+  expected_merges = {5  : []}
+  svntest.main.run_svn(None, 'up', wc_dir)
+  exit_code, out, err = svntest.actions.run_and_verify_svn(
+    None, None, [], 'log', '-g', '--stop-on-copy',
+    sbox.repo_url + '/A/C/gamma')
+  log_chain = parse_log_output(out)
+  check_merge_results(log_chain, expected_merges)
+
 ########################################################################
 # Run the tests
 
@@ -2067,6 +2133,7 @@ test_list = [ None,
               merge_sensitive_log_ignores_cyclic_merges,
               log_with_unrelated_peg_and_operative_revs,
               log_on_nonexistent_path_and_valid_rev,
+              merge_sensitive_log_copied_path_inherited_mergeinfo,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/fs-py/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/svnadmin_tests.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/svnadmin_tests.py Thu Oct 13 14:30:07 2011
@@ -1405,7 +1405,7 @@ def test_lslocks_and_rmlocks(sbox):
                                      [], "lock", "-m", "Locking files",
                                      iota_url, lambda_url)
 
-  expected_output = svntest.verify.UnorderedRegexOutput([
+  expected_output_list = [
       "Path: /A/B/lambda",
       "UUID Token: opaquelocktoken",
       "Owner: jrandom",
@@ -1416,7 +1416,7 @@ def test_lslocks_and_rmlocks(sbox):
       "Path: /iota",
       "UUID Token: opaquelocktoken.*",      
       "\n", # empty line    
-      ])
+      ]
 
   # List all locks
   exit_code, output, errput = svntest.main.run_svnadmin("lslocks",
@@ -1424,10 +1424,25 @@ def test_lslocks_and_rmlocks(sbox):
   
   if errput:
     raise SVNUnexpectedStderr(errput)
-    
-  svntest.verify.compare_and_display_lines('message', 'label',
-                                           expected_output, output)
   svntest.verify.verify_exit_code(None, exit_code, 0)
+    
+  try:
+    expected_output = svntest.verify.UnorderedRegexOutput(expected_output_list)
+    svntest.verify.compare_and_display_lines('lslocks output mismatch',
+                                             'output',
+                                             expected_output, output)
+  except:
+    # Usually both locks have the same timestamp but if the clock
+    # ticks between creating the two locks then the timestamps will
+    # differ.  When the output has two identical "Created" lines
+    # UnorderedRegexOutput must have one matching regex, when the
+    # output has two different "Created" lines UnorderedRegexOutput
+    # must have two regex.
+    expected_output_list.append("Created:.*")
+    expected_output = svntest.verify.UnorderedRegexOutput(expected_output_list)
+    svntest.verify.compare_and_display_lines('lslocks output mismatch',
+                                             'output',
+                                             expected_output, output)
 
   # List lock in path /A
   exit_code, output, errput = svntest.main.run_svnadmin("lslocks",

Modified: subversion/branches/fs-py/subversion/tests/libsvn_subr/cache-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/libsvn_subr/cache-test.c?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/libsvn_subr/cache-test.c (original)
+++ subversion/branches/fs-py/subversion/tests/libsvn_subr/cache-test.c Thu Oct 13 14:30:07 2011
@@ -135,7 +135,7 @@ test_inprocess_cache_basic(apr_pool_t *p
                                       APR_HASH_KEY_STRING,
                                       1,
                                       1,
-                                      TRUE,
+                                      APR_HAS_THREADS,
                                       "",
                                       pool));
 

Modified: subversion/branches/fs-py/subversion/tests/libsvn_subr/mergeinfo-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/libsvn_subr/mergeinfo-test.c (original)
+++ subversion/branches/fs-py/subversion/tests/libsvn_subr/mergeinfo-test.c Thu Oct 13 14:30:07 2011
@@ -117,7 +117,7 @@ verify_mergeinfo_parse(const char *input
    -> merge ranges. */
 static apr_hash_t *info1, *info2;
 
-#define NBR_MERGEINFO_VALS 20
+#define NBR_MERGEINFO_VALS 24
 
 /* Valid mergeinfo values. */
 static const char * const mergeinfo_vals[NBR_MERGEINFO_VALS] =
@@ -146,7 +146,12 @@ static const char * const mergeinfo_vals
     "/gunther_branch:7-12*,1,5-10*",
     /* Adjacent rangelists of differing inheritability. */
     "/b5:5-53,1-4,54-90*",
-    "/c0:1-77,12-44"
+    "/c0:1-77,12-44",
+    /* Non-canonical paths. */
+    "/A/:7-8",
+    "/A///:7-8",
+    "/A/.:7-8",
+    "/A/./B:7-8"
   };
 /* Paths corresponding to mergeinfo_vals. */
 static const char * const mergeinfo_paths[NBR_MERGEINFO_VALS] =
@@ -173,7 +178,13 @@ static const char * const mergeinfo_path
     "/gunther_branch",
     "/gunther_branch",
     "/b5",
-    "/c0"
+    "/c0",
+
+    /* non-canonical paths converted to canonical */
+    "/A",
+    "/A",
+    "/A",
+    "/A/B"
   };
 /* First ranges from the paths identified by mergeinfo_paths. */
 static svn_merge_range_t mergeinfo_ranges[NBR_MERGEINFO_VALS][MAX_NBR_RANGES] =
@@ -200,6 +211,10 @@ static svn_merge_range_t mergeinfo_range
     { {0, 1, TRUE}, {4, 12, FALSE} },
     { {0, 53, TRUE}, {53, 90, FALSE} },
     { {0, 77, TRUE} },
+    { {6, 8, TRUE} },
+    { {6, 8, TRUE} },
+    { {6, 8, TRUE} },
+    { {6, 8, TRUE} },
   };
 
 static svn_error_t *
@@ -1181,7 +1196,7 @@ test_rangelist_merge(apr_pool_t *pool)
     svn_merge_range_t expected_merge[6];
   };
 
-  #define SIZE_OF_RANGE_MERGE_TEST_ARRAY 59
+  #define SIZE_OF_RANGE_MERGE_TEST_ARRAY 68
   /* The actual test data. */
   struct rangelist_merge_test_data test_data[SIZE_OF_RANGE_MERGE_TEST_ARRAY] =
     {
@@ -1266,6 +1281,29 @@ test_rangelist_merge(apr_pool_t *pool)
       {"/A: 2-17", "/A: 1-5*,7*,12-13*", 2,
        {{0, 1, FALSE}, {1, 17, TRUE}}},
 
+      {"/A: 3-4*,10-15,20", "/A: 5-60*", 5,
+       {{2, 9, FALSE}, {9, 15, TRUE}, {15, 19, FALSE},{19, 20, TRUE},
+        {20, 60, FALSE}}},
+
+      {"/A: 5-60*", "/A: 3-4*,10-15,20", 5,
+       {{2, 9, FALSE}, {9, 15, TRUE}, {15, 19, FALSE},{19, 20, TRUE},
+        {20, 60, FALSE}}},
+
+      {"/A: 3-4*,50-100*", "/A: 5-60*", 1, {{2, 100, FALSE}}},
+
+      {"/A: 5-60*", "/A: 3-4*,50-100*", 1, {{2, 100, FALSE}}},
+
+      {"/A: 3-4*,50-100", "/A: 5-60*", 2, {{2, 49, FALSE}, {49, 100, TRUE}}},
+
+      {"/A: 5-60*", "/A: 3-4*,50-100", 2, {{2, 49, FALSE}, {49, 100, TRUE}}},
+
+      {"/A: 3-4,50-100*", "/A: 5-60", 2, {{2, 60, TRUE}, {60, 100, FALSE}}},
+
+      {"/A: 5-60", "/A: 3-4,50-100*", 2, {{2, 60, TRUE}, {60, 100, FALSE}}},
+
+      {"/A: 5,9,11-15,17,200-300,999", "/A: 7-50", 4,
+       {{4, 5, TRUE}, {6, 50, TRUE}, {199, 300, TRUE}, {998, 999, TRUE}}},
+
       /* A rangelist merged with an empty rangelist should equal the
          non-empty rangelist but in compacted form. */
       {"/A: 1-44,45,46,47-50",       "",  1, {{ 0, 50, TRUE }}},

Modified: subversion/branches/fs-py/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/libsvn_wc/db-test.c?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/branches/fs-py/subversion/tests/libsvn_wc/db-test.c Thu Oct 13 14:30:07 2011
@@ -374,7 +374,7 @@ static svn_error_t *
 test_getting_info(apr_pool_t *pool)
 {
   const char *local_abspath;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_wc__db_status_t status;
   svn_revnum_t revision;
   const char *repos_relpath;
@@ -403,7 +403,7 @@ test_getting_info(apr_pool_t *pool)
             &update_root,
             db, local_abspath,
             pool, pool));
-  SVN_TEST_ASSERT(kind == svn_wc__db_kind_dir);
+  SVN_TEST_ASSERT(kind == svn_kind_dir);
   SVN_TEST_ASSERT(status == svn_wc__db_status_normal);
   SVN_TEST_ASSERT(revision == 1);
   SVN_TEST_STRING_ASSERT(repos_relpath, "");
@@ -426,7 +426,7 @@ test_getting_info(apr_pool_t *pool)
             NULL, NULL,
             db, svn_dirent_join(local_abspath, "A", pool),
             pool, pool));
-  SVN_TEST_ASSERT(kind == svn_wc__db_kind_file);
+  SVN_TEST_ASSERT(kind == svn_kind_file);
   SVN_TEST_STRING_ASSERT(SHA1_1, svn_checksum_to_cstring(checksum, pool));
   SVN_TEST_STRING_ASSERT(repos_relpath, "A");
   SVN_TEST_STRING_ASSERT(repos_root_url, ROOT_ONE);
@@ -441,7 +441,7 @@ test_getting_info(apr_pool_t *pool)
             NULL, NULL,
             db, svn_dirent_join(local_abspath, "B", pool),
             pool, pool));
-  SVN_TEST_ASSERT(kind == svn_wc__db_kind_symlink);
+  SVN_TEST_ASSERT(kind == svn_kind_symlink);
   SVN_TEST_ASSERT(status == svn_wc__db_status_excluded);
   SVN_TEST_ASSERT(!SVN_IS_VALID_REVNUM(revision));
   SVN_TEST_STRING_ASSERT(repos_relpath, "B");
@@ -464,7 +464,7 @@ test_getting_info(apr_pool_t *pool)
             NULL, NULL, NULL,
             db, svn_dirent_join(local_abspath, "C", pool),
             pool, pool));
-  SVN_TEST_ASSERT(kind == svn_wc__db_kind_unknown);
+  SVN_TEST_ASSERT(kind == svn_kind_unknown);
   SVN_TEST_ASSERT(status == svn_wc__db_status_server_excluded);
 
   /* Test: not-present presence. */
@@ -549,12 +549,12 @@ static svn_error_t *
 validate_node(svn_wc__db_t *db,
               const char *local_abspath,
               const char *relpath,
-              svn_wc__db_kind_t expected_kind,
+              svn_kind_t expected_kind,
               svn_wc__db_status_t expected_status,
               apr_pool_t *scratch_pool)
 {
   const char *path = svn_dirent_join(local_abspath, relpath, scratch_pool);
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_wc__db_status_t status;
   apr_hash_t *props;
   const svn_string_t *value;
@@ -679,7 +679,7 @@ test_inserting_nodes(apr_pool_t *pool)
   SVN_ERR(svn_wc__db_base_add_excluded_node(
             db, svn_dirent_join(local_abspath, "N/N-b", pool),
             "N/N-b", ROOT_ONE, UUID_ONE, 3,
-            svn_wc__db_kind_file, svn_wc__db_status_server_excluded,
+            svn_kind_file, svn_wc__db_status_server_excluded,
             NULL, NULL,
             pool));
 
@@ -687,7 +687,7 @@ test_inserting_nodes(apr_pool_t *pool)
   SVN_ERR(svn_wc__db_base_add_excluded_node(
             db, svn_dirent_join(local_abspath, "P", pool),
             "P", ROOT_ONE, UUID_ONE, 3,
-            svn_wc__db_kind_dir, svn_wc__db_status_excluded,
+            svn_kind_dir, svn_wc__db_status_excluded,
             NULL, NULL,
             pool));
 
@@ -695,7 +695,7 @@ test_inserting_nodes(apr_pool_t *pool)
   SVN_ERR(svn_wc__db_base_add_not_present_node(
             db, svn_dirent_join(local_abspath, "Q", pool),
             "Q", ROOT_ONE, UUID_ONE, 3,
-            svn_wc__db_kind_symlink,
+            svn_kind_symlink,
             NULL, NULL,
             pool));
 
@@ -703,36 +703,36 @@ test_inserting_nodes(apr_pool_t *pool)
   SVN_ERR(svn_wc__db_base_add_excluded_node(
             db, svn_dirent_join(local_abspath, "R", pool),
             "R", ROOT_ONE, UUID_ONE, 3,
-            svn_wc__db_kind_unknown, svn_wc__db_status_server_excluded,
+            svn_kind_unknown, svn_wc__db_status_server_excluded,
             NULL, NULL,
             pool));
 
 
   /* Are all the nodes where we expect them to be? */
   SVN_ERR(validate_node(db, local_abspath, "N",
-                        svn_wc__db_kind_dir, svn_wc__db_status_normal,
+                        svn_kind_dir, svn_wc__db_status_normal,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "N/N-a",
-                        svn_wc__db_kind_file, svn_wc__db_status_normal,
+                        svn_kind_file, svn_wc__db_status_normal,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "N/N-b",
-                        svn_wc__db_kind_file,
+                        svn_kind_file,
                         svn_wc__db_status_server_excluded,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "N/N-c",
-                        svn_wc__db_kind_unknown, svn_wc__db_status_incomplete,
+                        svn_kind_unknown, svn_wc__db_status_incomplete,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "O",
-                        svn_wc__db_kind_symlink, svn_wc__db_status_normal,
+                        svn_kind_symlink, svn_wc__db_status_normal,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "P",
-                        svn_wc__db_kind_dir, svn_wc__db_status_excluded,
+                        svn_kind_dir, svn_wc__db_status_excluded,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "Q",
-                        svn_wc__db_kind_symlink, svn_wc__db_status_not_present,
+                        svn_kind_symlink, svn_wc__db_status_not_present,
                         pool));
   SVN_ERR(validate_node(db, local_abspath, "R",
-                        svn_wc__db_kind_unknown,
+                        svn_kind_unknown,
                         svn_wc__db_status_server_excluded,
                         pool));
 
@@ -788,7 +788,7 @@ static svn_error_t *
 test_working_info(apr_pool_t *pool)
 {
   const char *local_abspath;
-  svn_wc__db_kind_t kind;
+  svn_kind_t kind;
   svn_wc__db_status_t status;
   svn_revnum_t revision;
   const char *repos_relpath;
@@ -832,7 +832,7 @@ test_working_info(apr_pool_t *pool)
             db, svn_dirent_join(local_abspath, "I", pool),
             pool, pool));
   SVN_TEST_ASSERT(status == svn_wc__db_status_added);
-  SVN_TEST_ASSERT(kind == svn_wc__db_kind_dir);
+  SVN_TEST_ASSERT(kind == svn_kind_dir);
   SVN_TEST_ASSERT(revision == SVN_INVALID_REVNUM);
   SVN_TEST_ASSERT(repos_relpath == NULL);
   SVN_TEST_ASSERT(repos_root_url == NULL);
@@ -879,14 +879,14 @@ test_pdh(apr_pool_t *pool)
   SVN_ERR(svn_wc__db_base_add_excluded_node(
             db, svn_dirent_join(local_abspath, "sub", pool),
             "sub", ROOT_ONE, UUID_ONE, 1,
-            svn_wc__db_kind_file, svn_wc__db_status_server_excluded,
+            svn_kind_file, svn_wc__db_status_server_excluded,
             NULL, NULL,
             pool));
 
   SVN_ERR(svn_wc__db_base_add_excluded_node(
             db, svn_dirent_join(local_abspath, "sub/A", pool),
             "sub/A", ROOT_ONE, UUID_ONE, 1,
-            svn_wc__db_kind_file, svn_wc__db_status_server_excluded,
+            svn_kind_file, svn_wc__db_status_server_excluded,
             NULL, NULL,
             pool));
 
@@ -1428,7 +1428,7 @@ test_externals_store(apr_pool_t *pool)
 
   {
     svn_wc__db_status_t status;
-    svn_wc__db_kind_t kind;
+    svn_kind_t kind;
     const char *repos_root_url;
     const char *repos_uuid;
     const char *defining_abspath;
@@ -1445,7 +1445,7 @@ test_externals_store(apr_pool_t *pool)
                                      pool, pool));
 
     SVN_TEST_ASSERT(status == svn_wc__db_status_normal);
-    SVN_TEST_ASSERT(kind == svn_wc__db_kind_file);
+    SVN_TEST_ASSERT(kind == svn_kind_file);
     SVN_TEST_STRING_ASSERT(repos_root_url, "svn://some-repos/svn");
     SVN_TEST_STRING_ASSERT(repos_uuid, "not-a-uuid");
     SVN_TEST_STRING_ASSERT(defining_abspath, subdir);
@@ -1476,7 +1476,7 @@ test_externals_store(apr_pool_t *pool)
                                      pool, pool));
 
     SVN_TEST_ASSERT(status == svn_wc__db_status_normal);
-    SVN_TEST_ASSERT(kind == svn_wc__db_kind_dir);
+    SVN_TEST_ASSERT(kind == svn_kind_dir);
     SVN_TEST_STRING_ASSERT(repos_root_url, "svn://other-repos/nsv");
     SVN_TEST_STRING_ASSERT(repos_uuid, "no-uuid-either");
     SVN_TEST_STRING_ASSERT(defining_abspath, subdir);

Modified: subversion/branches/fs-py/tools/client-side/svn-viewspec.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/client-side/svn-viewspec.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/client-side/svn-viewspec.py (original)
+++ subversion/branches/fs-py/tools/client-side/svn-viewspec.py Thu Oct 13 14:30:07 2011
@@ -20,6 +20,8 @@
 # ====================================================================
 
 """\
+__SCRIPTNAME__: checkout utility for sparse Subversion working copies
+
 Usage: 1. __SCRIPTNAME__ checkout VIEWSPEC-FILE TARGET-DIR
        2. __SCRIPTNAME__ examine VIEWSPEC-FILE
        3. __SCRIPTNAME__ help

Modified: subversion/branches/fs-py/tools/dev/benchmarks/suite1/cronjob
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dev/benchmarks/suite1/cronjob?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dev/benchmarks/suite1/cronjob (original)
+++ subversion/branches/fs-py/tools/dev/benchmarks/suite1/cronjob Thu Oct 13 14:30:07 2011
@@ -1,4 +1,24 @@
 #!/bin/bash
+#
+# ====================================================================
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ====================================================================
+#
 # This is the cronjob as run on our ASF box aka svn-qavm.
 # It uses neels' mad bash script magic called 'pat' to update and
 # build the latest trunk, invokes a benchmark and sends as mail.

Modified: subversion/branches/fs-py/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dev/unix-build/Makefile.svn?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/fs-py/tools/dev/unix-build/Makefile.svn Thu Oct 13 14:30:07 2011
@@ -1037,7 +1037,10 @@ $(PYTHON_OBJDIR)/.retrieved: $(DISTDIR)/
 	chmod +x $(PYTHON_SRCDIR)/setup.py
 	# Fixes shared library linking on OpenBSD
 	# http://bugs.python.org/issue12560
+	# Also fix compilation error on OpenBSD 5.0 and later (undefined
+	# reference to 'lstat' -- already fixed in hg.python.org/cpython).
 	sed -e '4930s#NetBSD\*|#NetBSD*|OpenBSD*|#' \
+	 	-e 's#OpenBSD/4\.\[789\]#OpenBSD/*#' \
 		< $(PYTHON_SRCDIR)/configure \
 		> $(PYTHON_SRCDIR)/configure.patched
 	mv $(PYTHON_SRCDIR)/configure.patched $(PYTHON_SRCDIR)/configure

Modified: subversion/branches/fs-py/tools/dev/wc-format.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dev/wc-format.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dev/wc-format.py (original)
+++ subversion/branches/fs-py/tools/dev/wc-format.py Thu Oct 13 14:30:07 2011
@@ -51,7 +51,7 @@ def print_format(wc_path):
   #   1.4.x: format 8
   #   1.5.x: format 9
   #   1.6.x: format 10
-  #   1.7.x: format XXX
+  #   1.7.x: format 29
   formatno = get_format(wc_path)
   print '%s: %s' % (wc_path, formatno)
 

Modified: subversion/branches/fs-py/tools/dist/collect_sigs.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/collect_sigs.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/collect_sigs.py (original)
+++ subversion/branches/fs-py/tools/dist/collect_sigs.py Thu Oct 13 14:30:07 2011
@@ -75,7 +75,7 @@ def generate_asc_files(target_dir='.'):
 
   db = sqlite3.connect(os.path.join(target_dir, 'sigs.db'))
   curs = db.cursor()
-  like_filename = 'subversion-%s%%' % config.version
+  like_filename = 'subversion-%s.%%' % config.version
   curs.execute('''SELECT filename, signature FROM signatures
                   WHERE filename LIKE ?''', (like_filename, ) )
   for filename, signature in curs:
@@ -183,7 +183,7 @@ def list_signatures():
 
   lines = ""
   curs = db.cursor()
-  like_filename = 'subversion-%s%%' % config.version
+  like_filename = 'subversion-%s.%%' % config.version
   curs.execute('''SELECT filename, COUNT(*) FROM signatures
                   WHERE filename LIKE ?
                   GROUP BY filename ORDER BY filename''',

Modified: subversion/branches/fs-py/tools/dist/rat-excludes
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/rat-excludes?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/rat-excludes (original)
+++ subversion/branches/fs-py/tools/dist/rat-excludes Thu Oct 13 14:30:07 2011
@@ -15,6 +15,7 @@ doc/doxygen.conf
 notes/**
 packages/
 subversion/tests/cmdline/getopt_tests_data/*
+subversion/tests/cmdline/diff_tests_data/*
 subversion/bindings/swig/NOTES
 subversion/libsvn_fs_base/notes/TODO
 subversion/libsvn_fs_base/notes/fs-history
@@ -31,8 +32,11 @@ subversion/bindings/ctypes-python/csvn/e
 subversion/tests/cmdline/svntest/err.py
 tools/buildbot/master/public_html/buildbot.css
 tools/dist/rat-excludes
+tools/dist/_gnupg.py
+tools/dist/templates/*.ezt
 tools/dev/iz/defect.dem
 tools/dev/iz/ff2csv.command
+tools/dev/benchmarks/suite1/crontab.entry
 tools/hook-scripts/mailer/tests/mailer-t1.output
 **/*.dump
 **/*.icns

Modified: subversion/branches/fs-py/tools/dist/release.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/release.py?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/release.py (original)
+++ subversion/branches/fs-py/tools/dist/release.py Thu Oct 13 14:30:07 2011
@@ -626,7 +626,7 @@ def check_sigs(args):
         target = args.target
     else:
         target = os.path.join(os.getenv('HOME'), 'public_html', 'svn',
-                              str(args.version), 'deploy')
+                              str(args.version))
 
     good_sigs = {}
 

Modified: subversion/branches/fs-py/tools/dist/templates/rc-news.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/templates/rc-news.ezt?rev=1182877&r1=1182876&r2=1182877&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/templates/rc-news.ezt (original)
+++ subversion/branches/fs-py/tools/dist/templates/rc-news.ezt Thu Oct 13 14:30:07 2011
@@ -4,7 +4,7 @@
     title="Link to this section">&para;</a> 
 </h3> 
  
-<p>We are pleased to announce to release of Apache Subversion [version].  This
+<p>We are pleased to announce the release of Apache Subversion [version].  This
    release is not intended for production use, but is provided as a milestone
    to encourage wider testing and feedback from intrepid users and maintainers.
    Please see the