subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pbu...@apache.org
Subject svn commit: r1330583 [4/7] - in /subversion/branches/inheritable-props: ./ build/ build/generator/ build/generator/templates/ notes/ notes/merge-tracking/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/swig/ruby/test/ ...
Date Wed, 25 Apr 2012 22:04:40 GMT
Modified: subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.c Wed Apr 25 22:04:36
2012
@@ -396,7 +396,7 @@ wclock_owns_lock(svn_boolean_t *own_lock
                  apr_pool_t *scratch_pool);
 
 
-
+ 
 /* Return the absolute path, in local path style, of LOCAL_RELPATH
    in WCROOT.  */
 static const char *
@@ -5101,7 +5101,14 @@ do_changelist_notify(void *baton,
       svn_pool_clear(iterpool);
 
       if (cancel_func)
-        SVN_ERR(cancel_func(cancel_baton));
+        {
+          svn_error_t *err = cancel_func(cancel_baton);
+
+          if (err)
+            return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
+        }
 
       notify_abspath = svn_dirent_join(wcroot->abspath, notify_relpath,
                                        iterpool);
@@ -6354,7 +6361,7 @@ struct op_delete_baton_t {
 };
 
 /* This structure is used while rewriting move information for nodes.
- * 
+ *
  * The most simple case of rewriting move information happens when
  * a moved-away subtree is moved again:  mv A B; mv B C
  * The second move requires rewriting moved-to info at or within A.
@@ -7552,7 +7559,7 @@ read_children_info(void *baton,
           child_item->info.have_more_work = (child_item->nr_layers > 1);
 
           /* Moved-to can only exist at op_depth > 0. */
-          moved_to_relpath = svn_sqlite__column_text(stmt, 21, NULL); 
+          moved_to_relpath = svn_sqlite__column_text(stmt, 21, NULL);
           if (moved_to_relpath)
             child_item->info.moved_to_abspath =
               svn_dirent_join(wcroot->abspath, moved_to_relpath, result_pool);
@@ -8166,6 +8173,7 @@ svn_wc__db_read_props_streamily(svn_wc__
   cache_props_baton_t baton;
   svn_boolean_t have_row;
   apr_pool_t *iterpool;
+  svn_error_t *err = NULL;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
   SVN_ERR_ASSERT(receiver_func);
@@ -8198,19 +8206,20 @@ svn_wc__db_read_props_streamily(svn_wc__
   SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                     STMT_SELECT_RELEVANT_PROPS_FROM_CACHE));
   SVN_ERR(svn_sqlite__step(&have_row, stmt));
-  while (have_row)
+  while (!err && have_row)
     {
       apr_hash_t *props;
 
       svn_pool_clear(iterpool);
 
+      SVN_ERR(svn_sqlite__column_properties(&props, stmt, 1, iterpool,
+                                            iterpool));
+
       /* see if someone wants to cancel this operation. */
       if (cancel_func)
-        SVN_ERR(cancel_func(cancel_baton));
+        err = cancel_func(cancel_baton);
 
-      SVN_ERR(svn_sqlite__column_properties(&props, stmt, 1, iterpool,
-                                            iterpool));
-      if (props && apr_hash_count(props) != 0)
+      if (!err && props && apr_hash_count(props) != 0)
         {
           const char *child_relpath;
           const char *child_abspath;
@@ -8219,19 +8228,20 @@ svn_wc__db_read_props_streamily(svn_wc__
           child_abspath = svn_dirent_join(wcroot->abspath,
                                           child_relpath, iterpool);
 
-          SVN_ERR(receiver_func(receiver_baton, child_abspath, props,
-                                iterpool));
+          err = receiver_func(receiver_baton, child_abspath, props, iterpool);
         }
 
-      SVN_ERR(svn_sqlite__step(&have_row, stmt));
+      err = svn_error_compose_create(err, svn_sqlite__step(&have_row, stmt));
     }
 
-  SVN_ERR(svn_sqlite__reset(stmt));
+  err = svn_error_compose_create(err, svn_sqlite__reset(stmt));
 
   svn_pool_destroy(iterpool);
 
-  SVN_ERR(svn_sqlite__exec_statements(wcroot->sdb,
-                                      STMT_DROP_NODE_PROPS_CACHE));
+  SVN_ERR(svn_error_compose_create(
+                    err,
+                    svn_sqlite__exec_statements(wcroot->sdb,
+                                                STMT_DROP_NODE_PROPS_CACHE)));
   return SVN_NO_ERROR;
 }
 
@@ -10168,6 +10178,105 @@ svn_wc__db_scan_addition(svn_wc__db_stat
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+final_moved_to(const char **final_relpath,
+               apr_int64_t op_depth,
+               svn_wc__db_wcroot_t *wcroot,
+               const char *local_relpath,
+               apr_pool_t *result_pool,
+               apr_pool_t *scratch_pool)
+{
+  svn_sqlite__stmt_t *stmt;
+  svn_boolean_t have_row;
+  apr_int64_t working_op_depth;
+  const char *node_relpath;
+  int i;
+
+  *final_relpath = NULL;
+
+  SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+                                    STMT_SELECT_OP_DEPTH_MOVED_TO));
+  SVN_ERR(svn_sqlite__bindf(stmt, "isi", wcroot->wc_id, local_relpath,
+                            op_depth));
+  SVN_ERR(svn_sqlite__step(&have_row, stmt));
+  if (have_row)
+    {
+      working_op_depth = svn_sqlite__column_int64(stmt, 0);
+      *final_relpath = svn_sqlite__column_text(stmt, 1, result_pool);
+      /* ### verify moved_here? */
+    }
+  SVN_ERR(svn_sqlite__reset(stmt));
+
+  /* A working row with moved_to, or no working row, and we are done. */
+  if (*final_relpath || !have_row)
+    return SVN_NO_ERROR;
+
+  /* Need to handle being moved via an ancestor. */
+  node_relpath = local_relpath;
+  for (i = relpath_depth(local_relpath); i > working_op_depth; --i)
+    {
+      const char *moved_to_relpath, *node_moved_to_relpath;
+
+      node_relpath = svn_relpath_dirname(node_relpath, scratch_pool);
+
+      SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+                                        STMT_SELECT_MOVED_TO));
+      SVN_ERR(svn_sqlite__bindf(stmt, "isi", wcroot->wc_id, node_relpath,
+                                working_op_depth));
+      SVN_ERR(svn_sqlite__step(&have_row, stmt));
+      SVN_ERR_ASSERT(have_row);
+      node_moved_to_relpath = svn_sqlite__column_text(stmt, 0, scratch_pool);
+      /* ### verify moved_here? */
+      SVN_ERR(svn_sqlite__reset(stmt));
+      if (node_moved_to_relpath)
+        {
+          moved_to_relpath
+            = svn_relpath_join(node_moved_to_relpath,
+                               svn_relpath_skip_ancestor(node_relpath,
+                                                         local_relpath),
+                               result_pool);
+
+          SVN_ERR(final_moved_to(final_relpath,
+                                 relpath_depth(node_moved_to_relpath),
+                                 wcroot, moved_to_relpath,
+                                 result_pool, scratch_pool));
+          if (!*final_relpath)
+            *final_relpath = moved_to_relpath;
+          break;
+        }
+    }
+
+  return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_wc__db_final_moved_to(const char **final_abspath,
+                          svn_wc__db_t *db,
+                          const char *local_abspath,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool)
+{
+  svn_wc__db_wcroot_t *wcroot;
+  const char *local_relpath, *final_relpath;
+
+  SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
+
+  SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&wcroot, &local_relpath, db,
+                              local_abspath, scratch_pool, scratch_pool));
+  VERIFY_USABLE_WCROOT(wcroot);
+
+  /* ### Wrap in a transaction */
+  SVN_ERR(final_moved_to(&final_relpath, 0, wcroot, local_relpath,
+                         result_pool, scratch_pool));
+
+  if (final_relpath)
+    *final_abspath = svn_dirent_join(wcroot->abspath, final_relpath,
+                                     result_pool);
+  else
+    *final_abspath = NULL;
+
+  return SVN_NO_ERROR;
+}
 
 struct scan_deletion_baton_t
 {
@@ -10194,7 +10303,7 @@ get_moved_to(struct scan_deletion_baton_
   if (moved_to_relpath)
     {
       const char *moved_to_op_root_relpath = moved_to_relpath;
-           
+
       if (strcmp(current_relpath, local_relpath))
         {
           /* LOCAL_RELPATH is a child inside the move op-root. */
@@ -10341,7 +10450,7 @@ scan_deletion_txn(void *baton,
       SVN_ERR(svn_sqlite__reset(stmt));
 
       /* Now CURRENT_RELPATH is an op-root, have a look at the parent. */
- 
+
       SVN_ERR_ASSERT(current_relpath[0] != '\0'); /* Catch invalid data */
       parent_relpath = svn_relpath_dirname(current_relpath, scratch_pool);
       SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
@@ -12477,35 +12586,25 @@ get_min_max_revisions(svn_revnum_t *min_
                       apr_pool_t *scratch_pool)
 {
   svn_sqlite__stmt_t *stmt;
-  svn_boolean_t have_row;
   svn_revnum_t min_rev, max_rev;
 
   SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                     STMT_SELECT_MIN_MAX_REVISIONS));
   SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
-  SVN_ERR(svn_sqlite__step(&have_row, stmt));
-  if (have_row)
+  SVN_ERR(svn_sqlite__step_row(stmt));
+
+  if (committed)
     {
-      if (committed)
-        {
-          min_rev = svn_sqlite__column_revnum(stmt, 2);
-          max_rev = svn_sqlite__column_revnum(stmt, 3);
-        }
-      else
-        {
-          min_rev = svn_sqlite__column_revnum(stmt, 0);
-          max_rev = svn_sqlite__column_revnum(stmt, 1);
-        }
+      min_rev = svn_sqlite__column_revnum(stmt, 2);
+      max_rev = svn_sqlite__column_revnum(stmt, 3);
     }
   else
     {
-      min_rev = SVN_INVALID_REVNUM;
-      max_rev = SVN_INVALID_REVNUM;
+      min_rev = svn_sqlite__column_revnum(stmt, 0);
+      max_rev = svn_sqlite__column_revnum(stmt, 1);
     }
 
-  /* The statement should only return at most one row. */
-  SVN_ERR(svn_sqlite__step(&have_row, stmt));
-  SVN_ERR_ASSERT(! have_row);
+  /* The statement returns exactly one row. */
   SVN_ERR(svn_sqlite__reset(stmt));
 
   if (min_revision)
@@ -12777,9 +12876,16 @@ has_local_mods(svn_boolean_t *is_modifie
           svn_filesize_t recorded_size;
           apr_time_t recorded_mod_time;
           svn_boolean_t skip_check = FALSE;
+          svn_error_t *err;
 
           if (cancel_func)
-            SVN_ERR(cancel_func(cancel_baton));
+            {
+              err = cancel_func(cancel_baton);
+              if (err)
+                return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
+            }
 
           svn_pool_clear(iterpool);
 
@@ -12796,8 +12902,12 @@ has_local_mods(svn_boolean_t *is_modifie
             {
               const svn_io_dirent2_t *dirent;
 
-              SVN_ERR(svn_io_stat_dirent(&dirent, node_abspath, TRUE,
-                                         iterpool, iterpool));
+              err = svn_io_stat_dirent(&dirent, node_abspath, TRUE,
+                                       iterpool, iterpool);
+              if (err)
+                return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
 
               if (dirent->kind != svn_node_file)
                 {
@@ -12814,9 +12924,15 @@ has_local_mods(svn_boolean_t *is_modifie
 
           if (! skip_check)
             {
-              SVN_ERR(svn_wc__internal_file_modified_p(is_modified,
-                                                       db, node_abspath,
-                                                       FALSE, iterpool));
+              err = svn_wc__internal_file_modified_p(is_modified,
+                                                     db, node_abspath,
+                                                     FALSE, iterpool);
+
+              if (err)
+                return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
+
               if (*is_modified)
                 break;
             }

Modified: subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.h?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.h Wed Apr 25 22:04:36
2012
@@ -2437,6 +2437,10 @@ svn_wc__db_lock_remove(svn_wc__db_t *db,
 
    All returned data will be allocated in RESULT_POOL. All temporary
    allocations will be made in SCRATCH_POOL.
+
+   ### Either delete this function and use _base_get_info instead, or
+   ### add a 'revision' output to make a complete repository node location
+   ### and rename to not say 'scan', because it doesn't.
 */
 svn_error_t *
 svn_wc__db_scan_base_repos(const char **repos_relpath,
@@ -3094,6 +3098,16 @@ svn_wc__db_verify(svn_wc__db_t *db,
                   apr_pool_t *scratch_pool);
 
 
+/* Set *FINAL_ABSPATH to the final moved-to location for LOCAL_ABSPATH
+ * after following any and all nested moves or set *FINAL_ABSPATH to
+ * NULL if LOCAL_ABSPATH is not moved. */
+svn_error_t *
+svn_wc__db_final_moved_to(const char **final_abspath,
+                          svn_wc__db_t *db,
+                          const char *local_abspath,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
 /* @} */
 
 

Modified: subversion/branches/inheritable-props/subversion/mod_dav_svn/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_dav_svn/lock.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/lock.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/lock.c Wed Apr 25 22:04:36
2012
@@ -765,10 +765,19 @@ append_locks(dav_lockdb *lockdb,
                                 DAV_ERR_LOCK_SAVE_LOCK,
                                 "Anonymous lock creation is not allowed.");
     }
+  else if (serr && (serr->apr_err == SVN_ERR_REPOS_HOOK_FAILURE ||
+                    serr->apr_err == SVN_ERR_FS_PATH_ALREADY_LOCKED ||
+                    serr->apr_err == SVN_ERR_FS_NO_SUCH_LOCK ||
+                    serr->apr_err == SVN_ERR_FS_LOCK_EXPIRED ||
+                    serr->apr_err == SVN_ERR_FS_BAD_LOCK_TOKEN ||
+                    serr->apr_err == SVN_ERR_FS_OUT_OF_DATE))
+     return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
+                                 "Failed to create new lock.",
+                                 resource->pool);
   else if (serr)
-    return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
-                                "Failed to create new lock.",
-                                resource->pool);
+    return dav_svn__sanitize_error(serr, "Failed to create new lock.",
+                                   HTTP_INTERNAL_SERVER_ERROR,
+                                   resource->info->r);
 
 
   /* A standard webdav LOCK response doesn't include any information
@@ -956,10 +965,19 @@ refresh_locks(dav_lockdb *lockdb,
                                 DAV_ERR_LOCK_SAVE_LOCK,
                                 "Anonymous lock refreshing is not allowed.");
     }
+  else if (serr && (serr->apr_err == SVN_ERR_REPOS_HOOK_FAILURE ||
+                    serr->apr_err == SVN_ERR_FS_PATH_ALREADY_LOCKED ||
+                    serr->apr_err == SVN_ERR_FS_NO_SUCH_LOCK ||
+                    serr->apr_err == SVN_ERR_FS_LOCK_EXPIRED ||
+                    serr->apr_err == SVN_ERR_FS_BAD_LOCK_TOKEN ||
+                    serr->apr_err == SVN_ERR_FS_OUT_OF_DATE))
+     return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
+                                 "Failed to refresh existing lock.",
+                                 resource->pool);
   else if (serr)
-    return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
-                                "Failed to refresh existing lock.",
-                                resource->pool);
+    return dav_svn__sanitize_error(serr, "Failed to refresh existing lock.",
+                                   HTTP_INTERNAL_SERVER_ERROR,
+                                   resource->info->r);
 
   /* Convert the refreshed lock into a dav_lock and return it. */
   svn_lock_to_dav_lock(&dlock, slock, FALSE, resource->exists, resource->pool);

Modified: subversion/branches/inheritable-props/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_dav_svn/reports/update.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/reports/update.c Wed Apr
25 22:04:36 2012
@@ -544,8 +544,8 @@ upd_delete_entry(const char *path,
                                            svn_relpath_basename(path, NULL),
                                            1);
   return dav_svn__brigade_printf(parent->uc->bb, parent->uc->output,
-                                 "<S:delete-entry name=\"%s\"/>" DEBUG_CR,
-                                 qname);
+                                 "<S:delete-entry name=\"%s\" rev=\"%ld\"/>"
+                                   DEBUG_CR, qname, revision);
 }
 
 
@@ -734,18 +734,6 @@ window_handler(svn_txdelta_window_t *win
   return SVN_NO_ERROR;
 }
 
-
-/* This implements 'svn_txdelta_window_handler_t'.
-   During a resource walk, the driver sends an empty window as a
-   boolean indicating that a change happened to this file, but we
-   don't want to send anything over the wire as a result. */
-static svn_error_t *
-dummy_window_handler(svn_txdelta_window_t *window, void *baton)
-{
-  return SVN_NO_ERROR;
-}
-
-
 static svn_error_t *
 upd_apply_textdelta(void *file_baton,
                     const char *base_checksum,
@@ -765,7 +753,7 @@ upd_apply_textdelta(void *file_baton,
      we don't actually want to transmit text-deltas. */
   if (file->uc->resource_walk || (! file->uc->send_all))
     {
-      *handler = dummy_window_handler;
+      *handler = svn_delta_noop_window_handler;
       *handler_baton = NULL;
       return SVN_NO_ERROR;
     }

Modified: subversion/branches/inheritable-props/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_dav_svn/repos.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/repos.c Wed Apr 25 22:04:36
2012
@@ -34,6 +34,9 @@
 #include <http_core.h>  /* for ap_construct_url */
 #include <mod_dav.h>
 
+#define CORE_PRIVATE      /* To make ap_show_mpm public in 2.2 */
+#include <http_config.h>
+
 #include "svn_types.h"
 #include "svn_pools.h"
 #include "svn_error.h"
@@ -50,6 +53,7 @@
 #include "svn_dirent_uri.h"
 #include "private/svn_log.h"
 #include "private/svn_fspath.h"
+#include "private/svn_repos_private.h"
 
 #include "dav_svn.h"
 
@@ -2144,6 +2148,8 @@ get_resource(request_rec *r,
   repos->repos = userdata;
   if (repos->repos == NULL)
     {
+      const char *fs_type;
+
       /* construct FS configuration parameters */
       fs_config = apr_hash_make(r->connection->pool);
       apr_hash_set(fs_config,
@@ -2159,9 +2165,29 @@ get_resource(request_rec *r,
                    APR_HASH_KEY_STRING,
                    dav_svn__get_revprop_cache_flag(r) ? "1" : "0");
 
+      /* Disallow BDB/event until issue 4157 is fixed. */
+      if (!strcmp(ap_show_mpm(), "event"))
+        {
+          serr = svn_repos__fs_type(&fs_type, fs_path, r->connection->pool);
+          if (serr)
+            {
+              /* svn_repos_open2 is going to fail, use that error. */
+              svn_error_clear(serr);
+              serr = NULL;
+            }
+          else if (!strcmp(fs_type, "bdb"))
+            serr = svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+                                     "BDB repository at '%s' is not compatible "
+                                     "with event MPM",
+                                     fs_path);
+        }
+      else
+        serr = NULL;
+
       /* open the FS */
-      serr = svn_repos_open2(&(repos->repos), fs_path, fs_config,
-                             r->connection->pool);
+      if (!serr)
+        serr = svn_repos_open2(&(repos->repos), fs_path, fs_config,
+                               r->connection->pool);
       if (serr != NULL)
         {
           /* The error returned by svn_repos_open2 might contain the

Modified: subversion/branches/inheritable-props/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_dav_svn/util.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/util.c Wed Apr 25 22:04:36
2012
@@ -527,11 +527,23 @@ dav_svn__sanitize_error(svn_error_t *ser
   svn_error_t *safe_err = serr;
   if (new_msg != NULL)
     {
+      /* Purge error tracing from the error chain. */
+      svn_error_t *purged_serr = svn_error_purge_tracing(serr);
+
       /* Sanitization is necessary.  Create a new, safe error and
            log the original error. */
-        safe_err = svn_error_create(serr->apr_err, NULL, new_msg);
-        ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EGENERAL, r,
-                      "%s", serr->message);
+      safe_err = svn_error_create(purged_serr->apr_err, NULL, new_msg);
+      ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EGENERAL, r,
+                    "%s", purged_serr->message);
+
+      /* Log the entire error chain. */
+      while (purged_serr->child)
+        {
+          purged_serr = purged_serr->child;
+          ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EGENERAL, r,
+                        "%s", purged_serr->message);
+        }
+
         svn_error_clear(serr);
       }
     return dav_svn__convert_err(safe_err, http_status,

Modified: subversion/branches/inheritable-props/subversion/po/de.po
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/po/de.po?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/po/de.po [UTF-8] (original)
+++ subversion/branches/inheritable-props/subversion/po/de.po [UTF-8] Wed Apr 25 22:04:36
2012
@@ -4815,15 +4815,13 @@ msgstr "Relative Quellrevision %ld ist i
 
 # CHECKME: Check quotes, s/rev/revision/
 #: ../libsvn_repos/load-fs-vtable.c:482
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Copy source checksum mismatch on copy from '%s'@%ld\n"
 "to '%s' in rev based on r%ld"
 msgstr ""
-"Prüfsummenfehler für Kopie von »%s«@%ld\n"
-" nach »%s« in der auf r%ld basierten Revision:\n"
-"   Erwartet:    %s\n"
-"   Tatsächlich: %s\n"
+"Prüfsummenfehler beim Kopieren von »%s«@%ld\n"
+"nach »%s« in der auf r%ld basierten Revision"
 
 #: ../libsvn_repos/load-fs-vtable.c:539
 msgid "Malformed dumpstream: Revision 0 must not contain node records"
@@ -6918,12 +6916,15 @@ msgid "Switched file '%s' does not match
 msgstr "Umgestellte Datei »%s« entspricht nicht der erwarteten URL »%s«"
 
 #: ../libsvn_wc/update_editor.c:3469
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Checksum mismatch for '%s':\n"
 "   expected:  %s\n"
 "   recorded:  %s\n"
-msgstr "Prüfsummenfehler für »%s«; erwartet: »%s«, verzeichnet: »%s«"
+msgstr ""
+"Prüfsummenfehler für »%s«:\n"
+"   erwartet:  %s\n"
+"verzeichnet:  %s\n"
 
 #: ../libsvn_wc/update_editor.c:4911
 #, c-format
@@ -6970,9 +6971,9 @@ msgid "The working copy '%s' is at forma
 msgstr ""
 
 #: ../libsvn_wc/upgrade.c:1545
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot upgrade '%s' as it is not a pre-1.7 working copy root"
-msgstr "Erwartete nicht, dass »%s« Basis einer Arbeitskopie ist"
+msgstr "Kann »%s« nicht in ein neueres Format bringen, da es keine Basis einer Arbeitskopie
älter als Version 1.7 ist"
 
 #: ../libsvn_wc/util.c:58
 #, c-format
@@ -6995,24 +6996,24 @@ msgid "The node '%s' has a corrupt check
 msgstr "Der Knoten »%s« hat einen fehlerhaften Prüfsummenwert."
 
 #: ../libsvn_wc/wc_db.c:2286
-#, fuzzy, c-format
+#, c-format
 msgid "Pristine text not found"
-msgstr "Eigenschaft nicht gefunden"
+msgstr "Ursprungstext nicht gefunden"
 
 #: ../libsvn_wc/wc_db.c:2473
-#, fuzzy, c-format
+#, c-format
 msgid "The pristine text with checksum '%s' was not found"
-msgstr "Der Knoten »%s« wurde nicht gefunden."
+msgstr "Der Ursprungstext mit der Prüfsumme »%s« wurde nicht gefunden."
 
 #: ../libsvn_wc/wc_db.c:2513
-#, fuzzy, c-format
+#, c-format
 msgid "The pristine text with MD5 checksum '%s' was not found"
-msgstr "Der Knoten »%s« wurde nicht gefunden."
+msgstr "Der Ursprungstext mit der MD5-Prüfsumme »%s« wurde nicht gefunden."
 
 #: ../libsvn_wc/wc_db.c:2705
 #, c-format
 msgid "The pristine text with checksum '%s' was found in the DB or on disk but not both"
-msgstr ""
+msgstr "Der Ursprungstext mit der Prüfsumme »%s« wurde in der Datenbank oder der Festplatte
gefunden, aber nicht beides."
 
 #: ../libsvn_wc/wc_db.c:3036 ../libsvn_wc/wc_db.c:3258
 #, c-format
@@ -7020,14 +7021,14 @@ msgid "Cannot copy '%s' excluded by serv
 msgstr ""
 
 #: ../libsvn_wc/wc_db.c:3042
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot handle status of '%s'"
-msgstr "Kann keine URL für »%s« finden"
+msgstr "Kann Status von »%s« nicht verarbeiten"
 
 #: ../libsvn_wc/wc_db.c:3885
-#, fuzzy, c-format
+#, c-format
 msgid "Can't store properties for '%s' in '%s'."
-msgstr "Kann Eigenschafts-Hashwert nicht nach »%s« schreiben"
+msgstr "Kann Eigenschaftswert für »%s« nicht in »%s« speichern"
 
 #: ../libsvn_wc/wc_db.c:5392
 #, c-format
@@ -7040,14 +7041,14 @@ msgid "Could not find node '%s' for reco
 msgstr ""
 
 #: ../libsvn_wc/wc_db.c:6863 ../libsvn_wc/wc_db.c:6965
-#, fuzzy, c-format
+#, c-format
 msgid "Expected node '%s' to be added."
-msgstr "Erwartete, dass »%s« ein Verzeichnis ist, es ist aber eine Datei"
+msgstr "Erwartete, dass Knoten »%s« hinzugefügt wird."
 
 #: ../libsvn_wc/wc_db.c:7280
 #, c-format
 msgid "Expected node '%s' to be deleted."
-msgstr ""
+msgstr "Erwartete, dass Knoten »%s« gelöscht wird."
 
 #: ../libsvn_wc/wc_db.c:7554
 #, c-format
@@ -7072,17 +7073,17 @@ msgstr "Arbeitskopie »%s« gesperrt."
 #: ../libsvn_wc/wc_db.c:8639
 #, c-format
 msgid "'%s' is already locked via '%s'."
-msgstr "»%s« ist bereits durch »%s« gesperrt"
+msgstr "»%s« ist bereits durch »%s« gesperrt."
 
 #: ../libsvn_wc/wc_db.c:8753
-#, fuzzy, c-format
+#, c-format
 msgid "Working copy not locked at '%s'."
-msgstr "Arbeitskopie »%s« ist nicht gesperrt"
+msgstr "Arbeitskopie »%s« ist nicht gesperrt."
 
 #: ../libsvn_wc/wc_db.c:9370
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' has no BASE_NODE"
-msgstr "»%s« hat keine URL"
+msgstr "»%s« hat keinen »BASE_NODE«"
 
 #: ../libsvn_wc/wc_db_pdh.c:234
 #, c-format
@@ -7092,18 +7093,17 @@ msgstr ""
 "Arbeitskopie erneut aus"
 
 #: ../libsvn_wc/wc_db_pdh.c:244
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "This client is too old to work with the working copy at\n"
 "'%s' (format %d).\n"
 "You need to get a newer Subversion client. For more details, see\n"
 "  http://subversion.apache.org/faq.html#working-copy-format-change\n"
 msgstr ""
-"Der Client ist zu alt, um mit der Arbeitskopie »%s« zusammen zu arbeiten.\n"
-"Sie benötigen einen neueren Subversion-Client oder müssen diese Arbeitskopie\n"
-"auf eine ältere Version zurücksetzen. Vergleiche\n"
-"http://subversion.apache.org/faq.html#working-copy-format-change\n"
-"für Details."
+"Dieser Client ist zu alt, um mit dieser Arbeitskopie umzugehen:\n"
+"»%s« (Format %d).\n"
+"Sie benötigen einen neueren Subversion-Client. Für mehr Details, siehe\n"
+"  http://subversion.apache.org/faq.html#working-copy-format-change\n"
 
 #: ../libsvn_wc/wc_db_pdh.c:265
 msgid "Cleanup with an older 1.7 client before upgrading with this client"
@@ -7122,9 +7122,9 @@ msgstr "»%s« ist keine Basis einer Arb
 
 # CHECKME: What's WCROOT? A variable or short for "working copy root"?
 #: ../libsvn_wc/wc_db_util.c:68
-#, fuzzy, c-format
+#, c-format
 msgid "Missing a row in WCROOT."
-msgstr "Fehlende Zeile in WCROOT für »%s«."
+msgstr "Fehlende Zeile in WCROOT."
 
 #: ../libsvn_wc/workqueue.c:338
 #, c-format
@@ -7454,9 +7454,8 @@ msgid "Destination directory exists; ple
 msgstr "Zielverzeichnis existiert; bitte löschen Sie das Verzeichnis oder verwenden Sie
»--force« zum Überschreiben"
 
 #: ../svn/export-cmd.c:118 ../svn/switch-cmd.c:179 ../svn/update-cmd.c:107
-#, fuzzy
 msgid "Failure occured processing one or more externals definitions"
-msgstr "»svn:externals«-Definitionen ignorieren"
+msgstr "Kann eine oder mehrere »svn:externals«-Definitionen nicht verarbeiten"
 
 #: ../svn/help-cmd.c:50
 #, c-format
@@ -7823,12 +7822,12 @@ msgstr ""
 # TODO: Duplicated message!!!!
 #: ../svn/log-cmd.c:625
 msgid "-c and -r are mutually exclusive"
-msgstr "-c und -r schließen sich gegenseitig aus"
+msgstr "-c und -r schließen einander aus"
 
 #: ../svn/log-cmd.c:652
-#, fuzzy, c-format
+#, c-format
 msgid "Only relative paths can be specified after a URL for 'svn log', but '%s' is not a
relative path"
-msgstr "Nach einer URL können nur relative Pfade angegeben werden"
+msgstr "Mit »svn log« können nach einer URL nur relative Pfade angegeben werden, »%s«
ist aber kein relativer Pfad"
 
 #: ../svn/log-cmd.c:697
 #, c-format
@@ -7871,13 +7870,12 @@ msgstr ""
 "                             --depth=immediates"
 
 #: ../svn/main.c:146
-#, fuzzy
 msgid "the change made by revision ARG (like -r ARG-1:ARG)\n"
-msgstr "die in Revision PAR durchgeführte Änderung"
+msgstr "die in Revision PAR durchgeführte Änderung (wie -r PAR-1:PAR)\n"
 
 #: ../svn/main.c:150
 msgid "ARG (some commands also take ARG1:ARG2 range)\n"
-msgstr ""
+msgstr "PAR (einige Kommandos akzeptieren auch Bereiche PAR1:PAR2)\n"
 
 #: ../svn/main.c:165
 msgid "read log message from file ARG"
@@ -8066,11 +8064,8 @@ msgid "remove changelist association"
 msgstr "Bezug zur Änderungsliste entfernen"
 
 #: ../svn/main.c:276
-#, fuzzy
 msgid "operate only on members of changelist ARG"
-msgstr ""
-"nur auf Elementen der Änderungsliste PAR operieren\n"
-"                             [äquivalent: --cl]"
+msgstr "nur auf Elementen der Änderungsliste PAR operieren"
 
 #: ../svn/main.c:278
 msgid "don't delete changelists after commit"
@@ -8089,9 +8084,8 @@ msgid "retrieve no revision properties"
 msgstr "keine Revisionseigenschaften abfragen"
 
 #: ../svn/main.c:285
-#, fuzzy
 msgid "set revision property ARG in new revision\n"
-msgstr "Revisionseigenschaft PAR abfragen"
+msgstr "Revisionseigenschaft PAR in neuer Revision setzen\n"
 
 #: ../svn/main.c:288
 msgid "make intermediate directories"
@@ -8152,9 +8146,8 @@ msgid "use git's extended diff format"
 msgstr ""
 
 #: ../svn/main.c:337
-#, fuzzy
 msgid "Allow merge into mixed-revision working copy.\n"
-msgstr "Kann nicht zurück in eine Arbeitskopie mit verschiedenen Revisionen integrieren,
versuchen Sie erst zu aktualisieren"
+msgstr "Erlaube Zusammenführung in eine Arbeitskopie mit verschiedenen Revisionen.\n"
 
 #: ../svn/main.c:408
 msgid ""
@@ -10056,29 +10049,28 @@ msgid "--- Reverse-merging r%ld through 
 msgstr "-- Rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
 
 #: ../svn/notify.c:765
-#, fuzzy, c-format
 msgid "--- Recording mergeinfo for merge between repository URLs into '%s':\n"
-msgstr "-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für Zusammenführung zwischen Projektarchiv-URLs
in »%s«:\n"
 
 #: ../svn/notify.c:775
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for merge of r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen von r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für Zusammenführung von r%ld in »%s«:\n"
 
 #: ../svn/notify.c:780
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for reverse merge of r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen (aus fremden Projektarchiv) von r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von r%ld in
»%s«:\n"
 
 #: ../svn/notify.c:785
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for merge of r%ld through r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für Zusammenführung von r%ld bis r%ld in »%s«:\n"
 
 #: ../svn/notify.c:790
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for reverse merge of r%ld through r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von r%ld bis
r%ld in »%s«:\n"
 
 #: ../svn/notify.c:800
 #, fuzzy, c-format
@@ -10131,9 +10123,9 @@ msgid "property '%s' deleted from reposi
 msgstr "Eigenschaft »%s« wurde von Revision %ld im Projektarchiv gelöscht\n"
 
 #: ../svn/notify.c:879
-#, fuzzy, c-format
+#, c-format
 msgid "Upgraded '%s'.\n"
-msgstr "Überspringe »%s«\n"
+msgstr "In neues Format gebracht: »%s«.\n"
 
 #: ../svn/notify.c:885
 #, c-format

Modified: subversion/branches/inheritable-props/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/svn/main.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/svn/main.c (original)
+++ subversion/branches/inheritable-props/subversion/svn/main.c Wed Apr 25 22:04:36 2012
@@ -2703,8 +2703,10 @@ main(int argc, const char *argv[])
       if (err->apr_err == SVN_ERR_CL_INSUFFICIENT_ARGS
           || err->apr_err == SVN_ERR_CL_ARG_PARSING_ERROR)
         {
-          err = svn_error_quick_wrap(err,
-                                     _("Try 'svn help' for more info"));
+          err = svn_error_quick_wrap(
+                  err, apr_psprintf(pool,
+                                    _("Try 'svn help %s' for more information"),
+                                    subcommand->name));
         }
       if (err->apr_err == SVN_ERR_WC_UPGRADE_REQUIRED)
         {

Modified: subversion/branches/inheritable-props/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/svn/notify.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/svn/notify.c (original)
+++ subversion/branches/inheritable-props/subversion/svn/notify.c Wed Apr 25 22:04:36 2012
@@ -181,6 +181,10 @@ notify(void *baton, const svn_wc_notify_
       if ((err = svn_cmdline_printf(pool, "D    %s\n", path_local)))
         goto print_error;
       break;
+    case svn_wc_notify_update_broken_lock:
+      if ((err = svn_cmdline_printf(pool, "B    %s\n", path_local)))
+        goto print_error;
+      break;
 
     case svn_wc_notify_update_external_removed:
       nb->received_some_change = TRUE;

Modified: subversion/branches/inheritable-props/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/svn/status.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/svn/status.c (original)
+++ subversion/branches/inheritable-props/subversion/svn/status.c Wed Apr 25 22:04:36 2012
@@ -87,6 +87,17 @@ combined_status(const svn_client_status_
   return new_status;
 }
 
+/* Return the combined repository STATUS as shown in 'svn status' based
+   on the repository node status and repository text status */
+static enum svn_wc_status_kind
+combined_repos_status(const svn_client_status_t *status)
+{
+  if (status->repos_node_status == svn_wc_status_modified)
+    return status->repos_text_status;
+
+  return status->repos_node_status;
+}
+
 /* Return the single character representation of the switched column
    status. */
 static char
@@ -509,7 +520,7 @@ svn_cl__print_status_xml(const char *cwd
     {
       svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "repos-status",
                             "item",
-                            generate_status_desc(status->repos_text_status),
+                            generate_status_desc(combined_repos_status(status)),
                             "props",
                             generate_status_desc(status->repos_prop_status),
                             NULL);

Modified: subversion/branches/inheritable-props/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/svnrdump/load_editor.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/svnrdump/load_editor.c (original)
+++ subversion/branches/inheritable-props/subversion/svnrdump/load_editor.c Wed Apr 25 22:04:36
2012
@@ -397,11 +397,6 @@ fetch_base_func(const char **filename,
   svn_stream_t *fstream;
   svn_error_t *err;
 
-  if (svn_path_is_url(path))
-    path = svn_uri_skip_ancestor(rb->pb->root_url, path, scratch_pool);
-  else if (path[0] == '/')
-    path += 1;
-
   if (! SVN_IS_VALID_REVNUM(base_revision))
     base_revision = rb->rev - 1;
 
@@ -438,11 +433,6 @@ fetch_props_func(apr_hash_t **props,
   struct revision_baton *rb = baton;
   svn_node_kind_t node_kind;
 
-  if (svn_path_is_url(path))
-    path = svn_uri_skip_ancestor(rb->pb->root_url, path, scratch_pool);
-  else if (path[0] == '/')
-    path += 1;
-
   if (! SVN_IS_VALID_REVNUM(base_revision))
     base_revision = rb->rev - 1;
 
@@ -484,11 +474,6 @@ fetch_kind_func(svn_kind_t *kind,
   struct revision_baton *rb = baton;
   svn_node_kind_t node_kind;
 
-  if (svn_path_is_url(path))
-    path = svn_uri_skip_ancestor(rb->pb->root_url, path, scratch_pool);
-  else if (path[0] == '/')
-    path += 1;
-
   if (! SVN_IS_VALID_REVNUM(base_revision))
     base_revision = rb->rev - 1;
 

Modified: subversion/branches/inheritable-props/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/svnserve/serve.c?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/svnserve/serve.c (original)
+++ subversion/branches/inheritable-props/subversion/svnserve/serve.c Wed Apr 25 22:04:36
2012
@@ -1655,7 +1655,7 @@ static svn_error_t *get_dir(svn_ra_svn_c
               /* created_rev, last_author, time */
               SVN_CMD_ERR(svn_repos_get_committed_info(&created_rev,
                                                        &cdate,
-                                                       &last_author, 
+                                                       &last_author,
                                                        root,
                                                        file_path,
                                                        subpool));

Modified: subversion/branches/inheritable-props/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/cmdline/davautocheck.sh?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/inheritable-props/subversion/tests/cmdline/davautocheck.sh Wed Apr
25 22:04:36 2012
@@ -71,6 +71,9 @@
 # To use value for "SVNPathAuthz" directive set SVN_PATH_AUTHZ with
 # appropriate value in the environment.
 #
+# To load an MPM module for Apache 2.4 use APACHE_MPM=event in the
+# environment.
+#
 # Passing --no-tests as argv[1] will have the script start a server
 # but not run any tests.
 
@@ -267,6 +270,10 @@ LOAD_MOD_AUTHN_FILE="$(get_loadmodule_co
 LOAD_MOD_AUTHZ_USER="$(get_loadmodule_config mod_authz_user)" \
     || fail "Authz_User module not found."
 }
+if [ ${APACHE_MPM:+set} ]; then
+    LOAD_MOD_MPM=$(get_loadmodule_config mod_mpm_$APACHE_MPM) \
+      || fail "MPM module not found"
+fi
 
 random_port() {
   if [ -n "$BASH_VERSION" ]; then
@@ -301,6 +308,7 @@ $HTPASSWD -b  $HTTPD_USERS jconstant ray
 touch $HTTPD_MIME_TYPES
 
 cat > "$HTTPD_CFG" <<__EOF__
+$LOAD_MOD_MPM
 $LOAD_MOD_LOG_CONFIG
 $LOAD_MOD_MIME
 $LOAD_MOD_ALIAS
@@ -398,6 +406,7 @@ $START &
 sleep 2
 
 say "HTTPD started and listening on '$BASE_URL'..."
+#query "Ready" "y"
 
 # Perform a trivial validation of our httpd configuration by
 # downloading a file and comparing it to the original copy.

Modified: subversion/branches/inheritable-props/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/cmdline/lock_tests.py?rev=1330583&r1=1330582&r2=1330583&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/inheritable-props/subversion/tests/cmdline/lock_tests.py Wed Apr 25
22:04:36 2012
@@ -1693,6 +1693,12 @@ def update_locked_deleted(sbox):
   expected_status.tweak('iota', 'A/mu', 'A/B/E/alpha',
                         status='D ', writelocked='O')
 
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'              : Item(status='B '),
+    'A/B/E/alpha'       : Item(status='B '),
+    'iota'              : Item(status='B '),
+  })
+
   svntest.actions.run_and_verify_update(wc_dir, expected_output,
                                         None, expected_status)
 



Mime
View raw message