You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2012/06/26 21:28:22 UTC

svn commit: r1354186 [24/33] - in /subversion/branches/inheritable-props: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ build/win32/ contrib/client-side/emacs/ contrib/server-side/ notes/ notes/api-errata/1.8/ notes/directory-i...

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=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db.h Tue Jun 26 19:26:49 2012
@@ -941,6 +941,18 @@ svn_wc__db_pristine_get_sha1(const svn_c
                              apr_pool_t *scratch_pool);
 
 
+/* If necessary transfers the PRISTINE file of SRC_LOCAL_ABSPATH to the
+   working copy identified by DST_WRI_ABSPATH. If CHECKSUM is not NULL, use
+   CHECKSUM to identify which pristine file to transfer. */
+svn_error_t *
+svn_wc__db_pristine_transfer(svn_wc__db_t *db,
+                             const char *src_local_abspath,
+                             const svn_checksum_t *checksum,
+                             const char *dst_wri_abspath,
+                             svn_cancel_func_t cancel_func,
+                             void *cancel_baton,
+                             apr_pool_t *scratch_pool);
+
 /* Remove the pristine text with SHA-1 checksum SHA1_CHECKSUM from the
  * pristine store, iff it is not referenced by any of the (other) WC DB
  * tables. */
@@ -1507,6 +1519,7 @@ svn_wc__db_op_mark_resolved(svn_wc__db_t
                             svn_boolean_t resolved_text,
                             svn_boolean_t resolved_props,
                             svn_boolean_t resolved_tree,
+                            const svn_skel_t *work_items,
                             apr_pool_t *scratch_pool);
 
 
@@ -2021,9 +2034,6 @@ svn_wc__db_read_props(apr_hash_t **props
  * a hash table mapping <tt>char *</tt> names onto svn_string_t *
  * values for any properties of child nodes of LOCAL_ABSPATH (up to DEPTH).
  *
- * If BASE_PROPS is TRUE, read the properties from the BASE layer (op_depth=0),
- * without local modifications.
- *
  * If BASE_PROPS is FALSE, read the properties from the WORKING layer (highest
  * op_depth).
  *
@@ -2034,7 +2044,6 @@ svn_error_t *
 svn_wc__db_read_props_streamily(svn_wc__db_t *db,
                                 const char *local_abspath,
                                 svn_depth_t depth,
-                                svn_boolean_t base_props,
                                 svn_boolean_t pristine,
                                 const apr_array_header_t *changelists,
                                 svn_wc__proplist_receiver_t receiver_func,
@@ -2120,6 +2129,21 @@ svn_wc__db_remove_cached_iprops(svn_wc__
                                 const char *local_abspath,
                                 apr_pool_t *scratch_pool);
 
+/** Obtain a mapping of const char * local_abspaths to const svn_string_t*
+ * property values in *VALUES, of all PROPNAME properties on LOCAL_ABSPATH
+ * and its descendants.
+ *
+ * Allocate the result in RESULT_POOL, and perform temporary allocations in
+ * SCRATCH_POOL.
+ */
+svn_error_t *
+svn_wc__db_prop_retrieve_recursive(apr_hash_t **values,
+                                   svn_wc__db_t *db,
+                                   const char *local_abspath,
+                                   const char *propname,
+                                   apr_pool_t *result_pool,
+                                   apr_pool_t *scratch_pool);
+
 /* Set *CHILDREN to a new array of the (const char *) basenames of the
    immediate children of the working node at LOCAL_ABSPATH in DB.
 
@@ -2179,7 +2203,6 @@ svn_wc__db_read_conflict_victims(const a
 
    Allocate *MARKER_FILES in RESULT_POOL and do temporary allocations
    in SCRATCH_POOL */
-/* ### This function will probably be removed. */
 svn_error_t *
 svn_wc__db_get_conflict_marker_files(apr_hash_t **markers,
                                      svn_wc__db_t *db,
@@ -2211,12 +2234,16 @@ svn_wc__db_read_conflicts(const apr_arra
    If the node is missing and ALLOW_MISSING is FALSE, then it will return
    SVN_ERR_WC_PATH_NOT_FOUND.
 
+   If SHOW_HIDDEN is FALSE and the status of LOCAL_ABSPATH is NOT_PRESENT or
+   EXCLUDED, set KIND to svn_kind_none.
+
    Uses SCRATCH_POOL for temporary allocations.  */
 svn_error_t *
 svn_wc__db_read_kind(svn_kind_t *kind,
                      svn_wc__db_t *db,
                      const char *local_abspath,
                      svn_boolean_t allow_missing,
+                     svn_boolean_t show_hidden,
                      apr_pool_t *scratch_pool);
 
 
@@ -3015,7 +3042,8 @@ svn_wc__db_drop_root(svn_wc__db_t *db,
                      apr_pool_t *scratch_pool);
 
 /* Return the OP_DEPTH for LOCAL_RELPATH. */
-apr_int64_t svn_wc__db_op_depth_for_upgrade(const char *local_relpath);
+int
+svn_wc__db_op_depth_for_upgrade(const char *local_relpath);
 
 /* Set *HAVE_WORK TRUE if there is a working layer below the top layer and
    *HAVE_BASE if there is a base layer. Set *STATUS to the status of the
@@ -3119,19 +3147,19 @@ svn_wc__db_has_switched_subtrees(svn_boo
                                  const char *trail_url,
                                  apr_pool_t *scratch_pool);
 
-/* Set @a *server_excluded_subtrees to a hash mapping <tt>const char *</tt>
+/* Set @a *excluded_subtrees to a hash mapping <tt>const char *</tt>
  * local absolute paths to <tt>const char *</tt> local absolute paths for
- * every path at or under @a local_abspath in @a db which are excluded by
- * the server (e.g. due to authz).  If no such paths are found then
+ * every path under @a local_abspath in @a db which are excluded by
+ * the server (e.g. due to authz), or user.  If no such paths are found then
  * @a *server_excluded_subtrees is set to @c NULL.
  * Allocate the hash and all items therein from @a result_pool.
  */
 svn_error_t *
-svn_wc__db_get_server_excluded_subtrees(apr_hash_t **server_excluded_subtrees,
-                                        svn_wc__db_t *db,
-                                        const char *local_abspath,
-                                        apr_pool_t *result_pool,
-                                        apr_pool_t *scratch_pool);
+svn_wc__db_get_excluded_subtrees(apr_hash_t **server_excluded_subtrees,
+                                 svn_wc__db_t *db,
+                                 const char *local_abspath,
+                                 apr_pool_t *result_pool,
+                                 apr_pool_t *scratch_pool);
 
 /* Indicate in *IS_MODIFIED whether the working copy has local modifications,
  * using DB. Use SCRATCH_POOL for temporary allocations.
@@ -3156,15 +3184,22 @@ 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. */
+/* Possibly need two structures, one with relpaths and with abspaths?
+ * Only exposed for testing at present. */
+struct svn_wc__db_moved_to_t {
+  const char *local_relpath;  /* moved-to destination */
+  int op_depth;       /* op-root of source */
+};
+
+/* Set *FINAL_ABSPATH to an array of svn_wc__db_moved_to_t for
+ * LOCAL_ABSPATH after following any and all nested moves.
+ * Only exposed for testing at present. */
 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_follow_moved_to(apr_array_header_t **moved_tos,
+                           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/libsvn_wc/wc_db_pristine.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_pristine.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_pristine.c (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_pristine.c Tue Jun 26 19:26:49 2012
@@ -523,6 +523,176 @@ svn_wc__db_pristine_get_sha1(const svn_c
   return svn_error_trace(svn_sqlite__reset(stmt));
 }
 
+/* Baton for pristine_transfer() */
+struct pristine_transfer_baton
+{
+  svn_wc__db_wcroot_t *src_wcroot;
+  svn_wc__db_wcroot_t *dst_wcroot;
+  svn_cancel_func_t cancel_func;
+  void * cancel_baton;
+
+  /* pristine install baton, filled from pristine_transfer() */
+  struct pristine_install_baton_t ib;
+};
+
+/* Transaction implementation of svn_wc__db_pristine_transfer().
+   Calls itself again to obtain locks in both working copies */
+static svn_error_t *
+pristine_transfer(void *baton, svn_wc__db_wcroot_t *wcroot,
+                  const char *local_relpath, apr_pool_t *scratch_pool)
+{
+  struct pristine_transfer_baton *tb = baton;
+  svn_sqlite__stmt_t *stmt;
+  svn_boolean_t have_row;
+
+  /* Is this the initial call or the recursive call? */
+  if (wcroot == tb->dst_wcroot)
+    {
+      /* The initial call: */
+
+      /* Get all the info within a src wcroot lock */
+      SVN_ERR(svn_wc__db_with_txn(tb->src_wcroot, local_relpath,
+                                  pristine_transfer, tb, scratch_pool));
+
+      /* And do the final install, while we still have the dst lock */
+      if (tb->ib.tempfile_abspath)
+        SVN_ERR(pristine_install_txn(&(tb->ib), tb->dst_wcroot->sdb,
+                                     scratch_pool));
+      return SVN_NO_ERROR;
+    }
+
+  /* We have a lock on tb->dst_wcroot and tb->src_wcroot */
+
+  /* Get the right checksum if it wasn't passed */
+  if (!tb->ib.sha1_checksum)
+    {
+      SVN_ERR(svn_sqlite__get_statement(&stmt, tb->src_wcroot->sdb,
+                                        STMT_SELECT_NODE_INFO));
+
+      SVN_ERR(svn_sqlite__bindf(stmt, "is",
+                                 tb->src_wcroot->wc_id, local_relpath));
+
+      SVN_ERR(svn_sqlite__step(&have_row, stmt));
+
+      if (have_row)
+        SVN_ERR(svn_sqlite__column_checksum(&(tb->ib.sha1_checksum), stmt, 6,
+                                            scratch_pool));
+
+      SVN_ERR(svn_sqlite__reset(stmt));
+
+      if (!tb->ib.sha1_checksum)
+        return SVN_NO_ERROR; /* Nothing to transfer */
+    }
+
+  /* Check if we have the pristine in the destination wcroot */
+  SVN_ERR(svn_sqlite__get_statement(&stmt, tb->dst_wcroot->sdb,
+                                    STMT_SELECT_PRISTINE));
+  SVN_ERR(svn_sqlite__bind_checksum(stmt, 1, tb->ib.sha1_checksum,
+                                    scratch_pool));
+  SVN_ERR(svn_sqlite__step(&have_row, stmt));
+  SVN_ERR(svn_sqlite__reset(stmt));
+
+  /* Destination repository already has this pristine. We're done */
+  if (have_row)
+    return SVN_NO_ERROR;
+
+  /* Verify if the pristine actually exists and get the MD5 in one query */
+  SVN_ERR(svn_sqlite__get_statement(&stmt, tb->src_wcroot->sdb,
+                                    STMT_SELECT_PRISTINE));
+  SVN_ERR(svn_sqlite__bind_checksum(stmt, 1, tb->ib.sha1_checksum,
+                                    scratch_pool));
+  SVN_ERR(svn_sqlite__step(&have_row, stmt));
+
+  if (!have_row)
+    {
+      return svn_error_createf(SVN_ERR_WC_DB_ERROR, svn_sqlite__reset(stmt),
+                               _("The pristine text with checksum '%s' was "
+                                 "not found"),
+                               svn_checksum_to_cstring_display(
+                                        tb->ib.sha1_checksum, scratch_pool));
+    }
+  SVN_ERR(svn_sqlite__column_checksum(&(tb->ib.md5_checksum), stmt, 0,
+                                      scratch_pool));
+  SVN_ERR(svn_sqlite__reset(stmt));
+
+  /* We now have read locks in both working copies, so we can safely copy the
+     file to the temp location of the destination working copy */
+  {
+    svn_stream_t *src_stream;
+    svn_stream_t *dst_stream;
+    const char *tmp_abspath;
+    const char *src_abspath;
+
+    SVN_ERR(svn_stream_open_unique(&dst_stream, &tmp_abspath,
+                                   pristine_get_tempdir(tb->dst_wcroot,
+                                                        scratch_pool,
+                                                        scratch_pool),
+                                   svn_io_file_del_on_pool_cleanup,
+                                   scratch_pool, scratch_pool));
+
+    SVN_ERR(get_pristine_fname(&src_abspath, tb->src_wcroot->abspath,
+                               tb->ib.sha1_checksum,
+                               scratch_pool, scratch_pool));
+
+    SVN_ERR(svn_stream_open_readonly(&src_stream, src_abspath,
+                                     scratch_pool, scratch_pool));
+
+    /* ### Should we verify the SHA1 or MD5 here, or is that too expensive? */
+    SVN_ERR(svn_stream_copy3(src_stream, dst_stream,
+                             tb->cancel_func, tb->cancel_baton,
+                             scratch_pool));
+
+    /* And now set the right information to install once we leave the
+       src transaction */
+
+    SVN_ERR(get_pristine_fname(&(tb->ib.pristine_abspath),
+                               tb->dst_wcroot->abspath,
+                               tb->ib.sha1_checksum,
+                               scratch_pool, scratch_pool));
+    tb->ib.tempfile_abspath = tmp_abspath;
+  }
+  return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_wc__db_pristine_transfer(svn_wc__db_t *db,
+                             const char *src_local_abspath,
+                             const svn_checksum_t *checksum,
+                             const char *dst_wri_abspath,
+                             svn_cancel_func_t cancel_func,
+                             void *cancel_baton,
+                             apr_pool_t *scratch_pool)
+{
+  const char *src_relpath;
+  const char *dst_relpath;
+  struct pristine_transfer_baton tb;
+  memset(&tb, 0, sizeof(tb));
+
+  SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&tb.src_wcroot, &src_relpath,
+                                                db, src_local_abspath,
+                                                scratch_pool, scratch_pool));
+  VERIFY_USABLE_WCROOT(tb.src_wcroot);
+  SVN_ERR(svn_wc__db_wcroot_parse_local_abspath(&tb.dst_wcroot, &dst_relpath,
+                                                db, dst_wri_abspath,
+                                                scratch_pool, scratch_pool));
+  VERIFY_USABLE_WCROOT(tb.dst_wcroot);
+
+  if (tb.src_wcroot == tb.dst_wcroot
+      || tb.src_wcroot->sdb == tb.dst_wcroot->sdb)
+    {
+      return SVN_NO_ERROR; /* Nothing to transfer */
+    }
+
+  tb.cancel_func = cancel_func;
+  tb.cancel_baton = cancel_baton;
+
+  return svn_error_trace(svn_wc__db_with_txn(tb.dst_wcroot, src_relpath,
+                                             pristine_transfer, &tb,
+                                             scratch_pool));
+}
+
+
+
 
 /* Remove the file at FILE_ABSPATH in such a way that we could re-create a
  * new file of the same name at any time thereafter.
@@ -708,7 +878,6 @@ pristine_cleanup_wcroot(svn_wc__db_wcroo
   return SVN_NO_ERROR;
 }
 
-
 svn_error_t *
 svn_wc__db_pristine_cleanup(svn_wc__db_t *db,
                             const char *wri_abspath,

Modified: subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_util.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_util.c (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_util.c Tue Jun 26 19:26:49 2012
@@ -196,7 +196,12 @@ svn_wc__db_with_txn(svn_wc__db_wcroot_t 
                     void *cb_baton,
                     apr_pool_t *scratch_pool)
 {
-  struct txn_baton_t tb = { wcroot, local_relpath, cb_func, cb_baton };
+  struct txn_baton_t tb;
+
+  tb.wcroot = wcroot;
+  tb.local_relpath = local_relpath;
+  tb.cb_func = cb_func;
+  tb.cb_baton = cb_baton;
 
   return svn_error_trace(
     svn_sqlite__with_lock(wcroot->sdb, run_txn, &tb, scratch_pool));

Modified: subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_wcroot.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_wcroot.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_wcroot.c (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/wc_db_wcroot.c Tue Jun 26 19:26:49 2012
@@ -372,6 +372,7 @@ svn_wc__db_wcroot_parse_local_abspath(sv
   svn_boolean_t moved_upwards = FALSE;
   svn_boolean_t always_check = FALSE;
   int wc_format = 0;
+  const char *adm_relpath;
 
   /* ### we need more logic for finding the database (if it is located
      ### outside of the wcroot) and then managing all of that within DB.
@@ -459,48 +460,60 @@ svn_wc__db_wcroot_parse_local_abspath(sv
      database in the right place. If we find it... great! If not, then
      peel off some components, and try again. */
 
+  adm_relpath = svn_wc_get_adm_dir(scratch_pool);
   while (TRUE)
     {
       svn_error_t *err;
+      svn_node_kind_t adm_subdir_kind;
 
-      /* We always open the database in read/write mode.  If the database
-         isn't writable in the filesystem, SQLite will internally open
-         it as read-only, and we'll get an error if we try to do a write
-         operation.
-
-         We could decide what to do on a per-operation basis, but since
-         we're caching database handles, it make sense to be as permissive
-         as the filesystem allows. */
-      err = svn_wc__db_util_open_db(&sdb, local_abspath, SDB_FILE,
-                                    svn_sqlite__mode_readwrite, NULL,
-                                    db->state_pool, scratch_pool);
-      if (err == NULL)
+      const char *adm_subdir = svn_dirent_join(local_abspath, adm_relpath,
+                                               scratch_pool);
+
+      SVN_ERR(svn_io_check_path(adm_subdir, &adm_subdir_kind, scratch_pool));
+
+      if (adm_subdir_kind == svn_node_dir)
         {
+          /* We always open the database in read/write mode.  If the database
+             isn't writable in the filesystem, SQLite will internally open
+             it as read-only, and we'll get an error if we try to do a write
+             operation.
+
+             We could decide what to do on a per-operation basis, but since
+             we're caching database handles, it make sense to be as permissive
+             as the filesystem allows. */
+          err = svn_wc__db_util_open_db(&sdb, local_abspath, SDB_FILE,
+                                        svn_sqlite__mode_readwrite, NULL,
+                                        db->state_pool, scratch_pool);
+          if (err == NULL)
+            {
 #ifdef SVN_DEBUG
-          /* Install self-verification trigger statements. */
-          SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_VERIFICATION_TRIGGERS));
+              /* Install self-verification trigger statements. */
+              SVN_ERR(svn_sqlite__exec_statements(sdb,
+                                                  STMT_VERIFICATION_TRIGGERS));
 #endif
-          break;
-        }
-      if (err->apr_err != SVN_ERR_SQLITE_ERROR
-          && !APR_STATUS_IS_ENOENT(err->apr_err))
-        return svn_error_trace(err);
-      svn_error_clear(err);
-
-      /* If we have not moved upwards, then check for a wc-1 working copy.
-         Since wc-1 has a .svn in every directory, and we didn't find one
-         in the original directory, then we aren't looking at a wc-1.
-
-         If the original path is not present, then we have to check on every
-         iteration. The content may be the immediate parent, or possibly
-         five ancetors higher. We don't test for directory presence (just
-         for the presence of subdirs/files), so we don't know when we can
-         stop checking ... so just check always.  */
-      if (!moved_upwards || always_check)
-        {
-          SVN_ERR(get_old_version(&wc_format, local_abspath, scratch_pool));
-          if (wc_format != 0)
-            break;
+              break;
+            }
+          if (err->apr_err != SVN_ERR_SQLITE_ERROR
+              && !APR_STATUS_IS_ENOENT(err->apr_err))
+            return svn_error_trace(err);
+          svn_error_clear(err);
+
+          /* If we have not moved upwards, then check for a wc-1 working copy.
+             Since wc-1 has a .svn in every directory, and we didn't find one
+             in the original directory, then we aren't looking at a wc-1.
+
+             If the original path is not present, then we have to check on every
+             iteration. The content may be the immediate parent, or possibly
+             five ancetors higher. We don't test for directory presence (just
+             for the presence of subdirs/files), so we don't know when we can
+             stop checking ... so just check always.  */
+          if (!moved_upwards || always_check)
+            {
+              SVN_ERR(get_old_version(&wc_format, local_abspath,
+                                      scratch_pool));
+              if (wc_format != 0)
+                break;
+            }
         }
 
       /* We couldn't open the SDB within the specified directory, so

Modified: subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.c Tue Jun 26 19:26:49 2012
@@ -715,6 +715,8 @@ run_file_install(svn_wc__db_t *db,
                                scratch_pool));
 
       /* No need to set exec or read-only flags on special files.  */
+
+      /* ### Shouldn't this record a timestamp and size, etc.? */
       return SVN_NO_ERROR;
     }
 
@@ -781,12 +783,27 @@ run_file_install(svn_wc__db_t *db,
   }
 
   /* Tweak the on-disk file according to its properties.  */
-  if (props
-      && (apr_hash_get(props, SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING)
-          || apr_hash_get(props, SVN_PROP_EXECUTABLE, APR_HASH_KEY_STRING)))
-    {
-      SVN_ERR(svn_wc__sync_flags_with_props(NULL, db, local_abspath,
-                                            scratch_pool));
+#ifndef WIN32
+  if (props && apr_hash_get(props, SVN_PROP_EXECUTABLE, APR_HASH_KEY_STRING))
+    SVN_ERR(svn_io_set_file_executable(local_abspath, TRUE, FALSE,
+                                       scratch_pool));
+#endif
+
+  /* Note that this explicitly checks the pristine properties, to make sure
+     that when the lock is locally set (=modification) it is not read only */
+  if (props && apr_hash_get(props, SVN_PROP_NEEDS_LOCK, APR_HASH_KEY_STRING))
+    {
+      svn_wc__db_status_t status;
+      svn_wc__db_lock_t *lock;
+      SVN_ERR(svn_wc__db_read_info(&status, NULL, NULL, NULL, NULL, NULL, NULL,
+                                   NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+                                   NULL, NULL, &lock, NULL, NULL, NULL, NULL,
+                                   NULL, NULL, NULL, NULL, NULL, NULL,
+                                   db, local_abspath,
+                                   scratch_pool, scratch_pool));
+
+      if (!lock && status != svn_wc__db_status_added)
+        SVN_ERR(svn_io_set_file_read_only(local_abspath, FALSE, scratch_pool));
     }
 
   if (use_commit_times)
@@ -1249,32 +1266,6 @@ run_record_fileinfo(svn_wc__db_t *db,
                                                  scratch_pool));
 }
 
-
-svn_error_t *
-svn_wc__wq_build_record_fileinfo(svn_skel_t **work_item,
-                                 svn_wc__db_t *db,
-                                 const char *local_abspath,
-                                 apr_time_t set_time,
-                                 apr_pool_t *result_pool,
-                                 apr_pool_t *scratch_pool)
-{
-  const char *local_relpath;
-  *work_item = svn_skel__make_empty_list(result_pool);
-
-  SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
-
-  SVN_ERR(svn_wc__db_to_relpath(&local_relpath, db, local_abspath,
-                                local_abspath, result_pool, scratch_pool));
-
-  if (set_time)
-   svn_skel__prepend_int(set_time, *work_item, result_pool);
-
-  svn_skel__prepend_str(local_relpath, *work_item, result_pool);
-  svn_skel__prepend_str(OP_RECORD_FILEINFO, *work_item, result_pool);
-
-  return SVN_NO_ERROR;
-}
-
 /* ------------------------------------------------------------------------ */
 
 /* OP_TMP_SET_TEXT_CONFLICT_MARKERS  */

Modified: subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.h
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.h?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.h (original)
+++ subversion/branches/inheritable-props/subversion/libsvn_wc/workqueue.h Tue Jun 26 19:26:49 2012
@@ -122,7 +122,7 @@ svn_wc__wq_build_file_remove(svn_skel_t 
                              apr_pool_t *result_pool,
                              apr_pool_t *scratch_pool);
 
-/* Set *WORK_ITEM to a new work item that describes a moves of
+/* Set *WORK_ITEM to a new work item that describes a move of
    a file or directory from SRC_ABSPATH to DST_ABSPATH, ready for
    storing in the working copy managing DST_ABSPATH.
 
@@ -182,22 +182,6 @@ svn_wc__wq_build_prej_install(svn_skel_t
                               apr_pool_t *result_pool,
                               apr_pool_t *scratch_pool);
 
-/* Set *WORK_ITEM to a new work item that will record file information of
-   LOCAL_ABSPATH into the TRANSLATED_SIZE and LAST_MOD_TIME of the node via
-   the svn_wc__db_global_record_fileinfo() function.
-
-   If SET_TIME is not 0, set LOCAL_ABSPATH's last modified time to this
-   time and after that record the actual file time.
-
-   ### it is unclear whether this should survive.  */
-svn_error_t *
-svn_wc__wq_build_record_fileinfo(svn_skel_t **work_item,
-                                 svn_wc__db_t *db,
-                                 const char *local_abspath,
-                                 apr_time_t set_time,
-                                 apr_pool_t *result_pool,
-                                 apr_pool_t *scratch_pool);
-
 /* Set *WORK_ITEM to a new work item that will remove all the data of
    the BASE_NODE of LOCAL_ABSPATH and all it's descendants, but keeping
    any WORKING_NODE data.

Modified: subversion/branches/inheritable-props/subversion/mod_authz_svn/mod_authz_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_authz_svn/mod_authz_svn.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_authz_svn/mod_authz_svn.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_authz_svn/mod_authz_svn.c Tue Jun 26 19:26:49 2012
@@ -235,7 +235,7 @@ convert_case(char *text, svn_boolean_t t
   char *c = text;
   while (*c)
     {
-      *c = (to_uppercase ? apr_toupper(*c) : apr_tolower(*c));
+      *c = (char)(to_uppercase ? apr_toupper(*c) : apr_tolower(*c));
       ++c;
     }
 }

Modified: subversion/branches/inheritable-props/subversion/mod_dav_svn/liveprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_dav_svn/liveprops.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/liveprops.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/liveprops.c Tue Jun 26 19:26:49 2012
@@ -75,7 +75,8 @@ enum {
   SVN_PROPID_baseline_relative_path = 1,
   SVN_PROPID_md5_checksum,
   SVN_PROPID_repository_uuid,
-  SVN_PROPID_deadprop_count
+  SVN_PROPID_deadprop_count,
+  SVN_PROPID_sha1_checksum
 };
 
 
@@ -106,6 +107,7 @@ static const dav_liveprop_spec props[] =
   SVN_RO_SVN_PROP(md5_checksum, md5-checksum),
   SVN_RO_SVN_PROP(repository_uuid, repository-uuid),
   SVN_RO_SVN_PROP(deadprop_count, deadprop-count),
+  SVN_RO_SVN_PROP(sha1_checksum, sha1-checksum),
 
   { 0 } /* sentinel */
 };
@@ -668,6 +670,7 @@ insert_prop_internal(const dav_resource 
       break;
 
     case SVN_PROPID_md5_checksum:
+    case SVN_PROPID_sha1_checksum:
       if ((! resource->collection)
           && (! resource->baselined)
           && (resource->type == DAV_RESOURCE_TYPE_REGULAR
@@ -676,11 +679,21 @@ insert_prop_internal(const dav_resource 
         {
           svn_node_kind_t kind;
           svn_checksum_t *checksum;
+          svn_checksum_kind_t checksum_kind;
+
+          if (propid == SVN_PROPID_md5_checksum)
+            {
+              checksum_kind = svn_checksum_md5;
+            }
+          else
+            {
+              checksum_kind = svn_checksum_sha1;
+            }
 
           serr = svn_fs_check_path(&kind, resource->info->root.root,
                                    resource->info->repos_path, scratch_pool);
           if (!serr && kind == svn_node_file)
-            serr = svn_fs_file_checksum(&checksum, svn_checksum_md5,
+            serr = svn_fs_file_checksum(&checksum, checksum_kind,
                                         resource->info->root.root,
                                         resource->info->repos_path, TRUE,
                                         scratch_pool);
@@ -688,8 +701,11 @@ insert_prop_internal(const dav_resource 
             {
               ap_log_rerror(APLOG_MARK, APLOG_ERR, serr->apr_err,
                             resource->info->r,
-                            "Can't fetch or compute MD5 checksum of '%s': "
+                            "Can't fetch or compute %s checksum of '%s': "
                             "%s",
+                            checksum_kind == svn_checksum_md5
+                              ? "MD5"
+                              : "SHA1",
                             resource->info->repos_path,
                             serr->message);
               svn_error_clear(serr);

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=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/lock.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/lock.c Tue Jun 26 19:26:49 2012
@@ -766,11 +766,9 @@ append_locks(dav_lockdb *lockdb,
                                 "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))
+                    SVN_ERR_IS_LOCK_ERROR(serr)))
      return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
                                  "Failed to create new lock.",
                                  resource->pool);
@@ -966,11 +964,9 @@ refresh_locks(dav_lockdb *lockdb,
                                 "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))
+                    SVN_ERR_IS_LOCK_ERROR(serr)))
      return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
                                  "Failed to refresh existing lock.",
                                  resource->pool);

Modified: subversion/branches/inheritable-props/subversion/mod_dav_svn/mirror.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/mod_dav_svn/mirror.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/mirror.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/mirror.c Tue Jun 26 19:26:49 2012
@@ -54,6 +54,16 @@ static void proxy_request_fixup(request_
                                                            (char *)NULL),
                                                r->pool);
     r->handler = "proxy-server";
+
+    /* ### FIXME: Seems we could avoid adding some or all of these
+           filters altogether when the root_dir (that is, the slave's
+           location, relative to the server root) and path portion of
+           the master_uri (the master's location, relative to the
+           server root) are identical, rather than adding them here
+           and then trying to remove them later.  (See the filter
+           removal logic in dav_svn__location_in_filter() and
+           dav_svn__location_body_filter().  -- cmpilato */
+
     ap_add_output_filter("LocationRewrite", NULL, r, r->connection);
     ap_add_output_filter("ReposRewrite", NULL, r, r->connection);
     ap_add_input_filter("IncomingRewrite", NULL, r, r->connection);

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=1354186&r1=1354185&r2=1354186&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 Tue Jun 26 19:26:49 2012
@@ -45,6 +45,7 @@
 #include "../dav_svn.h"
 
 
+/* State baton for the overall update process. */
 typedef struct update_ctx_t {
   const dav_resource *resource;
 
@@ -89,22 +90,38 @@ typedef struct update_ctx_t {
 
 } update_ctx_t;
 
+
+/* State baton for a file or directory. */
 typedef struct item_baton_t {
   apr_pool_t *pool;
   update_ctx_t *uc;
-  struct item_baton_t *parent; /* the parent of this item. */
-  const char *name;    /* the single-component name of this item */
-  const char *path;    /* a telescoping extension of uc->anchor */
-  const char *path2;   /* a telescoping extension of uc->dst_path */
-  const char *path3;   /* a telescoping extension of uc->dst_path
-                            without dst_path as prefix. */
-
-  const char *base_checksum;   /* base_checksum (from apply_textdelta) */
-
-  svn_boolean_t text_changed;        /* Did the file's contents change? */
-  svn_boolean_t added;               /* File added? (Implies text_changed.) */
-  svn_boolean_t copyfrom;            /* File copied? */
-  apr_array_header_t *removed_props; /* array of const char * prop names */
+
+  /* Uplink -- the parent of this item. */
+  struct item_baton_t *parent;
+
+  /* Single-component name of this item. */
+  const char *name;
+
+  /* Telescoping extension paths ... */
+  const char *path;    /* ... of uc->anchor. */
+  const char *path2;   /* ... of uc->dst_path. */
+  const char *path3;   /* ... uc->dst_path, without dst_path prefix. */
+
+  /* Base_checksum (from apply_textdelta). */
+  const char *base_checksum;   
+
+  /* Did the file's contents change? */
+  svn_boolean_t text_changed; 
+
+  /* File/dir added? (Implies text_changed for files.) */
+  svn_boolean_t added;
+
+  /* File/dir copied? */
+  svn_boolean_t copyfrom;
+
+  /* Array of const char * names of removed properties.  (Used only
+     for copied files/dirs in skelta mode.)  */
+  apr_array_header_t *removed_props;
 
 } item_baton_t;
 
@@ -565,10 +582,10 @@ upd_add_directory(const char *path,
 
 static svn_error_t *
 upd_open_directory(const char *path,
-                                        void *parent_baton,
-                                        svn_revnum_t base_revision,
-                                        apr_pool_t *pool,
-                                        void **child_baton)
+                   void *parent_baton,
+                   svn_revnum_t base_revision,
+                   apr_pool_t *pool,
+                   void **child_baton)
 {
   return open_helper(TRUE /* is_dir */,
                      path, parent_baton, base_revision, pool, child_baton);
@@ -638,16 +655,26 @@ upd_change_xxx_prop(void *baton,
                                           qname));
         }
     }
-  else if (!value) /* This is an addition in 'skelta' mode so there is no
-                      need for an inline response since property fetching
-                      is implied in addition.  We still need to cache
-                      property removals because a copied path might
-                      have removed properties. */
+  else if (!value)
     {
-      if (! b->removed_props)
-        b->removed_props = apr_array_make(b->pool, 1, sizeof(name));
+      /* This is an addition in "skelta" (that is, "not send-all")
+         mode so there is no strict need for an inline response.
+         Clients will assume that added objects need all to have all
+         their properties explicitly fetched from the server. */
+
+      /* Now, if the object is actually a copy, we'll still need to
+         cache (and later transmit) property removals, because
+         fetching the object's current property set alone isn't
+         sufficient to communicate the fact that additional properties
+         were, in fact, removed from the copied base object in order
+         to arrive at that set. */
+      if (b->copyfrom)
+        {
+          if (! b->removed_props)
+            b->removed_props = apr_array_make(b->pool, 1, sizeof(name));
 
-      APR_ARRAY_PUSH(b->removed_props, const char *) = qname;
+          APR_ARRAY_PUSH(b->removed_props, const char *) = qname;
+        }
     }
 
   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=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/inheritable-props/subversion/mod_dav_svn/repos.c Tue Jun 26 19:26:49 2012
@@ -1573,7 +1573,7 @@ static const char *get_entry(apr_pool_t 
 
         for (cp = parm; (*cp && !svn_ctype_isspace(*cp) && *cp != '='); ++cp)
           {
-            *cp = apr_tolower(*cp);
+            *cp = (char)apr_tolower(*cp);
           }
 
         if (!*cp)
@@ -3043,14 +3043,12 @@ set_headers(request_rec *r, const dav_re
   apr_table_setn(r->headers_out, "ETag",
                  dav_svn__getetag(resource, resource->pool));
 
-#if 0
   /* As version resources don't change, encourage caching. */
-  /* ### FIXME: This conditional is wrong -- type is often REGULAR,
-     ### and the resource doesn't seem to be baselined. */
-  if (resource->type == DAV_RESOURCE_TYPE_VERSION)
+  if ((resource->type == DAV_RESOURCE_TYPE_REGULAR
+       && resource->versioned && !resource->collection)
+      || resource->type == DAV_RESOURCE_TYPE_VERSION)
     /* Cache resource for one week (specified in seconds). */
     apr_table_setn(r->headers_out, "Cache-Control", "max-age=604800");
-#endif
 
   /* we accept byte-ranges */
   apr_table_setn(r->headers_out, "Accept-Ranges", "bytes");

Modified: subversion/branches/inheritable-props/subversion/po/de.po
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/po/de.po?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/po/de.po [UTF-8] (original)
+++ subversion/branches/inheritable-props/subversion/po/de.po [UTF-8] Tue Jun 26 19:26:49 2012
@@ -50,6 +50,7 @@
 # merge tool   Konflikteditor??? Aktuell: Werkzeug zum Zusammenführen!?
 # note         Hinweis
 # obstruct(ed) behindern / behindert
+# peg revision Fix-Revision
 # property     Eigenschaft
 # PROPNAME     PROPNAME
 # PROPVAL      PROPWERT
@@ -492,7 +493,7 @@ msgstr "Die vorhergehende Operation wurd
 
 #: ../include/svn_error_codes.h:518
 msgid "This operation can not be performed with just this depth."
-msgstr ""
+msgstr "Diese Operation kann nicht allein mit dieser Tiefe durch geführt werden."
 
 #: ../include/svn_error_codes.h:524
 msgid "General filesystem error"
@@ -1187,11 +1188,11 @@ msgstr "Nicht unterstütztes Schema in S
 
 #: ../include/svn_error_codes.h:1340
 msgid "The SQLite db is busy"
-msgstr ""
+msgstr "Die SQLite-Datenbank ist beschäftigt" 
 
 #: ../include/svn_error_codes.h:1345
 msgid "SQLite busy at transaction rollback; resetting all busy SQLite statements to allow rollback"
-msgstr ""
+msgstr "SQLite ist mit dem Rollback einer Transaktion beschäftigt; Alle SQLite-Anweisungen werden für Rollback zurückgesetzt"
 
 #: ../include/svn_error_codes.h:1352
 msgid "Error parsing arguments"
@@ -1250,7 +1251,7 @@ msgstr "Assert-Anweisung schlug fehl"
 #: ../libsvn_auth_gnome_keyring/gnome_keyring.c:554
 #: ../libsvn_auth_gnome_keyring/gnome_keyring.c:610
 msgid "GNOME Keyring is locked and we are non-interactive"
-msgstr ""
+msgstr "GNOME-Schlüsselring ist gesperrt und wir sind nicht-interaktiv"
 
 #: ../libsvn_client/add.c:488 ../libsvn_wc/adm_ops.c:881
 #: ../libsvn_wc/workqueue.c:1658 ../libsvn_wc/workqueue.c:1740
@@ -1318,7 +1319,7 @@ msgstr "»%s« verweist auf ein Verzeich
 #: ../libsvn_client/cat.c:89
 #, c-format
 msgid "'%s' has no base revision until it is committed"
-msgstr ""
+msgstr "»%s« hat keine Basisrevision, bis es übertragen wurde"
 
 #: ../libsvn_client/cat.c:153 ../libsvn_client/export.c:234
 msgid "(local)"
@@ -1650,11 +1651,9 @@ msgstr "Pfad »%s« hat keine URL"
 msgid "Not all required revisions are specified"
 msgstr "Es sind nicht alle erforderlichen Revisionen angegeben"
 
-# Was soll eine 'pegged diff' sein?
-# Gemeint ist, wenn bei einem svn diff ein @REV angegeben wurde (also die Revision, in der die Datei zuerst gesucht wird)
 #: ../libsvn_client/diff.c:1410
 msgid "At least one revision must be non-local for a pegged diff"
-msgstr "Wenn eine Basisrevision angegeben wurde, muss zumindest eine Revision auf dem Server sein"
+msgstr "Bei einem Vergleich mit Fix-Revision muss zumindest eine Revision auf dem Server sein"
 
 #: ../libsvn_client/diff.c:1518 ../libsvn_client/diff.c:1530
 #, c-format
@@ -1899,7 +1898,7 @@ msgstr ""
 
 #: ../libsvn_client/merge.c:5820
 msgid "Merge tracking not allowed with missing subtrees; try restoring these items first:\n"
-msgstr ""
+msgstr "Zusammenführungsverfolgung nicht erlaubt bei fehlenden Unterbäumen; versuchen Sie diese Elemente erst wiederherzustellen:\n"
 
 #: ../libsvn_client/merge.c:8502
 msgid "Use of two URLs is not compatible with mergeinfo modification"
@@ -1967,7 +1966,7 @@ msgstr ""
 
 #: ../libsvn_client/mergeinfo.c:1721
 msgid "Only depths 'infinity' and 'empty' are currently supported"
-msgstr ""
+msgstr "Nur Tiefenangaben von »infinity« und »empty« werden momentan unterstützt"
 
 #: ../libsvn_client/patch.c:243
 #, c-format
@@ -3416,7 +3415,7 @@ msgstr "»%s« in Revision %ld hat keine
 #: ../libsvn_ra/compat.c:844 ../libsvn_ra/ra_loader.c:1201
 #, c-format
 msgid "Invalid peg revision %ld"
-msgstr "Ungültige Peg-Revision %ld"
+msgstr "Ungültige Fix-Revision %ld"
 
 #: ../libsvn_ra/compat.c:847 ../libsvn_ra/ra_loader.c:1204
 #: ../libsvn_repos/rev_hunt.c:208 ../libsvn_repos/rev_hunt.c:323
@@ -3426,7 +3425,7 @@ msgstr "Ungültige Endrevision %ld"
 
 #: ../libsvn_ra/compat.c:850 ../libsvn_ra/ra_loader.c:1207
 msgid "Peg revision must precede end revision"
-msgstr "Peg-Revision muss vor der Endrevision liegen"
+msgstr "Fix-Revision muss vor der Endrevision liegen"
 
 #: ../libsvn_ra/ra_loader.c:234
 #, c-format
@@ -4027,7 +4026,7 @@ msgstr ""
 
 #: ../libsvn_ra_serf/commit.c:307
 msgid "No Location header received"
-msgstr ""
+msgstr "Kein »Location« Kopf empfangen"
 
 #: ../libsvn_ra_serf/commit.c:438
 #, c-format
@@ -4169,6 +4168,8 @@ msgid ""
 "No more credentials or we tried too many times.\n"
 "Authentication failed"
 msgstr ""
+"Keine weiteren Zugangsdaten oder zu viele Versuche.\n"
+"Anmeldung fehlgeschlagen"
 
 #: ../libsvn_ra_serf/util.c:1421
 msgid "Proxy authentication failed"
@@ -4234,7 +4235,7 @@ msgstr "Kann Tunnel nicht erzeugen"
 
 #: ../libsvn_ra_svn/client.c:525
 msgid "To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file."
-msgstr ""
+msgstr "Um Probleme mit der Konfiguration von SSH zu untersuchen, entfernen Sie die Option »-q« von »ssh« im Abschnitt »[tunnels]« Ihrer Konfigurationsdatei für Subversion."
 
 #: ../libsvn_ra_svn/client.c:543
 #, c-format
@@ -4644,12 +4645,16 @@ msgid ""
 "WARNING: The range of revisions dumped contained references to\n"
 "WARNING: copy sources outside that range.\n"
 msgstr ""
+"WARNUNG: Der ausgegebene Revisionsbereich enthält Verweise auf\n"
+"WARNUNG: Quellpfade außerhalb dieses Bereichs.\n"
 
 #: ../libsvn_repos/dump.c:1131
 msgid ""
 "WARNING: The range of revisions dumped contained mergeinfo\n"
 "WARNING: which reference revisions outside that range.\n"
 msgstr ""
+"WARNUNG: Der ausgegebene Revisionsbereich enthält Zusammenführungsinformationen\n"
+"WARNUNG: die auf Revisionen außerhalb dieses Bereichs verweisen.\n"
 
 #: ../libsvn_repos/dump.c:1188
 #, c-format
@@ -5780,7 +5785,7 @@ msgstr "»%s« ist kein gültiger Subver
 #: ../libsvn_subr/opt.c:964
 #, c-format
 msgid "'%s' is just a peg revision. Maybe try '%s@' instead?"
-msgstr ""
+msgstr "»%s« ist nur eine Fix-Revision. Meinten Sie stattdessen »%s@«?"
 
 #: ../libsvn_subr/opt.c:996
 #, c-format
@@ -5812,6 +5817,11 @@ msgid ""
 "Subversion is open source software, see http://subversion.apache.org/\n"
 "\n"
 msgstr ""
+"Copyright (C) 2010 The Apache Software Foundation.\n"
+"Diese Software besteht aus Beiträgen vieler Personen;\n"
+"siehe Datei NOTICE für mehr Informationen.\n"
+"Subversion ist Open Source Software, siehe http://subversion.apache.org/\n"
+"\n"
 
 #: ../libsvn_subr/path.c:958
 #, c-format
@@ -6046,7 +6056,7 @@ msgstr "Erwartete SQLite-Datenbank wurde
 #: ../libsvn_subr/sqlite.c:1125
 #, c-format
 msgid "SQLite hotcopy failed for %s"
-msgstr ""
+msgstr "SQLite-Hotcopy fehlgeschlagen für »%s«"
 
 #: ../libsvn_subr/subst.c:1640 ../libsvn_wc/props.c:1950
 #, c-format
@@ -6061,12 +6071,12 @@ msgstr "Konnte »%s« nicht in Zahl umwa
 #: ../libsvn_subr/svn_string.c:712
 #, c-format
 msgid "Number '%s' is out of range '[%llu, %llu]'"
-msgstr ""
+msgstr "Zahl »%s« ist außerhalb des zulässigen Bereichs »[%llu, %llu]«"
 
 #: ../libsvn_subr/svn_string.c:756
 #, c-format
 msgid "Number '%s' is out of range '[%lld, %lld]'"
-msgstr ""
+msgstr "Zahl »%s« ist außerhalb des zulässigen Bereichs »[%lld, %lld]«"
 
 #. Human explanatory part, generated by apr_strftime as "Sat, 01 Jan 2000"
 #: ../libsvn_subr/time.c:85
@@ -6227,17 +6237,17 @@ msgstr "Basisknoten von »%s« ist keine
 #: ../libsvn_wc/adm_files.c:322
 #, c-format
 msgid "Can only get the pristine contents of files; '%s' is not a file"
-msgstr ""
+msgstr "Kann nur ursprünglichen Inhalt von Dateien holen; »%s« ist keine Datei"
 
 #: ../libsvn_wc/adm_files.c:348
 #, c-format
 msgid "Cannot get the pristine contents of '%s' because its delete is already committed"
-msgstr ""
+msgstr "Kann den ursprünglichen Inhalt von »%s« nicht holen, da sein Löschen schon übertragen wurde"
 
 #: ../libsvn_wc/adm_files.c:356
 #, c-format
 msgid "Cannot get the pristine contents of '%s' because it has an unexpected status"
-msgstr ""
+msgstr "Kann den ursprünglichen Inhalt von »%s« nicht holen, da es einen unerwarteten Status hat"
 
 #: ../libsvn_wc/adm_files.c:639
 #, c-format
@@ -6269,7 +6279,7 @@ msgstr ""
 #: ../libsvn_wc/adm_ops.c:813 ../libsvn_wc/update_editor.c:5614
 #, c-format
 msgid "Can't schedule an addition of '%s' below a not-directory node"
-msgstr ""
+msgstr "Kann »%s« nicht zum Hinzufügen unter einem Knoten vorsehen, der kein Verzeichnis ist"
 
 #: ../libsvn_wc/adm_ops.c:872
 #, c-format
@@ -6284,17 +6294,17 @@ msgstr "Die URL »%s« hat eine andere P
 #: ../libsvn_wc/adm_ops.c:1068
 #, c-format
 msgid "Can't schedule the working copy at '%s' from repository '%s' with uuid '%s' for addition under a working copy from repository '%s' with uuid '%s'."
-msgstr ""
+msgstr "Kann Arbeitkopie »%s« des Projektarchivs »%s« mit UUID »%s« nicht zum Hinzufügen unter einer Arbeitskopie des Projektarchivs »%s« mit UUID »%s« vorsehen."
 
 #: ../libsvn_wc/adm_ops.c:1082
 #, c-format
 msgid "Can't add '%s' with URL '%s', but with the data from '%s'"
-msgstr ""
+msgstr "Kann »%s« mit URL »%s« aber den Daten von »%s« nicht hinzufügen"
 
 #: ../libsvn_wc/adm_ops.c:1313
 #, c-format
 msgid "Can't revert '%s' with this depth, as that requires reverting '%s'."
-msgstr ""
+msgstr "Kann »%s« mit dieser Tiefe nicht zurücksetzen, da dies das Zurücksetzen von »%s« erfordert."
 
 #: ../libsvn_wc/adm_ops.c:1414
 #, c-format
@@ -6333,7 +6343,7 @@ msgstr "»%s« ist kein Verzeichnis eine
 
 #: ../libsvn_wc/cleanup.c:64
 msgid "Log format too old, please use Subversion 1.6 or earlier"
-msgstr ""
+msgstr "Log-Format zu alt, bitte verwenden Sie Subversion 1.6 oder älter"
 
 #: ../libsvn_wc/conflicts.c:299
 msgid "Invalid 'conflict_result' argument"
@@ -6342,7 +6352,7 @@ msgstr "Ungültiger Parameter »conflict
 #: ../libsvn_wc/conflicts.c:409
 #, c-format
 msgid "Tree conflicts can only be resolved to 'working' state; '%s' not resolved"
-msgstr ""
+msgstr "Baumkonflikte können nur zum Zustand »working« aufgelöst werden; Konflikt in »%s« nicht aufgelöst"
 
 #: ../libsvn_wc/copy.c:78
 #, c-format
@@ -6752,7 +6762,7 @@ msgstr "Datei »%s« hat die MIME-Typ Ei
 #: ../libsvn_wc/props.c:2000
 #, c-format
 msgid "Can't set properties on '%s': invalid status for updating properties."
-msgstr ""
+msgstr "Kann Eigenschaften für »%s« nicht setzen: ungültiger Status beim Aktualisieren von Eigenschaften"
 
 #: ../libsvn_wc/props.c:2063
 msgid "Failed to load current properties"
@@ -6821,7 +6831,7 @@ msgstr "Kann eine einzelne Datei nicht u
 #: ../libsvn_wc/relocate.c:136
 #, c-format
 msgid "Invalid source URL prefix: '%s' (does not overlap target's URL '%s')"
-msgstr ""
+msgstr "Ungültiger Prefix der Quell-URL: »%s« (Keine Überlappung mit Ziel-URL »%s«)"
 
 #: ../libsvn_wc/relocate.c:146 ../libsvn_wc/relocate.c:151
 #, c-format
@@ -6949,26 +6959,26 @@ msgstr "Fehlendes Zeilenende in Datei »
 #: ../libsvn_wc/upgrade.c:601
 #, c-format
 msgid "Working copy '%s' can't be upgraded because the repository root is not available and can't be retrieved"
-msgstr ""
+msgstr "Arbeitskopie »%s« kann nicht in ein neueres Format gebracht werden, da die Wurzel des Projektarchivs nicht verfügbar ist und nicht bestimmt werden kann"
 
 #: ../libsvn_wc/upgrade.c:608
 #, c-format
 msgid "Working copy '%s' can't be upgraded because the repository uuid is not available and can't be retrieved"
-msgstr ""
+msgstr "Arbeitskopie »%s« kann nicht in ein neueres Format gebracht werden, da die UUID des Projektarchivs nicht verfügbar ist und nicht bestimmt werden kann"
 
 #: ../libsvn_wc/upgrade.c:615
 #, c-format
 msgid "Working copy '%s' can't be upgraded because it doesn't have a url"
-msgstr ""
+msgstr "Arbeitskopie »%s« kann nicht in ein neueres Format gebracht werden, da sie keine URL hat"
 
 #: ../libsvn_wc/upgrade.c:1127
 msgid "Cannot upgrade with existing logs; please run 'svn cleanup' with Subversion 1.6"
-msgstr ""
+msgstr "Kann die Arbeitskopie nicht in ein neues Format bringen; bitte führen Sie »svn cleanup« mit Subversion 1.6 aus"
 
 #: ../libsvn_wc/upgrade.c:1355
 #, c-format
 msgid "The working copy '%s' is at format 18; use 'tools/dev/wc-ng/bump-to-19.py' to upgrade it"
-msgstr ""
+msgstr "Die Arbeitskopie »%s« hat das Format 18; verwenden Sie »tools/dev/wc-ng/bump-to-19.py« um es in ein neues Format zu bringen"
 
 #: ../libsvn_wc/upgrade.c:1545
 #, c-format
@@ -7018,7 +7028,7 @@ msgstr "Der Ursprungstext mit der Prüfs
 #: ../libsvn_wc/wc_db.c:3036 ../libsvn_wc/wc_db.c:3258
 #, c-format
 msgid "Cannot copy '%s' excluded by server"
-msgstr ""
+msgstr "Kann vom Server ausgeschlossenes »%s« nicht kopieren"
 
 #: ../libsvn_wc/wc_db.c:3042
 #, c-format
@@ -7038,7 +7048,7 @@ msgstr "Fehlerhafte Daten für »%s«"
 #: ../libsvn_wc/wc_db.c:6603
 #, c-format
 msgid "Could not find node '%s' for recording file information."
-msgstr ""
+msgstr "Knoten »%s« für Aufzeichnung von Dateiinformationen nicht gefunden."
 
 #: ../libsvn_wc/wc_db.c:6863 ../libsvn_wc/wc_db.c:6965
 #, c-format
@@ -7053,7 +7063,7 @@ msgstr "Erwartete, dass Knoten »%s« ge
 #: ../libsvn_wc/wc_db.c:7554
 #, c-format
 msgid "The properties of '%s' are in an indeterminate state and cannot be upgraded. See issue #2530."
-msgstr ""
+msgstr "Die Eigenschaften von »%s« sind in einem unbestimmten Zustand und können nicht in ein neues Format gebreacht werden. Siehe Fehlerbericht #2530."
 
 #: ../libsvn_wc/wc_db.c:7643
 #, c-format
@@ -7107,7 +7117,7 @@ msgstr ""
 
 #: ../libsvn_wc/wc_db_pdh.c:265
 msgid "Cleanup with an older 1.7 client before upgrading with this client"
-msgstr ""
+msgstr "Starten Sie »svn cleanup« mit einem älteren 1.7 Client bevor Sie mit diesem Client operieren"
 
 # CHECKME: What's WCROOT? A variable or short for "working copy root"?
 #: ../libsvn_wc/wc_db_pdh.c:526
@@ -7532,7 +7542,7 @@ msgstr "Name: %s\n"
 #: ../svn/info-cmd.c:265
 #, c-format
 msgid "Working Copy Root Path: %s\n"
-msgstr ""
+msgstr "Wurzelpfad der Arbeitskopie: %s\n"
 
 #: ../svn/info-cmd.c:270
 #, c-format
@@ -7783,7 +7793,7 @@ msgstr "Zusammengeführt mittels:"
 #: ../svn/log-cmd.c:296 ../svn/log-cmd.c:373
 #, c-format
 msgid "\n"
-msgstr ""
+msgstr "\n"
 
 #: ../svn/log-cmd.c:573
 msgid "'with-all-revprops' option only valid in XML mode"
@@ -7809,15 +7819,15 @@ msgstr "»quiet« und »diff« schließe
 
 #: ../svn/log-cmd.c:598
 msgid "'diff-cmd' option requires 'diff' option"
-msgstr ""
+msgstr "Option »diff-cmd« erfordert Option »diff«"
 
 #: ../svn/log-cmd.c:602
 msgid "'internal-diff' option requires 'diff' option"
-msgstr ""
+msgstr "Option »internal-diff« erfordert Option »diff«"
 
 #: ../svn/log-cmd.c:606
 msgid "'extensions' option requires 'diff' option"
-msgstr ""
+msgstr "Option »extensions« erfordert Option »diff«"
 
 # TODO: Duplicated message!!!!
 #: ../svn/log-cmd.c:625
@@ -9086,7 +9096,7 @@ msgstr ""
 "      Revisionsmarkern und einer URL bestehen. Die Reihenfolge der drei\n"
 "      Elemente führt zu verschiedenem Verhalten. Subversion 1.4 und älter\n"
 "      unterstützt nur die folgenden Formate und die URLs können keine\n"
-"      Peg-Revisionen haben:\n"
+"      Fix-Revisionen haben:\n"
 "        foo             http://example.org/repos/zig\n"
 "        foo/bar -r 1234 http://example.org/repos/zag\n"
 "      Subversion 1.5 und neuer unterstützt die obigen Formate und die\n"