You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by vm...@apache.org on 2012/05/29 03:39:49 UTC

svn commit: r1343447 [18/27] - in /subversion/branches/javahl-ra: ./ 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/merge-tracking/ sub...

Modified: subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h Tue May 29 01:39:41 2012
@@ -1507,6 +1507,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 +2022,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 +2032,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,
@@ -2121,7 +2118,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,
@@ -2957,7 +2953,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
@@ -3061,19 +3058,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.
@@ -3098,15 +3095,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/javahl-ra/subversion/libsvn_wc/wc_db_wcroot.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db_wcroot.c?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db_wcroot.c (original)
+++ subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db_wcroot.c Tue May 29 01:39:41 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/javahl-ra/subversion/libsvn_wc/workqueue.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h (original)
+++ subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h Tue May 29 01:39:41 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.
 

Modified: subversion/branches/javahl-ra/subversion/mod_dav_svn/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/mod_dav_svn/lock.c?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/mod_dav_svn/lock.c (original)
+++ subversion/branches/javahl-ra/subversion/mod_dav_svn/lock.c Tue May 29 01:39:41 2012
@@ -765,10 +765,17 @@ 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_NO_SUCH_LOCK ||
+                    serr->apr_err == SVN_ERR_FS_LOCK_EXPIRED ||
+                    SVN_ERR_IS_LOCK_ERROR(serr)))
+     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 +963,17 @@ 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_NO_SUCH_LOCK ||
+                    serr->apr_err == SVN_ERR_FS_LOCK_EXPIRED ||
+                    SVN_ERR_IS_LOCK_ERROR(serr)))
+     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/javahl-ra/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/mod_dav_svn/reports/update.c?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/javahl-ra/subversion/mod_dav_svn/reports/update.c Tue May 29 01:39:41 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;
 
@@ -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/javahl-ra/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/mod_dav_svn/util.c?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/javahl-ra/subversion/mod_dav_svn/util.c Tue May 29 01:39:41 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/javahl-ra/subversion/po/de.po
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/po/de.po?rev=1343447&r1=1343446&r2=1343447&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/po/de.po [UTF-8] (original)
+++ subversion/branches/javahl-ra/subversion/po/de.po [UTF-8] Tue May 29 01:39:41 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"