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

svn commit: r1338671 [2/2] - in /subversion/branches/1.7.x-issue4153: ./ build/generator/ build/win32/ contrib/client-side/emacs/ subversion/bindings/swig/ruby/test/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/l...

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_crawler.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_crawler.c Tue May 15 12:39:14 2012
@@ -495,10 +495,14 @@ report_revisions_and_depths(svn_wc__db_t
         {
           svn_boolean_t is_incomplete;
           svn_boolean_t start_empty;
+          svn_depth_t report_depth = ths->depth;
 
           is_incomplete = (ths->status == svn_wc__db_status_incomplete);
           start_empty = is_incomplete;
 
+          if (!SVN_DEPTH_IS_RECURSIVE(depth))
+            report_depth = svn_depth_empty;
+
           /* When a <= 1.6 working copy is upgraded without some of its
              subdirectories we miss some information in the database. If we
              report the revision as -1, the update editor will receive an
@@ -526,7 +530,7 @@ report_revisions_and_depths(svn_wc__db_t
                                                 dir_repos_root,
                                                 ths->repos_relpath, iterpool),
                                             ths->revnum,
-                                            ths->depth,
+                                            report_depth,
                                             start_empty,
                                             ths->lock ? ths->lock->token
                                                       : NULL,
@@ -535,7 +539,7 @@ report_revisions_and_depths(svn_wc__db_t
                 SVN_ERR(reporter->set_path(report_baton,
                                            this_report_relpath,
                                            ths->revnum,
-                                           ths->depth,
+                                           report_depth,
                                            start_empty,
                                            ths->lock ? ths->lock->token : NULL,
                                            iterpool));
@@ -549,7 +553,7 @@ report_revisions_and_depths(svn_wc__db_t
                                               dir_repos_root,
                                               ths->repos_relpath, iterpool),
                                           ths->revnum,
-                                          ths->depth,
+                                          report_depth,
                                           start_empty,
                                           ths->lock ? ths->lock->token : NULL,
                                           iterpool));
@@ -573,7 +577,7 @@ report_revisions_and_depths(svn_wc__db_t
               SVN_ERR(reporter->set_path(report_baton,
                                          this_report_relpath,
                                          ths->revnum,
-                                         ths->depth,
+                                         report_depth,
                                          start_empty,
                                          ths->lock ? ths->lock->token : NULL,
                                          iterpool));

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/externals.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/externals.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/externals.c Tue May 15 12:39:14 2012
@@ -300,8 +300,13 @@ svn_wc_parse_externals_description3(apr_
 
       item->target_dir = svn_dirent_internal_style(item->target_dir, pool);
 
-      if (item->target_dir[0] == '\0' || item->target_dir[0] == '/'
-          || svn_path_is_backpath_present(item->target_dir))
+      if (item->target_dir[0] == '\0'
+          || svn_dirent_is_absolute(item->target_dir)
+          || svn_path_is_backpath_present(item->target_dir)
+          || !svn_dirent_skip_ancestor("dummy",
+                                       svn_dirent_join("dummy",
+                                                       item->target_dir,
+                                                       pool)))
         return svn_error_createf
           (SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,
            _("Invalid %s property on '%s': "

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c Tue May 15 12:39:14 2012
@@ -4331,23 +4331,27 @@ close_file(void *file_baton,
 
   /* Send a notification to the callback function.  (Skip notifications
      about files which were already notified for another reason.) */
-  if (eb->notify_func && !fb->already_notified && fb->edited)
+  if (eb->notify_func && !fb->already_notified
+      && (fb->edited || lock_state == svn_wc_notify_lock_state_unlocked))
     {
       svn_wc_notify_t *notify;
       svn_wc_notify_action_t action = svn_wc_notify_update_update;
 
-      if (fb->shadowed)
-        action = fb->adding_file
-                        ? svn_wc_notify_update_shadowed_add
-                        : svn_wc_notify_update_shadowed_update;
-      else if (fb->obstruction_found || fb->add_existed)
+      if (fb->edited)
         {
-          if (content_state != svn_wc_notify_state_conflicted)
-            action = svn_wc_notify_exists;
-        }
-      else if (fb->adding_file)
-        {
-          action = svn_wc_notify_update_add;
+          if (fb->shadowed)
+            action = fb->adding_file
+                            ? svn_wc_notify_update_shadowed_add
+                            : svn_wc_notify_update_shadowed_update;
+          else if (fb->obstruction_found || fb->add_existed)
+            {
+              if (content_state != svn_wc_notify_state_conflicted)
+                action = svn_wc_notify_exists;
+            }
+          else if (fb->adding_file)
+            {
+              action = svn_wc_notify_update_add;
+            }
         }
 
       notify = svn_wc_create_notify(fb->local_abspath, action, scratch_pool);

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db.c Tue May 15 12:39:14 2012
@@ -392,7 +392,7 @@ wclock_owns_lock(svn_boolean_t *own_lock
                  apr_pool_t *scratch_pool);
 
 
-
+ 
 /* Return the absolute path, in local path style, of LOCAL_RELPATH
    in WCROOT.  */
 static const char *
@@ -11684,35 +11684,25 @@ get_min_max_revisions(svn_revnum_t *min_
                       apr_pool_t *scratch_pool)
 {
   svn_sqlite__stmt_t *stmt;
-  svn_boolean_t have_row;
   svn_revnum_t min_rev, max_rev;
 
   SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                     STMT_SELECT_MIN_MAX_REVISIONS));
   SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
-  SVN_ERR(svn_sqlite__step(&have_row, stmt));
-  if (have_row)
+  SVN_ERR(svn_sqlite__step_row(stmt));
+
+  if (committed)
     {
-      if (committed)
-        {
-          min_rev = svn_sqlite__column_revnum(stmt, 2);
-          max_rev = svn_sqlite__column_revnum(stmt, 3);
-        }
-      else
-        {
-          min_rev = svn_sqlite__column_revnum(stmt, 0);
-          max_rev = svn_sqlite__column_revnum(stmt, 1);
-        }
+      min_rev = svn_sqlite__column_revnum(stmt, 2);
+      max_rev = svn_sqlite__column_revnum(stmt, 3);
     }
   else
     {
-      min_rev = SVN_INVALID_REVNUM;
-      max_rev = SVN_INVALID_REVNUM;
+      min_rev = svn_sqlite__column_revnum(stmt, 0);
+      max_rev = svn_sqlite__column_revnum(stmt, 1);
     }
 
-  /* The statement should only return at most one row. */
-  SVN_ERR(svn_sqlite__step(&have_row, stmt));
-  SVN_ERR_ASSERT(! have_row);
+  /* The statement returns exactly one row. */
   SVN_ERR(svn_sqlite__reset(stmt));
 
   if (min_revision)
@@ -12006,9 +11996,16 @@ has_local_mods(svn_boolean_t *is_modifie
           svn_filesize_t recorded_size;
           apr_time_t recorded_mod_time;
           svn_boolean_t skip_check = FALSE;
+          svn_error_t *err;
 
           if (cancel_func)
-            SVN_ERR(cancel_func(cancel_baton));
+            {
+              err = cancel_func(cancel_baton);
+              if (err)
+                return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
+            }
 
           svn_pool_clear(iterpool);
 
@@ -12025,8 +12022,12 @@ has_local_mods(svn_boolean_t *is_modifie
             {
               const svn_io_dirent2_t *dirent;
 
-              SVN_ERR(svn_io_stat_dirent(&dirent, node_abspath, TRUE,
-                                         iterpool, iterpool));
+              err = svn_io_stat_dirent(&dirent, node_abspath, TRUE,
+                                       iterpool, iterpool);
+              if (err)
+                return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
 
               if (dirent->kind != svn_node_file)
                 {
@@ -12043,9 +12044,15 @@ has_local_mods(svn_boolean_t *is_modifie
 
           if (! skip_check)
             {
-              SVN_ERR(svn_wc__internal_file_modified_p(is_modified,
-                                                       db, node_abspath,
-                                                       FALSE, iterpool));
+              err = svn_wc__internal_file_modified_p(is_modified,
+                                                     db, node_abspath,
+                                                     FALSE, iterpool);
+
+              if (err)
+                return svn_error_trace(svn_error_compose_create(
+                                                    err,
+                                                    svn_sqlite__reset(stmt)));
+
               if (*is_modified)
                 break;
             }

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_util.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_util.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_util.c Tue May 15 12:39:14 2012
@@ -121,6 +121,21 @@ svn_wc__db_util_open_db(svn_sqlite__db_t
   const char *sdb_abspath = svn_wc__adm_child(dir_abspath, sdb_fname,
                                               scratch_pool);
 
+  if (smode != svn_sqlite__mode_rwcreate)
+    {
+      svn_node_kind_t kind;
+
+      /* A file stat is much cheaper then a failed database open handled
+         by SQLite. */
+      SVN_ERR(svn_io_check_path(sdb_abspath, &kind, scratch_pool));
+
+      if (kind != svn_node_file)
+        return svn_error_createf(APR_ENOENT, NULL,
+                                 _("Working copy database '%s' not found"),
+                                 svn_dirent_local_style(sdb_abspath,
+                                                        scratch_pool));
+    }
+
   SVN_ERR(svn_sqlite__open(sdb, sdb_abspath, smode,
                            my_statements ? my_statements : statements,
                            0, NULL, result_pool, scratch_pool));

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c Tue May 15 12:39:14 2012
@@ -530,8 +530,8 @@ upd_delete_entry(const char *path,
                                            svn_relpath_basename(path, NULL),
                                            1);
   return dav_svn__brigade_printf(parent->uc->bb, parent->uc->output,
-                                 "<S:delete-entry name=\"%s\"/>" DEBUG_CR,
-                                 qname);
+                                 "<S:delete-entry name=\"%s\" rev=\"%ld\"/>"
+                                   DEBUG_CR, qname, revision);
 }
 
 

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

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/util.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/util.c Tue May 15 12:39:14 2012
@@ -624,19 +624,20 @@ void dav_svn__log_err(request_rec *r,
     /* Log the errors */
     /* ### should have a directive to log the first or all */
     for (errscan = err; errscan != NULL; errscan = errscan->prev) {
+        apr_status_t status;
+
         if (errscan->desc == NULL)
             continue;
 
-        if (errscan->save_errno != 0) {
-            errno = errscan->save_errno;
-            ap_log_rerror(APLOG_MARK, level, errno, r, "%s  [%d, #%d]",
-                          errscan->desc, errscan->status, errscan->error_id);
-        }
-        else {
-            ap_log_rerror(APLOG_MARK, level, 0, r,
-                          "%s  [%d, #%d]",
-                          errscan->desc, errscan->status, errscan->error_id);
-        }
+#if AP_MODULE_MAGIC_AT_LEAST(20091119,0)
+        status = errscan->aprerr;
+#else
+        status = errscan->save_errno;
+#endif
+
+        ap_log_rerror(APLOG_MARK, level, status, r,
+                      "%s  [%d, #%d]",
+                      errscan->desc, errscan->status, errscan->error_id);
     }
 }
 

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c Tue May 15 12:39:14 2012
@@ -1382,6 +1382,15 @@ merge(dav_resource *target,
                                     SVN_DAV_ERROR_NAMESPACE,
                                     SVN_DAV_ERROR_TAG);
     }
+  if (! source->exists)
+    {
+      return dav_svn__new_error_tag(pool, HTTP_METHOD_NOT_ALLOWED,
+                                    SVN_ERR_INCORRECT_PARAMS,
+                                    "MERGE activity or transaction resource "
+                                    "does not exist.",
+                                    SVN_DAV_ERROR_NAMESPACE,
+                                    SVN_DAV_ERROR_TAG);
+    }
 
   /* Before attempting the final commit, we need to push any incoming
      lock-tokens into the filesystem's access_t.   Normally they come

Modified: subversion/branches/1.7.x-issue4153/subversion/po/de.po
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/po/de.po?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/po/de.po [UTF-8] (original)
+++ subversion/branches/1.7.x-issue4153/subversion/po/de.po [UTF-8] Tue May 15 12:39:14 2012
@@ -4604,9 +4604,9 @@ msgid "<<< Started new transaction, base
 msgstr "<<< Neue Transaktion basierend auf Originalrevision %ld gestartet\n"
 
 #: ../libsvn_repos/deprecated.c:648 ../svnadmin/main.c:781
-#, fuzzy, c-format
+#, c-format
 msgid " removing '\\r' from %s ..."
-msgstr "Entferne »%s« aus Änderungsliste »%s«."
+msgstr " Entferne »\\r« aus %s ..."
 
 #: ../libsvn_repos/dump.c:353
 #, c-format
@@ -4620,14 +4620,14 @@ msgstr ""
 "WARNUNG: leeres Projektarchiv wird fehlschlagen.\n"
 
 #: ../libsvn_repos/dump.c:457
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "WARNING: Mergeinfo referencing revision(s) prior to the oldest dumped revision (%ld).\n"
 "WARNING: Loading this dump may result in invalid mergeinfo.\n"
 msgstr ""
-"WARNUNG: Verweis auf Daten in Revision %ld, welche älter als die älteste\n"
-"WARNUNG: ausgegebene Revision (%ld) ist. Das Laden diese Datei in ein\n"
-"WARNUNG: leeres Projektarchiv wird fehlschlagen.\n"
+"WARNUNG: Zusammenführungsinformationen verweisen auf Revision(en) vor der ältesten\n"
+"WARNUNG: ausgegebene Revision (%ld). Das Laden dieser Datei kann ungültige\n"
+"WARNUNG: Zusammenführungsinformationen zur Folge haben.\n"
 
 #: ../libsvn_repos/dump.c:979 ../libsvn_repos/dump.c:1235
 #, c-format
@@ -4815,15 +4815,13 @@ msgstr "Relative Quellrevision %ld ist i
 
 # CHECKME: Check quotes, s/rev/revision/
 #: ../libsvn_repos/load-fs-vtable.c:482
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Copy source checksum mismatch on copy from '%s'@%ld\n"
 "to '%s' in rev based on r%ld"
 msgstr ""
-"Prüfsummenfehler für Kopie von »%s«@%ld\n"
-" nach »%s« in der auf r%ld basierten Revision:\n"
-"   Erwartet:    %s\n"
-"   Tatsächlich: %s\n"
+"Prüfsummenfehler beim Kopieren von »%s«@%ld\n"
+"nach »%s« in der auf r%ld basierten Revision"
 
 #: ../libsvn_repos/load-fs-vtable.c:539
 msgid "Malformed dumpstream: Revision 0 must not contain node records"
@@ -5641,19 +5639,19 @@ msgid "First line of '%s' contains non-d
 msgstr "Die erste Zeile von »%s« enthält eine Nicht-Ziffer"
 
 #: ../libsvn_subr/io.c:3690
-#, fuzzy, c-format
+#, c-format
 msgid "Can't create temporary file from template '%s'"
-msgstr "Kann »Pipe« für Aktion »%s« nicht anlegen"
+msgstr "Kann temporäre Datei von Vorlage »%s« nicht anlegen"
 
 #: ../libsvn_subr/io.c:3781
-#, fuzzy, c-format
+#, c-format
 msgid "Can't set aside '%s'"
-msgstr "Kann Status von »%s« nicht ermitteln"
+msgstr "Kann »%s« nicht beiseitelegen"
 
 #: ../libsvn_subr/io.c:3793
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to make name in '%s'"
-msgstr "Kann Namen für »%s« nicht erstellen"
+msgstr "Kann Namen in »%s« nicht erstellen"
 
 #: ../libsvn_subr/kitchensink.c:46
 #, c-format
@@ -5921,11 +5919,8 @@ msgstr "Bitte geben Sie »ja« oder »ne
 msgid "Store password unencrypted (yes/no)? "
 msgstr "Passwort unverschlüsselt speichern (ja/nein)? "
 
-# CHECKME: See
-# http://dict.leo.org/forum/viewUnsolvedquery.php?idThread=34212&idForum=2&lp=ende&lang=de
-# CHECKME: Remove ":", it's no proper sentence with it
 #: ../libsvn_subr/prompt.c:448
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "-----------------------------------------------------------------------\n"
@@ -5942,12 +5937,13 @@ msgid ""
 "'%s'.\n"
 "-----------------------------------------------------------------------\n"
 msgstr ""
+"\n"
 "-----------------------------------------------------------------------\n"
-"ACHTUNG! Ihr Password für den Anmeldungstext (realm)\n"
+"ACHTUNG! Ihr Password für den Anmeldebereich\n"
 "\n"
 "   %s\n"
 "\n"
-"kann auf der Platte nur unverschlüsselt gespeichert werden! Es wird\n"
+"kann auf der Festplatte nur unverschlüsselt gespeichert werden! Es wird\n"
 "empfohlen, falls möglich Ihr System so zu konfigurieren, dass Subversion\n"
 "Passwörter verschlüsselt speichern kann. Siehe die Dokumentation für\n"
 "Details.\n"
@@ -5955,16 +5951,15 @@ msgstr ""
 "Sie können ein weiteres Anzeigen dieser Warnung verhindern, indem Sie\n"
 "den Wert der Option »store-plaintext-passwords« in\n"
 "»%s«\n"
-"entweder auf »ja« oder »nein« setzen.\n"
+"entweder auf »yes« oder »no« setzen.\n"
 "-----------------------------------------------------------------------\n"
 
 #: ../libsvn_subr/prompt.c:475
 msgid "Store passphrase unencrypted (yes/no)? "
 msgstr "Passphrase unverschlüsselt speichern (ja/nein)? "
 
-# FIXME: s/passphrase/passphrases/
 #: ../libsvn_subr/prompt.c:477
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "-----------------------------------------------------------------------\n"
@@ -5981,12 +5976,13 @@ msgid ""
 "'no' in '%s'.\n"
 "-----------------------------------------------------------------------\n"
 msgstr ""
+"\n"
 "-----------------------------------------------------------------------\n"
 "ACHTUNG! Ihre Passphrase für das Klient-Zertifikat:\n"
 "\n"
 "   %s\n"
 "\n"
-"kann auf der Platte nur unverschlüsselt gespeichert werden! Es wird\n"
+"kann auf der Festplatte nur unverschlüsselt gespeichert werden! Es wird\n"
 "empfohlen, falls möglich Ihr System so zu konfigurieren, dass Subversion\n"
 "Passphrasen verschlüsselt speichern kann. Siehe die Dokumentation für\n"
 "Details.\n"
@@ -5994,7 +5990,7 @@ msgstr ""
 "Sie können ein weiteres Anzeigen dieser Warnung verhindern, indem Sie\n"
 "den Wert der Option »store-ssl-client-cert-pp-plaintext« in\n"
 "»%s«\n"
-"entweder auf »ja« oder »nein« setzen.\n"
+"entweder auf »yes« oder »no« setzen.\n"
 "-----------------------------------------------------------------------\n"
 
 #: ../libsvn_subr/prompt.c:523
@@ -6078,9 +6074,9 @@ msgid " (%a, %d %b %Y)"
 msgstr " (%a, %d. %b %Y)"
 
 #: ../libsvn_subr/token.c:66
-#, fuzzy, c-format
+#, c-format
 msgid "Token '%s' is unrecognized"
-msgstr "Marke »%s« hat einen nicht erkannten Knotentyp"
+msgstr "Marke »%s« nicht erkannt"
 
 #: ../libsvn_subr/utf.c:190
 msgid "Can't lock charset translation mutex"
@@ -6169,32 +6165,32 @@ msgid "Malformed XML: %s at line %ld"
 msgstr "Fehlerhaftes XML: %s in Zeile %ld"
 
 #: ../libsvn_wc/adm_crawler.c:114
-#, fuzzy, c-format
+#, c-format
 msgid "The existing node '%s' can not be restored."
-msgstr "Der Knoten »%s« wurde nicht gefunden."
+msgstr "Der vorhandene Knoten »%s« kann nicht wiederhergestellt werden."
 
 #: ../libsvn_wc/adm_crawler.c:141
-#, fuzzy, c-format
+#, c-format
 msgid "The node '%s' can not be restored."
-msgstr "Der Knoten »%s« wurde nicht gefunden."
+msgstr "Der Knoten »%s« kann nicht wiederhergestellt werden."
 
 #: ../libsvn_wc/adm_crawler.c:724
-#, fuzzy, c-format
+#, c-format
 msgid "Can't retrieve base revision for %s"
-msgstr "alle Revisionseigenschaften abfragen"
+msgstr "Kann Basisrevision für »%s« nicht abfragen"
 
 #: ../libsvn_wc/adm_crawler.c:999
 msgid "Error aborting report"
 msgstr "Fehler beim Abbrechen des Reports"
 
 #: ../libsvn_wc/adm_crawler.c:1274
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Checksum mismatch for text base of '%s':\n"
 "   expected:  %s\n"
 "     actual:  %s\n"
 msgstr ""
-"Prüfsummenfehler, Datei »%s«:\n"
+"Prüfsummenfehler für Textbasis von »%s«:\n"
 "   Erwartet:    %s\n"
 "   Tatsächlich: %s\n"
 
@@ -6211,23 +6207,22 @@ msgstr "»%s« ist kein gültiger Verwal
 #: ../libsvn_wc/adm_files.c:208
 #, c-format
 msgid "Node '%s' has no pristine text"
-msgstr ""
+msgstr "Knoten »%s« hat keinen Ursprungstext"
 
-# TODO: proper translation for Baseline
 #: ../libsvn_wc/adm_files.c:234
-#, fuzzy, c-format
+#, c-format
 msgid "Node '%s' has no pristine base text"
-msgstr "»%s« existierte nicht für die Baseline-Ressource"
+msgstr "Knoten »%s« hat keine ursprüngliche Textbasis"
 
 #: ../libsvn_wc/adm_files.c:259
-#, fuzzy, c-format
+#, c-format
 msgid "File '%s' has no text base"
-msgstr "Datei »%s« hat inkonsistente Zeilenenden"
+msgstr "Datei »%s« hat keine Textbasis"
 
 #: ../libsvn_wc/adm_files.c:286
-#, fuzzy, c-format
+#, c-format
 msgid "Base node of '%s' is not a file"
-msgstr "Pfad »%s« ist keine Datei"
+msgstr "Basisknoten von »%s« ist keine Datei"
 
 #: ../libsvn_wc/adm_files.c:322
 #, c-format
@@ -6255,16 +6250,14 @@ msgid "URL '%s' doesn't match existing U
 msgstr "URL »%s« stimmt nicht mit der existierenden URL »%s« in »%s« überein"
 
 #: ../libsvn_wc/adm_ops.c:625
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' cannot be deleted"
-msgstr "Das Basisverzeichnis kann nicht gelöscht werden"
+msgstr "»%s« kann nicht gelöscht werden"
 
 #: ../libsvn_wc/adm_ops.c:795 ../libsvn_wc/update_editor.c:5607
-#, fuzzy, c-format
+#, c-format
 msgid "Can't find parent directory's node while trying to add '%s'"
-msgstr ""
-"Kann Eintrag des Elternverzeichnisses während des Hinzufügens von »%s« nicht\n"
-"finden"
+msgstr "Kann Knoten des Elternverzeichnisses während des Hinzufügens von »%s« nicht finden"
 
 #: ../libsvn_wc/adm_ops.c:804 ../libsvn_wc/update_editor.c:5601
 #, c-format
@@ -6326,12 +6319,12 @@ msgstr "Die Datei »%s« hat lokale Änd
 #: ../libsvn_wc/adm_ops.c:2087
 #, c-format
 msgid "'%s' is a directory, and thus cannot be a member of a changelist"
-msgstr "»%s« ist ein Vrzeichnis and kann deswegen nicht Element einer Änderungsliste sein"
+msgstr "»%s« ist ein Verzeichnis and kann deswegen nicht Element einer Änderungsliste sein"
 
 #: ../libsvn_wc/adm_ops.c:2155
-#, fuzzy, c-format
+#, c-format
 msgid "Can't add a file external to '%s' as it is not a file in repository '%s'."
-msgstr "Ein externer Dateiverweis von »%s« kann nicht in die Arbeitskopie eines anderen Projektarchivs mit der Wurzel »%s« eingefügt werden"
+msgstr "Kann externen Dateiverweis auf »%s« nicht hinzufügen, da dies keine Datei im Projektarchiv »%s« ist."
 
 #: ../libsvn_wc/cleanup.c:58
 #, c-format
@@ -6357,9 +6350,9 @@ msgid "Source '%s' is unexpected kind"
 msgstr "Quelle »%s« ist unbekannten Typs"
 
 #: ../libsvn_wc/copy.c:384
-#, fuzzy, c-format
+#, c-format
 msgid "cannot handle node kind for '%s'"
-msgstr "»%s« hat einen unbekannten Knotentyp"
+msgstr "Kann Knotentyp für »%s« nicht verarbeiten"
 
 #: ../libsvn_wc/copy.c:648
 #, c-format
@@ -6374,9 +6367,9 @@ msgid "Cannot copy to '%s' as it is sche
 msgstr "Kann nach »%s« kopieren, da es zum Löschen vorgesehen ist"
 
 #: ../libsvn_wc/copy.c:685
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is already under version control but is excluded."
-msgstr "»%s« befindet sich bereits unter Versionskontrolle"
+msgstr "»%s« befindet sich bereits unter Versionskontrolle, ist aber ausgeschlossen."
 
 #: ../libsvn_wc/copy.c:700
 #, c-format
@@ -6389,24 +6382,24 @@ msgid "'%s' already exists and is in the
 msgstr "»%s« existiert bereits und ist im Weg"
 
 #: ../libsvn_wc/crop.c:224
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot exclude '%s': it is a working copy root"
-msgstr "Erwartete nicht, dass »%s« Basis einer Arbeitskopie ist"
+msgstr "Kann »%s« nicht ausschließen: Es ist die Basis einer Arbeitskopie"
 
 #: ../libsvn_wc/crop.c:232
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot exclude '%s': it is a switched path"
-msgstr "Kann »%s« nicht beschneiden: Es ist ein umgestellter Pfad"
+msgstr "Kann »%s« nicht ausschließen: Es ist ein umgestellter Pfad"
 
 #: ../libsvn_wc/crop.c:256
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot exclude '%s': it is to be added to the repository. Try commit instead"
-msgstr "Kann »%s« nicht beschneiden: Es soll vom Projektarchiv entfernt werden. Versuchen Sie stattdessen es zu übertragen"
+msgstr "Kann »%s« nicht ausschließen: Es soll dem Projektarchiv hinzugefügt werden. Versuchen Sie stattdessen es zu übertragen"
 
 #: ../libsvn_wc/crop.c:263
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot exclude '%s': it is to be deleted from the repository. Try commit instead"
-msgstr "Kann »%s« nicht beschneiden: Es soll vom Projektarchiv entfernt werden. Versuchen Sie stattdessen es zu übertragen"
+msgstr "Kann »%s« nicht ausschließen: Es soll aus dem Projektarchiv entfernt werden. Versuchen Sie stattdessen es zu übertragen"
 
 # CHECKME: Check translation of crop (beschneiden?)!!!!
 #: ../libsvn_wc/crop.c:333
@@ -6423,9 +6416,9 @@ msgid "Cannot crop '%s': it is going to 
 msgstr "Kann »%s« nicht beschneiden: Es soll vom Projektarchiv entfernt werden. Versuchen Sie stattdessen es zu übertragen"
 
 #: ../libsvn_wc/crop.c:366
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot crop '%s': it is to be added to the repository. Try commit instead"
-msgstr "Kann »%s« nicht beschneiden: Es soll vom Projektarchiv entfernt werden. Versuchen Sie stattdessen es zu übertragen"
+msgstr "Kann »%s« nicht beschneiden: Es soll dem Projektarchiv hinzugefügt werden. Versuchen Sie stattdessen es zu übertragen"
 
 #: ../libsvn_wc/deprecated.c:2052
 #, c-format
@@ -6438,14 +6431,14 @@ msgid "'%s' is not a versioned working c
 msgstr "»%s« ist keine versionierte Arbeitskopie"
 
 #: ../libsvn_wc/entries.c:1394
-#, fuzzy, c-format
+#, c-format
 msgid "Admin area of '%s' is missing"
-msgstr "Verzeichnis »%s« fehlt"
+msgstr "Administrativer Bereich von »%s« fehlt"
 
 #: ../libsvn_wc/entries.c:1414
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' is not of the right kind"
-msgstr "»%s« ist veraltet"
+msgstr "»%s« hat einen falschen Typ"
 
 #: ../libsvn_wc/entries.c:2143
 #, c-format
@@ -6468,11 +6461,9 @@ msgid "Path '%s' ends in '%s', which is 
 msgstr "Pfad »%s« endet mit »%s«, was für diese Operation nicht erlaubt ist"
 
 #: ../libsvn_wc/lock.c:553 ../libsvn_wc/upgrade.c:1266
-#, fuzzy, c-format
+#, c-format
 msgid "Working copy format of '%s' is too old (%d); please run 'svn upgrade'"
-msgstr ""
-"Format der Arbeitskopie »%s« ist zu alt (%d); bitte checken Sie die\n"
-"Arbeitskopie erneut aus"
+msgstr "Format der Arbeitskopie »%s« ist zu alt (%d); Bitte führen Sie »svn upgrade« aus"
 
 #: ../libsvn_wc/lock.c:817 ../libsvn_wc/wc_db.c:8585
 #, c-format
@@ -6490,9 +6481,9 @@ msgid "Expected '%s' to be a directory b
 msgstr "Erwartete, dass »%s« ein Verzeichnis ist, es ist aber eine Datei"
 
 #: ../libsvn_wc/lock.c:991
-#, fuzzy, c-format
+#, c-format
 msgid "Can't retrieve an access baton for non-directory '%s'"
-msgstr "Kann keine Einträge aus einem nicht-Verzeichnis lesen"
+msgstr "Kann keine Zugriffsreferenz für nicht-Verzeichnis »%s« erhalten"
 
 #: ../libsvn_wc/lock.c:1000
 #, c-format
@@ -6510,9 +6501,9 @@ msgid "No write-lock in '%s'"
 msgstr "Keine Schreibsperre in »%s«"
 
 #: ../libsvn_wc/lock.c:1564 ../libsvn_wc/lock.c:1615
-#, fuzzy, c-format
+#, c-format
 msgid "Can't obtain lock on non-directory '%s'."
-msgstr "Kann Verzeichnis »%s« nicht öffnen"
+msgstr "Kann keine Sperre für nicht-Verzeichnis »%s« erhalten."
 
 # CHECKME: s/callback/hook/ ??
 #: ../libsvn_wc/merge.c:866 ../libsvn_wc/merge.c:1139
@@ -6549,7 +6540,7 @@ msgstr "Ungültiger Wert für Feld »%s�
 #: ../libsvn_wc/old-and-busted.c:346
 #, c-format
 msgid "Found an unexpected \\0 in the file external '%s'"
-msgstr "Ein nicht geschütztes \\0 wurde im externen Dateiverweis »%s« gefunden"
+msgstr "Ein nicht erwartetes \\0 wurde im externen Dateiverweis »%s« gefunden"
 
 #: ../libsvn_wc/old-and-busted.c:390
 #, c-format
@@ -6567,14 +6558,14 @@ msgid "Entry for '%s' has invalid reposi
 msgstr "Eintrag »%s« hat eine ungültige Projektarchiv-Basis"
 
 #: ../libsvn_wc/old-and-busted.c:530 ../libsvn_wc/old-and-busted.c:867
-#, fuzzy, c-format
+#, c-format
 msgid "Entry '%s' has invalid 'schedule' value"
-msgstr "Eintrag »%s« hat einen ungültigen »%s« Wert"
+msgstr "Eintrag »%s« hat einen ungültigen Wert für »schedule«"
 
 #: ../libsvn_wc/old-and-busted.c:680
-#, fuzzy, c-format
+#, c-format
 msgid "Entry '%s' has invalid 'depth' value"
-msgstr "Eintrag »%s« hat einen ungültigen »%s« Wert"
+msgstr "Eintrag »%s« hat einen ungültigen Wert für »depth«"
 
 #: ../libsvn_wc/old-and-busted.c:731
 #, c-format
@@ -6617,9 +6608,9 @@ msgid "Error at entry %d in entries file
 msgstr "Fehler bei Eintrag %d in Eintragsdatei für »%s«:"
 
 #: ../libsvn_wc/props.c:283
-#, fuzzy, c-format
+#, c-format
 msgid "The property '%s' may not be merged into '%s'."
-msgstr "Eigenschaft »%s« wurde von »%s« gelöscht.\n"
+msgstr "Eigenschaft »%s« darf nicht nach »%s« zusammengeführt werden."
 
 #: ../libsvn_wc/props.c:427
 #, c-format
@@ -6640,34 +6631,34 @@ msgstr ""
 "aber die Eigenschaft wurde lokal bereits gelöscht."
 
 #: ../libsvn_wc/props.c:451
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Trying to delete property '%s' with value '%s',\n"
 "but property has been locally added with value '%s'."
 msgstr ""
-"Versuch, die Eigenschaft »%s« von »%s« in »%s« zu ändern,\n"
+"Versuch, die Eigenschaft »%s« mit dem Wert »%s« zu löschen,\n"
 "aber die Eigenschaft wurde lokal mit dem Wert »%s« hinzugefügt."
 
 #: ../libsvn_wc/props.c:468
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Trying to delete property '%s' with value '%s',\n"
 "but it has been modified from '%s' to '%s'."
 msgstr ""
 "Versuch, die Eigenschaft »%s« mit dem Wert »%s« zu löschen,\n"
-"aber der Wert wurde von »%s« in »%s« geändert."
+"aber der Wert wurde von »%s« nach »%s« geändert."
 
 #: ../libsvn_wc/props.c:479
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Trying to delete property '%s' with value '%s',\n"
 "but property with value '%s' is locally deleted."
 msgstr ""
-"Versuch, die Eigenschaft »%s« mit dem Wert »%s« anzulegen,\n"
-"aber die Eigenschaft wurde lokal bereits gelöscht."
+"Versuch, die Eigenschaft »%s« mit dem Wert »%s« zu löschen,\n"
+"aber die Eigenschaft mit dem Wert »%s« wurde lokal gelöscht."
 
 #: ../libsvn_wc/props.c:491
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Trying to delete property '%s' with value '%s',\n"
 "but the local value is '%s'."
@@ -6735,9 +6726,8 @@ msgid "Property '%s' is an entry propert
 msgstr "Eigenschaft »%s« ist eine Eintragseigenschaft"
 
 #: ../libsvn_wc/props.c:1804 ../libsvn_wc/props.c:1811
-#, fuzzy
 msgid "Failed to load properties"
-msgstr "Konnte Eigenschaften nicht vom Datenträger laden"
+msgstr "Konnte Eigenschaften nicht laden"
 
 #: ../libsvn_wc/props.c:1853
 #, c-format
@@ -6765,19 +6755,18 @@ msgid "Can't set properties on '%s': inv
 msgstr ""
 
 #: ../libsvn_wc/props.c:2063
-#, fuzzy
 msgid "Failed to load current properties"
-msgstr "Konnte Eigenschaften nicht vom Datenträger laden"
+msgstr "Konnte aktuelle Eigenschaften nicht laden"
 
 #: ../libsvn_wc/props.c:2208
-#, fuzzy, c-format
+#, c-format
 msgid "Unrecognized line ending style '%s' for '%s'"
-msgstr "Stil für Zeilenende für »%s« nicht erkannt"
+msgstr "Stil für Zeilenende »%s« nicht erkannt für »%s«"
 
 #: ../libsvn_wc/props.c:2267
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot set non-inheritable mergeinfo on a non-directory ('%s')"
-msgstr "Kann »%s« nicht für ein Verzeichnis setzen (»%s«)"
+msgstr "Kann nicht-vererbbare Zusammenführungsinformationen auf ein nicht-Verzeichnis (»%s«) nicht setzen"
 
 #: ../libsvn_wc/props.c:2488 ../libsvn_wc/props.c:2564
 #, c-format
@@ -6805,32 +6794,29 @@ msgid "Invalid %s property on '%s': targ
 msgstr "Ungültige Eigenschaft %s auf »%s«: Ziel »%s« ist ein absoluter Pfad oder enthält »..«"
 
 #: ../libsvn_wc/questions.c:203
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Checksum mismatch indicates corrupt text base for file: '%s':\n"
 "   expected:  %s\n"
 "     actual:  %s\n"
 msgstr ""
-"Prüfsummenfehler ist Anzeichen für beschädigte Textbasis: »%s«\n"
+"Prüfsummenfehler ist Anzeichen für beschädigte Textbasis der Datei: »%s«\n"
 "   Erwartet:    %s\n"
 "   Tatsächlich: %s\n"
 
 #: ../libsvn_wc/relocate.c:105
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot relocate '%s' as it is not the root of a working copy"
-msgstr "Pfad »%s« ist nicht in der Arbeitskopie enthalten"
+msgstr "Kann »%s« nicht umplatzieren da es keine Basis einer Arbeitskopie ist"
 
 #: ../libsvn_wc/relocate.c:112
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot relocate '%s' as it is not the root of a working copy; try relocating '%s' instead"
-msgstr ""
-"Kann »%s« nicht kopieren oder verschieben, da es sich noch nicht im\n"
-"Projektarchiv befindet, versuchen Sie es zuerst zu übertragen"
+msgstr "Kann »%s« nicht umplatzieren da es keine Basis einer Arbeitskopie ist; Versuchen Sie stattdessen »%s« umzuplatzieren"
 
 #: ../libsvn_wc/relocate.c:129
-#, fuzzy
 msgid "Cannot relocate a single file"
-msgstr "Kann externen Dateiverweis nicht löschen"
+msgstr "Kann eine einzelne Datei nicht umplatzieren"
 
 #: ../libsvn_wc/relocate.c:136
 #, c-format
@@ -6868,9 +6854,9 @@ msgid "Error parsing tree conflict skel"
 msgstr "Fehler beim Einlesen der Baumkonfliktvorlage"
 
 #: ../libsvn_wc/tree_conflicts.c:468
-#, fuzzy, c-format
+#, c-format
 msgid "Attempt to add tree conflict that already exists at '%s'"
-msgstr "Es wurde versucht, einen Baumkonflikt hinzuzufügen, den es bereits gibt"
+msgstr "Es wurde versucht, einen Baumkonflikt hinzuzufügen, der in »%s« bereits vorhanden ist"
 
 #: ../libsvn_wc/update_editor.c:1051
 #, c-format
@@ -6896,14 +6882,14 @@ msgstr ""
 "Administrationsverzeichnis trägt"
 
 #: ../libsvn_wc/update_editor.c:2313
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to add directory '%s': a separate working copy with the same name already exists"
-msgstr "Konnte Verzeichnis »%s« nicht hinzufügen: ein versioniertes Verzeichnis mit demselben Namen existiert bereits"
+msgstr "Konnte Verzeichnis »%s« nicht hinzufügen: ein andere Arbeitskopie mit gleichem Namen existiert bereits"
 
 #: ../libsvn_wc/update_editor.c:2322
-#, fuzzy, c-format
+#, c-format
 msgid "Switched directory '%s' does not match expected URL '%s'"
-msgstr "URL »%s« des existierenden Verzeichnisses »%s« entspricht nicht der erwarteten URL »%s«"
+msgstr "Umgestelltes Vereichnis »%s« entspricht nicht der erwarteten URL »%s«"
 
 #: ../libsvn_wc/update_editor.c:2348
 #, c-format
@@ -6917,29 +6903,28 @@ msgstr "Konnte Eigenschaften nicht zusam
 #: ../libsvn_wc/update_editor.c:2990
 #, c-format
 msgid "Failed to mark '%s' absent: item of the same name is already scheduled for addition"
-msgstr ""
-"Konnte »%s« nicht als fehlend markieren: ein Objekt mit demselben Namen wurde\n"
-"bereits zur Übertragung eingeplant"
+msgstr "Konnte »%s« nicht als fehlend markieren: ein Eintrag mit demselben Namen wurde bereits zur Hinzufügung eingeplant"
 
 #: ../libsvn_wc/update_editor.c:3081
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to add file '%s': object of the same name as the administrative directory"
-msgstr ""
-"Konnte Verzeichnis »%s« nicht hinzufügen, da es denselben Namen wie das\n"
-"Administrationsverzeichnis trägt"
+msgstr "Konnte Datei »%s« nicht hinzufügen, da es denselben Namen wie Administrationsverzeichnis trägt"
 
 #: ../libsvn_wc/update_editor.c:3208
-#, fuzzy, c-format
+#, c-format
 msgid "Switched file '%s' does not match expected URL '%s'"
-msgstr "URL »%s« der existierenden Datei »%s« entspricht nicht der erwarteten URL »%s«"
+msgstr "Umgestellte Datei »%s« entspricht nicht der erwarteten URL »%s«"
 
 #: ../libsvn_wc/update_editor.c:3469
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Checksum mismatch for '%s':\n"
 "   expected:  %s\n"
 "   recorded:  %s\n"
-msgstr "Prüfsummenfehler für »%s«; erwartet: »%s«, verzeichnet: »%s«"
+msgstr ""
+"Prüfsummenfehler für »%s«:\n"
+"   erwartet:  %s\n"
+"verzeichnet:  %s\n"
 
 #: ../libsvn_wc/update_editor.c:4911
 #, c-format
@@ -6986,9 +6971,9 @@ msgid "The working copy '%s' is at forma
 msgstr ""
 
 #: ../libsvn_wc/upgrade.c:1545
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot upgrade '%s' as it is not a pre-1.7 working copy root"
-msgstr "Erwartete nicht, dass »%s« Basis einer Arbeitskopie ist"
+msgstr "Kann »%s« nicht in ein neueres Format bringen, da es keine Basis einer Arbeitskopie älter als Version 1.7 ist"
 
 #: ../libsvn_wc/util.c:58
 #, c-format
@@ -7011,24 +6996,24 @@ msgid "The node '%s' has a corrupt check
 msgstr "Der Knoten »%s« hat einen fehlerhaften Prüfsummenwert."
 
 #: ../libsvn_wc/wc_db.c:2286
-#, fuzzy, c-format
+#, c-format
 msgid "Pristine text not found"
-msgstr "Eigenschaft nicht gefunden"
+msgstr "Ursprungstext nicht gefunden"
 
 #: ../libsvn_wc/wc_db.c:2473
-#, fuzzy, c-format
+#, c-format
 msgid "The pristine text with checksum '%s' was not found"
-msgstr "Der Knoten »%s« wurde nicht gefunden."
+msgstr "Der Ursprungstext mit der Prüfsumme »%s« wurde nicht gefunden."
 
 #: ../libsvn_wc/wc_db.c:2513
-#, fuzzy, c-format
+#, c-format
 msgid "The pristine text with MD5 checksum '%s' was not found"
-msgstr "Der Knoten »%s« wurde nicht gefunden."
+msgstr "Der Ursprungstext mit der MD5-Prüfsumme »%s« wurde nicht gefunden."
 
 #: ../libsvn_wc/wc_db.c:2705
 #, c-format
 msgid "The pristine text with checksum '%s' was found in the DB or on disk but not both"
-msgstr ""
+msgstr "Der Ursprungstext mit der Prüfsumme »%s« wurde in der Datenbank oder der Festplatte gefunden, aber nicht beides."
 
 #: ../libsvn_wc/wc_db.c:3036 ../libsvn_wc/wc_db.c:3258
 #, c-format
@@ -7036,14 +7021,14 @@ msgid "Cannot copy '%s' excluded by serv
 msgstr ""
 
 #: ../libsvn_wc/wc_db.c:3042
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot handle status of '%s'"
-msgstr "Kann keine URL für »%s« finden"
+msgstr "Kann Status von »%s« nicht verarbeiten"
 
 #: ../libsvn_wc/wc_db.c:3885
-#, fuzzy, c-format
+#, c-format
 msgid "Can't store properties for '%s' in '%s'."
-msgstr "Kann Eigenschafts-Hashwert nicht nach »%s« schreiben"
+msgstr "Kann Eigenschaftswert für »%s« nicht in »%s« speichern"
 
 #: ../libsvn_wc/wc_db.c:5392
 #, c-format
@@ -7056,14 +7041,14 @@ msgid "Could not find node '%s' for reco
 msgstr ""
 
 #: ../libsvn_wc/wc_db.c:6863 ../libsvn_wc/wc_db.c:6965
-#, fuzzy, c-format
+#, c-format
 msgid "Expected node '%s' to be added."
-msgstr "Erwartete, dass »%s« ein Verzeichnis ist, es ist aber eine Datei"
+msgstr "Erwartete, dass Knoten »%s« hinzugefügt wird."
 
 #: ../libsvn_wc/wc_db.c:7280
 #, c-format
 msgid "Expected node '%s' to be deleted."
-msgstr ""
+msgstr "Erwartete, dass Knoten »%s« gelöscht wird."
 
 #: ../libsvn_wc/wc_db.c:7554
 #, c-format
@@ -7088,17 +7073,17 @@ msgstr "Arbeitskopie »%s« gesperrt."
 #: ../libsvn_wc/wc_db.c:8639
 #, c-format
 msgid "'%s' is already locked via '%s'."
-msgstr "»%s« ist bereits durch »%s« gesperrt"
+msgstr "»%s« ist bereits durch »%s« gesperrt."
 
 #: ../libsvn_wc/wc_db.c:8753
-#, fuzzy, c-format
+#, c-format
 msgid "Working copy not locked at '%s'."
-msgstr "Arbeitskopie »%s« ist nicht gesperrt"
+msgstr "Arbeitskopie »%s« ist nicht gesperrt."
 
 #: ../libsvn_wc/wc_db.c:9370
-#, fuzzy, c-format
+#, c-format
 msgid "'%s' has no BASE_NODE"
-msgstr "»%s« hat keine URL"
+msgstr "»%s« hat keinen »BASE_NODE«"
 
 #: ../libsvn_wc/wc_db_pdh.c:234
 #, c-format
@@ -7108,18 +7093,17 @@ msgstr ""
 "Arbeitskopie erneut aus"
 
 #: ../libsvn_wc/wc_db_pdh.c:244
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "This client is too old to work with the working copy at\n"
 "'%s' (format %d).\n"
 "You need to get a newer Subversion client. For more details, see\n"
 "  http://subversion.apache.org/faq.html#working-copy-format-change\n"
 msgstr ""
-"Der Client ist zu alt, um mit der Arbeitskopie »%s« zusammen zu arbeiten.\n"
-"Sie benötigen einen neueren Subversion-Client oder müssen diese Arbeitskopie\n"
-"auf eine ältere Version zurücksetzen. Vergleiche\n"
-"http://subversion.apache.org/faq.html#working-copy-format-change\n"
-"für Details."
+"Dieser Client ist zu alt, um mit dieser Arbeitskopie umzugehen:\n"
+"»%s« (Format %d).\n"
+"Sie benötigen einen neueren Subversion-Client. Für mehr Details, siehe\n"
+"  http://subversion.apache.org/faq.html#working-copy-format-change\n"
 
 #: ../libsvn_wc/wc_db_pdh.c:265
 msgid "Cleanup with an older 1.7 client before upgrading with this client"
@@ -7138,9 +7122,9 @@ msgstr "»%s« ist keine Basis einer Arb
 
 # CHECKME: What's WCROOT? A variable or short for "working copy root"?
 #: ../libsvn_wc/wc_db_util.c:68
-#, fuzzy, c-format
+#, c-format
 msgid "Missing a row in WCROOT."
-msgstr "Fehlende Zeile in WCROOT für »%s«."
+msgstr "Fehlende Zeile in WCROOT."
 
 #: ../libsvn_wc/workqueue.c:338
 #, c-format
@@ -7470,9 +7454,8 @@ msgid "Destination directory exists; ple
 msgstr "Zielverzeichnis existiert; bitte löschen Sie das Verzeichnis oder verwenden Sie »--force« zum Überschreiben"
 
 #: ../svn/export-cmd.c:118 ../svn/switch-cmd.c:179 ../svn/update-cmd.c:107
-#, fuzzy
 msgid "Failure occured processing one or more externals definitions"
-msgstr "»svn:externals«-Definitionen ignorieren"
+msgstr "Kann eine oder mehrere »svn:externals«-Definitionen nicht verarbeiten"
 
 #: ../svn/help-cmd.c:50
 #, c-format
@@ -7839,12 +7822,12 @@ msgstr ""
 # TODO: Duplicated message!!!!
 #: ../svn/log-cmd.c:625
 msgid "-c and -r are mutually exclusive"
-msgstr "-c und -r schließen sich gegenseitig aus"
+msgstr "-c und -r schließen einander aus"
 
 #: ../svn/log-cmd.c:652
-#, fuzzy, c-format
+#, c-format
 msgid "Only relative paths can be specified after a URL for 'svn log', but '%s' is not a relative path"
-msgstr "Nach einer URL können nur relative Pfade angegeben werden"
+msgstr "Mit »svn log« können nach einer URL nur relative Pfade angegeben werden, »%s« ist aber kein relativer Pfad"
 
 #: ../svn/log-cmd.c:697
 #, c-format
@@ -7887,13 +7870,12 @@ msgstr ""
 "                             --depth=immediates"
 
 #: ../svn/main.c:146
-#, fuzzy
 msgid "the change made by revision ARG (like -r ARG-1:ARG)\n"
-msgstr "die in Revision PAR durchgeführte Änderung"
+msgstr "die in Revision PAR durchgeführte Änderung (wie -r PAR-1:PAR)\n"
 
 #: ../svn/main.c:150
 msgid "ARG (some commands also take ARG1:ARG2 range)\n"
-msgstr ""
+msgstr "PAR (einige Kommandos akzeptieren auch Bereiche PAR1:PAR2)\n"
 
 #: ../svn/main.c:165
 msgid "read log message from file ARG"
@@ -8082,11 +8064,8 @@ msgid "remove changelist association"
 msgstr "Bezug zur Änderungsliste entfernen"
 
 #: ../svn/main.c:276
-#, fuzzy
 msgid "operate only on members of changelist ARG"
-msgstr ""
-"nur auf Elementen der Änderungsliste PAR operieren\n"
-"                             [äquivalent: --cl]"
+msgstr "nur auf Elementen der Änderungsliste PAR operieren"
 
 #: ../svn/main.c:278
 msgid "don't delete changelists after commit"
@@ -8105,9 +8084,8 @@ msgid "retrieve no revision properties"
 msgstr "keine Revisionseigenschaften abfragen"
 
 #: ../svn/main.c:285
-#, fuzzy
 msgid "set revision property ARG in new revision\n"
-msgstr "Revisionseigenschaft PAR abfragen"
+msgstr "Revisionseigenschaft PAR in neuer Revision setzen\n"
 
 #: ../svn/main.c:288
 msgid "make intermediate directories"
@@ -8168,9 +8146,8 @@ msgid "use git's extended diff format"
 msgstr ""
 
 #: ../svn/main.c:337
-#, fuzzy
 msgid "Allow merge into mixed-revision working copy.\n"
-msgstr "Kann nicht zurück in eine Arbeitskopie mit verschiedenen Revisionen integrieren, versuchen Sie erst zu aktualisieren"
+msgstr "Erlaube Zusammenführung in eine Arbeitskopie mit verschiedenen Revisionen.\n"
 
 #: ../svn/main.c:408
 msgid ""
@@ -10072,29 +10049,28 @@ msgid "--- Reverse-merging r%ld through 
 msgstr "-- Rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
 
 #: ../svn/notify.c:765
-#, fuzzy, c-format
 msgid "--- Recording mergeinfo for merge between repository URLs into '%s':\n"
-msgstr "-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für Zusammenführung zwischen Projektarchiv-URLs in »%s«:\n"
 
 #: ../svn/notify.c:775
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for merge of r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen von r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für Zusammenführung von r%ld in »%s«:\n"
 
 #: ../svn/notify.c:780
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for reverse merge of r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen (aus fremden Projektarchiv) von r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von r%ld in »%s«:\n"
 
 #: ../svn/notify.c:785
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for merge of r%ld through r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für Zusammenführung von r%ld bis r%ld in »%s«:\n"
 
 #: ../svn/notify.c:790
-#, fuzzy, c-format
+#, c-format
 msgid "--- Recording mergeinfo for reverse merge of r%ld through r%ld into '%s':\n"
-msgstr "-- Rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
+msgstr "-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von r%ld bis r%ld in »%s«:\n"
 
 #: ../svn/notify.c:800
 #, fuzzy, c-format
@@ -10147,9 +10123,9 @@ msgid "property '%s' deleted from reposi
 msgstr "Eigenschaft »%s« wurde von Revision %ld im Projektarchiv gelöscht\n"
 
 #: ../svn/notify.c:879
-#, fuzzy, c-format
+#, c-format
 msgid "Upgraded '%s'.\n"
-msgstr "Überspringe »%s«\n"
+msgstr "In neues Format gebracht: »%s«.\n"
 
 #: ../svn/notify.c:885
 #, c-format

Modified: subversion/branches/1.7.x-issue4153/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svn/diff-cmd.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svn/diff-cmd.c Tue May 15 12:39:14 2012
@@ -247,6 +247,12 @@ svn_cl__diff(apr_getopt_t *os,
 
       SVN_ERR(svn_cl__args_to_target_array_print_reserved(&tmp2, os, tmp,
                                                           ctx, FALSE, pool));
+
+      /* Check if either or both targets were skipped (e.g. because they
+       * were .svn directories). */
+      if (tmp2->nelts < 2)
+        return svn_error_create(SVN_ERR_CL_INSUFFICIENT_ARGS, NULL, NULL);
+
       SVN_ERR(svn_opt_parse_path(&old_rev, &old_target,
                                  APR_ARRAY_IDX(tmp2, 0, const char *),
                                  pool));

Modified: subversion/branches/1.7.x-issue4153/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svn/status.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svn/status.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svn/status.c Tue May 15 12:39:14 2012
@@ -87,6 +87,17 @@ combined_status(const svn_client_status_
   return new_status;
 }
 
+/* Return the combined repository STATUS as shown in 'svn status' based
+   on the repository node status and repository text status */
+static enum svn_wc_status_kind
+combined_repos_status(const svn_client_status_t *status)
+{
+  if (status->repos_node_status == svn_wc_status_modified)
+    return status->repos_text_status;
+
+  return status->repos_node_status;
+}
+
 /* Return the single character representation of the switched column
    status. */
 static char
@@ -388,7 +399,7 @@ svn_cl__print_status_xml(const char *pat
     {
       svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "repos-status",
                             "item",
-                            generate_status_desc(status->repos_text_status),
+                            generate_status_desc(combined_repos_status(status)),
                             "props",
                             generate_status_desc(status->repos_prop_status),
                             NULL);

Modified: subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c Tue May 15 12:39:14 2012
@@ -1621,12 +1621,18 @@ static svn_error_t *get_dir(svn_ra_svn_c
   SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!)(!"));
   if (want_contents)
     {
+      const char *missing_date = svn_time_to_cstring(0, pool);
       for (hi = apr_hash_first(pool, entries); hi; hi = apr_hash_next(hi))
         {
           const char *name = svn__apr_hash_index_key(hi);
           svn_dirent_t *entry = svn__apr_hash_index_val(hi);
 
-          cdate = (entry->time == (time_t) -1) ? NULL
+          /* The client does not properly handle a missing CDATE. For
+             interoperability purposes, we must fill in some junk.
+
+             See libsvn_ra_svn/client.c:ra_svn_get_dir()  */
+          cdate = (entry->time == (time_t) -1)
+            ? missing_date
             : svn_time_to_cstring(entry->time, pool);
           SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "cwnbr(?c)(?c)", name,
                                          svn_node_kind_to_word(entry->kind),

Propchange: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/basic_tests.py
------------------------------------------------------------------------------
  Merged /subversion/branches/1.7.x-issue4169/subversion/tests/cmdline/basic_tests.py:r1330537-1336116
  Merged /subversion/branches/1.7.x/subversion/tests/cmdline/basic_tests.py:r1309894-1338666
  Merged /subversion/branches/1.7.x-issue4087/subversion/tests/cmdline/basic_tests.py:r1243707-1336073
  Merged /subversion/trunk/subversion/tests/cmdline/basic_tests.py:r1164929

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/davautocheck.sh?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/davautocheck.sh Tue May 15 12:39:14 2012
@@ -71,6 +71,9 @@
 # To use value for "SVNPathAuthz" directive set SVN_PATH_AUTHZ with
 # appropriate value in the environment.
 #
+# To load an MPM module for Apache 2.4 use APACHE_MPM=event in the
+# environment.
+#
 # Passing --no-tests as argv[1] will have the script start a server
 # but not run any tests.
 
@@ -255,6 +258,10 @@ LOAD_MOD_AUTHN_FILE="$(get_loadmodule_co
 LOAD_MOD_AUTHZ_USER="$(get_loadmodule_config mod_authz_user)" \
     || fail "Authz_User module not found."
 }
+if [ ${APACHE_MPM:+set} ]; then
+    LOAD_MOD_MPM=$(get_loadmodule_config mod_mpm_$APACHE_MPM) \
+      || fail "MPM module not found"
+fi
 
 HTTPD_PORT=$(($RANDOM+1024))
 HTTPD_ROOT="$ABS_BUILDDIR/subversion/tests/cmdline/httpd-$(date '+%Y%m%d-%H%M%S')"
@@ -278,6 +285,7 @@ $HTPASSWD -b  $HTTPD_USERS jconstant ray
 touch $HTTPD_MIME_TYPES
 
 cat > "$HTTPD_CFG" <<__EOF__
+$LOAD_MOD_MPM
 $LOAD_MOD_LOG_CONFIG
 $LOAD_MOD_MIME
 $LOAD_MOD_ALIAS
@@ -292,9 +300,22 @@ $LOAD_MOD_AUTHZ_USER
 $LOAD_MOD_AUTHZ_HOST
 LoadModule          authz_svn_module "$MOD_AUTHZ_SVN"
 
+__EOF__
+
+if "$HTTPD" -v | grep '/2\.[012]' >/dev/null; then
+  cat >> "$HTTPD_CFG" <<__EOF__
 LockFile            lock
 User                $(id -un)
 Group               $(id -gn)
+__EOF__
+else
+  cat >> "$HTTPD_CFG" <<__EOF__
+# TODO: maybe uncomment this for prefork,worker MPMs only?
+# Mutex file:lock mpm-accept
+__EOF__
+fi
+
+cat >> "$HTTPD_CFG" <<__EOF__
 Listen              $HTTPD_PORT
 ServerName          localhost
 PidFile             "$HTTPD_PID"

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/depth_tests.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/depth_tests.py Tue May 15 12:39:14 2012
@@ -2842,6 +2842,48 @@ def update_below_depth_empty(sbox):
   svntest.actions.run_and_verify_update(sbox.wc_dir, expected_output, None,
                                         None, None)
 
+# Test for issue #4136.
+@Issue(4136)
+def commit_then_immediates_update(sbox):
+  "deep commit followed by update --depth immediates"
+  sbox.build()
+
+  repo_url = sbox.repo_url
+  wc_dir = sbox.wc_dir
+  mu_path = sbox.ospath('A/mu')
+
+  # Modify A/mu and commit the changes.
+  svntest.main.file_write(mu_path, "modified mu\n")
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'        : Item(verb='Sending'),
+    })
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_status.tweak('A/mu', wc_rev=2, status='  ')
+  svntest.actions.run_and_verify_commit(wc_dir,
+                                        expected_output,
+                                        expected_status,
+                                        None,
+                                        wc_dir)
+
+  # Now, update --depth immediates in the root of the working copy.
+  expected_output = svntest.wc.State(wc_dir, { })
+  expected_disk = svntest.main.greek_state.copy()
+  expected_disk.tweak('A/mu', contents="modified mu\n")
+  expected_status = svntest.wc.State(wc_dir, { '' : svntest.wc.StateItem() })
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_status.tweak('',     wc_rev=2, status='  ')
+  expected_status.tweak('A',    wc_rev=2, status='  ')
+  expected_status.tweak('A/mu', wc_rev=2, status='  ')
+  expected_status.tweak('iota', wc_rev=2, status='  ')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None, None, None, None, False,
+                                        "--depth=immediates", wc_dir)
+  
+
+
 #----------------------------------------------------------------------
 # list all tests here, starting with None:
 test_list = [ None,
@@ -2889,6 +2931,7 @@ test_list = [ None,
               update_depth_empty_root_of_infinite_children,
               sparse_update_with_dash_dash_parents,
               update_below_depth_empty,
+              commit_then_immediates_update,
               ]
 
 if __name__ == "__main__":

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py Tue May 15 12:39:14 2012
@@ -713,6 +713,13 @@ def disallow_dot_or_dotdot_directory_ref
   if not external_urls: external_urls = list(external_url_for.values())
   externals_value_8 = external_urls.pop() + " /foo \n"
   if not external_urls: external_urls = list(external_url_for.values())
+  if svntest.main.is_os_windows():
+    externals_value_9 = external_urls.pop() + " D:/foo\n"
+    if not external_urls: external_urls = list(external_url_for.values())
+    externals_value_10 = external_urls.pop() + " D:\\foo\n"
+    if not external_urls: external_urls = list(external_url_for.values())
+    externals_value_11 = external_urls.pop() + " D:foo\n"
+    if not external_urls: external_urls = list(external_url_for.values())
 
   set_externals_for_path_expect_error(B_path, externals_value_1)
   set_externals_for_path_expect_error(G_path, externals_value_2)
@@ -722,6 +729,10 @@ def disallow_dot_or_dotdot_directory_ref
   set_externals_for_path_expect_error(B_path, externals_value_6)
   set_externals_for_path_expect_error(G_path, externals_value_7)
   set_externals_for_path_expect_error(H_path, externals_value_8)
+  if svntest.main.is_os_windows():
+    set_externals_for_path_expect_error(B_path, externals_value_9)
+    set_externals_for_path_expect_error(B_path, externals_value_10)
+    set_externals_for_path_expect_error(B_path, externals_value_11)
 
 
 #----------------------------------------------------------------------
@@ -1884,6 +1895,72 @@ def exclude_externals(sbox):
                                         None, None, None, None, False,
                                         '--set-depth', 'infinity', wc_dir)
 
+def file_externals_different_url(sbox):
+  "update file externals via different url"
+
+  sbox.build()
+
+  wc_dir = sbox.wc_dir
+  r1_url = sbox.repo_url
+
+  r2_dir, r2_url = sbox.add_repo_path('2')
+  svntest.main.copy_repos(sbox.repo_dir, r2_dir, 1, 0)
+
+
+  sbox.simple_propset('svn:externals',
+                      'r1-e-1   ' + r1_url + '/iota\n' +
+                      r1_url + '/iota  r1-e-2\n' +
+                      'r2-e-1   ' + r2_url + '/iota\n' +
+                      r2_url + '/iota  r2-e-2\n' +
+                      '^/iota  rr-e-1\n', '')
+
+  # All file externals appear in the working copy, with normalised URLs.
+  expected_output = svntest.wc.State(wc_dir, {
+    'r1-e-1'            : Item(status='A '),
+    'r1-e-2'            : Item(status='A '),
+    'r2-e-1'            : Item(status='A '),
+    'r2-e-2'            : Item(status='A '),
+    'rr-e-1'            : Item(status='A '),
+  })
+
+  expected_status = actions.get_virginal_state(wc_dir, 1)
+  expected_status.tweak('', status=' M')
+  expected_status.add({
+    'r2-e-1'            : Item(status='  ', wc_rev='1', switched='X'),
+    'r1-e-1'            : Item(status='  ', wc_rev='1', switched='X'),
+    'r1-e-2'            : Item(status='  ', wc_rev='1', switched='X'),
+    'rr-e-1'            : Item(status='  ', wc_rev='1', switched='X'),
+    'r2-e-2'            : Item(status='  ', wc_rev='1', switched='X'),
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output, None,
+                                        expected_status, None)
+
+  # Verify that all file external URLs are descendants of r1_url
+  for e in ['r1-e-1', 'r1-e-2', 'r2-e-1', 'r2-e-2', 'rr-e-1']:
+    actions.run_and_verify_info([{'Repository Root' : r1_url}],
+                                os.path.join(sbox.wc_dir, e))
+    
+
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'relocate', r1_url, r2_url, wc_dir)
+
+
+  # URLs of existing file externals are silently rewritten
+  expected_output = svntest.wc.State(wc_dir, {
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output, None,
+                                        expected_status, None)
+
+  # Verify that all file external URLs are descendants of r2_url
+  for e in ['r1-e-1', 'r1-e-2', 'r2-e-1', 'r2-e-2', 'rr-e-1']:
+    actions.run_and_verify_info([{'Repository Root' : r2_url}],
+                                os.path.join(sbox.wc_dir, e))
+
+
 def file_external_in_unversioned(sbox):
   "file external in unversioned dir"
 
@@ -2270,6 +2347,7 @@ test_list = [ None,
               incoming_file_on_file_external,
               incoming_file_external_on_file,
               exclude_externals,
+              file_externals_different_url,
               file_external_in_unversioned,
               copy_file_externals,
               remap_file_external_with_prop_del,

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/lock_tests.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/lock_tests.py Tue May 15 12:39:14 2012
@@ -1693,6 +1693,12 @@ def update_locked_deleted(sbox):
   expected_status.tweak('iota', 'A/mu', 'A/B/E/alpha',
                         status='D ', writelocked='O')
 
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'              : Item(status='  '),
+    'A/B/E/alpha'       : Item(status='  '),
+    'iota'              : Item(status='  '),
+  })
+
   svntest.actions.run_and_verify_update(wc_dir, expected_output,
                                         None, expected_status)
 

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py Tue May 15 12:39:14 2012
@@ -17193,6 +17193,251 @@ def reverse_merge_with_rename(sbox):
                                      'merge', sbox.repo_url + '/trunk',
                                      A_COPY_path, '-r9:1')
 
+#----------------------------------------------------------------------
+# Test for issue #4166 'multiple merge editor drives which add then
+# delete a subtree fail'.
+@SkipUnless(server_has_mergeinfo)
+@Issue(4166)
+def merge_adds_then_deletes_subtree(sbox):
+  "merge adds then deletes subtree"
+
+  # Some paths we'll care about.
+  A_path         = os.path.join(sbox.wc_dir, 'A')
+  nu_path        = os.path.join(sbox.wc_dir, 'A', 'C', 'nu')
+  C_branch_path  = os.path.join(sbox.wc_dir, 'branch', 'C')
+  nu_branch_path = os.path.join(sbox.wc_dir, 'branch', 'C', 'nu')
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Make a branch.
+  svntest.actions.run_and_verify_svn(None, None, [], 'copy',
+                                     sbox.repo_url + '/A',
+                                     sbox.repo_url + '/branch',
+                                     '-m', 'Make a branch.')
+
+  # On the branch parent: Add a file in r3 and then delete it in r4.
+  svntest.main.file_write(nu_path, "This is the file 'nu'.\n")
+  svntest.actions.run_and_verify_svn(None, None, [], 'add', nu_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', wc_dir,
+                                     '-m', 'Add a file')
+  svntest.actions.run_and_verify_svn(None, None, [], 'delete', nu_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', wc_dir,
+                                     '-m', 'Delete a file')
+
+  # Merge r3 and r4 from ^/A/C to branch/C as part of one merge
+  # command, but as separate editor drives, i.e. 'c3,4 vs. -r2:4.
+  # These should be equivalent but the former was failing with:
+  #
+  #   >svn merge ^/A/C branch\C -c3,4
+  #   --- Merging r3 into 'branch\C':
+  #   A    branch\C\nu
+  #   --- Recording mergeinfo for merge of r3 into 'branch\C':
+  #    U   branch\C
+  #   --- Merging r4 into 'branch\C':
+  #   D    branch\C\nu
+  #   --- Recording mergeinfo for merge of r4 into 'branch\C':
+  #    G   branch\C
+  #   ..\..\..\subversion\svn\util.c:913: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_client\merge.c:10873: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_client\merge.c:10837: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_client\merge.c:8994: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_client\merge.c:7923: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_client\mergeinfo.c:257: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_client\mergeinfo.c:97: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_wc\props.c:2003: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_wc\props.c:2024: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_wc\wc_db.c:11473: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_wc\wc_db.c:7247: (apr_err=155010)
+  #   ..\..\..\subversion\libsvn_wc\wc_db.c:7232: (apr_err=155010)
+  #   svn: E155010: The node 'C:\SVN\src-trunk\Debug\subversion\tests
+  #   \cmdline\svn-test-work\working_copies\merge_tests-128\branch\C\nu'
+  #   was not found.
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn(
+    None,
+    expected_merge_output([[3],[4]],
+                          ['A    ' + nu_branch_path + '\n',
+                           'D    ' + nu_branch_path + '\n',
+                           ' U   ' + C_branch_path + '\n',
+                           ' G   ' + C_branch_path + '\n',]),
+    [], 'merge', '-c3,4', sbox.repo_url + '/A/C', C_branch_path)
+
+#----------------------------------------------------------------------
+# Test for issue #4169 'added subtrees with non-inheritable mergeinfo
+# cause spurious subtree mergeinfo'.
+@SkipUnless(server_has_mergeinfo)
+@Issue(4169)
+def merge_with_added_subtrees_with_mergeinfo(sbox):
+  "merge with added subtrees with mergeinfo"
+
+  # Some paths we'll care about.
+  A_path      = os.path.join(sbox.wc_dir, 'A')
+  Y_path      = os.path.join(sbox.wc_dir, 'A', 'C', 'X', 'Y')
+  Z_path      = os.path.join(sbox.wc_dir, 'A', 'C', 'X', 'Y', 'Z')
+  nu_path     = os.path.join(sbox.wc_dir, 'A', 'C', 'X', 'Y', 'Z', 'nu')
+  A_COPY_path = os.path.join(sbox.wc_dir, 'A_COPY')
+  Y_COPY_path = os.path.join(sbox.wc_dir, 'A_COPY', 'C', 'X', 'Y')
+  W_COPY_path = os.path.join(sbox.wc_dir, 'A_COPY', 'C', 'X', 'Y', 'Z', 'W')
+  A_COPY2_path = os.path.join(sbox.wc_dir, 'A_COPY_2')
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Make two branches of ^/A and then make a few edits under A in r4-7:
+  wc_disk, wc_status = set_up_branch(sbox, nbr_of_branches=2)
+
+  # r8 - Add a subtree under A.
+  svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', '--parents',
+                                     Z_path)
+  svntest.main.file_write(nu_path, "This is the file 'nu'.\n")
+  svntest.actions.run_and_verify_svn(None, None, [], 'add', nu_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', wc_dir,
+                                     '-m', 'Add a subtree on our "trunk"')
+
+  # r9 - Sync ^/A to the first branch A_COPY.
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn(None, None, [], 'merge',
+                                     sbox.repo_url + '/A', A_COPY_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', wc_dir,
+                                     '-m', 'Sync ^/A to ^/A_COPY')
+
+  # r10 - Make some edits on the first branch.
+  svntest.actions.run_and_verify_svn(None, None, [], 'ps', 'branch-prop-foo',
+                                     'bar', Y_COPY_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', W_COPY_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', wc_dir,
+                                     '-m', 'Make some edits on "branch 1"')
+
+  # r11 - Cherry-pick r10 on the first branch back to A, but
+  # do so at depth=empty so non-inheritable mergeinfo is created.
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'merge', '-c10', '--depth=empty',
+                                     sbox.repo_url + '/A_COPY/C/X/Y', Y_path)
+  svntest.actions.run_and_verify_svn(
+    None, None, [], 'ci', wc_dir,
+    '-m', 'Depth empty subtree cherry pick from "branch 1" to "trunk"')
+
+  # Sync ^/A to the second branch A_COPY_2.
+  #
+  # Previously this failed because spurious mergeinfo was created on
+  # A_COPY_2/C/X/Y/Z:
+  #
+  #   >svn merge ^^/A A_COPY_2
+  #   --- Merging r3 through r11 into 'A_COPY_2':
+  #   U    A_COPY_2\B\E\beta
+  #   A    A_COPY_2\C\X
+  #   A    A_COPY_2\C\X\Y
+  #   A    A_COPY_2\C\X\Y\Z
+  #   A    A_COPY_2\C\X\Y\Z\nu
+  #   U    A_COPY_2\D\G\rho
+  #   U    A_COPY_2\D\H\omega
+  #   U    A_COPY_2\D\H\psi
+  #   --- Recording mergeinfo for merge of r3 through r11 into 'A_COPY_2':
+  #    U   A_COPY_2
+  #   --- Recording mergeinfo for merge of r3 through r11 into 'A_COPY_2\C\X\Y':
+  #    G   A_COPY_2\C\X\Y
+  #    vvvvvvvvvvvvvvvvvvvv
+  #    U   A_COPY_2\C\X\Y\Z
+  #    ^^^^^^^^^^^^^^^^^^^^
+  #   
+  #   >svn pl -vR A_COPY_2
+  #   Properties on 'A_COPY_2':
+  #     svn:mergeinfo
+  #       /A:3-11
+  #   Properties on 'A_COPY_2\C\X\Y':
+  #     branch-prop-foo
+  #       bar
+  #     svn:mergeinfo
+  #       /A/C/X/Y:8-11
+  #       /A_COPY/C/X/Y:10*
+  #   vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
+  #   Properties on 'A_COPY_2\C\X\Y\Z':
+  #     svn:mergeinfo
+  #       /A/C/X/Y/Z:8-11
+  #   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+  expected_output = wc.State(A_COPY2_path, {
+    'B/E/beta'   : Item(status='U '),
+    'D/G/rho'    : Item(status='U '),
+    'D/H/omega'  : Item(status='U '),
+    'D/H/psi'    : Item(status='U '),
+    'C/X'        : Item(status='A '),
+    'C/X/Y'      : Item(status='A '),
+    'C/X/Y/Z'    : Item(status='A '),
+    'C/X/Y/Z/nu' : Item(status='A '),
+    })
+  expected_mergeinfo_output = wc.State(A_COPY2_path, {
+    ''      : Item(status=' U'),
+    'C/X/Y' : Item(status=' G'), # Added with explicit mergeinfo so mergeinfo
+    })                           # describing the merge shows as mer'G'ed.
+  expected_elision_output = wc.State(A_COPY2_path, {
+    })
+  expected_status = wc.State(A_COPY2_path, {
+    ''           : Item(status=' M', wc_rev=11),
+    'B'          : Item(status='  ', wc_rev=11),
+    'mu'         : Item(status='  ', wc_rev=11),
+    'B/E'        : Item(status='  ', wc_rev=11),
+    'B/E/alpha'  : Item(status='  ', wc_rev=11),
+    'B/E/beta'   : Item(status='M ', wc_rev=11),
+    'B/lambda'   : Item(status='  ', wc_rev=11),
+    'B/F'        : Item(status='  ', wc_rev=11),
+    'C'          : Item(status='  ', wc_rev=11),
+    'C/X'        : Item(status='A ', wc_rev='-', copied='+'),
+    'C/X/Y'      : Item(status=' M', wc_rev='-', copied='+'),
+    'C/X/Y/Z'    : Item(status='  ', wc_rev='-', copied='+'),
+    'C/X/Y/Z/nu' : Item(status='  ', wc_rev='-', copied='+'),
+    'D'          : Item(status='  ', wc_rev=11),
+    'D/G'        : Item(status='  ', wc_rev=11),
+    'D/G/pi'     : Item(status='  ', wc_rev=11),
+    'D/G/rho'    : Item(status='M ', wc_rev=11),
+    'D/G/tau'    : Item(status='  ', wc_rev=11),
+    'D/gamma'    : Item(status='  ', wc_rev=11),
+    'D/H'        : Item(status='  ', wc_rev=11),
+    'D/H/chi'    : Item(status='  ', wc_rev=11),
+    'D/H/psi'    : Item(status='M ', wc_rev=11),
+    'D/H/omega'  : Item(status='M ', wc_rev=11),
+    })
+  expected_disk = wc.State('', {
+    ''           : Item(props={SVN_PROP_MERGEINFO : '/A:3-11'}),
+    'B'          : Item(),
+    'mu'         : Item("This is the file 'mu'.\n"),
+    'B/E'        : Item(),
+    'B/E/alpha'  : Item("This is the file 'alpha'.\n"),
+    'B/E/beta'   : Item("New content"),
+    'B/lambda'   : Item("This is the file 'lambda'.\n"),
+    'B/F'        : Item(),
+    'C'          : Item(),
+    'C/X'        : Item(),
+    'C/X/Y'      : Item(props={
+      SVN_PROP_MERGEINFO : '/A/C/X/Y:8-11\n/A_COPY/C/X/Y:10*',
+      'branch-prop-foo'  : 'bar'}),
+    'C/X/Y/Z'    : Item(),
+    'C/X/Y/Z/nu' : Item("This is the file 'nu'.\n"),
+    'D'          : Item(),
+    'D/G'        : Item(),
+    'D/G/pi'     : Item("This is the file 'pi'.\n"),
+    'D/G/rho'    : Item("New content"),
+    'D/G/tau'    : Item("This is the file 'tau'.\n"),
+    'D/gamma'    : Item("This is the file 'gamma'.\n"),
+    'D/H'        : Item(),
+    'D/H/chi'    : Item("This is the file 'chi'.\n"),
+    'D/H/psi'    : Item("New content"),
+    'D/H/omega'  : Item("New content"),
+    })
+  expected_skip = wc.State(A_COPY_path, { })
+  svntest.actions.run_and_verify_merge(A_COPY2_path, None, None,
+                                       sbox.repo_url + '/A', None,
+                                       expected_output,
+                                       expected_mergeinfo_output,
+                                       expected_elision_output,
+                                       expected_disk,
+                                       expected_status,
+                                       expected_skip,
+                                       None, None, None, None,
+                                       None, 1, 0)
+
 ########################################################################
 # Run the tests
 
@@ -17322,6 +17567,8 @@ test_list = [ None,
               merge_adds_subtree_with_mergeinfo,
               record_only_merge_adds_new_subtree_mergeinfo,
               reverse_merge_with_rename,
+              merge_adds_then_deletes_subtree,
+              merge_with_added_subtrees_with_mergeinfo,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/prop_tests.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/prop_tests.py Tue May 15 12:39:14 2012
@@ -893,8 +893,7 @@ def prop_value_conversions(sbox):
   svntest.actions.set_prop('svn:executable', '*', lambda_path)
   for pval in ('      ', '', 'no', 'off', 'false'):
     svntest.actions.set_prop('svn:executable', pval, mu_path,
-                             ["svn: warning: To turn off the svn:executable property, use 'svn propdel';\n",
-                              "setting the property to '" + pval + "' will not turn it off.\n"])
+                             "svn: warning: W125005.*use 'svn propdel'")
 
   # Anything else should be untouched
   svntest.actions.set_prop('svn:some-prop', 'bar', lambda_path)

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/stat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/stat_tests.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/stat_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/stat_tests.py Tue May 15 12:39:14 2012
@@ -946,6 +946,22 @@ def status_in_xml(sbox):
 
   svntest.actions.run_and_verify_status_xml(expected_entries, file_path, '-u')
 
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'rm', '-m', 'repo delete',
+                                     sbox.repo_url + '/A/B/E/alpha')
+
+  expected_entries = {sbox.ospath('A/B/E/alpha')
+                      : {'wcprops' : 'none',
+                         'wcitem' : 'normal',
+                         'wcrev' : '1',
+                         'crev' : '1',
+                         'author' : svntest.main.wc_author,
+                         'rprops' : 'none',
+                         'ritem' : 'deleted'}}
+
+  svntest.actions.run_and_verify_status_xml(expected_entries,
+                                            sbox.ospath('A/B/E/alpha'), '-u')
+
 #----------------------------------------------------------------------
 
 def status_ignored_dir(sbox):

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/actions.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/actions.py Tue May 15 12:39:14 2012
@@ -1878,7 +1878,7 @@ def create_failing_post_commit_hook(repo
 # set_prop can be used for properties with NULL characters which are not
 # handled correctly when passed to subprocess.Popen() and values like "*"
 # which are not handled correctly on Windows.
-def set_prop(name, value, path, expected_err=None):
+def set_prop(name, value, path, expected_re_string=None):
   """Set a property with specified value"""
   if value and (value[0] == '-' or '\x00' in value or sys.platform == 'win32'):
     from tempfile import mkstemp
@@ -1887,11 +1887,18 @@ def set_prop(name, value, path, expected
     value_file.write(value)
     value_file.flush()
     value_file.close()
-    main.run_svn(expected_err, 'propset', '-F', value_file_path, name, path)
+    exit_code, out, err = main.run_svn(expected_re_string, 'propset',
+                                       '-F', value_file_path, name, path)
     os.close(fd)
     os.remove(value_file_path)
   else:
-    main.run_svn(expected_err, 'propset', name, value, path)
+    exit_code, out, err = main.run_svn(expected_re_string, 'propset',
+                                       name, value, path)
+  if expected_re_string:
+    if not expected_re_string.startswith(".*"):
+      expected_re_string = ".*(" + expected_re_string + ")"
+    expected_err = verify.RegexOutput(expected_re_string, match_all=False)
+    verify.verify_outputs(None, None, err, None, expected_err)
 
 def check_prop(name, path, exp_out, revprop=None):
   """Verify that property NAME on PATH has a value of EXP_OUT.

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/main.py?rev=1338671&r1=1338670&r2=1338671&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svntest/main.py Tue May 15 12:39:14 2012
@@ -1710,7 +1710,7 @@ def execute_tests(test_list, serial_only
                                         'jsvndumpfilter' + _bat)
     svnversion_binary = os.path.join(options.svn_bin,
                                      'jsvnversion' + _bat)
-    svnversion_binary = os.path.join(options.svn_bin, 'jsvnmucc' + _bat)
+    svnmucc_binary = os.path.join(options.svn_bin, 'jsvnmucc' + _bat)
   else:
     if options.svn_bin:
       svn_binary = os.path.join(options.svn_bin, 'svn' + _exe)