diff --git a/CHANGES b/CHANGES
index 3977b02..822e1df 100644
--- a/CHANGES
+++ b/CHANGES
@@ -42,6 +42,7 @@
     * 'svn merge FILE' now honors '--ignore-ancestry' (issue #2853, r25891)
     * 'svn merge' handles multiple notifications for single items (issue #2828)
     * 'svn merge' handles skipped path better (issue #2829)
+    * 'svn merge' handles merges from foreign repositories more completely
     * 'update', 'checkout', 'switch' now handle obstructions gracefully (r22257)
     * 'svn update' now takes '--force' (issue #2392)
     * 'svn update' now sometimes copies or moves local files, for efficiency
diff --git a/COMMITTERS b/COMMITTERS
index 128f9ee..7fc4523 100644
--- a/COMMITTERS
+++ b/COMMITTERS
@@ -125,7 +125,7 @@
        marcosc   Marcos Chaves <marcos.nospam@gmail.com>     (po: pt_BR)
         pynoos   Hojin Choi <hojin.choi@gmail.com>           (po: ko)
        blueboh   Jeong Seolin <blueboh@ahnlab.com>           (po: ko)
-        cauchy   Dongsheng Song <dongsheng.song@gmail.com>   (po: zh_CN)
+        cauchy   Dongsheng Song <songdongsheng@live.cn>      (po: zh_CN)
         hynnet   YingNing Huang <hyn@bao.hynnet.com>         (po: zh_CN)
           lark   Wang Jian <lark@linux.net.cn>               (po: zh_CN)
 giorgio_valoti   Giorgio Valoti <giorgio_v@mac.com>          (po: it)
diff --git a/INSTALL b/INSTALL
index 5fb3dd1..aa3fc02 100644
--- a/INSTALL
+++ b/INSTALL
@@ -208,20 +208,36 @@
         |     version of APR, but your Apache server is linked to a    | 
         |     different version, things will break and segfault.       |
         |                                                              |
-        | Subversion 1.0 originally shipped with APR 0.9.  Even        |
-        | though APR 1.X has been available for many years, we         |
-        | continue to ship APR 0.9 so as not to accidentally break     |
-        | binary compatibility in Subversion upgrades.                 |
+        | Subversion distribution dependencies:                        |
+        | -------------------------------------                        |
         |                                                              |
-        | However, it's *perfectly* safe to use APR 1.X from the       |
+        | For a long time, Subversion's main distribution contained    |
+        | APR and APR-UTIL (both 0.9.x), plus a few other things that  |
+        | we couldn't count on the installation system having.  But    |
+        | nowadays, Subversion's requirements are no longer exotic,    |
+        | and so our main distribution contains just the Subversion    |
+        | source code itself -- people compiling Subversion are        |
+        | expected to either have the APR libraries already installed  |
+        | on their system, or to be capable of fetching them easily.   |
+        |                                                              |
+        | For convenience, we still offer a "deps" distribution too,   |
+        | containing APR, APR-UTIL, and various other dependencies.    |
+        | The deps dist used to contain APR[-UTIL] 0.9.x, but as of    |
+        | 1.5.0 we are finally upgrading it to APR[-UTIL] 1.X.  This   |
+        | is because we think by now there are very few systems that   |
+        | will have binary compatibility issues, and of those, few are |
+        | likely to build using the "deps" dist.                       |
+        |                                                              |
+        | Note that it's *perfectly* safe to use APR 1.X from the      |
         | beginning.  In fact, we recommend it.  If you're building    |
         | Subversion for the first time, there's no compatibility      |
-        | issue to worry about, so grab the latest version of APR      |
-        | (rather than the 0.9.X version we distribute.)               |
+        | issue to worry about, so grab the latest version of APR (or  |
+        | just use our deps dist).                                     |
         |                                                              |
         | If you already have a Subversion installation using APR      |
         | 0.9.x, it's still possible to move to APR 1.X safely.  Just  |
-        | be sure to recompile Subversion after upgrading APR!         |
+        | be sure to recompile Subversion (and Apache httpd if         |
+        | necessary) after upgrading APR!                              |
         |______________________________________________________________|
 
 
diff --git a/Makefile.in b/Makefile.in
index fd71dea..690aa2e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -315,7 +315,7 @@
 # clean all but bulky test output, returning to before './configure' was run.
 SVN_CONFIG_SCRIPT_FILES = @SVN_CONFIG_SCRIPT_FILES@
 fast-distclean: fast-clean
-	rm -f Makefile config.cache config.log config.status libtool \
+	rm -f Makefile config.cache config.log config.status libtool mkmf.log \
               subversion/svn_private_config.h \
               $(SVN_CONFIG_SCRIPT_FILES)
 
@@ -359,10 +359,6 @@
 	rm -f $(libsvnjavahl_PATH)/*.o
 
 check-javahl: javahl
-	@if [ -z "@JAVAHL_TESTS_TARGET@" ]; then \
-	  echo "--with-junit flag must be passed to configure"; \
-	  exit 1; \
-	fi
 	@FIX_JAVAHL_LIB@
 	$(JAVA) "-Dtest.rootdir=$(javahl_test_rootdir)" "-Dtest.fstype=$(FS_TYPE)" -Djava.library.path=@JAVAHL_OBJDIR@:$(libdir) -classpath $(javahl_tests_PATH):$(javahl_tests_CLASSPATH) "-Dtest.tests=$(JAVAHL_TESTS)" org.tigris.subversion.javahl.RunTests
 
diff --git a/build/ac-macros/neon.m4 b/build/ac-macros/neon.m4
index ae8ee8d..93c75d7 100644
--- a/build/ac-macros/neon.m4
+++ b/build/ac-macros/neon.m4
@@ -153,7 +153,10 @@
            test "$svn_allowed_neon" = "any"; then
             svn_allowed_neon_on_system="yes"
             SVN_NEON_INCLUDES=[`$neon_config --cflags | sed -e 's/-D[^ ]*//g'`]
-            NEON_LIBS=`$neon_config --la-file`
+            NEON_LIBS=`$neon_config --la-file 2>/dev/null`
+            if test -z "$NEON_LIBS"; then
+              NEON_LIBS=`$neon_config --libs 2>/dev/null`
+            fi
             CFLAGS=["$CFLAGS `$neon_config --cflags | sed -e 's/-I[^ ]*//g'`"]
             svn_lib_neon="yes"
             break
diff --git a/configure.ac b/configure.ac
index 184bf22..39e44ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -708,9 +708,7 @@
 AS_HELP_STRING([--with-junit=PATH],
                [Specify a path to the junit JAR file.]),
 [
-    if test "$withval" = "yes" ; then
-      AC_MSG_ERROR([--with-junit requires an argument.])
-    else
+    if test "$withval" != "no"; then
       if test -n "$JAVA_CLASSPATH"; then
         JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
       else
diff --git a/contrib/server-side/mod_dontdothat/README b/contrib/server-side/mod_dontdothat/README
index e93c405..7bef9eb 100644
--- a/contrib/server-side/mod_dontdothat/README
+++ b/contrib/server-side/mod_dontdothat/README
@@ -20,6 +20,7 @@
   DAV svn
   SVNParentPath /path/to/repositories
   DontDoThatConfigFile /path/to/config.file
+  DontDoThatDisallowReplay off
 </Location>
 
 The file you give to DontDoThatConfigFile is a Subversion configuration file
@@ -47,3 +48,6 @@
 These rules are applied to any recursive action, which basically means any
 Subversion command that goes through the update-report, like update, diff,
 checkout, merge, etc.
+
+The DontDoThatDisallowReplay option makes mod_dontdothat disallow
+replay requests, wihch is on by default.
diff --git a/contrib/server-side/mod_dontdothat/mod_dontdothat.c b/contrib/server-side/mod_dontdothat/mod_dontdothat.c
index 1fd4bb3..b478e15 100644
--- a/contrib/server-side/mod_dontdothat/mod_dontdothat.c
+++ b/contrib/server-side/mod_dontdothat/mod_dontdothat.c
@@ -37,6 +37,7 @@
 typedef struct {
   const char *config_file;
   const char *base_path;
+  int no_replay;
 } dontdothat_config_rec;
 
 static void *create_dontdothat_dir_config(apr_pool_t *pool, char *dir)
@@ -44,6 +45,7 @@
   dontdothat_config_rec *cfg = apr_pcalloc(pool, sizeof(*cfg));
 
   cfg->base_path = dir;
+  cfg->no_replay = 1;
 
   return cfg;
 }
@@ -54,6 +56,9 @@
                 (void *) APR_OFFSETOF(dontdothat_config_rec, config_file),
                 OR_ALL,
                 "Text file containing actions to take for specific requests"),
+  AP_INIT_FLAG("DontDoThatDisallowReplay",  ap_set_flag_slot,
+                (void *) APR_OFFSETOF(dontdothat_config_rec, no_replay),
+                OR_ALL, "Disallow replay requests as if they are other recursive requests."),
   { NULL }
 };
 
@@ -365,7 +370,7 @@
       case STATE_BEGINNING:
         if (strcmp(name, "update-report") == 0)
           ctx->state = STATE_IN_UPDATE;
-        else if (strcmp(name, "replay-report") == 0)
+        else if (strcmp(name, "replay-report") == 0 && ctx->cfg->no_replay)
           {
             /* XXX it would be useful if there was a way to override this
              *     on a per-user basis... */
diff --git a/notes/tree-conflicts/policy.txt b/notes/tree-conflicts/policy.txt
new file mode 100644
index 0000000..1a63280
--- /dev/null
+++ b/notes/tree-conflicts/policy.txt
@@ -0,0 +1,172 @@
+Status of this file: In progress.
+
+
+BACKGROUND AND TERMINOLOGY
+==========================
+
+MERGE TRACKING
+--------------
+
+The merge tracking feature helps the client to determine which changes
+(revisions) to apply to the specified target tree. After that has been
+determined, the application of one change to one target is where conflict
+detection becomes involved. At this level, merge tracking is irrelevant.
+
+MERGE IS DIFF-AND-APPLY
+-----------------------
+
+Subversion's definition of "merging" is to determine the difference between two
+source trees SOURCE-LEFT and SOURCE-RIGHT, and try to apply that difference to
+a TARGET tree. The diff that it tries to apply is an arbitrary low-level
+representation of the overall difference between SOURCE-LEFT and SOURCE-RIGHT,
+not the series of logically meaningful transformations by which the user
+originally transformed SOURCE-LEFT into SOURCE-RIGHT.
+
+Typically, SOURCE-LEFT is an ancestor of SOURCE-RIGHT in a source branch, but
+this need not be so. (One effect of the "--ignore-ancestry" option is to force
+the merge to perform a detailed diff between the sources even if they are not
+so related, where it would otherwise present the diff as "delete SOURCE-LEFT;
+add SOURCE-RIGHT".)
+
+The differences are applied to a working copy of the TARGET tree (which may
+include some local modifications against its base).
+
+The degree of success of a merge depends on the degree to which the TARGET tree
+is similar enough to SOURCE-LEFT for Subversion to be able to match each file
+or directory involved in the diff to a corresponding file or directory in
+TARGET. This matching is done purely by path. Where this matching fails, the
+merge cannot apply that part of the diff. Some of these failures will be
+defined as "tree conflicts".
+
+
+USE CASES
+=========
+
+The use cases (in "use-cases.txt") illustrate some of the cases that are to be
+handled, but are not a complete set of requirements.
+
+The user-level requirements are presented in terms of user-interface actions.
+Note that the design is formulated and presented in terms of lower-level
+operations that do not include a "rename" operation.
+
+
+REQUIREMENTS
+============
+
+These requirements specify what a tree conflict means, how a tree conflict
+behaves, and under exactly what conditions a tree conflict is raised. These
+requirements are intended to apply in all merge, switch and update commands
+unless otherwise stated.
+
+DEFINITION OF A TREE CONFLICT
+-----------------------------
+
+A conflict is the condition that occurs when Subversion cannot apply a source
+change correctly and with certainty to a corresponding target object. A tree
+conflict is a kind of conflict that occurs due to a part of the TARGET tree
+being in some sense "incompatible" with the SOURCE-LEFT tree in kind, name,
+location, absence or presence.
+
+Every tree conflict shall be signaled both by an indication when the conflict
+occurs and by being marked in the WC in a way that shows up as a conflict in
+the "svn status" output.
+
+The state of conflict shall persist until the user confirms that it has been
+resolved. The user shall be able to confirm the resolution of each and every
+conflict individually, and shall also be able to confirm the resolution of all
+conflicts in a tree with a single command.
+
+Confirming the resolution of each and every tree conflict means being
+able to confirm the resolution of a tree conflict with a single tree conflict
+victim, even though there might be more than one tree conflict victim
+in a directory. A tree conflict victim is a file or directory in the tree
+which is affected by a tree conflict. For example, it might be a file
+which is deleted during an update operation while carrying local modifications,
+or it might be a file being blocked during a merge by an unversioned file of
+the same name. Each tree conflict has only a single victim.
+
+Every condition that results in the source diff not being fully applied to the
+target shall result in either a conflict or an error exit, with a strong
+preference for a conflict.
+
+CONSEQUENCES OF A TREE CONFLICT
+-------------------------------
+
+A commit shall be disallowed if any item considered as part of the commit is
+marked with a conflict (a tree conflict or any other conflict).
+
+A merge or switch or update shall be disallowed if it affects a part of the WC
+that is marked with a conflict.
+
+NON-REQUIREMENTS
+----------------
+
+It is desirable for a tree conflict to be resolved automatically (and thus not
+to be signaled as a conflict) when there is a way to do so that is clearly what
+the user wants. This might require some configurable rules. This is not
+presently a requirement.
+
+FAILURE TO GENERATE THE DIFF
+----------------------------
+
+When the diff cannot be completely determined due to read access restrictions
+in the source repository, tree conflicts shall be handled as defined herein for
+those parts of the diff that are determined. Rules for whether and how to
+proceed with an incomplete diff are out of scope of this tree-conflicts
+document.
+
+FAILURE TO APPLY THE DIFF
+-------------------------
+
+When a part of the diff should apply to a part of the WC that is switched, the
+rule for whether to apply the diff to this switched subtree or to the natural
+(unswitched) subtree or to both or to neither is out of scope of this
+tree-conflicts document, but tree conflict handling shall apply wherever the
+diff is applied.
+
+When a part of the diff cannot be applied, due to not finding a corresponding
+object or due to an unversioned item being present in the working copy at this
+path, a conflict is to be signaled. (Previously, in some cases a conflict was
+raised, in some cases a warning was issued, and in some cases the change was
+silently discarded.)
+
+When a part of the diff should apply to a part of the WC that is absent
+(perhaps due to authz restrictions or due to an intentionally sparse WC), a
+conflict shall be signaled. ###? This seems to be use case 4, right?
+
+LOCAL WC MODIFICATIONS
+----------------------
+
+Correct behaviour with local WC mods in TARGET is conceptually the same as if
+that uncommitted revision were just another committed revision. (Any necessary
+differences are to be detailed on delivery.) Correct behaviour with local mods
+is required for "update". For "switch" and "merge", correct behaviour with
+local mods is desired but not required for initial delivery.
+
+If there is already a conflict in a part of the WC that is to be affected by
+the merge, then the application of the merge shall be disallowed and no part of
+the WC shall be altered.
+
+### TODO: How can users use 'svn merge' to resolve a tree conflict?
+
+NON-CONFLICTS
+-------------
+
+When a file is to be deleted or renamed, there shall be a conflict unless the
+target file is identical to the SOURCE-LEFT file. Identical shall mean
+identical text and properties except for "svn:mergeinfo".
+
+When a directory is to be deleted or renamed, there shall be a conflict unless
+the target directory is identical to the SOURCE-LEFT directory. Identical shall
+mean identical properties except for "svn:mergeinfo", and an identical list of
+children (including their types), and recursively identical directory children
+and file children according to these definitions of "identical" for directories
+and for files respectively.
+
+### Is that last test (directory being identical) too expensive/impractical to
+calculate?
+
+### This is something I've also been thinking about - determining equality
+    of directories may turn out to be a major problem. Would requiring only
+    the direct children to be equal be an acceptable compromise?
+
diff --git a/subversion/bindings/javahl/native/EnumMapper.cpp b/subversion/bindings/javahl/native/EnumMapper.cpp
index 452749c..34f7a2d 100644
--- a/subversion/bindings/javahl/native/EnumMapper.cpp
+++ b/subversion/bindings/javahl/native/EnumMapper.cpp
@@ -158,6 +158,10 @@
       /* Got an add in an update. */
       return org_tigris_subversion_javahl_NotifyAction_update_add;
 
+    case svn_wc_notify_update_replace:
+      /* Got a replaced in an update. */
+      return org_tigris_subversion_javahl_NotifyAction_update_replaced;
+
     case svn_wc_notify_update_update:
       /* Got any other action in an update. */
       return org_tigris_subversion_javahl_NotifyAction_update_update;
@@ -223,10 +227,6 @@
       /* Changelist name cleared. */
       return org_tigris_subversion_javahl_NotifyAction_changelist_clear;
 
-    case svn_wc_notify_changelist_failed:
-      /* Changelist operation failed. */
-      return org_tigris_subversion_javahl_NotifyAction_changelist_failed;
-
     case svn_wc_notify_merge_begin:
       /* A merge operation has begun. */
       return org_tigris_subversion_javahl_NotifyAction_merge_begin;
diff --git a/subversion/bindings/javahl/native/SVNClient.cpp b/subversion/bindings/javahl/native/SVNClient.cpp
index 2412281..0579c15 100644
--- a/subversion/bindings/javahl/native/SVNClient.cpp
+++ b/subversion/bindings/javahl/native/SVNClient.cpp
@@ -732,6 +732,80 @@
                                              requestPool.pool()), );
 }
 
+jobject
+SVNClient::getMergeinfo(const char *target, Revision &pegRevision)
+{
+    Pool requestPool;
+    JNIEnv *env = JNIUtil::getEnv();
+
+    svn_client_ctx_t *ctx = getContext(NULL);
+    if (ctx == NULL)
+        return NULL;
+
+    svn_mergeinfo_t mergeinfo;
+    Path intLocalTarget(target);
+    SVN_JNI_ERR(intLocalTarget.error_occured(), NULL);
+    SVN_JNI_ERR(svn_client_mergeinfo_get_merged(&mergeinfo,
+                                                intLocalTarget.c_str(),
+                                                pegRevision.revision(), ctx,
+                                                requestPool.pool()),
+                NULL);
+    if (mergeinfo == NULL)
+        return NULL;
+
+    // Transform mergeinfo into Java Mergeinfo object.
+    jclass clazz = env->FindClass(JAVA_PACKAGE "/Mergeinfo");
+    if (JNIUtil::isJavaExceptionThrown())
+        return NULL;
+
+    static jmethodID ctor = 0;
+    if (ctor == 0)
+    {
+        ctor = env->GetMethodID(clazz, "<init>", "()V");
+        if (JNIUtil::isJavaExceptionThrown())
+            return NULL;
+    }
+
+    static jmethodID addRevisions = 0;
+    if (addRevisions == 0)
+    {
+        addRevisions = env->GetMethodID(clazz, "addRevisions",
+                                        "(Ljava/lang/String;"
+                                        "[L"JAVA_PACKAGE"/RevisionRange;)V");
+        if (JNIUtil::isJavaExceptionThrown())
+            return NULL;
+    }
+
+    jobject jmergeinfo = env->NewObject(clazz, ctor);
+    if (JNIUtil::isJavaExceptionThrown())
+        return NULL;
+
+    apr_hash_index_t *hi;
+    for (hi = apr_hash_first(requestPool.pool(), mergeinfo);
+         hi;
+         hi = apr_hash_next(hi))
+    {
+        const void *path;
+        void *val;
+        apr_hash_this(hi, &path, NULL, &val);
+
+        jstring jpath = JNIUtil::makeJString((const char *) path);
+        jobjectArray jranges =
+            makeJRevisionRangeArray((apr_array_header_t *) val);
+
+        env->CallVoidMethod(jmergeinfo, addRevisions, jpath, jranges);
+
+        env->DeleteLocalRef(jranges);
+        if (JNIUtil::isJavaExceptionThrown())
+            return NULL;
+        env->DeleteLocalRef(jpath);
+        if (JNIUtil::isJavaExceptionThrown())
+            return NULL;
+    }
+
+    return jmergeinfo;
+}
+
 void SVNClient::getMergeinfoLog(int type, const char *pathOrURL,
                                 Revision &pegRevision,
                                 const char *mergeSourceURL,
@@ -2146,3 +2220,34 @@
                                  changelists.array(requestPool), ctx,
                                  requestPool.pool()), );
 }
+
+jobjectArray SVNClient::makeJRevisionRangeArray(apr_array_header_t *ranges)
+{
+    JNIEnv *env = JNIUtil::getEnv();
+
+    jclass clazz = env->FindClass(JAVA_PACKAGE "/RevisionRange");
+    if (JNIUtil::isJavaExceptionThrown())
+        return NULL;
+
+    jobjectArray jranges = env->NewObjectArray(ranges->nelts, clazz, NULL);
+
+    for (int i = 0; i < ranges->nelts; ++i)
+    {
+        // Convert svn_merge_range_t *'s to Java RevisionRange objects.
+        svn_merge_range_t *range =
+            APR_ARRAY_IDX(ranges, i, svn_merge_range_t *);
+        jobject jrange = RevisionRange::makeJRevisionRange(range);
+        if (jrange == NULL)
+            return NULL;
+
+        env->SetObjectArrayElement(jranges, i, jrange);
+        if (JNIUtil::isJavaExceptionThrown())
+            return NULL;
+
+        env->DeleteLocalRef(jrange);
+        if (JNIUtil::isJavaExceptionThrown())
+            return NULL;
+    }
+
+    return jranges;
+}
diff --git a/subversion/bindings/javahl/native/SVNClient.h b/subversion/bindings/javahl/native/SVNClient.h
index 62add53..1d98aa3 100644
--- a/subversion/bindings/javahl/native/SVNClient.h
+++ b/subversion/bindings/javahl/native/SVNClient.h
@@ -88,6 +88,7 @@
   void properties(const char *path, Revision &revision,
                   Revision &pegRevision, svn_depth_t depth,
                   StringArray &changelists, ProplistCallback *callback);
+  jobject getMergeinfo(const char *target, Revision &pegRevision);
   void getMergeinfoLog(int type, const char *pathOrURL,
                        Revision &pegRevision, const char *mergeSourceURL,
                        Revision &srcPegREvision, bool discoverChangedPaths,
@@ -227,6 +228,8 @@
   bool m_cancelOperation;
   CommitMessage *m_commitMessage;
 
+  jobjectArray makeJRevisionRangeArray(apr_array_header_t *ranges);
+
   /**
    * Implements the svn_client_get_commit_log3_t API.
    */
diff --git a/subversion/bindings/javahl/native/org_tigris_subversion_javahl_SVNClient.cpp b/subversion/bindings/javahl/native/org_tigris_subversion_javahl_SVNClient.cpp
index a772671..3f49d1a 100644
--- a/subversion/bindings/javahl/native/org_tigris_subversion_javahl_SVNClient.cpp
+++ b/subversion/bindings/javahl/native/org_tigris_subversion_javahl_SVNClient.cpp
@@ -1077,6 +1077,26 @@
   return cl->propertyGet(jthis, path, name, revision, pegRevision);
 }
 
+JNIEXPORT jobject JNICALL
+Java_org_tigris_subversion_javahl_SVNClient_getMergeinfo
+(JNIEnv *env, jobject jthis, jstring jtarget, jobject jpegRevision)
+{
+  JNIEntry(SVNClient, getMergeinfo);
+  SVNClient *cl = SVNClient::getCppObject(jthis);
+  if (cl == NULL)
+    {
+      JNIUtil::throwError(_("bad C++ this"));
+      return NULL;
+    }
+  JNIStringHolder target(jtarget);
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
+  Revision pegRevision(jpegRevision);
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
+  return cl->getMergeinfo(target, pegRevision);
+}
+
 JNIEXPORT void JNICALL Java_org_tigris_subversion_javahl_SVNClient_getMergeinfoLog
 (JNIEnv *env, jobject jthis, jint jkind, jstring jpathOrUrl,
  jobject jpegRevision, jstring jmergeSourceUrl, jobject jsrcPegRevision,
diff --git a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java
new file mode 100644
index 0000000..b5276a8
--- /dev/null
+++ b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java
@@ -0,0 +1,206 @@
+/**
+ * @copyright
+ * ====================================================================
+ * Copyright (c) 2007 CollabNet.  All rights reserved.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at http://subversion.tigris.org/license-1.html.
+ * If newer versions of this license are posted there, you may use a
+ * newer version instead, at your option.
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals.  For exact contribution history, see the revision
+ * history and logs, available at http://subversion.tigris.org/.
+ * ====================================================================
+ * @endcopyright
+ */
+
+package org.tigris.subversion.javahl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+/**
+ * Merge history for a path.
+ *
+ * @since 1.5
+ */
+public class Mergeinfo implements java.io.Serializable
+{
+    // Update the serialVersionUID when there is a incompatible change
+    // made to this class.  See any of the following, depending upon
+    // the Java release.
+    // http://java.sun.com/j2se/1.3/docs/guide/serialization/spec/version.doc7.html
+    // http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf
+    // http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/version.html#6678
+    // http://java.sun.com/javase/6/docs/platform/serialization/spec/version.html#6678
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * A mapping of repository-relative paths to a list of revision
+     * ranges.
+     */
+    private Map mergeSources;
+
+    public Mergeinfo()
+    {
+        mergeSources = new HashMap();
+    }
+
+    /**
+     * Create and populate an instance using the contents of the
+     * <code>svn:mergeinfo</code> property.
+     * @param mergeinfo <code>svn:mergeinfo</code> property value.
+     */
+    public Mergeinfo(String mergeinfo)
+    {
+        this();
+        this.loadFromMergeinfoProperty(mergeinfo);
+    }
+
+    /**
+     * Add one or more RevisionRange objects to merge info. If the
+     * merge source is already stored, the list of revisions is
+     * replaced.
+     * @param mergeSrc The merge source URL.
+     * @param ranges RevisionRange objects to add.
+     * @throws SubversionException If range list contains objects of
+     * type other than RevisionRange.
+     */
+    public void addRevisions(String mergeSrc, RevisionRange[] ranges)
+    {
+        for (int i = 0; i < ranges.length; i++)
+            addRevisionRange(mergeSrc, ranges[i]);
+    }
+
+    /**
+     * Add a revision range to the merged revisions for a path.  If
+     * the merge source already has associated revision ranges, add
+     * the revision range to the existing list.
+     * @param mergeSrc The merge source URL.
+     * @param range The revision range to add.
+     */
+    public void addRevisionRange(String mergeSrc, RevisionRange range)
+    {
+        List revisions = this.getRevisions(mergeSrc);
+        if (revisions == null)
+            revisions = new ArrayList();
+        revisions.add(range);
+        this.setRevisionList(mergeSrc, revisions);
+    }
+
+    /**
+     * Get the merge source URLs.
+     * @return The merge source URLs.
+     */
+    public String[] getPaths()
+    {
+        Set pathSet = mergeSources.keySet();
+        if (pathSet == null)
+            return null;
+        return (String []) pathSet.toArray(new String[pathSet.size()]);
+    }
+
+    /**
+     * Get the revision ranges for the specified merge source URL.
+     * @param mergeSrc The merge source URL, or <code>null</code>.
+     * @return List of RevisionRange objects, or <code>null</code>.
+     */
+    public List getRevisions(String mergeSrc)
+    {
+        if (mergeSrc == null)
+            return null;
+        return (List) mergeSources.get(mergeSrc);
+    }
+
+    /**
+     * Get the RevisionRange objects for the specified merge source URL
+     * @param mergeSrc The merge source URL, or <code>null</code>.
+     * @return Array of RevisionRange objects, or <code>null</code>.
+     */
+    public RevisionRange[] getRevisionRange(String mergeSrc)
+    {
+        List revisions = this.getRevisions(mergeSrc);
+        if (revisions == null)
+            return null;
+        return (RevisionRange [])
+            revisions.toArray(new RevisionRange[revisions.size()]);
+    }
+
+    /**
+     * Parse the <code>svn:mergeinfo</code> property to populate the
+     * merge source URLs and revision ranges of this instance.
+     * @param mergeinfo <code>svn:mergeinfo</code> property value.
+     */
+    public void loadFromMergeinfoProperty(String mergeinfo)
+    {
+        if (mergeinfo == null)
+            return;
+        StringTokenizer st = new StringTokenizer(mergeinfo, "\n");
+        while (st.hasMoreTokens())
+        {
+            parseMergeinfoLine(st.nextToken());
+        }
+    }
+
+    /**
+     * Parse a merge source line from a <code>svn:mergeinfo</code>
+     * property value (e.g.
+     * <code>"/trunk:1-100,104,108,110-115"</code>).
+     *
+     * @param line A line of merge info for a single merge source.
+     */
+    private void parseMergeinfoLine(String line)
+    {
+        int colon = line.indexOf(':');
+        if (colon > 0)
+        {
+            String pathElement = line.substring(0, colon);
+            String revisions = line.substring(colon + 1);
+            parseRevisions(pathElement, revisions);
+        }
+    }
+
+    /**
+     * Parse the revisions in a merge info line into RevisionRange
+     * objects and adds each of them to the internal Map
+     * (e.g. <code>"1-100,104,108,110-115"</code>)
+     *
+     * @param path The merge source path.
+     * @param revisions A textual representation of the revision ranges.
+     */
+    private void parseRevisions(String path, String revisions)
+    {
+        List rangeList = this.getRevisions(path);
+        StringTokenizer st = new StringTokenizer(revisions, ",");
+        while (st.hasMoreTokens())
+        {
+            String revisionElement = st.nextToken();
+            RevisionRange range = new RevisionRange(revisionElement);
+            if (rangeList == null)
+                rangeList = new ArrayList();
+            rangeList.add(range);
+        }
+        if (rangeList != null)
+            setRevisionList(path, rangeList);
+    }
+
+
+    /**
+     * Add the List object to the map.  This method is only
+     * used internally where we know that List contains a
+     * type-safe set of RevisionRange objects.
+     * @param mergeSrc The merge source URL.
+     * @param range List of RevisionRange objects to add.
+     */
+    private void setRevisionList(String mergeSrc, List range)
+    {
+        mergeSources.put(mergeSrc, range);
+    }
+}
diff --git a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java
index 688ebce..0ac99de 100644
--- a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java
+++ b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java
@@ -135,15 +135,15 @@
 
     /**
      * @since 1.5
-     * Changelist operation failed.
+     * A merge operation has begun.
      */
-    public static final int changelist_failed = 28;
+    public static final int merge_begin = 28;
 
     /**
      * @since 1.5
-     * A merge operation has begun.
+     * Got a replaced in an update.
      */
-    public static final int merge_begin = 29;
+    public static final int update_replaced = 29;
 
     /**
      * textual representation of the action types
@@ -178,7 +178,7 @@
         "path exists",
         "changelist set",
         "changelist cleared",
-        "changelist failed",
         "merge begin",
+        "replaced"
     };
 }
diff --git a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
index 1feefbe..2c4c719 100644
--- a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
+++ b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
@@ -772,6 +772,12 @@
     /**
      * @since 1.5
      */
+    public native Mergeinfo getMergeinfo(String path, Revision pegRevision)
+            throws SubversionException;
+
+    /**
+     * @since 1.5
+     */
     public native void getMergeinfoLog(int kind, String pathOrUrl,
                                        Revision pegRevision,
                                        String mergeSourceUrl,
diff --git a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java
index a7ae44e..11251a4 100644
--- a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java
+++ b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java
@@ -1001,6 +1001,18 @@
              throws ClientException;
 
     /**
+     * Get mergeinfo for <code>path</code> at <code>pegRevision</code>.
+     * @param path WC path or URL.
+     * @param pegRevision peg revision at which to get the merge info for
+     * <code>path</code>.
+     * @return The merge history of <code>path</code>.
+     * @throws SubversionException
+     * @since 1.5
+     */
+    Mergeinfo getMergeinfo(String path, Revision pegRevision)
+        throws SubversionException;
+
+    /**
      * Retrieve either merged or eligible-to-be-merged revisions.
      * @param kind                   kind of revisions to receive
      * @param pathOrUrl              target of merge
diff --git a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java
index f9ac3c6..90ccb44 100644
--- a/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java
+++ b/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java
@@ -1007,6 +1007,18 @@
     /**
      * @since 1.5
      */
+    public Mergeinfo getMergeinfo(String path, Revision pegRevision)
+        throws SubversionException
+    {
+        synchronized (clazz)
+        {
+            return worker.getMergeinfo(path, pegRevision);
+        }
+    }
+
+    /**
+     * @since 1.5
+     */
     public void getMergeinfoLog(int kind, String pathOrUrl,
                                 Revision pegRevision, String mergeSourceUrl,
                                 Revision srcPegRevision,
diff --git a/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java b/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
index 8a83dcb..330f753 100644
--- a/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
+++ b/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
@@ -114,6 +114,28 @@
     }
 
     /**
+     * Tests Mergeinfo and RevisionRange classes.
+     * @since 1.5
+     */
+    public void testMergeinfoParser() throws Throwable
+    {
+        String mergeInfoPropertyValue =
+            "/trunk:1-300,305,307,400-405\n/branches/branch:308-400";
+        Mergeinfo info = new Mergeinfo(mergeInfoPropertyValue);
+        String[] paths = info.getPaths();
+        assertEquals(2, paths.length);
+        RevisionRange[] trunkRange = info.getRevisionRange("/trunk");
+        assertEquals(4, trunkRange.length);
+        assertEquals("1-300", trunkRange[0].toString());
+        assertEquals("305", trunkRange[1].toString());
+        assertEquals("307", trunkRange[2].toString());
+        assertEquals("400-405", trunkRange[3].toString());
+        RevisionRange[] branchRange =
+            info.getRevisionRange("/branches/branch");
+        assertEquals(1, branchRange.length);
+    }
+
+    /**
      * Test the basic SVNClient.status functionality.
      * @throws Throwable
      */
@@ -2111,10 +2133,15 @@
      * Helper method for testing mergeinfo retrieval.  Assumes
      * that <code>targetPath</code> has both merge history and
      * available merges.
-     * @param expectedMergedRevs The expected revision ranges from the
+     * @param expectedMergedStart The expected start revision from the
      * merge history for <code>mergeSrc</code>.
-     * @param expectedAvailableRevs The expected available revision
-     * ranges from the available merges for <code>mergeSrc</code>.
+     * @param expectedMergedEnd The expected end revision from the
+     * merge history for <code>mergeSrc</code>.
+     * @param expectedAvailableStart The expected start available revision
+     * from the merge history for <code>mergeSrc</code>.  Zero if no need
+     * to test the available range.
+     * @param expectedAvailableEnd The expected end available revision
+     * from the merge history for <code>mergeSrc</code>.
      * @param targetPath The path for which to acquire mergeinfo.
      * @param mergeSrc The URL from which to consider merges.
      */
@@ -2127,12 +2154,17 @@
         throws SubversionException
     {
         // Verify expected merge history.
-        long[] revs = getMergeinfoRevisions(MergeinfoLogKind.merged, targetPath,
-                Revision.HEAD, mergeSrc, Revision.HEAD);
+        Mergeinfo mergeInfo = client.getMergeinfo(targetPath, Revision.HEAD);
         assertNotNull("Missing merge info on '" + targetPath + '\'',
-                      revs);
-
-        assertExpectedMergeRange(expectedMergeStart, expectedMergeEnd, revs);
+                      mergeInfo);
+        List ranges = mergeInfo.getRevisions(mergeSrc);
+        assertTrue("Missing merge info for source '" + mergeSrc + "' on '" +
+                   targetPath + '\'', ranges != null && !ranges.isEmpty());
+        RevisionRange range = (RevisionRange) ranges.get(0);
+        String expectedMergedRevs = expectedMergeStart + "-" + expectedMergeEnd;
+        assertEquals("Unexpected first merged revision range for '" +
+                     mergeSrc + "' on '" + targetPath + '\'',
+                     expectedMergedRevs, range.toString());
 
         // Verify expected available merges.
         if (expectedAvailableStart > 0)
@@ -2222,21 +2254,6 @@
     }
 
     /**
-     * Retrieve svn:mergeinfo property from path.  This is used as just
-     * a sanity check for the presence of the property.
-     * @since 1.5
-     */
-    private String getMergeinfo(File path, Revision rev) {
-        try {
-            PropertyData prop = client.propertyGet(fileToSVNPath(path, false), "svn:mergeinfo", rev);
-            if (prop == null) return null;
-            else return prop.getValue();
-        } catch (ClientException e) {
-            return null;
-        }
-    }
-    
-    /**
      * Test the basic functionality of SVNClient.merge().
      * @throws Throwable
      * @since 1.2
@@ -2253,7 +2270,8 @@
         assertEquals(1, suggestedSrcs.length);
 
         // Test that getMergeinfo() returns null.
-        assertNull(getMergeinfo(new File(thisTest.getWCPath(), "A"), Revision.HEAD));
+        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+                                       .toString(), Revision.HEAD));
 
         // Merge and commit some changes (r4).
         appendText(thisTest, "A/mu", "xxx", 4);
@@ -2324,8 +2342,11 @@
         String targetPath =
             new File(thisTest.getWCPath(), "branches/A/mu").getPath();
         final String mergeSrc = thisTest.getUrl() + "/A/mu";
-        acquireMergeinfoAndAssertEquals(4, 4, 6, 6, targetPath, mergeSrc);
+        acquireMergeinfoAndAssertEquals(2, 4, 6, 6, targetPath, mergeSrc);
 
+        // Test retrieval of mergeinfo from the repository.
+        targetPath = thisTest.getUrl() + "/branches/A/mu";
+        acquireMergeinfoAndAssertEquals(2, 4, 6, 6, targetPath, mergeSrc);
     }
 
     /**
@@ -2338,9 +2359,9 @@
     {
         OneTest thisTest = setupAndPerformMerge();
 
-        // Test that svn:mergeinfo returns null.
-        assertNull(getMergeinfo(new File(thisTest.getWCPath(), "A"),
-                                Revision.HEAD));
+        // Test that getMergeinfo() returns null.
+        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+                                       .toString(), Revision.HEAD));
 
         // Merge and commit some changes (r4).
         appendText(thisTest, "A/mu", "xxx", 4);
@@ -2378,8 +2399,9 @@
     {
         OneTest thisTest = setupAndPerformMerge();
 
-        // Test that svn:mergeinfo returns null.
-        assertNull(getMergeinfo(new File(thisTest.getWCPath(), "A"), Revision.HEAD));
+        // Test that getMergeinfo() returns null.
+        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+                                       .toString(), Revision.HEAD));
 
         // Merge and commit some changes to main (r4).
         appendText(thisTest, "A/mu", "xxx", 4);
@@ -2506,8 +2528,9 @@
         assertNotNull(suggestedSrcs);
         assertEquals(1, suggestedSrcs.length);
 
-        // Test that svn:mergeinfo returns null.
-        assertNull(getMergeinfo(new File(thisTest.getWCPath(), "A"), Revision.HEAD));
+        // Test that getMergeinfo() returns null.
+        assertNull(client.getMergeinfo(new File(thisTest.getWCPath(), "A")
+                                       .toString(), Revision.HEAD));
 
         // Merge and commit some changes (r4).
         appendText(thisTest, "A/mu", "xxx", 4);
@@ -2539,7 +2562,7 @@
         String targetPath =
             new File(thisTest.getWCPath(), "branches/A").getPath();
         final String mergeSrc = thisTest.getUrl() + "/A";
-        acquireMergeinfoAndAssertEquals(4, 4, 0, 0, targetPath, mergeSrc);
+        acquireMergeinfoAndAssertEquals(2, 4, 0, 0, targetPath, mergeSrc);
     }
 
     /**
diff --git a/subversion/bindings/swig/core.i b/subversion/bindings/swig/core.i
index 9101170..c97f448 100644
--- a/subversion/bindings/swig/core.i
+++ b/subversion/bindings/swig/core.i
@@ -294,7 +294,6 @@
 #endif
 
 /* -----------------------------------------------------------------------
-/* -----------------------------------------------------------------------
    output mergeinfo hash
 */
 
@@ -430,15 +429,32 @@
 
 /* set */
 #ifdef SWIGPYTHON
-%typemap(in) const void *value {
+%typemap(in) const void *value 
+  (apr_pool_t *_global_pool = NULL, PyObject *_global_py_pool = NULL)
+{
+    if (_global_pool == NULL)
+    {
+       if (svn_swig_py_get_parent_pool(args, $descriptor(apr_pool_t *),
+                                     &_global_py_pool, &_global_pool))
+       SWIG_fail;
+    }
+
     if (PyString_Check($input)) {
-        $1 = (void *)PyString_AS_STRING($input);
+        char *value = PyString_AS_STRING($input);
+        $1 = apr_pstrdup(_global_pool, value);
     }
     else if (PyLong_Check($input)) {
-        $1 = (void *)PyLong_AsLong($input);
+        $1 = apr_palloc(_global_pool, sizeof(apr_uint32_t));
+        *((apr_uint32_t *)$1) = PyLong_AsLong($input);
     }
     else if (PyInt_Check($input)) {
-        $1 = (void *)PyInt_AsLong($input);
+        $1 = apr_palloc(_global_pool, sizeof(apr_uint32_t));
+        *((apr_uint32_t *)$1) = PyInt_AsLong($input);
+    }
+    else if ($input == Py_None) {
+        $1 = NULL;
+    }
+    else if (svn_swig_ConvertPtr($input, (void **)&$1, $descriptor(svn_auth_ssl_server_cert_info_t *)) == 0) {
     }
     else {
         PyErr_SetString(PyExc_TypeError, "not a known type");
diff --git a/subversion/bindings/swig/include/svn_containers.swg b/subversion/bindings/swig/include/svn_containers.swg
index 5c148e3..0e3feb4 100644
--- a/subversion/bindings/swig/include/svn_containers.swg
+++ b/subversion/bindings/swig/include/svn_containers.swg
@@ -229,6 +229,11 @@
     svn_swig_rb_pop_pool(_global_svn_swig_rb_pool);
   }
 }
+
+%typemap(out) apr_hash_t *PROPHASH
+{
+  %append_output(svn_swig_rb_apr_hash_to_hash_svn_string($1));
+}
 #endif
 
 #if defined(SWIGPYTHON) || defined(SWIGRUBY)
@@ -242,6 +247,20 @@
 };
 #endif
 
+#ifdef SWIGRUBY
+%typemap(out) apr_hash_t *CHANGED_PATH_HASH
+{
+  VALUE rb_changed_path_hash;
+  rb_changed_path_hash =
+    svn_swig_rb_apr_hash_to_hash_swig_type($1, "svn_log_changed_path_t *");
+  %append_output(rb_changed_path_hash);
+}
+
+%apply apr_hash_t *CHANGED_PATH_HASH {
+  apr_hash_t *changed_paths
+};
+#endif
+
 /* -----------------------------------------------------------------------
    Input of scripting hash/dictionary (string => string)
    converted to apr_hash_t (const char * => const char *)
@@ -500,6 +519,12 @@
   apr_array_header_t *preserved_exts
 };
 
+#ifdef SWIGRUBY
+%apply const apr_array_header_t *STRINGLIST_MAY_BE_NULL {
+  apr_array_header_t *revprops
+};
+#endif
+
 /* -----------------------------------------------------------------------
    auth provider convertors
 */
diff --git a/subversion/bindings/swig/include/svn_types.swg b/subversion/bindings/swig/include/svn_types.swg
index 6bad8c9..7c22d1c 100644
--- a/subversion/bindings/swig/include/svn_types.swg
+++ b/subversion/bindings/swig/include/svn_types.swg
@@ -731,6 +731,14 @@
 }
 #endif
 
+#ifdef SWIGRUBY
+%typemap(in) (svn_log_entry_receiver_t receiver, void *receiver_baton)
+{
+  $1 = svn_swig_rb_log_entry_receiver;
+  $2 = (void *)svn_swig_rb_make_baton($input, _global_svn_swig_rb_pool);
+}
+#endif
+
 /* -----------------------------------------------------------------------
    Callback: svn_commit_callback_t
    svn_ra get_commit_editor()
diff --git a/subversion/bindings/swig/python/svn/core.py b/subversion/bindings/swig/python/svn/core.py
index 7e61534..b70c116 100644
--- a/subversion/bindings/swig/python/svn/core.py
+++ b/subversion/bindings/swig/python/svn/core.py
@@ -37,15 +37,10 @@
     """
     # Be compatible with pre-1.5 .args behavior:
     args = []
-    if message is None:
-      # SubversionException().args => ()
-      pass
-    else:
-      # SubversionException('message').args => ('message',)
-      args.append(message)
-      if apr_err is not None:
-        # SubversionException('message', 123) => ('message', 123)
-        args.append(apr_err)
+    if message is not None or apr_err is not None:
+        args.append(message)
+        if apr_err is not None:
+            args.append(apr_err)
     Exception.__init__(self, *args)
 
     self.apr_err = apr_err
diff --git a/subversion/bindings/swig/python/tests/auth.py b/subversion/bindings/swig/python/tests/auth.py
index cc436b2..ae9a2de 100644
--- a/subversion/bindings/swig/python/tests/auth.py
+++ b/subversion/bindings/swig/python/tests/auth.py
@@ -12,6 +12,10 @@
   def test_set_parameter(self):
     baton = core.svn_auth_open([])
     core.svn_auth_set_parameter(baton, "name", "somedata")
+    core.svn_auth_set_parameter(baton, "name", None)
+    core.svn_auth_set_parameter(baton, "name", 2)
+    core.svn_auth_set_parameter(baton, "name", 
+                                core.svn_auth_ssl_server_cert_info_t())
 
   def test_invalid_cred_kind(self):
     baton = core.svn_auth_open([])
@@ -68,6 +72,23 @@
                 core.SVN_AUTH_CRED_SSL_CLIENT_CERT_PW, "somerealm", baton)
     self.assert_(creds is not None)
 
+  def test_credentials_get_ssl_server_trust(self):
+    def myfunc(realm, failures, cert_info, may_save, pool):
+      self.assertEquals("somerealm", realm)
+      ssl_trust = core.svn_auth_cred_ssl_server_trust_t()
+      ssl_trust.accepted_failures = 0
+      ssl_trust.may_save = False
+      return ssl_trust
+    baton = core.svn_auth_open([core.svn_auth_get_ssl_server_trust_prompt_provider(myfunc)])
+    core.svn_auth_set_parameter(baton, core.SVN_AUTH_PARAM_SSL_SERVER_FAILURES,
+                                "2")
+    cert_info = core.svn_auth_ssl_server_cert_info_t()
+    core.svn_auth_set_parameter(baton, core.SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO,
+                cert_info)
+    creds = core.svn_auth_first_credentials(
+                core.SVN_AUTH_CRED_SSL_SERVER_TRUST, "somerealm", baton)
+    self.assert_(creds is not None)
+
 def suite():
     return unittest.makeSuite(SubversionAuthTestCase, 'test')
 
diff --git a/subversion/bindings/swig/python/tests/core.py b/subversion/bindings/swig/python/tests/core.py
index 620bead..00a2ba2 100644
--- a/subversion/bindings/swig/python/tests/core.py
+++ b/subversion/bindings/swig/python/tests/core.py
@@ -9,6 +9,7 @@
     self.assertEqual(svn.core.SubversionException().args, ())
     self.assertEqual(svn.core.SubversionException('error message').args,
                      ('error message',))
+    self.assertEqual(svn.core.SubversionException(None, 1).args, (None, 1))
     self.assertEqual(svn.core.SubversionException('error message', 1).args,
                      ('error message', 1))
     self.assertEqual(svn.core.SubversionException('error message', 1).apr_err,
diff --git a/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c b/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
index 4c5b133..8abbb09 100644
--- a/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
+++ b/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
@@ -1,4 +1,4 @@
-
+/* -*- c-file-style: "ruby" -*- */
 /* Tell swigutil_rb.h that we're inside the implementation */
 #define SVN_SWIG_SWIGUTIL_RB_C
 
@@ -2056,6 +2056,29 @@
   return err;
 }
 
+svn_error_t *
+svn_swig_rb_log_entry_receiver(void *baton,
+                               svn_log_entry_t *entry,
+                               apr_pool_t *pool)
+{
+    svn_error_t *err = SVN_NO_ERROR;
+    VALUE proc, rb_pool;
+
+    svn_swig_rb_from_baton((VALUE)baton, &proc, &rb_pool);
+
+    if (!NIL_P(proc)) {
+        callback_baton_t cbb;
+
+        cbb.receiver = proc;
+        cbb.message = id_call;
+        cbb.args = rb_ary_new3(1,
+                               c2r_swig_type((void *)entry,
+                                             (void *)"svn_log_entry_t *"));
+        invoke_callback_handle_error((VALUE)(&cbb), rb_pool, &err);
+    }
+    return err;
+}
+
 
 svn_error_t *
 svn_swig_rb_repos_authz_func(svn_boolean_t *allowed,
@@ -2188,9 +2211,6 @@
     cbb.args = rb_ary_new3(1, c2r_wc_notify__dup(notify));
   }
 
-  if (notify->err)
-    svn_error_clear(notify->err);
-
   if (!NIL_P(proc))
     invoke_callback((VALUE)(&cbb), rb_pool);
 }
diff --git a/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h b/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
index ec58647..f2989cf 100644
--- a/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
+++ b/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
@@ -196,6 +196,11 @@
                                       apr_pool_t *pool);
 
 SVN_RB_SWIG_SWIGUTIL_EXPORT
+svn_error_t *svn_swig_rb_log_entry_receiver(void *baton,
+                                            svn_log_entry_t *entry,
+                                            apr_pool_t *pool);
+
+SVN_RB_SWIG_SWIGUTIL_EXPORT
 svn_error_t *svn_swig_rb_repos_authz_func(svn_boolean_t *allowed,
                                           svn_fs_root_t *root,
                                           const char *path,
diff --git a/subversion/bindings/swig/ruby/svn/client.rb b/subversion/bindings/swig/ruby/svn/client.rb
index c22d546..d5baf3e 100644
--- a/subversion/bindings/swig/ruby/svn/client.rb
+++ b/subversion/bindings/swig/ruby/svn/client.rb
@@ -591,12 +591,24 @@
         Client.get_config(self)
       end
 
-      def mergeinfo(path_or_url, revision=nil)
-        info = Client.mergeinfo_get_merged(path_or_url, revision, self)
+      def merged(path_or_url, peg_revision=nil)
+        info = Client.mergeinfo_get_merged(path_or_url, peg_revision, self)
         return nil if info.nil?
         Core::MergeInfo.new(info)
       end
 
+      def log_merged(path_or_url, peg_revision, merge_source_url,
+                     source_peg_revision, discover_changed_path=true,
+                     interested_revision_prop_names=nil,
+                     &receiver)
+        raise ArgumentError, "Block isn't given" if receiver.nil?
+        Client.mergeinfo_log_merged(path_or_url, peg_revision,
+                                    merge_source_url, source_peg_revision,
+                                    receiver, discover_changed_path,
+                                    interested_revision_prop_names,
+                                    self)
+      end
+
       def add_to_changelist(changelist_name, paths, depth=nil, changelists_names=nil)
         paths = [paths] unless paths.is_a?(Array)
         changelists_names = [changelists_names] unless changelists_names.is_a?(Array) or changelists_names.nil?
diff --git a/subversion/bindings/swig/ruby/svn/core.rb b/subversion/bindings/swig/ruby/svn/core.rb
index 2ef9e60..bab0f14 100644
--- a/subversion/bindings/swig/ruby/svn/core.rb
+++ b/subversion/bindings/swig/ruby/svn/core.rb
@@ -802,5 +802,11 @@
         Core.rangelist_to_string(self)
       end
     end
+
+    class LogEntry
+      alias_method(:revision_properties, :revprops)
+      alias_method(:has_children?, :has_children)
+      undef_method(:has_children)
+    end
   end
 end
diff --git a/subversion/bindings/swig/ruby/test/my-assertions.rb b/subversion/bindings/swig/ruby/test/my-assertions.rb
index d74e456..211b224 100644
--- a/subversion/bindings/swig/ruby/test/my-assertions.rb
+++ b/subversion/bindings/swig/ruby/test/my-assertions.rb
@@ -24,6 +24,25 @@
                        message)
         end
       end
+
+      def assert_equal_log_entries(expected, actual, message=nil)
+        _wrap_assertion do
+          actual = actual.collect do |entry|
+            changed_paths = entry.changed_paths
+            changed_paths.each_key do |path|
+              changed_path = changed_paths[path]
+              changed_paths[path] = [changed_path.action,
+                                     changed_path.copyfrom_path,
+                                     changed_path.copyfrom_rev]
+            end
+            [changed_paths,
+             entry.revision,
+             entry.revision_properties.reject {|key, value| key == "svn:date"},
+             entry.has_children?]
+          end
+          assert_equal(expected, actual, message)
+        end
+      end
     end
   end
 end
diff --git a/subversion/bindings/swig/ruby/test/test_client.rb b/subversion/bindings/swig/ruby/test/test_client.rb
index 2084d37..fb2f9e8 100644
--- a/subversion/bindings/swig/ruby/test/test_client.rb
+++ b/subversion/bindings/swig/ruby/test/test_client.rb
@@ -850,14 +850,19 @@
     assert_equal([[false, true, false, false]], node_kinds)
   end
 
-  def test_merge
+  def assert_merge
     log = "sample log"
     file = "sample.txt"
     src = "sample\n"
     trunk = File.join(@wc_path, "trunk")
     branch = File.join(@wc_path, "branch")
+    branch_relative_uri = "/branch"
+    branch_uri = "#{@repos_uri}#{branch_relative_uri}"
     trunk_path = File.join(trunk, file)
+    trunk_path_uri = "#{@repos_uri}/trunk/#{file}"
     branch_path = File.join(branch, file)
+    branch_path_relative_uri = "#{branch_relative_uri}/#{file}"
+    branch_path_uri = "#{@repos_uri}#{branch_path_relative_uri}"
 
     ctx = make_context(log)
     ctx.mkdir(trunk, branch)
@@ -870,13 +875,36 @@
     File.open(branch_path, "w") {|f| f.print(src)}
     rev2 = ctx.commit(@wc_path).revision
 
-    assert_nil(ctx.mergeinfo(trunk))
-    ctx.merge(branch, rev1, branch, rev2, trunk)
-    mergeinfo = ctx.mergeinfo(trunk)
-    expected_key = ctx.url_from_path(branch)
-    assert_equal([expected_key], mergeinfo.keys)
-    assert_equal([[1, 2, true]],
-                 mergeinfo[expected_key].collect {|range| range.to_a})
+    merged_entries = []
+    ctx.log_merged(trunk, nil, branch_uri, nil) do |entry|
+      merged_entries << entry
+    end
+    assert_equal_log_entries([], merged_entries)
+    assert_nil(ctx.merged(trunk))
+
+    merged_entries = []
+    yield(ctx, branch, rev1, rev2, trunk)
+    ctx.log_merged(trunk, nil, branch_uri, nil) do |entry|
+      merged_entries << entry
+    end
+    assert_equal_log_entries([
+                              [
+                               {branch_path_relative_uri => ["M", nil, -1]},
+                               rev2,
+                               {
+                                 "svn:author" => @author,
+                                 "svn:log" => log,
+                               },
+                               false,
+                              ]
+                             ],
+                             merged_entries)
+    mergeinfo = ctx.merged(trunk)
+    assert_not_nil(mergeinfo)
+    assert_equal([branch_uri], mergeinfo.keys)
+    ranges = mergeinfo[branch_uri].collect {|range| range.to_a}
+    assert_equal([[1, 2, true]], ranges)
+
     rev3 = ctx.commit(@wc_path).revision
 
     assert_equal(normalize_line_break(src), ctx.cat(trunk_path, rev3))
@@ -884,90 +912,64 @@
     ctx.rm(branch_path)
     rev4 = ctx.commit(@wc_path).revision
 
-    ctx.merge(branch, rev3, branch, rev4, trunk)
+    yield(ctx, branch, rev3, rev4, trunk)
     assert(!File.exist?(trunk_path))
 
-    mergeinfo = ctx.mergeinfo(trunk, rev4)
-    assert_equal([expected_key], mergeinfo.keys)
-    assert_equal([[1, 2, true], [3, 4, true]],
-                 mergeinfo[expected_key].collect {|range| range.to_a })
-    ctx.propdel("svn:mergeinfo", trunk)
-    assert_nil ctx.mergeinfo(trunk)
+    merged_entries = []
+    ctx.log_merged(trunk, rev4, branch_uri, rev4) do |entry|
+      merged_entries << entry
+    end
+    assert_equal_log_entries([
+                              [
+                               {branch_path_relative_uri => ["D", nil, -1]},
+                               rev4,
+                               {
+                                 "svn:author" => @author,
+                                 "svn:log" => log,
+                               },
+                               false,
+                              ]
+                             ] * 2, merged_entries)
 
+    ctx.propdel("svn:mergeinfo", trunk)
+    merged_entries = []
+    ctx.log_merged(trunk, rev4, branch_uri, rev4) do |entry|
+      merged_entries << entry
+    end
+    assert_equal_log_entries([], merged_entries)
+
+    ctx.revert(trunk)
     ctx.revert(trunk_path)
     File.open(trunk_path, "a") {|f| f.print(src)}
-    ctx.merge(branch, rev3, branch, rev4, trunk)
-    assert(File.exist?(trunk_path))
+    yield(ctx, branch, rev3, rev4, trunk)
     rev5 = ctx.commit(@wc_path).revision
-
-    File.open(trunk_path, "a") {|f| f.print(src)}
-    ctx.merge(branch, rev3, branch, rev4, trunk, true, false, true, true)
     assert(File.exist?(trunk_path))
 
-    ctx.merge(branch, rev3, branch, rev4, trunk, true, false, true)
-    rev6 = ctx.commit(@wc_path).revision
+    yield(ctx, branch, rev3, rev4, trunk, nil, false, true, true)
+    statuses = []
+    ctx.status(trunk) do |path, status|
+      statuses << status
+    end
+    assert_equal([], statuses)
 
-    assert(!File.exist?(trunk_path))
+    yield(ctx, branch, rev3, rev4, trunk, nil, false, true)
+    statuses = []
+    ctx.status(trunk) do |path, status|
+      statuses << status
+    end
+    assert_not_equal([], statuses)
+  end
+
+  def test_merge
+    assert_merge do |ctx, from, from_rev1, from_rev2, to, *rest|
+      ctx.merge(from, from_rev1, from, from_rev2, to, *rest)
+    end
   end
 
   def test_merge_peg
-    log = "sample log"
-    file = "sample.txt"
-    src = "sample\n"
-    trunk = File.join(@wc_path, "trunk")
-    branch = File.join(@wc_path, "branch")
-    trunk_path = File.join(trunk, file)
-    branch_path = File.join(branch, file)
-
-    ctx = make_context(log)
-    ctx.mkdir(trunk, branch)
-    File.open(trunk_path, "w") {}
-    File.open(branch_path, "w") {}
-    ctx.add(trunk_path)
-    ctx.add(branch_path)
-    rev1 = ctx.commit(@wc_path).revision
-
-    File.open(branch_path, "w") {|f| f.print(src)}
-    rev2 = ctx.commit(@wc_path).revision
-
-    assert_nil(ctx.mergeinfo(trunk))
-    ctx.merge_peg(branch, rev1, rev2, trunk)
-    mergeinfo = ctx.mergeinfo(trunk)
-    expected_key = ctx.url_from_path(branch)
-    assert_equal([expected_key], mergeinfo.keys)
-    assert_equal([[1, 2, true]],
-                 mergeinfo[expected_key].collect {|range| range.to_a})
-    rev3 = ctx.commit(@wc_path).revision
-
-    assert_equal(normalize_line_break(src), ctx.cat(trunk_path, rev3))
-
-    ctx.rm(branch_path)
-    rev4 = ctx.commit(@wc_path).revision
-
-    ctx.merge_peg(branch, rev3, rev4, trunk)
-    assert(!File.exist?(trunk_path))
-
-    mergeinfo = ctx.mergeinfo(trunk, rev4)
-    assert_equal([expected_key], mergeinfo.keys)
-    assert_equal([[1, 2, true], [3, 4, true]],
-                 mergeinfo[expected_key].collect {|range| range.to_a })
-    ctx.propdel("svn:mergeinfo", trunk)
-    assert_nil(ctx.mergeinfo(trunk))
-
-    ctx.revert(trunk_path)
-    File.open(trunk_path, "a") {|f| f.print(src)}
-    ctx.merge_peg(branch, rev3, rev4, trunk)
-    assert(File.exist?(trunk_path))
-    rev5 = ctx.commit(@wc_path).revision
-
-    File.open(trunk_path, "a") {|f| f.print(src)}
-    ctx.merge_peg(branch, rev3, rev4, trunk, nil, true, false, true, true)
-    assert(File.exist?(trunk_path))
-
-    ctx.merge_peg(branch, rev3, rev4, trunk, nil, true, false, true)
-    rev6 = ctx.commit(@wc_path).revision
-
-    assert(!File.exist?(trunk_path))
+    assert_merge do |ctx, from, from_rev1, from_rev2, to, *rest|
+      ctx.merge_peg(from, from_rev1, from_rev2, to, nil, *rest)
+    end
   end
 
   def test_cleanup
diff --git a/subversion/bindings/swig/svn_repos.i b/subversion/bindings/swig/svn_repos.i
index f0f9c5e..6adcd93 100644
--- a/subversion/bindings/swig/svn_repos.i
+++ b/subversion/bindings/swig/svn_repos.i
@@ -70,6 +70,13 @@
                             svn_swig_pl_thunk_authz_func,
                             svn_swig_rb_repos_authz_func)
 
+#ifdef SWIGPYTHON
+%callback_typemap(svn_location_segment_receiver_t receiver, void *receiver_baton,
+                  svn_swig_py_location_segment_receiver_func,
+                  ,
+                  )
+#endif
+
 #ifdef SWIGRUBY
 %typemap(in) (svn_error_t *(*start_callback)(void *), void *start_callback_baton)
 {
diff --git a/subversion/include/svn_client.h b/subversion/include/svn_client.h
index 783e06e..51b6480 100644
--- a/subversion/include/svn_client.h
+++ b/subversion/include/svn_client.h
@@ -2633,6 +2633,34 @@
                                  svn_client_ctx_t *ctx,
                                  apr_pool_t *pool);
 
+
+/**
+ * Set @a *mergeinfo to a hash mapping <tt>const char *</tt> merge
+ * source URLs to <tt>apr_array_header_t *</tt> rangelists (arrays of
+ * <tt>svn_merge_range_t *</tt> ranges) describing the ranges which
+ * have been merged into @a path_or_url as of @a peg_revision, or @c
+ * NULL if there is no mergeinfo.
+ *
+ * Use @a pool for all necessary allocations.
+ *
+ * If the server doesn't support retrieval of mergeinfo (which will
+ * never happen for file:// URLs), return an @c
+ * SVN_ERR_UNSUPPORTED_FEATURE error.
+ *
+ * @note Unlike most APIs which deal with mergeinfo, this one returns
+ * data where the keys of the hash are absolute repository URLs rather
+ * than repository filesystem paths.
+ *
+ * @since New in 1.5.
+ */
+svn_error_t *
+svn_client_mergeinfo_get_merged(apr_hash_t **mergeinfo,
+                                const char *path_or_url,
+                                const svn_opt_revision_t *peg_revision,
+                                svn_client_ctx_t *ctx,
+                                apr_pool_t *pool);
+
+
 /**
  * Drive log entry callbacks @a receiver / @a receiver_baton with the
  * revisions merged from @a merge_source_url (as of @a
diff --git a/subversion/include/svn_ra.h b/subversion/include/svn_ra.h
index eb70224..5cddbaa 100644
--- a/subversion/include/svn_ra.h
+++ b/subversion/include/svn_ra.h
@@ -1749,6 +1749,13 @@
  */
 #define SVN_RA_CAPABILITY_PARTIAL_REPLAY "partial-replay"
 
+/**
+ * The capability of including revision properties in a commit.
+ *
+ * @since New in 1.5.
+ */
+#define SVN_RA_CAPABILITY_COMMIT_REVPROPS "commit-revprops"
+
 /*       *** PLEASE READ THIS IF YOU ADD A NEW CAPABILITY ***
  *
  * RA layers generally fetch all capabilities when asked about any
diff --git a/subversion/include/svn_ra_svn.h b/subversion/include/svn_ra_svn.h
index a6adec0..f3f8025 100644
--- a/subversion/include/svn_ra_svn.h
+++ b/subversion/include/svn_ra_svn.h
@@ -43,6 +43,7 @@
 #define SVN_RA_SVN_CAP_EDIT_PIPELINE "edit-pipeline"
 #define SVN_RA_SVN_CAP_SVNDIFF1 "svndiff1"
 #define SVN_RA_SVN_CAP_ABSENT_ENTRIES "absent-entries"
+/* maps to SVN_RA_CAPABILITY_COMMIT_REVPROPS: */
 #define SVN_RA_SVN_CAP_COMMIT_REVPROPS "commit-revprops"
 /* maps to SVN_RA_CAPABILITY_MERGEINFO: */
 #define SVN_RA_SVN_CAP_MERGEINFO "mergeinfo"
diff --git a/subversion/include/svn_wc.h b/subversion/include/svn_wc.h
index 5fa6d84..bbe18c5 100644
--- a/subversion/include/svn_wc.h
+++ b/subversion/include/svn_wc.h
@@ -782,9 +782,6 @@
   /** Changelist name cleared. @since New in 1.5. */
   svn_wc_notify_changelist_clear,
 
-  /** Failed to update a path's changelist association. @since New in 1.5. */
-  svn_wc_notify_changelist_failed,
-
   /** Warn user that a path has moved from one changelist to another.
       @since New in 1.5. */
   svn_wc_notify_changelist_moved,
@@ -793,6 +790,10 @@
       @c svn_wc_notify_t. @since New in 1.5. */
   svn_wc_notify_merge_begin,
 
+  /** A merge operation (to path) from a foreign repository has begun.
+      See @c merge_range in @c svn_wc_notify_t. @since New in 1.5. */
+  svn_wc_notify_foreign_merge_begin,
+
   /** Replace notification. @since New in 1.5. */
   svn_wc_notify_update_replace,
 
diff --git a/subversion/libsvn_client/merge.c b/subversion/libsvn_client/merge.c
index c56c8d5..28dd7b6 100644
--- a/subversion/libsvn_client/merge.c
+++ b/subversion/libsvn_client/merge.c
@@ -107,7 +107,7 @@
  *  or |        cherrypicking           |    unsupported      |
  *  -r |    (svn_client_merge_peg)      |                     |
  *     +--------------------------------+---------------------+
- *  no |      mergeinfo-driven          |  mergeinfo-oblivious|
+ *  no |      mergeinfo-driven          |   mergeinfo-writing |
  *  -c |        whole-branch            |    diff-and-apply   |
  *  or |       heuristic merge          |  (svn_client_merge) |
  *  -r | (svn_client_merge_reintegrate) |                     |
@@ -283,22 +283,20 @@
    appropriately for MERGE_B.
    One rule is that we shan't record mergeinfo if we're not honoring it. */
 static APR_INLINE void
-mergeinfo_behavior(svn_boolean_t *honor_mergeinfo,
-                   svn_boolean_t *record_mergeinfo,
+mergeinfo_behavior(svn_boolean_t *honor_mergeinfo_p,
+                   svn_boolean_t *record_mergeinfo_p,
                    merge_cmd_baton_t *merge_b)
 {
-  if (honor_mergeinfo)
-    *honor_mergeinfo = (merge_b->mergeinfo_capable
-                        && merge_b->sources_ancestral
-                        && merge_b->same_repos
-                        && (! merge_b->ignore_ancestry));
+  svn_boolean_t honor_mergeinfo = (merge_b->mergeinfo_capable
+                                   && merge_b->sources_ancestral
+                                   && merge_b->same_repos
+                                   && (! merge_b->ignore_ancestry));
 
-  if (record_mergeinfo)
-    *record_mergeinfo = (merge_b->mergeinfo_capable
-                         && merge_b->sources_ancestral
-                         && merge_b->same_repos
-                         && (! merge_b->ignore_ancestry)
-                         && (! merge_b->dry_run));
+  if (honor_mergeinfo_p)
+    *honor_mergeinfo_p = honor_mergeinfo;
+
+  if (record_mergeinfo_p)
+    *record_mergeinfo_p = (honor_mergeinfo && (! merge_b->dry_run));
 }
 
 /* Helper for merge_props_changed().  Filter out mergeinfo property additions
@@ -336,16 +334,20 @@
     {
       svn_prop_t *prop = &APR_ARRAY_IDX((*props), i, svn_prop_t);
 
-      /* If this property isn't mergeinfo or is empty mergeinfo it
-         does not require any special handling. */
+      /* If this property isn't mergeinfo or is NULL valued (i.e. prop removal)
+         or empty mergeinfo it does not require any special handling.  There
+         is nothing to filter out of empty mergeinfo and the concept of
+         filtering doesn't apply if we are trying to remove mergeinfo
+         entirely. */
       if ((strcmp(prop->name, SVN_PROP_MERGEINFO) != 0)
-          || (! prop->value))
+          || (! prop->value)       /* Removal of mergeinfo */
+          || (! prop->value->len)) /* Empty mergeinfo */
         {
           APR_ARRAY_PUSH(adjusted_props, svn_prop_t) = *prop;
         }
       else /* Non-empty mergeinfo; filter self-referential mergeinfo out. */
         {
-          svn_mergeinfo_t mergeinfo;
+          svn_mergeinfo_t mergeinfo, filtered_mergeinfo = NULL;
           apr_hash_index_t *hi;
           const char *target_url, *merge_source_root_url;
           const svn_wc_entry_t *target_entry;
@@ -458,28 +460,34 @@
                     }
                 } /* for (j = 0; j < rangelist->nelts; j++) */
               
-              /* If only some of the ranges mapped from SOURCE_PATH were
-                 filtered then create a new svn_prop_t to represent
-                 this. */
               if (adjusted_rangelist->nelts)
                 {
-                  svn_string_t *adjusted_rangelist_s;
-                  svn_prop_t *adjusted_prop =
-                    apr_pcalloc(pool, sizeof(*adjusted_prop));
-
-                  SVN_ERR(svn_rangelist_to_string(&adjusted_rangelist_s,
-                                                  adjusted_rangelist,
-                                                  pool));
-                  adjusted_prop->name = SVN_PROP_MERGEINFO;
-                  adjusted_prop->value = 
-                    svn_string_create(apr_pstrcat(pool, source_path, ":",
-                                                  adjusted_rangelist_s->data,
-                                                  NULL),
-                                      pool);
-                  APR_ARRAY_PUSH(adjusted_props, svn_prop_t) = *adjusted_prop;
+                  if (!filtered_mergeinfo)
+                    filtered_mergeinfo = apr_hash_make(pool);
+                  apr_hash_set(filtered_mergeinfo, source_path,
+                               APR_HASH_KEY_STRING, adjusted_rangelist);
                 }
             } /* mergeinfo hash iteration */
 
+          /* If only some of the ranges mapped from SOURCE_PATH were
+             filtered then create a new svn_prop_t to represent
+             this.  Otherwise everything was filtered and we can
+             ignore the svn:merginfo props entirely. */
+          if (filtered_mergeinfo)
+            {
+              /* Convert filtered_mergeinfo to a svn_prop_t and put it
+                 back in the array. */
+              svn_string_t *filtered_mergeinfo_str;
+              svn_prop_t *adjusted_prop = apr_pcalloc(pool,
+                                                      sizeof(*adjusted_prop));
+              SVN_ERR(svn_mergeinfo_to_string(&filtered_mergeinfo_str,
+                                              filtered_mergeinfo,
+                                              pool));
+              adjusted_prop->name = SVN_PROP_MERGEINFO;
+              adjusted_prop->value = filtered_mergeinfo_str;
+              APR_ARRAY_PUSH(adjusted_props, svn_prop_t) = *adjusted_prop;
+            }
+
           /* If we reparented MERGE_B->RA_SESSION2 above, put it back
              to the original URL. */
           if (old_url)
@@ -1391,7 +1399,10 @@
                   svn_wc_notify_t *notify_merge_begin;
                   notify_merge_begin =
                     svn_wc_create_notify(child->path,
-                                         svn_wc_notify_merge_begin, pool);
+                                         notify_b->merge_b->same_repos 
+                                           ? svn_wc_notify_merge_begin
+                                           : svn_wc_notify_foreign_merge_begin,
+                                         pool);
                   notify_merge_begin->merge_range =
                     APR_ARRAY_IDX(child->remaining_ranges, 0,
                                   svn_merge_range_t *);
@@ -1457,9 +1468,12 @@
            && is_operative_notification)
     {
       svn_wc_notify_t *notify_merge_begin;
-      notify_merge_begin = svn_wc_create_notify(notify_b->merge_b->target,
-                                                svn_wc_notify_merge_begin,
-                                                pool);
+      notify_merge_begin = 
+        svn_wc_create_notify(notify_b->merge_b->target,
+                             notify_b->merge_b->same_repos 
+                               ? svn_wc_notify_merge_begin
+                               : svn_wc_notify_foreign_merge_begin,
+                             pool);
       if (notify_b->wrapped_func)
         (*notify_b->wrapped_func)(notify_b->wrapped_baton, notify_merge_begin,
                                   pool);
@@ -1822,9 +1836,10 @@
   pool = children_with_mergeinfo->pool;
   iterpool = svn_pool_create(pool);
 
-  /* If we aren't honoring mergeinfo, we'll make quick work of this by
-     simply adding dummy REVISION1:REVISION2 ranges for all children. */
-  if (! honor_mergeinfo)
+  /* If we aren't honoring mergeinfo or this is a --record-only merge,
+     we'll make quick work of this by simply adding dummy REVISION1:REVISION2
+     ranges for all children. */
+  if (! honor_mergeinfo || merge_b->record_only)
     {
       for (i = 0; i < children_with_mergeinfo->nelts; i++)
         {
@@ -2308,26 +2323,27 @@
             APR_ARRAY_IDX(children_with_mergeinfo, i, 
                           svn_client__merge_path_t *);
 
-          if (!child || child->absent || (child->remaining_ranges->nelts == 0))
+          if (!child || child->absent)
             continue;
 
-          range = APR_ARRAY_IDX(child->remaining_ranges, 0,
-                                svn_merge_range_t *);
-          if (range->start == default_start)
+          if (child->remaining_ranges->nelts)
             {
-              continue;
-            }
-          else
-            {
-              /* While we need to describe subtrees requiring different merge
-                 ranges than TARGET_WCPATH will have applied, we don't need to
-                 describe a subtree's subtree if that latter is having the
-                 same range applied as the former. */
               int j;
               svn_client__merge_path_t *parent = NULL;
-              
-              /* Does CHILD have a parent with mergeinfo other
-                 than TARGET_WCPATH? */
+
+              /* While we need to describe subtrees requiring
+                 different merge ranges than TARGET_WCPATH will have
+                 applied, we don't need to describe a subtree's
+                 subtree if that latter has the same range applied as
+                 the former. */
+                  
+              range = APR_ARRAY_IDX(child->remaining_ranges, 0,
+                                    svn_merge_range_t *);
+              if (range->start == default_start)
+                continue;
+
+              /* Does CHILD have a parent with mergeinfo other than
+                 TARGET_WCPATH? */
               for (j = i - 1; j > 0; j--)
                 {
                   svn_client__merge_path_t *potential_parent =
@@ -2341,9 +2357,9 @@
                     }
                 }
 
-              /* CHILD does have a parent with mergeinfo, if CHILD's first
-                 remaining range is the same as its parent there is no need
-                 to describe it separately. */
+              /* CHILD does have a parent with mergeinfo, if CHILD's
+                 first remaining range is the same as its parent there
+                 is no need to describe it separately. */
               if (parent && parent->remaining_ranges->nelts != 0)
                 {
                   svn_merge_range_t *parent_range =
@@ -2360,11 +2376,16 @@
           child_repos_path = child->path +
             (target_wcpath_len ? target_wcpath_len + 1 : 0);
 
-          if ((is_rollback && (range->start < revision2))
+          if ((child->remaining_ranges->nelts == 0)
+              || (is_rollback && (range->start < revision2))
               || (!is_rollback && (range->start > revision2)))
             {
+              /* Nothing to merge to this child.  We'll claim we have
+                 it up to date so the server doesn't send us
+                 anything. */
               SVN_ERR(reporter->set_path(report_baton, child_repos_path,
-                                         revision2, depth, FALSE, NULL, pool));
+                                         revision2, depth, FALSE, 
+                                         NULL, pool));
             }
           else
             {
@@ -2538,54 +2559,6 @@
     }
 }
 
-
-/* Blindly record the range specified by the user (rather than refining it
-   as we do for actual merges) for the merge source URL. */
-static svn_error_t *
-record_mergeinfo_for_record_only_merge(const char *url,
-                                       svn_merge_range_t *range,
-                                       const svn_wc_entry_t *entry,
-                                       svn_wc_adm_access_t *adm_access,
-                                       merge_cmd_baton_t *merge_b,
-                                       apr_pool_t *pool)
-{
-  apr_array_header_t *rangelist;
-  const char *rel_path;
-  svn_mergeinfo_t target_mergeinfo;
-  svn_boolean_t indirect;
-  apr_hash_t *merges = apr_hash_make(pool);
-  const char *old_url = NULL;
-  svn_boolean_t is_rollback = (range->start > range->end);
-  
-  /* Temporarily reparent ra_session to WC target URL. */
-  SVN_ERR(svn_client__ensure_ra_session_url(&old_url, merge_b->ra_session1,
-                                            entry->url, pool));
-  SVN_ERR(svn_client__get_wc_or_repos_mergeinfo(&target_mergeinfo, entry,
-                                                &indirect, FALSE,
-                                                svn_mergeinfo_inherited,
-                                                merge_b->ra_session1,
-                                                merge_b->target,
-                                                adm_access, merge_b->ctx,
-                                                pool));
-  if (old_url)
-    SVN_ERR(svn_ra_reparent(merge_b->ra_session1, url, pool));
-
-  SVN_ERR(svn_client__path_relative_to_root(&rel_path, url, NULL, TRUE,
-                                            merge_b->ra_session1,
-                                            adm_access, pool));
-  rangelist = apr_array_make(pool, 1, sizeof(range));
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = range;
-  apr_hash_set(merges, merge_b->target, APR_HASH_KEY_STRING, rangelist);
-
-  /* If merge target has indirect mergeinfo set it. */
-  if (indirect)
-    SVN_ERR(svn_client__record_wc_mergeinfo(merge_b->target, target_mergeinfo,
-                                            adm_access, pool));
-
-  return update_wc_mergeinfo(merge_b->target, entry, rel_path, merges,
-                             is_rollback, adm_access, merge_b->ctx, pool);
-}
-
 /* Marks 'inheritable' RANGE to TARGET_WCPATH by wiping off the
    corresponding 'non-inheritable' RANGE from TARGET_MERGEINFO for the
    merge source REL_PATH.  It does such marking only for same URLs
@@ -3920,7 +3893,6 @@
               merge_cmd_baton_t *merge_b,
               apr_pool_t *pool)
 {
-  svn_error_t *err = SVN_NO_ERROR;
   apr_hash_t *props1, *props2;
   const char *tmpfile1, *tmpfile2;
   const char *mimetype1, *mimetype2;
@@ -3933,6 +3905,7 @@
   svn_merge_range_t range;
   svn_mergeinfo_t target_mergeinfo;
   const svn_wc_entry_t *entry;
+  svn_merge_range_t *conflicted_range = NULL;
   int i;
   svn_boolean_t indirect = FALSE;
   apr_pool_t *subpool;
@@ -3963,32 +3936,42 @@
       const char *source_root_url;
       svn_mergeinfo_t implicit_mergeinfo;
 
-      /* Fetch mergeinfo (temporarily reparenting ra_session1 to
-         working copy target URL). */
-      SVN_ERR(svn_ra_reparent(merge_b->ra_session1, entry->url, pool));
-      SVN_ERR(get_full_mergeinfo(&target_mergeinfo, &implicit_mergeinfo, 
-                                 entry, &indirect, svn_mergeinfo_inherited,
-                                 merge_b->ra_session1, target_wcpath, 
-                                 MAX(revision1, revision2),
-                                 MIN(revision1, revision2),
-                                 adm_access, ctx, pool));
-
-      SVN_ERR(svn_ra_reparent(merge_b->ra_session1, url1, pool));
-
-      /* Calculate remaining merges. */
+      
       SVN_ERR(svn_ra_get_repos_root2(merge_b->ra_session1,
                                      &source_root_url, pool));
       SVN_ERR(svn_client__path_relative_to_root(&mergeinfo_path, primary_url,
                                                 source_root_url, TRUE, NULL,
                                                 NULL, pool));
-      SVN_ERR(calculate_remaining_ranges(&remaining_ranges, source_root_url,
-                                         url1, revision1, url2, revision2,
-                                         TRUE, target_mergeinfo, 
-                                         implicit_mergeinfo,
-                                         merge_b->ra_session1,
-                                         entry, ctx, pool));
+
+      /* Calculate remaining merges unless this is a record only merge.
+         In that case the remaining range is the whole range described
+         by REVISION1:REVISION2. */
+      if (!merge_b->record_only)
+        {
+          /* Fetch mergeinfo (temporarily reparenting ra_session1 to
+             working copy target URL). */
+          SVN_ERR(svn_ra_reparent(merge_b->ra_session1, entry->url, pool));
+          SVN_ERR(get_full_mergeinfo(&target_mergeinfo, &implicit_mergeinfo, 
+                                     entry, &indirect, svn_mergeinfo_inherited,
+                                     merge_b->ra_session1, target_wcpath, 
+                                     MAX(revision1, revision2),
+                                     MIN(revision1, revision2),
+                                     adm_access, ctx, pool));
+
+          SVN_ERR(svn_ra_reparent(merge_b->ra_session1, url1, pool));
+
+          SVN_ERR(calculate_remaining_ranges(&remaining_ranges,
+                                             source_root_url,
+                                             url1, revision1, url2, revision2,
+                                             TRUE, target_mergeinfo, 
+                                             implicit_mergeinfo,
+                                             merge_b->ra_session1,
+                                             entry, ctx, pool));
+        }
     }
-  else
+
+  /* The simple cases where our remaining range is REVISION1:REVISION2. */
+  if (!honor_mergeinfo || merge_b->record_only)
     {
       remaining_ranges = apr_array_make(pool, 1, sizeof(&range));
       APR_ARRAY_PUSH(remaining_ranges, svn_merge_range_t *) = &range;
@@ -3996,121 +3979,125 @@
 
   subpool = svn_pool_create(pool);
 
-  for (i = 0; i < remaining_ranges->nelts; i++)
+  if (!merge_b->record_only)
     {
-      svn_wc_notify_t *n;
-      svn_boolean_t header_sent = FALSE;
-
-      /* When using this merge range, account for the exclusivity of
-         its low value (which is indicated by this operation being a
-         merge vs. revert). */
-      svn_merge_range_t *r = APR_ARRAY_IDX(remaining_ranges, i,
-                                           svn_merge_range_t *);
-
-      svn_pool_clear(subpool);
-
-      n = svn_wc_create_notify(target_wcpath,
-                               svn_wc_notify_merge_begin,
-                               subpool);
-      if (merge_b->sources_ancestral)
-        n->merge_range = r;
-
-      /* While we currently don't allow it, in theory we could be
-         fetching two fulltexts from two different repositories here. */
-      SVN_ERR(single_file_merge_get_file(&tmpfile1, merge_b->ra_session1,
-                                         &props1, r->start, target_wcpath,
-                                         subpool));
-      SVN_ERR(single_file_merge_get_file(&tmpfile2, merge_b->ra_session2,
-                                         &props2, r->end, target_wcpath,
-                                         subpool));
-
-      /* Discover any svn:mime-type values in the proplists */
-      pval = apr_hash_get(props1, SVN_PROP_MIME_TYPE,
-                          strlen(SVN_PROP_MIME_TYPE));
-      mimetype1 = pval ? pval->data : NULL;
-
-      pval = apr_hash_get(props2, SVN_PROP_MIME_TYPE,
-                          strlen(SVN_PROP_MIME_TYPE));
-      mimetype2 = pval ? pval->data : NULL;
-
-      /* Deduce property diffs. */
-      SVN_ERR(svn_prop_diffs(&propchanges, props2, props1, subpool));
-
-      /* If we aren't ignoring ancestry, then we've already done
-         ancestry relatedness checks.  If we are ignoring ancestry, or
-         our sources are known to be related, then we can do
-         text-n-props merge; otherwise, we have to do a delete-n-add
-         merge.  */
-      if (! (merge_b->ignore_ancestry || sources_related))
+      for (i = 0; i < remaining_ranges->nelts; i++)
         {
-          /* Delete... */
-          SVN_ERR(merge_file_deleted(adm_access,
-                                     &text_state,
-                                     target_wcpath,
-                                     NULL,
-                                     NULL,
-                                     mimetype1, mimetype2,
-                                     props1,
-                                     merge_b));
-          single_file_merge_notify(notify_b, target_wcpath,
-                                   svn_wc_notify_update_delete, text_state,
-                                   svn_wc_notify_state_unknown, n,
-                                   &header_sent, subpool);
+          svn_wc_notify_t *n;
+          svn_boolean_t header_sent = FALSE;
+          svn_error_t *err = SVN_NO_ERROR;
 
-          /* ...plus add... */
-          SVN_ERR(merge_file_added(adm_access,
-                                   &text_state, &prop_state,
-                                   target_wcpath,
-                                   tmpfile1,
-                                   tmpfile2,
-                                   r->start,
-                                   r->end,
-                                   mimetype1, mimetype2,
-                                   propchanges, props1,
-                                   merge_b));
-          single_file_merge_notify(notify_b, target_wcpath,
-                                   svn_wc_notify_update_add, text_state,
-                                   prop_state, n, &header_sent, subpool);
-          /* ... equals replace. */
-        }
-      else
-        {
-          SVN_ERR(merge_file_changed(adm_access,
-                                     &text_state, &prop_state,
-                                     target_wcpath,
-                                     tmpfile1,
-                                     tmpfile2,
-                                     r->start,
-                                     r->end,
-                                     mimetype1, mimetype2,
-                                     propchanges, props1,
-                                     merge_b));
-          single_file_merge_notify(notify_b, target_wcpath,
-                                   svn_wc_notify_update_update, text_state,
-                                   prop_state, n, &header_sent, subpool);
-        }
+          /* When using this merge range, account for the exclusivity of
+             its low value (which is indicated by this operation being a
+             merge vs. revert). */
+          svn_merge_range_t *r = APR_ARRAY_IDX(remaining_ranges, i,
+                                               svn_merge_range_t *);
 
-      /* Ignore if temporary file not found. It may have been renamed. */
-      /* (This is where we complain about missing Lisp, or better yet,
-         Python...) */
-      err = svn_io_remove_file(tmpfile1, subpool);
-      if (err && ! APR_STATUS_IS_ENOENT(err->apr_err))
-        return err;
-      svn_error_clear(err);
-      err = SVN_NO_ERROR;
-      err = svn_io_remove_file(tmpfile2, subpool);
-      if (err && ! APR_STATUS_IS_ENOENT(err->apr_err))
-        return err;
-      svn_error_clear(err);
-      err = SVN_NO_ERROR;
+          svn_pool_clear(subpool);
 
-      if (i < remaining_ranges->nelts - 1 &&
-          is_path_conflicted_by_merge(merge_b))
-        {
-          err = make_merge_conflict_error(target_wcpath, r, pool);
-          break;
+          n = svn_wc_create_notify(target_wcpath,
+                                   merge_b->same_repos 
+                                     ? svn_wc_notify_merge_begin
+                                     : svn_wc_notify_foreign_merge_begin,
+                                   subpool);
+          if (merge_b->sources_ancestral)
+            n->merge_range = r;
+
+          /* While we currently don't allow it, in theory we could be
+             fetching two fulltexts from two different repositories here. */
+          SVN_ERR(single_file_merge_get_file(&tmpfile1, merge_b->ra_session1,
+                                             &props1, r->start, target_wcpath,
+                                             subpool));
+          SVN_ERR(single_file_merge_get_file(&tmpfile2, merge_b->ra_session2,
+                                             &props2, r->end, target_wcpath,
+                                             subpool));
+
+          /* Discover any svn:mime-type values in the proplists */
+          pval = apr_hash_get(props1, SVN_PROP_MIME_TYPE,
+                              strlen(SVN_PROP_MIME_TYPE));
+          mimetype1 = pval ? pval->data : NULL;
+
+          pval = apr_hash_get(props2, SVN_PROP_MIME_TYPE,
+                              strlen(SVN_PROP_MIME_TYPE));
+          mimetype2 = pval ? pval->data : NULL;
+
+          /* Deduce property diffs. */
+          SVN_ERR(svn_prop_diffs(&propchanges, props2, props1, subpool));
+
+          /* If we aren't ignoring ancestry, then we've already done
+             ancestry relatedness checks.  If we are ignoring ancestry, or
+             our sources are known to be related, then we can do
+             text-n-props merge; otherwise, we have to do a delete-n-add
+             merge.  */
+          if (! (merge_b->ignore_ancestry || sources_related))
+            {
+              /* Delete... */
+              SVN_ERR(merge_file_deleted(adm_access,
+                                         &text_state,
+                                         target_wcpath,
+                                         NULL,
+                                         NULL,
+                                         mimetype1, mimetype2,
+                                         props1,
+                                         merge_b));
+              single_file_merge_notify(notify_b, target_wcpath,
+                                       svn_wc_notify_update_delete, text_state,
+                                       svn_wc_notify_state_unknown, n,
+                                       &header_sent, subpool);
+
+              /* ...plus add... */
+              SVN_ERR(merge_file_added(adm_access,
+                                       &text_state, &prop_state,
+                                       target_wcpath,
+                                       tmpfile1,
+                                       tmpfile2,
+                                       r->start,
+                                       r->end,
+                                       mimetype1, mimetype2,
+                                       propchanges, props1,
+                                       merge_b));
+              single_file_merge_notify(notify_b, target_wcpath,
+                                       svn_wc_notify_update_add, text_state,
+                                       prop_state, n, &header_sent, subpool);
+              /* ... equals replace. */
+            }
+          else
+            {
+              SVN_ERR(merge_file_changed(adm_access,
+                                         &text_state, &prop_state,
+                                         target_wcpath,
+                                         tmpfile1,
+                                         tmpfile2,
+                                         r->start,
+                                         r->end,
+                                         mimetype1, mimetype2,
+                                         propchanges, props1,
+                                         merge_b));
+              single_file_merge_notify(notify_b, target_wcpath,
+                                       svn_wc_notify_update_update, text_state,
+                                       prop_state, n, &header_sent, subpool);
+            }
+
+          /* Ignore if temporary file not found. It may have been renamed. */
+          /* (This is where we complain about missing Lisp, or better yet,
+             Python...) */
+          err = svn_io_remove_file(tmpfile1, subpool);
+          if (err && ! APR_STATUS_IS_ENOENT(err->apr_err))
+            return err;
+          svn_error_clear(err);
+          err = svn_io_remove_file(tmpfile2, subpool);
+          if (err && ! APR_STATUS_IS_ENOENT(err->apr_err))
+            return err;
+          svn_error_clear(err);
+
+          if ((i < (remaining_ranges->nelts - 1))
+              && is_path_conflicted_by_merge(merge_b))
+            {
+              conflicted_range = r;
+              break;
+            }
         }
-    }
+    } /* !merge_b->record_only */
 
   /* Record updated WC mergeinfo to account for our new merges, minus
      any unresolved conflicts and skips. */
@@ -4138,7 +4125,12 @@
   /* Sleep to ensure timestamp integrity. */
   svn_sleep_for_timestamps();
 
-  return err;
+  /* If our multi-pass merge terminated early due to conflicts, return
+     that fact as an error. */
+  if (conflicted_range)
+    return make_merge_conflict_error(target_wcpath, conflicted_range, pool);
+    
+  return SVN_NO_ERROR;
 }
 
 
@@ -4278,7 +4270,7 @@
                                     ra_session, mergeinfo_path,
                                     adm_access, merge_b));
 
-  if (honor_mergeinfo)
+  if (honor_mergeinfo && !merge_b->record_only)
     {
       svn_revnum_t start_rev, end_rev;
 
@@ -4400,17 +4392,20 @@
       range.end = revision2;
       range.inheritable = inheritable;
 
-      /* Reset cur_ancestor_index to -1 so that subsequent cherry
-         picked revision ranges will be notified upon subsequent
-         operative merge. */
-      notify_b->cur_ancestor_index = -1;
+      if (!merge_b->record_only)
+        {
+          /* Reset cur_ancestor_index to -1 so that subsequent cherry
+             picked revision ranges will be notified upon subsequent
+             operative merge. */
+          notify_b->cur_ancestor_index = -1;
 
-      SVN_ERR(drive_merge_report_editor(merge_b->target,
-                                        url1, revision1, url2, revision2,
-                                        NULL, is_rollback, 
-                                        depth, notify_b, adm_access, 
-                                        &merge_callbacks, merge_b, 
-                                        pool));
+          SVN_ERR(drive_merge_report_editor(merge_b->target,
+                                            url1, revision1, url2, revision2,
+                                            NULL, is_rollback, 
+                                            depth, notify_b, adm_access, 
+                                            &merge_callbacks, merge_b, 
+                                            pool));
+        }
     }
 
   /* Record mergeinfo where appropriate.*/
@@ -4772,25 +4767,6 @@
           checked_mergeinfo_capability = TRUE;
         }
 
-      /* If this is a record-only merge and our sources are from the
-         same repository as our target, just do the record and move on. */
-      if (same_repos && record_only)
-        {
-          const char *merge_source_url = (rev1 < rev2) ? url2 : url1;
-          svn_merge_range_t range;
-          range.start = rev1;
-          range.end = rev2;
-          range.inheritable = TRUE;
-          SVN_ERR(record_mergeinfo_for_record_only_merge(merge_source_url,
-                                                         &range,
-                                                         target_entry, 
-                                                         adm_access,
-                                                         &merge_cmd_baton,
-                                                         subpool));
-
-          continue;
-        }
-
       /* Call our merge helpers based on entry kind. */
       if (target_entry->kind == svn_node_file)
         {
diff --git a/subversion/libsvn_client/mergeinfo.c b/subversion/libsvn_client/mergeinfo.c
index 1d5f37c..dd59894 100644
--- a/subversion/libsvn_client/mergeinfo.c
+++ b/subversion/libsvn_client/mergeinfo.c
@@ -846,7 +846,7 @@
                                                    TRUE, ctx, subpool));
       SVN_ERR(svn_client__get_revision_number(&rev, NULL, ra_session,
                                               peg_revision, "", subpool));
-      SVN_ERR(svn_ra_get_repos_root(ra_session, repos_root, pool));
+      SVN_ERR(svn_ra_get_repos_root2(ra_session, repos_root, pool));
       SVN_ERR(svn_client__path_relative_to_root(&repos_rel_path, path_or_url,
                                                 *repos_root, FALSE, NULL, 
                                                 NULL, subpool));
@@ -1207,6 +1207,47 @@
 
 
 svn_error_t *
+svn_client_mergeinfo_get_merged(apr_hash_t **mergeinfo_p,
+                                const char *path_or_url,
+                                const svn_opt_revision_t *peg_revision,
+                                svn_client_ctx_t *ctx,
+                                apr_pool_t *pool)
+{
+  const char *repos_root;
+  apr_hash_t *full_path_mergeinfo;
+  svn_mergeinfo_t mergeinfo;
+  
+  SVN_ERR(get_mergeinfo(&mergeinfo, &repos_root, path_or_url, 
+                        peg_revision, ctx, pool));
+
+  /* Copy the MERGEINFO hash items into another hash, but change
+     the relative paths into full URLs. */
+  *mergeinfo_p = NULL;
+  if (mergeinfo)
+    {
+      apr_hash_index_t *hi;
+
+      full_path_mergeinfo = apr_hash_make(pool);
+      for (hi = apr_hash_first(pool, mergeinfo); hi; hi = apr_hash_next(hi))
+        {
+          const void *key;
+          void *val;
+          const char *source_url;
+
+          apr_hash_this(hi, &key, NULL, &val);
+          source_url = svn_path_uri_encode(key, pool);
+          source_url = svn_path_join(repos_root, source_url + 1, pool);
+          apr_hash_set(full_path_mergeinfo, source_url, 
+                       APR_HASH_KEY_STRING, val);
+        }
+      *mergeinfo_p = full_path_mergeinfo;
+    }
+
+  return SVN_NO_ERROR;
+}
+
+
+svn_error_t *
 svn_client_mergeinfo_log_eligible(const char *path_or_url,
                                   const svn_opt_revision_t *peg_revision,
                                   const char *merge_source_url,
@@ -1346,12 +1387,9 @@
                                       &copyfrom_path, &copyfrom_rev,
                                       ctx, pool));
   if (copyfrom_path)
-    {
-      copyfrom_path = svn_path_join(repos_root,
-                                    svn_path_uri_encode(copyfrom_path + 1,
-                                                        pool),
-                                    pool);
-      APR_ARRAY_PUSH(list, const char *) = copyfrom_path;
+    {   
+      APR_ARRAY_PUSH(list, const char *) = 
+        svn_path_url_add_component(repos_root, copyfrom_path + 1, pool);
     }
 
   if (mergeinfo)
diff --git a/subversion/libsvn_delta/compose_delta.c b/subversion/libsvn_delta/compose_delta.c
index c65c77a..492afb9 100644
--- a/subversion/libsvn_delta/compose_delta.c
+++ b/subversion/libsvn_delta/compose_delta.c
@@ -574,8 +574,10 @@
       else
         {
           /* TODO: (Potential optimization) Investigate if it would
-             make sense to forbid range_from_target lengths shorter
-             than, say, VD_KEY_SIZE (see vdelta.c) */
+             make sense to forbid short range_from_target lengths
+             (this comment originally said "shorter than, say,
+             VD_KEY_SIZE (see vdelta.c)", but Subversion no longer
+             uses vdelta). */
 
           if (offset >= node->limit)
             node = node->next;
diff --git a/subversion/libsvn_delta/delta.h b/subversion/libsvn_delta/delta.h
index 268ac20..2b06110 100644
--- a/subversion/libsvn_delta/delta.h
+++ b/subversion/libsvn_delta/delta.h
@@ -69,13 +69,6 @@
 svn_txdelta__make_window(const svn_txdelta__ops_baton_t *build_baton,
                          apr_pool_t *pool);
 
-/* Create vdelta window data. Allocate temporary data from POOL. */
-void svn_txdelta__vdelta(svn_txdelta__ops_baton_t *build_baton,
-                         const char *start,
-                         apr_size_t source_len,
-                         apr_size_t target_len,
-                         apr_pool_t *pool);
-
 
 /* Create xdelta window data. Allocate temporary data from POOL. */
 void svn_txdelta__xdelta(svn_txdelta__ops_baton_t *build_baton,
diff --git a/subversion/libsvn_delta/text_delta.c b/subversion/libsvn_delta/text_delta.c
index 1c769da..9839c6a 100644
--- a/subversion/libsvn_delta/text_delta.c
+++ b/subversion/libsvn_delta/text_delta.c
@@ -48,7 +48,7 @@
   svn_boolean_t more_source;    /* FALSE if source stream hit EOF. */
   svn_boolean_t more;           /* TRUE if there are more data in the pool. */
   svn_filesize_t pos;           /* Offset of next read in source file. */
-  char *buf;                    /* Buffer for vdelta data. */
+  char *buf;                    /* Buffer for input data. */
 
   apr_md5_ctx_t context;        /* APR's MD5 context container. */
 
@@ -133,7 +133,7 @@
 }
 
 
-/* Compute and return a delta window using the vdelta or xdelta algorithm on
+/* Compute and return a delta window using the xdelta algorithm on
    DATA, which contains SOURCE_LEN bytes of source data and TARGET_LEN
    bytes of target data.  SOURCE_OFFSET gives the offset of the source
    data, and is simply copied into the window's sview_offset field. */
@@ -148,7 +148,8 @@
   build_baton.new_data = svn_stringbuf_create("", pool);
 
   if (source_len == 0)
-    svn_txdelta__vdelta(&build_baton, data, source_len, target_len, pool);
+    svn_txdelta__insert_op(&build_baton, svn_txdelta_new, 0, target_len, data,
+                           pool);
   else
     svn_txdelta__xdelta(&build_baton, data, source_len, target_len, pool);
 
@@ -209,9 +210,9 @@
 {
   svn_txdelta_op_t *op;
 
-  /* Check if this op can be merged with the previous op. The vdelta
-     algorithm will never generate such ops, but the delta combiner
-     can, and this is the obvious place to make the check. */
+  /* Check if this op can be merged with the previous op. The delta
+     combiner sometimes generates such ops, and this is the obvious
+     place to make the check. */
   if (build_baton->num_ops > 0)
     {
       op = &build_baton->ops[build_baton->num_ops - 1];
diff --git a/subversion/libsvn_delta/vdelta.c b/subversion/libsvn_delta/vdelta.c
deleted file mode 100644
index f571454..0000000
--- a/subversion/libsvn_delta/vdelta.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * vdelta.c:  vdelta generator.
- *
- * ====================================================================
- * Copyright (c) 2000-2004 CollabNet.  All rights reserved.
- *
- * This software is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at http://subversion.tigris.org/license-1.html.
- * If newer versions of this license are posted there, you may use a
- * newer version instead, at your option.
- *
- * This software consists of voluntary contributions made by many
- * individuals.  For exact contribution history, see the revision
- * history and logs, available at http://subversion.tigris.org/.
- * ====================================================================
- */
-
-
-#include <assert.h>
-
-#include <apr_general.h>        /* for APR_INLINE */
-
-#include "svn_delta.h"
-#include "delta.h"
-
-
-/* ==================================================================== */
-/* Hash table for vdelta hashing.
-
-   Each hash bucket is a chain of slots. The index of the slot in
-   the slots array is also the index of the key string in the
-   current window's data stream. The hash table implements a multimap
-   (i.e., hash and key collisions are allowed).
-
-   To store a key->index mapping, just add slot[index] to the slot
-   chain tn key's bucket (see store_mapping).
-
-   For a given key, you can traverse the list of match candidates (some
-   of which may be hash collisions) like this:
-
-   for (slot = buckets[get_bucket(key)]; slot != NULL; slot = slot->next)
-     {
-       index = slot - slots;
-       ...
-     }
-*/
-
-
-/* Size of a vdelta hash key. */
-#define VD_KEY_SIZE 4
-
-
-/* Hash slot. */
-typedef struct hash_slot_t {
-  struct hash_slot_t *next;
-} hash_slot_t;
-
-/* Hash table. */
-typedef struct hash_table_t {
-  int num_buckets;              /* Number of buckets in the table. */
-  hash_slot_t **buckets;        /* Bucket array. */
-  hash_slot_t *slots;           /* Slots array. */
-} hash_table_t;
-
-
-/* Create a hash table with NUM_SLOTS slots. NUM_SLOTS should be the sum
-   of the size of the source and target parts of the delta window.
-   Allocate from POOL. */
-static hash_table_t *
-create_hash_table(apr_size_t num_slots, apr_pool_t *pool)
-{
-  int i;
-  apr_size_t j;
-  hash_table_t* table = apr_palloc(pool, sizeof(*table));
-
-  /* This should be a reasonable number of buckets ... */
-  table->num_buckets = (num_slots / 3) | 1;
-  table->buckets = apr_palloc(pool, (table->num_buckets
-                                     * sizeof(*table->buckets)));
-  for (i = 0; i < table->num_buckets; ++i)
-    table->buckets[i] = NULL;
-
-  table->slots = apr_palloc(pool, num_slots * sizeof(*table->slots));
-  for (j = 0; j < num_slots; ++j)
-    table->slots[j].next = NULL;
-
-  return table;
-}
-
-
-/* Convert a key to a pointer to the key's hash bucket.
-   We use a 2-universal multiplicative hash function. If you're
-   wondering about the selected multiplier, take a look at the
-   comments in apr/tables/apr_hash.c:find_entry for a discussion
-   on fast string hashes; it's very illuminating.
-
-   [ We use 127 instead of 33 here because I happen to like
-     interesting prime numbers, so there. --xbc ] */
-static APR_INLINE apr_uint32_t
-get_bucket(const hash_table_t *table, const char *key)
-{
-  int i;
-  apr_uint32_t hash = 0;
-  for (i = 0; i < VD_KEY_SIZE; ++i)
-    hash = hash * 127 + *key++;
-  return hash % table->num_buckets;
-}
-
-
-/* Store a key->index mapping into the hash table. */
-static APR_INLINE void
-store_mapping(hash_table_t *table, const char* key, apr_size_t idx)
-{
-  apr_uint32_t bucket = get_bucket(table, key);
-  assert(table->slots[idx].next == NULL);
-  table->slots[idx].next = table->buckets[bucket];
-  table->buckets[bucket] = &table->slots[idx];
-}
-
-
-
-/* ==================================================================== */
-/* Vdelta generator.
-
-   The article "Delta Algorithms: An Empirical Analysis" by Hunt,
-   Vo and Tichy contains a description of the vdelta algorithm,
-   but it's incomplete. Here's a detailed description:
-
-     1. Look up the four bytes starting at the current position
-        pointer.  If there are no matches for those four bytes,
-        output an insert, move the position pointer forward by one,
-        and go back to step 1.
-
-     2. Determine which of the candidates yields the longest
-        extension.  This will be called the "current match".
-
-     3. Look up the last three bytes of the current match plus one
-        unmatched byte.  If there is no match for those four bytes,
-        the current match is the best match; go to step 6.
-
-     4. For each candidate, check backwards to see if it matches
-        the entire match so far.  If no candidates satisfy that
-        constraint, the current match is the best match; go to step 6.
-
-     5. Among the candidates which do satisfy the constraint,
-        determine which one yields the longest extension.  This
-        will be the new "current match."  Go back to step 3.
-
-     6. Output a block copy instruction, add indexes for the last
-        three positions of the matched data, advance the position
-        pointer by the length of the match, and go back to step 1.
-
-   Inserts and copies are generated only when the current position
-   is within the target data.
-
-   Note that the vdelta algorithm allows copies that cross the
-   source/target data boundary. Because our internal delta
-   representation has different opcodes for source and target copies,
-   we split them in two. This means that the opcode stream in the
-   delta window can contain copies shorter than VD_KEY_SIZE. These
-   could be represented by insert ops instead, but we'll leave them
-   in, so that we can merge them again when we convert the delta
-   window to an external format like vcdiff that supports cross
-   -boundary copies. */
-
-
-/* Find the length of a match within the data window.
-   Note that (match < from && from <= end) must always be true here. */
-
-static APR_INLINE int
-find_match_len(const char *match, const char *from, const char *end)
-{
-  const char *here = from;
-  while (here < end && *match == *here)
-    {
-      ++match;
-      ++here;
-    }
-  return here - from;
-}
-
-
-/* This is the main vdelta generator. */
-
-static void
-vdelta(svn_txdelta__ops_baton_t *build_baton,
-       const char *data,
-       const char *start,
-       const char *end,
-       svn_boolean_t outputflag,
-       hash_table_t *table,
-       apr_pool_t *pool)
-{
-  const char *here = start;     /* Current position in the buffer. */
-  const char *insert_from = NULL; /* Start of byte range for insertion. */
-
-  for (;;)
-    {
-      const char *current_match, *key;
-      apr_size_t current_match_len = 0;
-      hash_slot_t *slot;
-      svn_boolean_t progress;
-
-      /* If we're near the end, just insert the last few bytes. */
-      if (end - here < VD_KEY_SIZE)
-        {
-          const char *from = ((insert_from != NULL) ? insert_from : here);
-
-          if (outputflag && from < end)
-            svn_txdelta__insert_op(build_baton, svn_txdelta_new, 0,
-                                   end - from, from, pool);
-          return;
-        }
-
-      /* Search for the longest match.  */
-      current_match = NULL;
-      current_match_len = 0;
-      key = here;
-      do
-        {
-          /* Try to extend the current match.  Our key is the last
-             three matched bytes plus one unmatched byte if we already
-             have a current match, or just the four bytes where we are
-             if we don't have a current match yet.  See which mapping
-             yields the longest extension.  */
-          progress = FALSE;
-          for (slot = table->buckets[get_bucket(table, key)];
-               slot != NULL;
-               slot = slot->next)
-            {
-              const char *match;
-              apr_size_t match_len;
-
-              if (slot - table->slots < key - here) /* Too close to start */
-                continue;
-              match = data + (slot - table->slots) - (key - here);
-              match_len = find_match_len(match, here, end);
-
-              /* We can only copy from the source or from the target, so
-                 don't let the match cross START.  */
-              if (match < start && match + match_len > start)
-                match_len = start - match;
-
-              if (match_len >= VD_KEY_SIZE && match_len > current_match_len)
-                {
-                  /* We have a longer match; record it.  */
-                  current_match = match;
-                  current_match_len = match_len;
-                  progress = TRUE;
-                }
-            }
-          if (progress)
-            key = here + current_match_len - (VD_KEY_SIZE - 1);
-        }
-      while (progress && end - key >= VD_KEY_SIZE);
-
-      if (current_match_len < VD_KEY_SIZE)
-        {
-          /* There is no match here; store a mapping and insert this byte. */
-          store_mapping(table, here, here - data);
-          if (insert_from == NULL)
-            insert_from = here;
-          here++;
-          continue;
-        }
-      else if (outputflag)
-        {
-          if (insert_from != NULL)
-            {
-              /* Commit the pending insert. */
-              svn_txdelta__insert_op(build_baton, svn_txdelta_new,
-                                     0, here - insert_from,
-                                     insert_from, pool);
-              insert_from = NULL;
-            }
-          if (current_match < start) /* Copy from source. */
-            svn_txdelta__insert_op(build_baton, svn_txdelta_source,
-                                   current_match - data,
-                                   current_match_len,
-                                   NULL, pool);
-          else                       /* Copy from target */
-            svn_txdelta__insert_op(build_baton, svn_txdelta_target,
-                                   current_match - start,
-                                   current_match_len,
-                                   NULL, pool);
-        }
-
-      /* Adjust the current position and insert mappings for the
-         last three bytes of the match. */
-      here += current_match_len;
-      if (end - here >= VD_KEY_SIZE)
-        {
-          char const *last = here - (VD_KEY_SIZE - 1);
-          for (; last < here; ++last)
-            store_mapping(table, last, last - data);
-        }
-    }
-}
-
-
-void
-svn_txdelta__vdelta(svn_txdelta__ops_baton_t *build_baton,
-                    const char *data,
-                    apr_size_t source_len,
-                    apr_size_t target_len,
-                    apr_pool_t *pool)
-{
-  hash_table_t *table = create_hash_table(source_len + target_len, pool);
-
-  vdelta(build_baton, data, data, data + source_len, FALSE, table, pool);
-  vdelta(build_baton, data, data + source_len, data + source_len + target_len,
-         TRUE, table, pool);
-
-#if 0
-  /* This bit of code calculates the hash load and the
-     number of collisions. Please note that a the number
-     of collisions per bucket is one less than the length
-     of the chain. :-)  --xbc */
-  {
-    int i;
-    int empty = 0;
-    int collisions = 0;
-    for (i = 0; i < table->num_buckets; ++i)
-    {
-      hash_slot_t *slot = table->buckets[i];
-      if (!slot)
-        ++empty;
-      else
-      {
-        slot = slot->next;
-        while (slot != NULL)
-        {
-          ++collisions;
-          slot = slot->next;
-        }
-      }
-    }
-    fprintf(stderr, "Hash stats: load %d, collisions %d\n",
-            100 - 100 * empty / table->num_buckets, collisions);
-  }
-#endif
-}
diff --git a/subversion/libsvn_delta/xdelta.c b/subversion/libsvn_delta/xdelta.c
index 59c61bf..6773718 100644
--- a/subversion/libsvn_delta/xdelta.c
+++ b/subversion/libsvn_delta/xdelta.c
@@ -376,8 +376,9 @@
                     apr_size_t target_len,
                     apr_pool_t *pool)
 {
-  /*  We should never be asked to compute something when the source_len is 0,
-      because it should have asked vdelta or some other compressor.  */
+  /*  We should never be asked to compute something when the source_len is 0;
+      we just use a single insert op there (and rely on zlib for
+      compression). */
   assert(source_len != 0);
   compute_delta(build_baton, data, source_len,
                 data + source_len, target_len,
diff --git a/subversion/libsvn_fs_fs/fs_fs.c b/subversion/libsvn_fs_fs/fs_fs.c
index 02d3a40..b59ef06 100644
--- a/subversion/libsvn_fs_fs/fs_fs.c
+++ b/subversion/libsvn_fs_fs/fs_fs.c
@@ -2616,10 +2616,14 @@
               rs = APR_ARRAY_IDX(rb->rs_list, rb->rs_list->nelts - 1,
                                  struct rep_state *);
               /* Read window from last representation in list. */
-              /* We apply this window directly instead of combining it with the
-                 others.  We do this because vdelta is used for deltas against
-                 the empty stream, which will trigger quadratic behaviour in
-                 the delta combiner. */
+              /* We apply this window directly instead of combining it
+                 with the others.  We do this because vdelta used to
+                 be used for deltas against the empty stream, which
+                 will trigger quadratic behaviour in the delta
+                 combiner.  It's still likely that we'll find such
+                 deltas in an old repository; it may be worth
+                 considering whether or not this special case is still
+                 needed in the future, though. */
               SVN_ERR(read_window(&lwindow, rb->chunk_index, rs, rb->pool));
 
               if (lwindow->src_ops > 0)
diff --git a/subversion/libsvn_ra_local/ra_plugin.c b/subversion/libsvn_ra_local/ra_plugin.c
index fd38657..6d855f4 100644
--- a/subversion/libsvn_ra_local/ra_plugin.c
+++ b/subversion/libsvn_ra_local/ra_plugin.c
@@ -1353,7 +1353,8 @@
 
   if (strcmp(capability, SVN_RA_CAPABILITY_DEPTH) == 0
       || strcmp(capability, SVN_RA_CAPABILITY_LOG_REVPROPS) == 0
-      || strcmp(capability, SVN_RA_CAPABILITY_PARTIAL_REPLAY) == 0)
+      || strcmp(capability, SVN_RA_CAPABILITY_PARTIAL_REPLAY) == 0
+      || strcmp(capability, SVN_RA_CAPABILITY_COMMIT_REVPROPS) == 0)
     {
       *has = TRUE;
     }
diff --git a/subversion/libsvn_ra_neon/commit.c b/subversion/libsvn_ra_neon/commit.c
index c6d8acf..77e7d73 100644
--- a/subversion/libsvn_ra_neon/commit.c
+++ b/subversion/libsvn_ra_neon/commit.c
@@ -1371,7 +1371,7 @@
                                     apr_hash_t *revprop_table,
                                     apr_pool_t *pool)
 {
-  const svn_string_t *vcc;
+  const char *vcc;
   const svn_string_t *baseline_url;
   version_rsrc_t baseline_rsrc = { SVN_INVALID_REVNUM };
   svn_error_t *err = NULL;
@@ -1381,8 +1381,7 @@
      ### REPORT when that is available on the server. */
 
   /* fetch the DAV:version-controlled-configuration from the session's URL */
-  SVN_ERR(svn_ra_neon__get_one_prop(&vcc, cc->ras, cc->ras->root.path,
-                                    NULL, &svn_ra_neon__vcc_prop, pool));
+  SVN_ERR(svn_ra_neon__get_vcc(&vcc, cc->ras, cc->ras->root.path, pool));
 
   /* ### we should use DAV:apply-to-version on the CHECKOUT so we can skip
      ### retrieval of the baseline */
@@ -1394,7 +1393,7 @@
     /* Get the latest baseline from VCC's DAV:checked-in property.
        This should give us the HEAD revision of the moment. */
     SVN_ERR(svn_ra_neon__get_one_prop(&baseline_url, cc->ras,
-                                      vcc->data, NULL,
+                                      vcc, NULL,
                                       &svn_ra_neon__checked_in_prop, pool));
     baseline_rsrc.pool = pool;
     baseline_rsrc.vsn_url = baseline_url->data;
diff --git a/subversion/libsvn_ra_neon/props.c b/subversion/libsvn_ra_neon/props.c
index 7e63e84..1877f0f 100644
--- a/subversion/libsvn_ra_neon/props.c
+++ b/subversion/libsvn_ra_neon/props.c
@@ -638,8 +638,32 @@
                                               const char *label,
                                               apr_pool_t *pool)
 {
-  return svn_ra_neon__get_props_resource(rsrc, sess, url, label, starting_props,
-                                         pool);
+  svn_string_t *propval;
+
+  SVN_ERR(svn_ra_neon__get_props_resource(rsrc, sess, url, label,
+                                          starting_props, pool));
+
+  /* Cache some of the resource information. */
+
+  if (! sess->vcc)
+    {
+      propval = apr_hash_get((*rsrc)->propset,
+                             SVN_RA_NEON__PROP_VCC,
+                             APR_HASH_KEY_STRING);
+      if (propval)
+        sess->vcc = apr_pstrdup(sess->pool, propval->data);
+    }
+
+  if (! sess->uuid)
+    {
+      propval = apr_hash_get((*rsrc)->propset,
+                             SVN_RA_NEON__PROP_REPOSITORY_UUID,
+                             APR_HASH_KEY_STRING);
+      if (propval)
+        sess->uuid = apr_pstrdup(sess->pool, propval->data);
+    }
+
+  return SVN_NO_ERROR;
 }
 
 
@@ -747,9 +771,13 @@
 {
   svn_ra_neon__resource_t *rsrc;
   const char *lopped_path;
-  const svn_string_t *vcc_s;
 
-  /* ### Someday, possibly look for memory-cached VCC in the RA session. */
+  /* Look for memory-cached VCC in the RA session. */
+  if (sess->vcc)
+    {
+      *vcc = sess->vcc;
+      return SVN_NO_ERROR;
+    }
 
   /* ### Someday, possibly look for disk-cached VCC via get_wcprop callback. */
 
@@ -757,14 +785,15 @@
   SVN_ERR(svn_ra_neon__search_for_starting_props(&rsrc, &lopped_path,
                                                  sess, url, pool));
 
-  vcc_s = apr_hash_get(rsrc->propset,
-                       SVN_RA_NEON__PROP_VCC, APR_HASH_KEY_STRING);
-  if (! vcc_s)
-    return svn_error_create(APR_EGENERAL, NULL,
-                             _("The VCC property was not found on the "
-                               "resource"));
+  if (! sess->vcc)
+    {
+      /* ### better error reporting... */
+      return svn_error_create(APR_EGENERAL, NULL,
+                              _("The VCC property was not found on the "
+                                "resource"));
+    }
 
-  *vcc = vcc_s->data;
+  *vcc = sess->vcc;
   return SVN_NO_ERROR;
 }
 
@@ -778,7 +807,7 @@
                                              apr_pool_t *pool)
 {
   svn_ra_neon__resource_t *rsrc;
-  const svn_string_t *vcc;
+  const char *vcc;
   const svn_string_t *relative_path;
   const char *my_bc_relative;
   const char *lopped_path;
@@ -809,7 +838,7 @@
   SVN_ERR(svn_ra_neon__search_for_starting_props(&rsrc, &lopped_path,
                                                  sess, url, pool));
 
-  vcc = apr_hash_get(rsrc->propset, SVN_RA_NEON__PROP_VCC, APR_HASH_KEY_STRING);
+  SVN_ERR(svn_ra_neon__get_vcc(&vcc, sess, url, pool));
   if (vcc == NULL)
     {
       /* ### better error reporting... */
@@ -881,7 +910,7 @@
       /* Get the Baseline from the DAV:checked-in value, then fetch its
          DAV:baseline-collection property. */
       /* ### should wrap this with info about rsrc==VCC */
-      SVN_ERR(svn_ra_neon__get_one_prop(&baseline, sess, vcc->data, NULL,
+      SVN_ERR(svn_ra_neon__get_one_prop(&baseline, sess, vcc, NULL,
                                         &svn_ra_neon__checked_in_prop, pool));
 
       /* ### do we want to optimize the props we fetch, based on what the
@@ -902,7 +931,7 @@
 
       /* ### do we want to optimize the props we fetch, based on what the
          ### user asked for? i.e. omit version-name if latest_rev is NULL */
-      SVN_ERR(svn_ra_neon__get_props_resource(&rsrc, sess, vcc->data, label,
+      SVN_ERR(svn_ra_neon__get_props_resource(&rsrc, sess, vcc, label,
                                               which_props, pool));
     }
 
@@ -982,8 +1011,8 @@
       const char *full_bc_url = svn_path_url_add_component(my_bc_url->data,
                                                            my_bc_rel.data,
                                                            pool);
-      SVN_ERR(svn_ra_neon__get_props_resource(&rsrc, sess, full_bc_url,
-                                              NULL, starting_props, pool));
+      SVN_ERR(svn_ra_neon__get_starting_props(&rsrc, sess, full_bc_url,
+                                              NULL, pool));
       *is_dir = rsrc->is_collection;
     }
 
diff --git a/subversion/libsvn_ra_neon/ra_neon.h b/subversion/libsvn_ra_neon/ra_neon.h
index 0e28703..39ff009 100644
--- a/subversion/libsvn_ra_neon/ra_neon.h
+++ b/subversion/libsvn_ra_neon/ra_neon.h
@@ -98,6 +98,10 @@
   svn_auth_iterstate_t *p11pin_iterstate; /* state of PKCS#11 pin retries */
 
   svn_boolean_t compression;            /* should we use http compression? */
+
+  /* Both of these function as caches, and are NULL when uninitialized
+     or cleared: */
+  const char *vcc;                      /* version-controlled-configuration */
   const char *uuid;                     /* repository UUID */
 
   svn_ra_progress_notify_func_t progress_func;
@@ -423,7 +427,10 @@
                                               const ne_propname *which_props,
                                               apr_pool_t *pool);
 
-/* fetch a single resource's starting props from the server. */
+/* fetch a single resource's starting props from the server.
+
+   Cache the version-controlled-configuration in SESS->vcc, and the
+   repository uuid in SESS->uuid. */
 svn_error_t * svn_ra_neon__get_starting_props(svn_ra_neon__resource_t **rsrc,
                                               svn_ra_neon__session_t *sess,
                                               const char *url,
@@ -437,7 +444,10 @@
 
    Also return *MISSING_PATH (allocated in POOL), which is the
    trailing portion of the URL that did not exist.  If an error
-   occurs, *MISSING_PATH isn't changed. */
+   occurs, *MISSING_PATH isn't changed. 
+
+   Cache the version-controlled-configuration in SESS->vcc, and the
+   repository uuid in SESS->uuid. */
 svn_error_t *
 svn_ra_neon__search_for_starting_props(svn_ra_neon__resource_t **rsrc,
                                        const char **missing_path,
diff --git a/subversion/libsvn_ra_neon/session.c b/subversion/libsvn_ra_neon/session.c
index dac426d..2e48a70 100644
--- a/subversion/libsvn_ra_neon/session.c
+++ b/subversion/libsvn_ra_neon/session.c
@@ -823,9 +823,18 @@
                             apr_pool_t *pool)
 {
   svn_ra_neon__session_t *ras = session->priv;
-  const char *cap_result = apr_hash_get(ras->capabilities,
-                                        capability,
-                                        APR_HASH_KEY_STRING);
+  const char *cap_result;
+
+  /* This capability doesn't rely on anything server side. */
+  if (strcmp(capability, SVN_RA_CAPABILITY_COMMIT_REVPROPS) == 0)
+    {
+      *has = TRUE;
+      return SVN_NO_ERROR;
+    }
+
+ cap_result = apr_hash_get(ras->capabilities,
+                           capability,
+                           APR_HASH_KEY_STRING);
 
   /* If any capability is unknown, they're all unknown, so ask. */
   if (cap_result == NULL)
@@ -1134,6 +1143,8 @@
   ras->progress_baton = callbacks->progress_baton;
   ras->progress_func = callbacks->progress_func;
   ras->capabilities = apr_hash_make(ras->pool);
+  ras->vcc = NULL;
+  ras->uuid = NULL;
   /* save config and server group in the auth parameter hash */
   svn_auth_set_parameter(ras->callbacks->auth_baton,
                          SVN_AUTH_PARAM_CONFIG, cfg);
@@ -1314,31 +1325,24 @@
     {
       svn_ra_neon__resource_t *rsrc;
       const char *lopped_path;
-      const svn_string_t *uuid_propval;
 
       SVN_ERR(svn_ra_neon__search_for_starting_props(&rsrc, &lopped_path,
                                                      ras, ras->url->data,
                                                      pool));
       SVN_ERR(svn_ra_neon__maybe_store_auth_info(ras, pool));
 
-      uuid_propval = apr_hash_get(rsrc->propset,
-                                  SVN_RA_NEON__PROP_REPOSITORY_UUID,
-                                  APR_HASH_KEY_STRING);
-      if (uuid_propval == NULL)
-        /* ### better error reporting... */
-        return svn_error_create(APR_EGENERAL, NULL,
-                                _("The UUID property was not found on the "
-                                  "resource or any of its parents"));
-
-      if (uuid_propval && (uuid_propval->len > 0))
-        ras->uuid = apr_pstrdup(ras->pool, uuid_propval->data); /* cache */
-      else
-        return svn_error_create
-          (SVN_ERR_RA_NO_REPOS_UUID, NULL,
-           _("Please upgrade the server to 0.19 or later"));
+      if (! ras->uuid)
+        {
+          /* ### better error reporting... */
+          return svn_error_create(APR_EGENERAL, NULL,
+                                  _("The UUID property was not found on the "
+                                    "resource or any of its parents"));
+        }
     }
 
+  /* search_for_starting_props() filled it. */
   *uuid = ras->uuid;
+
   return SVN_NO_ERROR;
 }
 
diff --git a/subversion/libsvn_ra_serf/serf.c b/subversion/libsvn_ra_serf/serf.c
index 2a99ae2..4e58a7e 100644
--- a/subversion/libsvn_ra_serf/serf.c
+++ b/subversion/libsvn_ra_serf/serf.c
@@ -203,10 +203,18 @@
                             apr_pool_t *pool)
 {
   svn_ra_serf__session_t *serf_sess = ra_session->priv;
+  const char *cap_result;
 
-  const char *cap_result = apr_hash_get(serf_sess->capabilities,
-                                        capability,
-                                        APR_HASH_KEY_STRING);
+  /* This capability doesn't rely on anything server side. */
+  if (strcmp(capability, SVN_RA_CAPABILITY_COMMIT_REVPROPS) == 0)
+    {
+      *has = TRUE;
+      return SVN_NO_ERROR;
+    }
+
+  cap_result = apr_hash_get(serf_sess->capabilities,
+                            capability,
+                            APR_HASH_KEY_STRING);
 
   /* If any capability is unknown, they're all unknown, so ask. */
   if (cap_result == NULL)
@@ -499,7 +507,8 @@
                                _("Illegal repository URL '%s'"),
                                repos_URL);
     }
-  /* Work around an issue in apr-util 1.2.12 and older */
+  /* Contrary to what the comment for apr_uri_t.path says in apr-util 1.2.12 and
+     older, for root paths url.path will be "", where serf requires "/". */
   if (url.path == NULL || url.path[0] == '\0')
     url.path = apr_pstrdup(serf_sess->pool, "/");
 
diff --git a/subversion/libsvn_ra_svn/client.c b/subversion/libsvn_ra_svn/client.c
index abc4a13..be8287a 100644
--- a/subversion/libsvn_ra_svn/client.c
+++ b/subversion/libsvn_ra_svn/client.c
@@ -2248,6 +2248,9 @@
     *has = svn_ra_svn_has_capability(sess->conn, SVN_RA_SVN_CAP_LOG_REVPROPS);
   else if (strcmp(capability, SVN_RA_CAPABILITY_PARTIAL_REPLAY) == 0)
     *has = svn_ra_svn_has_capability(sess->conn, SVN_RA_SVN_CAP_PARTIAL_REPLAY);
+  else if (strcmp(capability, SVN_RA_CAPABILITY_COMMIT_REVPROPS) == 0)
+    *has = svn_ra_svn_has_capability(sess->conn, 
+                                     SVN_RA_SVN_CAP_COMMIT_REVPROPS);
   else  /* Don't know any other capabilities, so error. */
     {
       return svn_error_createf
diff --git a/subversion/libsvn_repos/log.c b/subversion/libsvn_repos/log.c
index 578b1f4..4aa8c43 100644
--- a/subversion/libsvn_repos/log.c
+++ b/subversion/libsvn_repos/log.c
@@ -558,10 +558,10 @@
         APR_ARRAY_PUSH(query_paths, const char *) = path;
     }
 
-  /* We do not need to call svn_repos_fs_get_mergeinfo() (which performs authz)
-     because we are already doing authz on the changed paths and the log
-     messages when we go to fill the log entry.  See fill_log_entry() for
-     details. */
+  /* We do not need to call svn_repos_fs_get_mergeinfo() (which
+     performs authz) because we are already doing authz on the changed
+     paths and the log messages when we go to fill the log entry.  See
+     fill_log_entry() for details. */
   SVN_ERR(svn_fs_get_mergeinfo(&tree_mergeinfo, root, query_paths,
                                svn_mergeinfo_inherited, TRUE,
                                subpool));
@@ -569,7 +569,8 @@
   *combined_mergeinfo = apr_hash_make(subpool);
 
   /* Merge all the mergeinfos into one mergeinfo */
-  for (hi = apr_hash_first(subpool, tree_mergeinfo); hi; hi = apr_hash_next(hi))
+  for (hi = apr_hash_first(subpool, tree_mergeinfo); 
+       hi; hi = apr_hash_next(hi))
     {
       svn_mergeinfo_t mergeinfo;
 
@@ -605,10 +606,10 @@
     }
 
   subpool = svn_pool_create(pool);
-
-  SVN_ERR(get_combined_mergeinfo(&curr_mergeinfo, fs, rev, paths, subpool));
-  SVN_ERR(get_combined_mergeinfo(&prev_mergeinfo, fs, rev - 1, paths, subpool));
-
+  SVN_ERR(get_combined_mergeinfo(&curr_mergeinfo, fs, rev, 
+                                 paths, subpool));
+  SVN_ERR(get_combined_mergeinfo(&prev_mergeinfo, fs, rev - 1, 
+                                 paths, subpool));
   SVN_ERR(svn_mergeinfo_diff(&deleted, &changed, prev_mergeinfo,
                              curr_mergeinfo, FALSE,
                              subpool));
@@ -796,7 +797,7 @@
      get the next history.
   */
   *histories = apr_array_make(pool, paths->nelts,
-                             sizeof(struct path_info *));
+                              sizeof(struct path_info *));
 
   SVN_ERR(svn_fs_revision_root(&root, fs, hist_end, pool));
 
@@ -945,8 +946,9 @@
         APR_ARRAY_IDX(rp->rangelist, i, svn_merge_range_t *)->start += 1;
     }
 
-  /* Loop over the (revision range, path) tuples, chopping them into 
-     (revision range, paths) tuples, and appending those to the output list. */
+  /* Loop over the (revision range, path) tuples, chopping them into
+     (revision range, paths) tuples, and appending those to the output
+     list. */
   *combined_list = apr_array_make(pool, 0, sizeof(struct path_list_range *));
   while (rangelist_paths->nelts > 1)
     {
@@ -976,17 +978,18 @@
             }
           rp = APR_ARRAY_IDX(rangelist_paths, num_revs,
                              struct rangelist_path *);
-          next_youngest =
-            APR_ARRAY_IDX(rp->rangelist, 0, struct svn_merge_range_t *)->start;
+          next_youngest = APR_ARRAY_IDX(rp->rangelist, 0, 
+                                        struct svn_merge_range_t *)->start;
         }
       num_revs -= 1;
 
       /* The start of the new range will be YOUNGEST, and we now find the end
          of the new range, which should be either one less than the next 
          earliest start of a rangelist, or the end of the first rangelist. */
-      youngest_end = APR_ARRAY_IDX(APR_ARRAY_IDX(rangelist_paths, 0,
-                                          struct rangelist_path *)->rangelist,
-                                   0, svn_merge_range_t *)->end;
+      youngest_end = 
+        APR_ARRAY_IDX(APR_ARRAY_IDX(rangelist_paths, 0,
+                                    struct rangelist_path *)->rangelist,
+                      0, svn_merge_range_t *)->end;
       if ( (next_youngest == youngest) || (youngest_end < next_youngest) )
         tail = youngest_end;
       else
@@ -1040,8 +1043,8 @@
      list. */
   if (rangelist_paths->nelts > 0)
     {
-      struct rangelist_path *first_rp = APR_ARRAY_IDX(rangelist_paths, 0,
-                                                      struct rangelist_path *);
+      struct rangelist_path *first_rp = 
+        APR_ARRAY_IDX(rangelist_paths, 0, struct rangelist_path *);
       while (first_rp->rangelist->nelts > 0)
         {
           struct path_list_range *plr = apr_palloc(pool, sizeof(*plr));
@@ -1119,31 +1122,37 @@
   if (limit == 0)
     use_limit = FALSE;
 
-  /* Find the our oldest revision is using strict node history */
+  /* If using strict node history, find the oldest revision since
+     which the histories of all of our requested paths contain no
+     copies/moves.  This becomes the new lower bound to our revision
+     history search.  */
   iterpool = svn_pool_create(pool);
   if (strict_node_history)
-    for (i = 0; i < paths->nelts; i++)
-      {
-        const char *path = APR_ARRAY_IDX(paths, i, const char *);
-        svn_revnum_t oldest;
-        svn_fs_root_t *copy_root, *rev_root;
-        const char *copy_path;
+    {
+      for (i = 0; i < paths->nelts; i++)
+        {
+          const char *path = APR_ARRAY_IDX(paths, i, const char *);
+          svn_revnum_t oldest;
+          svn_fs_root_t *copy_root, *rev_root;
+          const char *copy_path;
+          
+          svn_pool_clear(iterpool);
+          SVN_ERR(svn_fs_revision_root(&rev_root, fs, hist_end, iterpool));
+          SVN_ERR(svn_fs_closest_copy(&copy_root, &copy_path, rev_root, path,
+                                      iterpool));
+          
+          if (copy_root != NULL)
+            {
+              oldest = svn_fs_revision_root_revision(copy_root) + 1;
+              hist_start = MAX(oldest, hist_start);
+            }
+        }
+    }
 
-        svn_pool_clear(iterpool);
-        SVN_ERR(svn_fs_revision_root(&rev_root, fs, hist_end, iterpool));
-        SVN_ERR(svn_fs_closest_copy(&copy_root, &copy_path, rev_root, path,
-                                    iterpool));
-
-        if (copy_root != NULL)
-          {
-            oldest = svn_fs_revision_root_revision(copy_root) + 1;
-            hist_start = (oldest > hist_start ? oldest : hist_start);
-          }
-      }
-
-  /* We only really care about revisions in which those paths were changed.
-     So we ask the filesystem for all the revisions in which any of the
-     paths was changed.  */
+  /* We have a list of paths and a revision range.  But we don't care
+     about all the revisions in the range -- only the ones in which
+     one of our paths was changed.  So let's go figure out which
+     revisions contain real changes to at least one of our paths.  */
   SVN_ERR(get_path_histories(&histories, fs, paths,
                              (mainline_run ? 0 : hist_start), hist_end,
                              (mainline_run ? FALSE : strict_node_history),
@@ -1226,8 +1235,8 @@
         }
 
       SVN_ERR(send_log(rev, fs, discover_changed_paths, revprops,
-                       has_children, receiver, receiver_baton, authz_read_func,
-                       authz_read_baton, iterpool));
+                       has_children, receiver, receiver_baton, 
+                       authz_read_func, authz_read_baton, iterpool));
 
       if (has_children)
         {
@@ -1252,7 +1261,8 @@
                                      pl_range->range.end,
                                      0, discover_changed_paths,
                                      strict_node_history, revprops, TRUE,
-                                     found_revisions, receiver, receiver_baton,
+                                     found_revisions, 
+                                     receiver, receiver_baton,
                                      authz_read_func, authz_read_baton,
                                      permpool, iterpool2));
             }
diff --git a/subversion/libsvn_subr/cmdline.c b/subversion/libsvn_subr/cmdline.c
index ee829f0..7ca00f9 100644
--- a/subversion/libsvn_subr/cmdline.c
+++ b/subversion/libsvn_subr/cmdline.c
@@ -365,6 +365,7 @@
                              apr_pool_t *pool)
 {
   svn_boolean_t store_password_val = TRUE;
+  svn_boolean_t store_auth_creds_val = TRUE;
   svn_auth_provider_object_t *provider;
 
   /* The whole list of registered providers */
@@ -469,12 +470,12 @@
   /* There are two different ways the user can disable disk caching
      of credentials:  either via --no-auth-cache, or in the config
      file ('store-auth-creds = no'). */
-  SVN_ERR(svn_config_get_bool(cfg, &store_password_val,
+  SVN_ERR(svn_config_get_bool(cfg, &store_auth_creds_val,
                               SVN_CONFIG_SECTION_AUTH,
                               SVN_CONFIG_OPTION_STORE_AUTH_CREDS,
                               TRUE));
 
-  if (no_auth_cache || ! store_password_val)
+  if (no_auth_cache || ! store_auth_creds_val)
     svn_auth_set_parameter(*ab, SVN_AUTH_PARAM_NO_AUTH_CACHE, "");
 
   return SVN_NO_ERROR;
diff --git a/subversion/libsvn_wc/README b/subversion/libsvn_wc/README
index 4caff53..5433e88 100644
--- a/subversion/libsvn_wc/README
+++ b/subversion/libsvn_wc/README
@@ -423,8 +423,9 @@
 
 copied:
    A boolean: true if this entry was added with history; only allowed
-   when schedule is add.  (### Why aren't the copyfrom attributes
-   enough for this?)
+   when schedule is add or for files which are marked as schedule-normal
+   as part of a schedule-add-with-history subtree. (### Why aren't the
+   copyfrom attributes enough for this?)
 
 copyfrom-url:
    If this entry is added with history, the URL of the copy source.
diff --git a/subversion/libsvn_wc/adm_ops.c b/subversion/libsvn_wc/adm_ops.c
index e96337e..7b953df 100644
--- a/subversion/libsvn_wc/adm_ops.c
+++ b/subversion/libsvn_wc/adm_ops.c
@@ -2975,14 +2975,15 @@
      user about this, but still allow the reassignment to happen. */
   if (entry->changelist && changelist && notify_func)
     {
-      svn_error_t *unversioned_err =
+      svn_error_t *reassign_err =
         svn_error_createf(SVN_ERR_WC_CHANGELIST_MOVE, NULL,
                           _("Removing '%s' from changelist '%s'."),
                           path, entry->changelist);
       notify = svn_wc_create_notify(path, svn_wc_notify_changelist_moved, 
                                     pool);
-      notify->err = unversioned_err;
+      notify->err = reassign_err;
       notify_func(notify_baton, notify, pool);
+      svn_error_clear(notify->err);
     }
   
   /* Tweak the entry. */
diff --git a/subversion/mod_dav_svn/lock.c b/subversion/mod_dav_svn/lock.c
index 101c411..581f00a 100644
--- a/subversion/mod_dav_svn/lock.c
+++ b/subversion/mod_dav_svn/lock.c
@@ -760,7 +760,7 @@
   /* Log the locking as a 'high-level' action. */
   dav_svn__operational_log(resource->info,
                            apr_psprintf(resource->info->r->pool,
-                                        "lock %s%s",
+                                        "lock (%s)%s",
                                         svn_path_uri_encode(slock->path,
                                                  resource->info->r->pool),
                                         info->lock_steal ? " steal" : ""));
@@ -848,7 +848,7 @@
       /* Log the unlocking as a 'high-level' action. */
       dav_svn__operational_log(resource->info,
                                apr_psprintf(resource->info->r->pool,
-                                 "unlock %s%s",
+                                 "unlock (%s)%s",
                                  svn_path_uri_encode(resource->info->repos_path,
                                                      resource->info->r->pool),
                                             info->lock_break ? " break" : ""));
diff --git a/subversion/mod_dav_svn/reports/mergeinfo.c b/subversion/mod_dav_svn/reports/mergeinfo.c
index 18efe76..238ac91 100644
--- a/subversion/mod_dav_svn/reports/mergeinfo.c
+++ b/subversion/mod_dav_svn/reports/mergeinfo.c
@@ -220,9 +220,10 @@
  cleanup:
 
   /* We've detected a 'high level' svn action to log. */
-  action = apr_psprintf(resource->pool, "get-mergeinfo (%s) %s",
+  action = apr_psprintf(resource->pool, "get-mergeinfo (%s) %s%s",
                         space_separated_paths->data,
-                        svn_inheritance_to_word(inherit));
+                        svn_inheritance_to_word(inherit),
+                        include_descendants ? " include-descendants" : "");
   dav_svn__operational_log(resource->info, action);
 
   /* We don't flush the brigade unless there's something in it to
diff --git a/subversion/mod_dav_svn/reports/update.c b/subversion/mod_dav_svn/reports/update.c
index bf62a42..cbcc7c8 100644
--- a/subversion/mod_dav_svn/reports/update.c
+++ b/subversion/mod_dav_svn/reports/update.c
@@ -92,6 +92,7 @@
 
   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 *changed_props; /* array of const char * prop names */
   apr_array_header_t *removed_props; /* array of const char * prop names */
 
@@ -352,6 +353,8 @@
                                " copyfrom-rev=\"%ld\">" DEBUG_CR,
                                DIR_OR_FILE(is_dir),
                                qname, qcopy, copyfrom_revision);
+
+          child->copyfrom = TRUE;
         }
 
       /* Resist the temptation to pass 'elt' as the format string.
@@ -404,7 +407,8 @@
     return SVN_NO_ERROR;
 
   /* ### ack!  binary names won't float here! */
-  if (baton->removed_props && (! baton->added))
+  /* If this is a copied file/dir, we can have removed props. */
+  if (baton->removed_props && (! baton->added || baton->copyfrom))
     {
       const char *qname;
 
@@ -761,7 +765,7 @@
 
 
 /* We have our own window handler and baton as a simple wrapper around
-   the real handler (which converts vdelta windows to base64-encoded
+   the real handler (which converts txdelta windows to base64-encoded
    svndiff data).  The wrapper is responsible for sending the opening
    and closing XML tags around the svndiff data. */
 struct window_handler_baton
@@ -1330,26 +1334,33 @@
     if (dst_path)
       {
         /* diff/merge don't ask for inline text-deltas. */
-        if (!uc.send_all && strcmp(spath, dst_path) == 0)
+        if (uc.send_all)
           action = apr_psprintf(resource->pool,
-                                "diff %s r%ld:%ld%s%s",
+                                "switch %s %s@%ld%s",
                                 svn_path_uri_encode(spath, resource->pool),
-                                from_revnum,
-                                revnum, log_depth,
-                                ignore_ancestry ? " ignore-ancestry" : "");
-        else
-          action = apr_psprintf(resource->pool,
-                                "%s %s@%ld %s@%ld%s%s",
-                                (uc.send_all ? "switch" : "diff"),
-                                svn_path_uri_encode(spath, resource->pool),
-                                from_revnum,
                                 svn_path_uri_encode(dst_path, resource->pool),
-                                revnum, log_depth,
-                                /* ignore-ancestry only applies to merge, and
-                                   we use uc.send_all to know if this is a
-                                   diff/merge or not. */
-                                (!uc.send_all && ignore_ancestry
-                                 ? " ignore-ancestry" : ""));
+                                revnum, log_depth);
+        else
+          {
+            if (strcmp(spath, dst_path) == 0)
+              action = apr_psprintf(resource->pool,
+                                    "diff %s r%ld:%ld%s%s",
+                                    svn_path_uri_encode(spath, resource->pool),
+                                    from_revnum,
+                                    revnum, log_depth,
+                                    ignore_ancestry ? " ignore-ancestry" : "");
+            else
+              action = apr_psprintf(resource->pool,
+                                    "diff %s@%ld %s@%ld%s%s",
+                                    svn_path_uri_encode(spath, resource->pool),
+                                    from_revnum,
+                                    svn_path_uri_encode(dst_path,
+                                                        resource->pool),
+                                    revnum, log_depth,
+                                    (ignore_ancestry
+                                     ? " ignore-ancestry"
+                                     : ""));
+          }
       }
 
     /* Otherwise, it must be checkout, export, update, or status -u. */
diff --git a/subversion/po/fr.po b/subversion/po/fr.po
index 44de186..8941118 100644
--- a/subversion/po/fr.po
+++ b/subversion/po/fr.po
@@ -9,8 +9,8 @@
 msgstr ""
 "Project-Id-Version: subversion 1.5\n"
 "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n"
-"POT-Creation-Date: 2008-03-16 11:11+0100\n"
-"PO-Revision-Date: 2008-03-16 13:11+0100\n"
+"POT-Creation-Date: 2008-04-15 15:30+0200\n"
+"PO-Revision-Date: 2008-04-15 16:54+0200\n"
 "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n"
 "Language-Team: French <dev@subversion.tigris.org>\n"
 "MIME-Version: 1.0\n"
@@ -733,316 +733,320 @@
 msgid "Initialization of SSPI library failed"
 msgstr "Échec à l'initialisation de la librairie SSPI"
 
-#: ../include/svn_error_codes.h:851
+#: ../include/svn_error_codes.h:847
+msgid "Server SSL certificate untrusted"
+msgstr "Certificat SSL du serveur non reconnu"
+
+#: ../include/svn_error_codes.h:855
 msgid "Credential data unavailable"
 msgstr "Données d'identité (credentials) non disponibles"
 
-#: ../include/svn_error_codes.h:855
+#: ../include/svn_error_codes.h:859
 msgid "No authentication provider available"
 msgstr "Aucun fournisseur d'authentification disponible"
 
-#: ../include/svn_error_codes.h:859 ../include/svn_error_codes.h:863
+#: ../include/svn_error_codes.h:863 ../include/svn_error_codes.h:867
 msgid "All authentication providers exhausted"
 msgstr "Tous les fournisseurs d'authentifications sont épuisés"
 
-#: ../include/svn_error_codes.h:868
+#: ../include/svn_error_codes.h:872
 msgid "Authentication failed"
 msgstr "Échec de l'authentification"
 
-#: ../include/svn_error_codes.h:874
+#: ../include/svn_error_codes.h:878
 msgid "Read access denied for root of edit"
 msgstr "Accès en lecture refusé pour la racine de l'édition"
 
-#: ../include/svn_error_codes.h:879
+#: ../include/svn_error_codes.h:883
 msgid "Item is not readable"
 msgstr "Éléments non accessibles en lecture"
 
-#: ../include/svn_error_codes.h:884
+#: ../include/svn_error_codes.h:888
 msgid "Item is partially readable"
 msgstr "Certains éléments non accessibles en lecture"
 
-#: ../include/svn_error_codes.h:888
+#: ../include/svn_error_codes.h:892
 msgid "Invalid authz configuration"
 msgstr "Configuration de authz invalide"
 
-#: ../include/svn_error_codes.h:893
+#: ../include/svn_error_codes.h:897
 msgid "Item is not writable"
 msgstr "Éléments non accessibles en écriture"
 
-#: ../include/svn_error_codes.h:899
+#: ../include/svn_error_codes.h:903
 msgid "Svndiff data has invalid header"
 msgstr "Les données de svndiff contiennent un en-tête invalide"
 
-#: ../include/svn_error_codes.h:903
+#: ../include/svn_error_codes.h:907
 msgid "Svndiff data contains corrupt window"
 msgstr "Les données de svndiff contiennent une fenêtre corrompue"
 
-#: ../include/svn_error_codes.h:907
+#: ../include/svn_error_codes.h:911
 msgid "Svndiff data contains backward-sliding source view"
 msgstr "Les données de 'svndiff' contiennent une vue source glissant en arrière"
 
-#: ../include/svn_error_codes.h:911
+#: ../include/svn_error_codes.h:915
 msgid "Svndiff data contains invalid instruction"
 msgstr "Les données de svndiff contiennent une instruction invalide"
 
-#: ../include/svn_error_codes.h:915
+#: ../include/svn_error_codes.h:919
 msgid "Svndiff data ends unexpectedly"
 msgstr "Les données de svndiff se terminent de façon inattendue"
 
-#: ../include/svn_error_codes.h:919
+#: ../include/svn_error_codes.h:923
 msgid "Svndiff compressed data is invalid"
 msgstr "Les données compressées de svndiff sont invalides"
 
-#: ../include/svn_error_codes.h:925
+#: ../include/svn_error_codes.h:929
 msgid "Diff data source modified unexpectedly"
 msgstr "Modification des données sources de diff inattendue"
 
-#: ../include/svn_error_codes.h:931
+#: ../include/svn_error_codes.h:935
 msgid "Apache has no path to an SVN filesystem"
 msgstr "Apache n'a pas de chemin vers un système de fichier SVN"
 
-#: ../include/svn_error_codes.h:935
+#: ../include/svn_error_codes.h:939
 msgid "Apache got a malformed URI"
 msgstr "Apache a reçu une URI malformé"
 
-#: ../include/svn_error_codes.h:939
+#: ../include/svn_error_codes.h:943
 msgid "Activity not found"
 msgstr "Activité non trouvée"
 
-#: ../include/svn_error_codes.h:943
+#: ../include/svn_error_codes.h:947
 msgid "Baseline incorrect"
 msgstr "Ligne de base (baseline) incorrecte"
 
-#: ../include/svn_error_codes.h:947
+#: ../include/svn_error_codes.h:951
 msgid "Input/output error"
 msgstr "Erreur d'entrée/sortie"
 
-#: ../include/svn_error_codes.h:953
+#: ../include/svn_error_codes.h:957
 msgid "A path under version control is needed for this operation"
 msgstr "Un objet sous gestionnaire de version est nécessaire à cette opération"
 
-#: ../include/svn_error_codes.h:957
+#: ../include/svn_error_codes.h:961
 msgid "Repository access is needed for this operation"
 msgstr "L'accès au dépôt est nécessaire pour cette opération"
 
-#: ../include/svn_error_codes.h:961
+#: ../include/svn_error_codes.h:965
 msgid "Bogus revision information given"
 msgstr "Fausse information de révision donnée"
 
-#: ../include/svn_error_codes.h:965
+#: ../include/svn_error_codes.h:969
 msgid "Attempting to commit to a URL more than once"
 msgstr "Tentative de propager plus d'une fois à la même URL"
 
-#: ../include/svn_error_codes.h:969
+#: ../include/svn_error_codes.h:973
 msgid "Operation does not apply to binary file"
 msgstr "Opération non applicable à un fichier binaire"
 
-#: ../include/svn_error_codes.h:975
+#: ../include/svn_error_codes.h:979
 msgid "Format of an svn:externals property was invalid"
 msgstr "Format de la propriété svn:externals invalide"
 
-#: ../include/svn_error_codes.h:979
+#: ../include/svn_error_codes.h:983
 msgid "Attempting restricted operation for modified resource"
 msgstr "Tentative d'une opération protégée sur une ressource modifiée"
 
-#: ../include/svn_error_codes.h:983
+#: ../include/svn_error_codes.h:987
 msgid "Operation does not apply to directory"
 msgstr "Opération non applicable sur un répertoire"
 
-#: ../include/svn_error_codes.h:987
+#: ../include/svn_error_codes.h:991
 msgid "Revision range is not allowed"
 msgstr "Intervalle de révision non permise"
 
-#: ../include/svn_error_codes.h:991
+#: ../include/svn_error_codes.h:995
 msgid "Inter-repository relocation not allowed"
 msgstr "Relocalisation entre dépôts différents non permise"
 
-#: ../include/svn_error_codes.h:995
+#: ../include/svn_error_codes.h:999
 msgid "Author name cannot contain a newline"
 msgstr "Le nom d'auteur ne peut contenir un saut de ligne"
 
-#: ../include/svn_error_codes.h:999
+#: ../include/svn_error_codes.h:1003
 msgid "Bad property name"
 msgstr "Mauvais nom de propriété"
 
-#: ../include/svn_error_codes.h:1004
+#: ../include/svn_error_codes.h:1008
 msgid "Two versioned resources are unrelated"
 msgstr "Les deux ressources versionnées ne sont pas apparentées"
 
-#: ../include/svn_error_codes.h:1009
+#: ../include/svn_error_codes.h:1013
 msgid "Path has no lock token"
 msgstr "Chemin sans verrou"
 
-#: ../include/svn_error_codes.h:1014
+#: ../include/svn_error_codes.h:1018
 msgid "Operation does not support multiple sources"
 msgstr "Opération ne supportant pas des sources multiples"
 
-#: ../include/svn_error_codes.h:1019
+#: ../include/svn_error_codes.h:1023
 msgid "No versioned parent directories"
 msgstr "Pas de répertoire parent versionné"
 
-#: ../include/svn_error_codes.h:1024
+#: ../include/svn_error_codes.h:1028
 msgid "Working copy and merge source not ready for reintegration"
 msgstr "Copie de travail et source du merge non prêt pour une réintégration"
 
-#: ../include/svn_error_codes.h:1030
+#: ../include/svn_error_codes.h:1034
 msgid "A problem occurred; see later errors for details"
 msgstr "Une erreur est survenue; voir erreurs suivantes pour plus de détails"
 
-#: ../include/svn_error_codes.h:1034
+#: ../include/svn_error_codes.h:1038
 msgid "Failure loading plugin"
 msgstr "Erreur lors du chargement du plugin"
 
-#: ../include/svn_error_codes.h:1038
+#: ../include/svn_error_codes.h:1042
 msgid "Malformed file"
 msgstr "Fichier malformé"
 
-#: ../include/svn_error_codes.h:1042
+#: ../include/svn_error_codes.h:1046
 msgid "Incomplete data"
 msgstr "Données incomplètes"
 
-#: ../include/svn_error_codes.h:1046
+#: ../include/svn_error_codes.h:1050
 msgid "Incorrect parameters given"
 msgstr "Paramètres fournis incorrects"
 
-#: ../include/svn_error_codes.h:1050
+#: ../include/svn_error_codes.h:1054
 msgid "Tried a versioning operation on an unversioned resource"
 msgstr "Essai d'une opération sur une ressource non versionnée"
 
-#: ../include/svn_error_codes.h:1054
+#: ../include/svn_error_codes.h:1058
 msgid "Test failed"
 msgstr "Test échoué"
 
-#: ../include/svn_error_codes.h:1058
+#: ../include/svn_error_codes.h:1062
 msgid "Trying to use an unsupported feature"
 msgstr "Tentative d'utilisation d'une fonction non supportée"
 
-#: ../include/svn_error_codes.h:1062
+#: ../include/svn_error_codes.h:1066
 msgid "Unexpected or unknown property kind"
 msgstr "Type de propriété inattendu ou inconnu"
 
-#: ../include/svn_error_codes.h:1066
+#: ../include/svn_error_codes.h:1070
 msgid "Illegal target for the requested operation"
 msgstr "Cible illégale pour l'opération demandée"
 
-#: ../include/svn_error_codes.h:1070
+#: ../include/svn_error_codes.h:1074
 msgid "MD5 checksum is missing"
 msgstr "Somme de contrôle MD5 manquante"
 
-#: ../include/svn_error_codes.h:1074
+#: ../include/svn_error_codes.h:1078
 msgid "Directory needs to be empty but is not"
 msgstr "Un répertoire doit être vide mais ne l'est pas"
 
-#: ../include/svn_error_codes.h:1078
+#: ../include/svn_error_codes.h:1082
 msgid "Error calling external program"
 msgstr "Erreur lors de l'appel d'un programme externe"
 
-#: ../include/svn_error_codes.h:1082
+#: ../include/svn_error_codes.h:1086
 msgid "Python exception has been set with the error"
 msgstr "L'exception de Python a été levée avec l'erreur"
 
-#: ../include/svn_error_codes.h:1086
+#: ../include/svn_error_codes.h:1090
 msgid "A checksum mismatch occurred"
 msgstr "Sommes de contrôle différentes"
 
-#: ../include/svn_error_codes.h:1090
+#: ../include/svn_error_codes.h:1094
 msgid "The operation was interrupted"
 msgstr "Opération interrompue"
 
-#: ../include/svn_error_codes.h:1094
+#: ../include/svn_error_codes.h:1098
 msgid "The specified diff option is not supported"
 msgstr "L'option fournie à diff n'est pas supportée"
 
-#: ../include/svn_error_codes.h:1098
+#: ../include/svn_error_codes.h:1102
 msgid "Property not found"
 msgstr "Propriété non trouvée"
 
-#: ../include/svn_error_codes.h:1102
+#: ../include/svn_error_codes.h:1106
 msgid "No auth file path available"
 msgstr "Pas de chemin de fichier d'authentification (auth file) disponible"
 
-#: ../include/svn_error_codes.h:1107
+#: ../include/svn_error_codes.h:1111
 msgid "Incompatible library version"
 msgstr "Version de librairie incompatible"
 
-#: ../include/svn_error_codes.h:1112
+#: ../include/svn_error_codes.h:1116
 msgid "Mergeinfo parse error"
 msgstr "Mergeinfo : erreur de syntaxe"
 
-#: ../include/svn_error_codes.h:1117
+#: ../include/svn_error_codes.h:1121
 msgid "Cease invocation of this API"
 msgstr "Cesse l'invocation de cette API"
 
-#: ../include/svn_error_codes.h:1122
+#: ../include/svn_error_codes.h:1126
 msgid "Error parsing revision number"
 msgstr "Erreur de syntaxe sur le numéro révision"
 
-#: ../include/svn_error_codes.h:1127
+#: ../include/svn_error_codes.h:1131
 msgid "Iteration terminated before completion"
 msgstr "Itérations arrêtées avant la fin"
 
-#: ../include/svn_error_codes.h:1132
+#: ../include/svn_error_codes.h:1136
 msgid "Unknown changelist"
 msgstr "Liste de changements inconnue"
 
-#: ../include/svn_error_codes.h:1137
+#: ../include/svn_error_codes.h:1141
 msgid "Reserved directory name in command line arguments"
 msgstr "Nom de répertoire réservé en argument de la ligne de commande"
 
-#: ../include/svn_error_codes.h:1142
+#: ../include/svn_error_codes.h:1146
 msgid "Inquiry about unknown capability"
 msgstr "Demande concernant une capacité inconnue"
 
-#: ../include/svn_error_codes.h:1148
+#: ../include/svn_error_codes.h:1152
 msgid "Error parsing arguments"
 msgstr "Erreur lors de l'analyse des arguments"
 
-#: ../include/svn_error_codes.h:1152
+#: ../include/svn_error_codes.h:1156
 msgid "Not enough arguments provided"
 msgstr "Nombre d'arguments insuffisant"
 
-#: ../include/svn_error_codes.h:1156
+#: ../include/svn_error_codes.h:1160
 msgid "Mutually exclusive arguments specified"
 msgstr "Arguments mutuellement exclusifs fournis"
 
-#: ../include/svn_error_codes.h:1160
+#: ../include/svn_error_codes.h:1164
 msgid "Attempted command in administrative dir"
 msgstr "Commande essayée sur un répertoire d'administration"
 
-#: ../include/svn_error_codes.h:1164
+#: ../include/svn_error_codes.h:1168
 msgid "The log message file is under version control"
 msgstr "Le fichier pour l'entrée du journal est sous gestionnaire de version"
 
-#: ../include/svn_error_codes.h:1168
+#: ../include/svn_error_codes.h:1172
 msgid "The log message is a pathname"
 msgstr "L'entrée du journal est un chemin de fichier"
 
-#: ../include/svn_error_codes.h:1172
+#: ../include/svn_error_codes.h:1176
 msgid "Committing in directory scheduled for addition"
 msgstr "Propagation dans un répertoire qui doit être ajouté"
 
-#: ../include/svn_error_codes.h:1176
+#: ../include/svn_error_codes.h:1180
 msgid "No external editor available"
 msgstr "Pas d'éditeur externe disponible"
 
-#: ../include/svn_error_codes.h:1180
+#: ../include/svn_error_codes.h:1184
 msgid "Something is wrong with the log message's contents"
 msgstr "Quelque chose ne va pas dans l'entrée du journal"
 
-#: ../include/svn_error_codes.h:1184
+#: ../include/svn_error_codes.h:1188
 msgid "A log message was given where none was necessary"
 msgstr "Message de journal fourni alors qu'aucun n'était nécessaire"
 
-#: ../include/svn_error_codes.h:1188
+#: ../include/svn_error_codes.h:1192
 msgid "No external merge tool available"
 msgstr "Aucun éditeur externe de fusion disponible"
 
-#: ../libsvn_client/add.c:348 ../libsvn_wc/copy.c:188
+#: ../libsvn_client/add.c:350 ../libsvn_wc/copy.c:188
 #, c-format
 msgid "Can't close directory '%s'"
 msgstr "Le répertoire '%s' ne peut être fermé"
 
-#: ../libsvn_client/add.c:356
+#: ../libsvn_client/add.c:358
 #, c-format
 msgid "Error during add of '%s'"
 msgstr "Erreur lors de l'ajout de '%s'"
@@ -1113,15 +1117,15 @@
 msgid "'%s' does not exist"
 msgstr "'%s' n'existe pas"
 
-#: ../libsvn_client/commit.c:634 ../libsvn_client/copy.c:518
+#: ../libsvn_client/commit.c:634 ../libsvn_client/copy.c:513
 #: ../svnlook/main.c:1271
 #, c-format
 msgid "Path '%s' does not exist"
 msgstr "Le chemin '%s' n'existe pas"
 
-#: ../libsvn_client/commit.c:769 ../libsvn_client/copy.c:527
-#: ../libsvn_client/copy.c:917 ../libsvn_client/copy.c:1158
-#: ../libsvn_client/copy.c:1585
+#: ../libsvn_client/commit.c:769 ../libsvn_client/copy.c:522
+#: ../libsvn_client/copy.c:912 ../libsvn_client/copy.c:1153
+#: ../libsvn_client/copy.c:1580
 #, c-format
 msgid "Path '%s' already exists"
 msgstr "Le chemin '%s' existe déjà"
@@ -1131,7 +1135,7 @@
 msgid "'%s' is a reserved name and cannot be imported"
 msgstr "'%s' est un nom réservé et ne peut être importé"
 
-#: ../libsvn_client/commit.c:917 ../libsvn_client/copy.c:1325
+#: ../libsvn_client/commit.c:917 ../libsvn_client/copy.c:1320
 msgid "Commit failed (details follow):"
 msgstr "Échec de la propagation (commit), détails : "
 
@@ -1229,76 +1233,76 @@
 msgid "Standard properties can't be set explicitly as revision properties"
 msgstr "Les propriétés standards ne peuvent être définies explicitement comme des propriétés de révision"
 
-#: ../libsvn_client/copy.c:543 ../libsvn_client/copy.c:1601
+#: ../libsvn_client/copy.c:538 ../libsvn_client/copy.c:1596
 #: ../libsvn_client/update.c:140
 #, c-format
 msgid "Path '%s' is not a directory"
 msgstr "Le chemin '%s' n'est pas un répertoire"
 
-#: ../libsvn_client/copy.c:783
+#: ../libsvn_client/copy.c:778
 #, c-format
 msgid "Source and dest appear not to be in the same repository (src: '%s'; dst: '%s')"
 msgstr "Source et destination ne sont pas dans le même dépôt (src = '%s', dst = '%s')"
 
-#: ../libsvn_client/copy.c:898
+#: ../libsvn_client/copy.c:893
 #, c-format
 msgid "Cannot move URL '%s' into itself"
 msgstr "L'URL '%s' ne peut être déplacée (move) dans elle-même"
 
-#: ../libsvn_client/copy.c:907 ../libsvn_client/prop_commands.c:237
+#: ../libsvn_client/copy.c:902 ../libsvn_client/prop_commands.c:249
 #, c-format
 msgid "Path '%s' does not exist in revision %ld"
 msgstr "Le chemin '%s' n'existe pas à la révision %ld"
 
-#: ../libsvn_client/copy.c:1424
+#: ../libsvn_client/copy.c:1419
 #, c-format
 msgid "Source URL '%s' is from foreign repository; leaving it as a disjoint WC"
 msgstr "L'URL source '%s' est dans un dépôt distant ; laissée comme une copie disjointe"
 
-#: ../libsvn_client/copy.c:1572
+#: ../libsvn_client/copy.c:1567
 #, c-format
 msgid "Path '%s' not found in revision %ld"
 msgstr "Chemin '%s' non trouvé à la révision %ld"
 
-#: ../libsvn_client/copy.c:1577
+#: ../libsvn_client/copy.c:1572
 #, c-format
 msgid "Path '%s' not found in head revision"
 msgstr "Chemin '%s' non trouvé à la révision de tête"
 
-#: ../libsvn_client/copy.c:1627
+#: ../libsvn_client/copy.c:1622
 #, c-format
 msgid "Entry for '%s' exists (though the working file is missing)"
 msgstr "L'entrée pour '%s' existe (mais la copie locale manque)"
 
-#: ../libsvn_client/copy.c:1719 ../libsvn_client/diff.c:1694
-#: ../libsvn_client/log.c:334
+#: ../libsvn_client/copy.c:1712 ../libsvn_client/diff.c:1724
+#: ../libsvn_client/log.c:335
 msgid "Revision type requires a working copy path, not a URL"
 msgstr "Type de révision qui requiert un chemin dans une copie locale, pas une URL"
 
-#: ../libsvn_client/copy.c:1764
+#: ../libsvn_client/copy.c:1757
 msgid "Cannot mix repository and working copy sources"
 msgstr "Impossible de mélanger des sources du dépôt et de la copie de travail"
 
-#: ../libsvn_client/copy.c:1807
+#: ../libsvn_client/copy.c:1800
 #, c-format
 msgid "Cannot copy path '%s' into its own child '%s'"
 msgstr "Le chemin '%s' ne peut être copié dans son propre enfant '%s'"
 
-#: ../libsvn_client/copy.c:1827
+#: ../libsvn_client/copy.c:1820
 #, c-format
 msgid "Cannot move path '%s' into itself"
 msgstr "Le chemin '%s' ne peut être déplacé dans lui-même"
 
-#: ../libsvn_client/copy.c:1836
+#: ../libsvn_client/copy.c:1829
 msgid "Moves between the working copy and the repository are not supported"
 msgstr "Les déplacements (move) entre copie de travail et dépôt ne sont pas supportés"
 
-#: ../libsvn_client/copy.c:1899
+#: ../libsvn_client/copy.c:1892
 #, c-format
 msgid "'%s' does not have a URL associated with it"
 msgstr "'%s' n'a pas d'URL associée"
 
-#: ../libsvn_client/copy.c:2269 ../svn/move-cmd.c:61
+#: ../libsvn_client/copy.c:2262 ../svn/move-cmd.c:61
 msgid "Cannot specify revisions (except HEAD) with move operations"
 msgstr "L'opération 'move' n'accepte d'autre révision que HEAD"
 
@@ -1309,7 +1313,7 @@
 
 #: ../libsvn_client/delete.c:67 ../libsvn_wc/adm_ops.c:2955
 #: ../libsvn_wc/entries.c:1272 ../libsvn_wc/entries.c:2383
-#: ../libsvn_wc/entries.c:3005 ../libsvn_wc/update_editor.c:2375
+#: ../libsvn_wc/entries.c:3005 ../libsvn_wc/update_editor.c:2394
 #, c-format
 msgid "'%s' is not under version control"
 msgstr "'%s' n'est pas versionné"
@@ -1355,12 +1359,12 @@
 msgid "Modified: %s%s"
 msgstr "Modifié : %s%s"
 
-#: ../libsvn_client/diff.c:352
+#: ../libsvn_client/diff.c:366
 #, c-format
 msgid "%s\t(revision %ld)"
 msgstr "%s\t(révision %ld)"
 
-#: ../libsvn_client/diff.c:354
+#: ../libsvn_client/diff.c:368
 #, c-format
 msgid "%s\t(working copy)"
 msgstr "%s\t(copie de travail)"
@@ -1370,34 +1374,34 @@
 msgid "Cannot display: file marked as a binary type.%s"
 msgstr "Impossible d'afficher : fichier considéré comme binaire.%s"
 
-#: ../libsvn_client/diff.c:894 ../libsvn_client/merge.c:3785
-#: ../libsvn_client/merge.c:5123
+#: ../libsvn_client/diff.c:881 ../libsvn_client/merge.c:3703
+#: ../libsvn_client/merge.c:4970
 msgid "Not all required revisions are specified"
 msgstr "Toutes les révisions requises ne sont pas précisées"
 
-#: ../libsvn_client/diff.c:909
+#: ../libsvn_client/diff.c:896
 msgid "At least one revision must be non-local for a pegged diff"
 msgstr "Au moins une révision ne doit pas être locale pour un diff avec révision fixée"
 
-#: ../libsvn_client/diff.c:1021 ../libsvn_client/diff.c:1033
+#: ../libsvn_client/diff.c:1008 ../libsvn_client/diff.c:1020
 #, c-format
 msgid "'%s' was not found in the repository at revision %ld"
 msgstr "'%s' n'existe pas dans le dépôt à la révision %ld"
 
-#: ../libsvn_client/diff.c:1092
+#: ../libsvn_client/diff.c:1079
 msgid "Sorry, svn_client_diff4 was called in a way that is not yet supported"
 msgstr "Désolé, appel de svn_client_diff4 de manière non encore supportée"
 
-#: ../libsvn_client/diff.c:1133
+#: ../libsvn_client/diff.c:1119
 msgid "Only diffs between a path's text-base and its working files are supported at this time"
 msgstr "Seules les différences entre des copies de référence et leurs fichiers de travail sont supportées pour l'instant"
 
-#: ../libsvn_client/diff.c:1279 ../libsvn_client/switch.c:126
+#: ../libsvn_client/diff.c:1264 ../libsvn_client/switch.c:126
 #, c-format
 msgid "Directory '%s' has no URL"
 msgstr "Le répertoire '%s' n'a pas d'URL associée"
 
-#: ../libsvn_client/diff.c:1493
+#: ../libsvn_client/diff.c:1475
 msgid "Summarizing diff can only compare repository to repository"
 msgstr "Le diff résumé compare seulement un dépôt à un autre"
 
@@ -1421,7 +1425,7 @@
 msgstr "'%s' existe déjà"
 
 #: ../libsvn_client/export.c:725 ../libsvn_wc/adm_crawler.c:1092
-#: ../libsvn_wc/update_editor.c:2059 ../libsvn_wc/update_editor.c:2725
+#: ../libsvn_wc/update_editor.c:2078 ../libsvn_wc/update_editor.c:2746
 #, c-format
 msgid "Checksum mismatch for '%s'; expected: '%s', actual: '%s'"
 msgstr "Sommes de contrôle différentes pour '%s' ; '%s' attendu, '%s' obtenu"
@@ -1456,6 +1460,11 @@
 msgid "Traversal of '%s' found no ambient depth"
 msgstr "Traversée de '%s' sans profondeur dans le contexte"
 
+#: ../libsvn_client/externals.c:821
+#, c-format
+msgid "'%s' is not a URL"
+msgstr "'%s' n'est pas une URL"
+
 #: ../libsvn_client/info.c:420
 #, c-format
 msgid "Server does not support retrieving information about the repository root"
@@ -1476,9 +1485,9 @@
 msgid "No common parent found, unable to operate on disjoint arguments"
 msgstr "Aucun parent commun trouvé, impossible de travailler avec des arguments disjoints"
 
-#: ../libsvn_client/locking_commands.c:261 ../libsvn_client/merge.c:5140
-#: ../libsvn_client/merge.c:5146 ../libsvn_client/merge.c:5700
-#: ../libsvn_client/merge.c:5856 ../libsvn_client/ra.c:386
+#: ../libsvn_client/locking_commands.c:261 ../libsvn_client/merge.c:4987
+#: ../libsvn_client/merge.c:4993 ../libsvn_client/merge.c:5564
+#: ../libsvn_client/merge.c:5720 ../libsvn_client/ra.c:386
 #: ../libsvn_client/ra.c:423 ../libsvn_client/ra.c:626
 #, c-format
 msgid "'%s' has no URL"
@@ -1499,7 +1508,7 @@
 msgstr "'%s' n'est pas verrouillé"
 
 #: ../libsvn_client/locking_commands.c:407 ../libsvn_fs/fs-loader.c:1035
-#: ../libsvn_ra/ra_loader.c:1125
+#: ../libsvn_ra/ra_loader.c:1127
 msgid "Lock comment contains illegal characters"
 msgstr "Le commentaire du verrou (lock) contient des caractères incorrects"
 
@@ -1507,17 +1516,17 @@
 msgid "Missing required revision specification"
 msgstr "Précision de la révision obligatoire"
 
-#: ../libsvn_client/log.c:371
+#: ../libsvn_client/log.c:372
 msgid "When specifying working copy paths, only one target may be given"
 msgstr "Une seule cible à préciser pour un chemin dans une copie de travail"
 
-#: ../libsvn_client/log.c:394 ../libsvn_client/status.c:296
+#: ../libsvn_client/log.c:395 ../libsvn_client/status.c:296
 #: ../libsvn_client/update.c:154
 #, c-format
 msgid "Entry '%s' has no URL"
 msgstr "L'entrée '%s' n'a pas d'URL associée"
 
-#: ../libsvn_client/log.c:647
+#: ../libsvn_client/log.c:645
 msgid "No commits in repository"
 msgstr "Pas de propagation dans le dépôt"
 
@@ -1539,25 +1548,25 @@
 #. xgettext: the '.working', '.merge-left.r%ld' and
 #. '.merge-right.r%ld' strings are used to tag onto a file
 #. name in case of a merge conflict
-#: ../libsvn_client/merge.c:758
+#: ../libsvn_client/merge.c:747
 msgid ".working"
 msgstr ".courant"
 
-#: ../libsvn_client/merge.c:760
+#: ../libsvn_client/merge.c:749
 #, c-format
 msgid ".merge-left.r%ld"
 msgstr ".fusion-gauche.r%ld"
 
-#: ../libsvn_client/merge.c:763
+#: ../libsvn_client/merge.c:752
 #, c-format
 msgid ".merge-right.r%ld"
 msgstr ".fusion-droit.r%ld"
 
-#: ../libsvn_client/merge.c:1676
+#: ../libsvn_client/merge.c:1666
 msgid "Cannot reverse-merge a range from a path's own future history; try updating first"
 msgstr "Impossible de fusionner un intervalle inversé à partir du futur du chemin considéré ; essayer une mise à jour d'abord"
 
-#: ../libsvn_client/merge.c:2209
+#: ../libsvn_client/merge.c:2158
 #, c-format
 msgid ""
 "One or more conflicts were produced while merging r%ld:%ld into\n"
@@ -1570,45 +1579,45 @@
 "résoudre tous les conflits et ré-exécuter la fusion (merge) pour \n"
 "appliquer les révisions non-fusionnées restantes"
 
-#: ../libsvn_client/merge.c:4771
+#: ../libsvn_client/merge.c:4666
 msgid "Use of two URLs is not compatible with mergeinfo modification"
 msgstr "L'utilisation de deux URLs n'est pas compatible avec la modification des informations de fusion 'mergeinfo'"
 
-#: ../libsvn_client/merge.c:4778 ../libsvn_client/merge.c:5061
+#: ../libsvn_client/merge.c:4673 ../libsvn_client/merge.c:4908
 msgid "Merge from foreign repository is not compatible with mergeinfo modification"
 msgstr "La fusion à partir d'un autre dépôt n'est pas compatible avec la modification des informations de fusion 'mergeinfo'"
 
-#: ../libsvn_client/merge.c:5367
+#: ../libsvn_client/merge.c:5214
 msgid "Cannot reintegrate into a working copy with a switched subtree"
 msgstr "Impossible de réintégrer dans une copie de travail avec un sous-arbre ré-aiguillé"
 
-#: ../libsvn_client/merge.c:5372
+#: ../libsvn_client/merge.c:5219
 msgid "Cannot reintegrate into a working copy not entirely at infinite depth"
 msgstr "Impossible de reintégrer dans une copie de travail de profondeur partielle"
 
-#: ../libsvn_client/merge.c:5377
+#: ../libsvn_client/merge.c:5224
 msgid "Cannot reintegrate into a working copy that has local modifications"
 msgstr "Impossible de réintégrer dans une copie de travail avec des modifications locales"
 
-#: ../libsvn_client/merge.c:5383
+#: ../libsvn_client/merge.c:5230
 msgid "Cannot determine revision of working copy"
 msgstr "Impossible de déterminer la révision de la copie de travail"
 
-#: ../libsvn_client/merge.c:5387
+#: ../libsvn_client/merge.c:5234
 msgid "Cannot reintegrate into mixed-revision working copy; try updating first"
 msgstr "Impossible de reintégrer dans un copie de travail avec des révisions multiples ; Faire une mise à jour (update) d'abord"
 
-#: ../libsvn_client/merge.c:5454
+#: ../libsvn_client/merge.c:5301
 #, c-format
 msgid "At least one revision (r%ld) not yet merged from '%s'"
 msgstr "Au moins une révision (r%ld) non encore fusionnée à partir de '%s'"
 
-#: ../libsvn_client/merge.c:5595 ../libsvn_client/merge.c:5759
+#: ../libsvn_client/merge.c:5459 ../libsvn_client/merge.c:5623
 #, c-format
 msgid "'%s@%ld' must be ancestrally related to '%s@%ld'"
 msgstr "'%s@%ld' doit un ancêtre de '%s@%ld'"
 
-#: ../libsvn_client/merge.c:5718
+#: ../libsvn_client/merge.c:5582
 #, c-format
 msgid "'%s' must be from the same repository as '%s'"
 msgstr "'%s' doit être dans le même dépôt que '%s'"
@@ -1618,46 +1627,46 @@
 msgid "'%s' is a wcprop, thus not accessible to clients"
 msgstr "'%s' est une propriété de copie de travail donc inaccessible aux clients"
 
-#: ../libsvn_client/prop_commands.c:224
+#: ../libsvn_client/prop_commands.c:236
 #, c-format
 msgid "Property '%s' is not a regular property"
 msgstr "La propriété de révision '%s' n'est pas une propriété connue"
 
-#: ../libsvn_client/prop_commands.c:326
+#: ../libsvn_client/prop_commands.c:338
 #, c-format
 msgid "Revision property '%s' not allowed in this context"
 msgstr "Propriéte de révision '%s' non permise dans ce contexte"
 
-#: ../libsvn_client/prop_commands.c:333 ../libsvn_client/prop_commands.c:472
+#: ../libsvn_client/prop_commands.c:345 ../libsvn_client/prop_commands.c:486
 #, c-format
 msgid "Bad property name: '%s'"
 msgstr "Nom de propriété invalide : '%s'"
 
-#: ../libsvn_client/prop_commands.c:343
+#: ../libsvn_client/prop_commands.c:355
 #, c-format
 msgid "Setting property on non-local target '%s' needs a base revision"
 msgstr "Définir une propriété sur une cible non locale '%s' nécessite une révision de base"
 
-#: ../libsvn_client/prop_commands.c:348
+#: ../libsvn_client/prop_commands.c:360
 #, c-format
 msgid "Setting property recursively on non-local target '%s' is not supported"
 msgstr "Impossible de définir récursivement une propriété pour une cible non locale '%s'"
 
-#: ../libsvn_client/prop_commands.c:363
+#: ../libsvn_client/prop_commands.c:375
 #, c-format
 msgid "Setting property '%s' on non-local target '%s' is not supported"
 msgstr "Impossible de définir la propriété '%s' pour une cible non locale '%s'"
 
-#: ../libsvn_client/prop_commands.c:468
+#: ../libsvn_client/prop_commands.c:482
 msgid "Value will not be set unless forced"
 msgstr "Valeur non utilisée sauf en forçant"
 
-#: ../libsvn_client/prop_commands.c:649
+#: ../libsvn_client/prop_commands.c:663
 #, c-format
 msgid "'%s' does not exist in revision %ld"
 msgstr "'%s' n'existe pas à la révision %ld"
 
-#: ../libsvn_client/prop_commands.c:656 ../libsvn_client/prop_commands.c:995
+#: ../libsvn_client/prop_commands.c:670 ../libsvn_client/prop_commands.c:1009
 #, c-format
 msgid "Unknown node kind for '%s'"
 msgstr "Type de nœud inconnu pour '%s'"
@@ -1698,7 +1707,7 @@
 msgstr "Type de révision demandé inconnu pour '%s'"
 
 #: ../libsvn_client/switch.c:144 ../libsvn_ra_local/ra_plugin.c:196
-#: ../libsvn_ra_local/ra_plugin.c:271 ../libsvn_wc/update_editor.c:3245
+#: ../libsvn_ra_local/ra_plugin.c:271 ../libsvn_wc/update_editor.c:3266
 #, c-format
 msgid ""
 "'%s'\n"
@@ -1912,12 +1921,12 @@
 msgid "reading copy"
 msgstr "lisant la copie"
 
-#: ../libsvn_fs_base/bdb/node-origins-table.c:110
+#: ../libsvn_fs_base/bdb/node-origins-table.c:111
 #, c-format
 msgid "Node origin for '%s' exists in filesystem '%s' with a different value (%s) than what we were about to store (%s)"
 msgstr "Le nœud origine pour '%s' existe dans le système de fichier '%s' avec une valeur (%s) différente de ce que nous allions stocker (%s)"
 
-#: ../libsvn_fs_base/bdb/node-origins-table.c:120
+#: ../libsvn_fs_base/bdb/node-origins-table.c:121
 msgid "storing node-origins record"
 msgstr "sauvegarde des enregistrements d'origines de nœud"
 
@@ -2854,8 +2863,8 @@
 msgid "Mismatched RA version for '%s': found %d.%d.%d%s, expected %d.%d.%d%s"
 msgstr "Problème de version de module RA pour '%s': %d.%d.%d%s trouvé, %d.%d.%d%s attendu"
 
-#: ../libsvn_ra/ra_loader.c:408 ../libsvn_ra_serf/serf.c:481
-#: ../libsvn_ra_serf/serf.c:595
+#: ../libsvn_ra/ra_loader.c:408 ../libsvn_ra_serf/serf.c:507
+#: ../libsvn_ra_serf/serf.c:625
 #, c-format
 msgid "Illegal repository URL '%s'"
 msgstr "URL de dépôt svn illégale '%s'"
@@ -2874,12 +2883,12 @@
 msgid "'%s' isn't in the same repository as '%s'"
 msgstr "'%s' n'est pas dans le même dépôt que '%s'"
 
-#: ../libsvn_ra/ra_loader.c:1284
+#: ../libsvn_ra/ra_loader.c:1286
 #, c-format
 msgid "  - handles '%s' scheme\n"
 msgstr "  - gère le schéma d'URL '%s'\n"
 
-#: ../libsvn_ra/ra_loader.c:1370
+#: ../libsvn_ra/ra_loader.c:1372
 #, c-format
 msgid "Unrecognized URL scheme '%s'"
 msgstr "Schéma d'URL non reconnu '%s'"
@@ -2904,13 +2913,13 @@
 msgid "URL '%s' is not a child of the session's repository root URL '%s'"
 msgstr "l'URL '%s' n'est pas descendante de l'URL du dépôt racine '%s'"
 
-#: ../libsvn_ra_local/ra_plugin.c:1372 ../libsvn_ra_neon/session.c:913
-#: ../libsvn_ra_serf/serf.c:292 ../libsvn_ra_svn/client.c:2246
+#: ../libsvn_ra_local/ra_plugin.c:1373 ../libsvn_ra_neon/session.c:922
+#: ../libsvn_ra_serf/serf.c:300 ../libsvn_ra_svn/client.c:2258
 #, c-format
 msgid "Don't know anything about capability '%s'"
 msgstr "Pas d'information à propos de la capacité '%s'"
 
-#: ../libsvn_ra_local/ra_plugin.c:1450
+#: ../libsvn_ra_local/ra_plugin.c:1451
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_local"
 msgstr "Version %d du chargeur RA (accès dépôt) non supporté pour ra_local"
@@ -2977,7 +2986,7 @@
 msgid "Could not save file"
 msgstr "Impossible de sauvegarder le fichier"
 
-#: ../libsvn_ra_neon/fetch.c:764 ../libsvn_ra_svn/client.c:960
+#: ../libsvn_ra_neon/fetch.c:764 ../libsvn_ra_svn/client.c:969
 #, c-format
 msgid ""
 "Checksum mismatch for '%s':\n"
@@ -2996,97 +3005,97 @@
 msgid "DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent"
 msgstr "Échec de la requête DAV ; il est possible que la procédure automatique du dépôt 'pre-revprop-change' ait échouée ou n'existe pas"
 
-#: ../libsvn_ra_neon/fetch.c:1420
+#: ../libsvn_ra_neon/fetch.c:1422
 #, c-format
 msgid "Missing rev attr in target-revision element"
 msgstr "Attribut révision 'rev' manquant dans un élément 'target-revision'"
 
-#: ../libsvn_ra_neon/fetch.c:1431 ../libsvn_ra_serf/update.c:1466
+#: ../libsvn_ra_neon/fetch.c:1433 ../libsvn_ra_serf/update.c:1466
 #, c-format
 msgid "Missing name attr in absent-directory element"
 msgstr "Attribut nom 'name' manquant dans un élément 'absent-directory'"
 
-#: ../libsvn_ra_neon/fetch.c:1447 ../libsvn_ra_serf/update.c:1489
+#: ../libsvn_ra_neon/fetch.c:1449 ../libsvn_ra_serf/update.c:1489
 #, c-format
 msgid "Missing name attr in absent-file element"
 msgstr "Attribut nom 'name' manquant dans un élément 'absent-directory'"
 
-#: ../libsvn_ra_neon/fetch.c:1462
+#: ../libsvn_ra_neon/fetch.c:1464
 #, c-format
 msgid "Missing path attr in resource element"
 msgstr "Attribut 'path' manquant dans une propriété de révision"
 
-#: ../libsvn_ra_neon/fetch.c:1471
+#: ../libsvn_ra_neon/fetch.c:1473
 #, c-format
 msgid "Missing rev attr in open-directory element"
 msgstr "Attribut révision 'rev' manquant dans un élément 'open-directory'"
 
-#: ../libsvn_ra_neon/fetch.c:1502 ../libsvn_ra_serf/replay.c:255
+#: ../libsvn_ra_neon/fetch.c:1504 ../libsvn_ra_serf/replay.c:255
 #: ../libsvn_ra_serf/update.c:1295
 #, c-format
 msgid "Missing name attr in open-directory element"
 msgstr "Attribut nom 'name' manquant dans un élément 'open-directory'"
 
-#: ../libsvn_ra_neon/fetch.c:1529 ../libsvn_ra_serf/replay.c:281
+#: ../libsvn_ra_neon/fetch.c:1531 ../libsvn_ra_serf/replay.c:281
 #: ../libsvn_ra_serf/update.c:1330
 #, c-format
 msgid "Missing name attr in add-directory element"
 msgstr "Attribut nom 'name' manquant dans un élément 'add-directory'"
 
-#: ../libsvn_ra_neon/fetch.c:1542
+#: ../libsvn_ra_neon/fetch.c:1544
 #, c-format
 msgid "Missing copyfrom-rev attr in add-directory element"
 msgstr "Attribut 'copyfrom-rev' manquant dans un élément 'add-directory'"
 
-#: ../libsvn_ra_neon/fetch.c:1619
+#: ../libsvn_ra_neon/fetch.c:1621
 #, c-format
 msgid "Missing rev attr in open-file element"
 msgstr "Attribut révision 'rev' manquant dans un élément 'open-file'"
 
-#: ../libsvn_ra_neon/fetch.c:1626 ../libsvn_ra_serf/replay.c:316
+#: ../libsvn_ra_neon/fetch.c:1628 ../libsvn_ra_serf/replay.c:316
 #: ../libsvn_ra_serf/update.c:1370
 #, c-format
 msgid "Missing name attr in open-file element"
 msgstr "Attribut nom 'name' manquant dans un élément 'open-file'"
 
-#: ../libsvn_ra_neon/fetch.c:1652 ../libsvn_ra_serf/replay.c:342
+#: ../libsvn_ra_neon/fetch.c:1654 ../libsvn_ra_serf/replay.c:342
 #: ../libsvn_ra_serf/update.c:1405
 #, c-format
 msgid "Missing name attr in add-file element"
 msgstr "Attribut nom 'name' manquant dans un élément 'add-file'"
 
-#: ../libsvn_ra_neon/fetch.c:1665
+#: ../libsvn_ra_neon/fetch.c:1667
 #, c-format
 msgid "Missing copyfrom-rev attr in add-file element"
 msgstr "Attribut 'copyfrom-rev' manquant dans un élément 'add-file'"
 
-#: ../libsvn_ra_neon/fetch.c:1720
+#: ../libsvn_ra_neon/fetch.c:1722
 #, c-format
 msgid "Missing name attr in set-prop element"
 msgstr "Attribut nom 'name' manquant dans un élément 'set-prop'"
 
-#: ../libsvn_ra_neon/fetch.c:1734
+#: ../libsvn_ra_neon/fetch.c:1736
 #, c-format
 msgid "Missing name attr in remove-prop element"
 msgstr "Attribut nom 'name' manquant dans élément 'remove-prop'"
 
-#: ../libsvn_ra_neon/fetch.c:1808 ../libsvn_ra_serf/replay.c:229
+#: ../libsvn_ra_neon/fetch.c:1810 ../libsvn_ra_serf/replay.c:229
 #: ../libsvn_ra_serf/update.c:1435
 #, c-format
 msgid "Missing name attr in delete-entry element"
 msgstr "Attribut nom 'name' manquant dans un élément 'delete-entry'"
 
-#: ../libsvn_ra_neon/fetch.c:1970
+#: ../libsvn_ra_neon/fetch.c:1972
 #, c-format
 msgid "Error writing to '%s': unexpected EOF"
 msgstr "Erreur d'écriture sur '%s' : fin de fichier (EOF) inattendue"
 
-#: ../libsvn_ra_neon/fetch.c:2117
+#: ../libsvn_ra_neon/fetch.c:2119
 #, c-format
 msgid "Unknown XML encoding: '%s'"
 msgstr "Encodage XML inconnu : '%s'"
 
-#: ../libsvn_ra_neon/fetch.c:2416
+#: ../libsvn_ra_neon/fetch.c:2418
 #, c-format
 msgid "REPORT response handling failed to complete the editor drive"
 msgstr "La gestion de la réponse au REPORT n'a pas clos le baton d'édition"
@@ -3112,7 +3121,7 @@
 msgstr "Réponse du serveur invalide pour une requête de révisions basées sur des dates"
 
 #: ../libsvn_ra_neon/get_location_segments.c:118
-#: ../libsvn_ra_serf/getlocationsegments.c:101 ../libsvn_ra_svn/client.c:1575
+#: ../libsvn_ra_serf/getlocationsegments.c:101 ../libsvn_ra_svn/client.c:1584
 msgid "Expected valid revision range"
 msgstr "Attend un intervalle de révision valide"
 
@@ -3171,7 +3180,7 @@
 msgstr "Attribut nom 'name' manquant dans une propriété de révision"
 
 #: ../libsvn_ra_neon/log.c:433 ../libsvn_ra_serf/log.c:533
-#: ../libsvn_ra_svn/client.c:1300
+#: ../libsvn_ra_svn/client.c:1309
 msgid "Server does not support custom revprops via log"
 msgstr "Le serveur n'accepte pas les propriétés de révision personnalisées via le log"
 
@@ -3275,15 +3284,15 @@
 msgid "PIN for token \"%s\" in slot \"%s\""
 msgstr "PIN du signe \"%s\" dans le créneau \"%s\""
 
-#: ../libsvn_ra_neon/session.c:529 ../libsvn_ra_serf/serf.c:405
+#: ../libsvn_ra_neon/session.c:529 ../libsvn_ra_serf/serf.c:431
 msgid "Invalid URL: illegal character in proxy port number"
 msgstr "URL invalide : caractère illégal dans le numéro de port du proxy"
 
-#: ../libsvn_ra_neon/session.c:533 ../libsvn_ra_serf/serf.c:409
+#: ../libsvn_ra_neon/session.c:533 ../libsvn_ra_serf/serf.c:435
 msgid "Invalid URL: negative proxy port number"
 msgstr "URL invalide : numéro de port du proxy négatif"
 
-#: ../libsvn_ra_neon/session.c:536 ../libsvn_ra_serf/serf.c:412
+#: ../libsvn_ra_neon/session.c:536 ../libsvn_ra_serf/serf.c:438
 msgid "Invalid URL: proxy port number greater than maximum TCP port number 65535"
 msgstr "URL invalide : numéro de port du proxy supérieur au numéro de port maximal de TCP (65535)"
 
@@ -3313,47 +3322,47 @@
 msgid "OPTIONS request (for capabilities) got HTTP response code %d"
 msgstr "La requête OPTIONS (pour les capacités) a obtenu le code de réponse HTTP %d"
 
-#: ../libsvn_ra_neon/session.c:896 ../libsvn_ra_serf/serf.c:275
+#: ../libsvn_ra_neon/session.c:905 ../libsvn_ra_serf/serf.c:283
 #, c-format
 msgid "Don't know how to handle '%s' for capability '%s'"
 msgstr "Ne sais pas gérer '%s' pour la capacité '%s'"
 
-#: ../libsvn_ra_neon/session.c:920 ../libsvn_ra_serf/serf.c:299
+#: ../libsvn_ra_neon/session.c:929 ../libsvn_ra_serf/serf.c:307
 #, c-format
 msgid "Attempt to fetch capability '%s' resulted in '%s'"
 msgstr " la tentative de récuperer la capacité '%s' a résulté en '%s'"
 
-#: ../libsvn_ra_neon/session.c:943 ../libsvn_ra_serf/locks.c:548
+#: ../libsvn_ra_neon/session.c:952 ../libsvn_ra_serf/locks.c:548
 msgid "Malformed URL for repository"
 msgstr "URL du dépôt malformée."
 
-#: ../libsvn_ra_neon/session.c:993
+#: ../libsvn_ra_neon/session.c:1002
 msgid "Network socket initialization failed"
 msgstr "Échec de l'initialisation de la 'socket' réseau"
 
-#: ../libsvn_ra_neon/session.c:1012
+#: ../libsvn_ra_neon/session.c:1021
 msgid "SSL is not supported"
 msgstr "SSL n'est pas supporté"
 
-#: ../libsvn_ra_neon/session.c:1177
+#: ../libsvn_ra_neon/session.c:1186 ../libsvn_ra_serf/util.c:211
 #, c-format
 msgid "Invalid config: unable to load certificate file '%s'"
 msgstr "Configuration invalide : impossible de charger le fichier de certificat '%s'"
 
-#: ../libsvn_ra_neon/session.c:1205
+#: ../libsvn_ra_neon/session.c:1214
 #, c-format
 msgid "Invalid config: unable to load PKCS#11 provider '%s'"
 msgstr "Configuration invalide : impossible de charger le fournisseur de PKCS#11 '%s'"
 
-#: ../libsvn_ra_neon/session.c:1330 ../libsvn_ra_serf/serf.c:1107
+#: ../libsvn_ra_neon/session.c:1339 ../libsvn_ra_serf/serf.c:1137
 msgid "The UUID property was not found on the resource or any of its parents"
 msgstr "La propriété UUID n'a pas été trouvée sur la ressource ou sur un de ses parents"
 
-#: ../libsvn_ra_neon/session.c:1338
+#: ../libsvn_ra_neon/session.c:1347
 msgid "Please upgrade the server to 0.19 or later"
 msgstr "Mettre à jour le serveur à la version 0.19 ou mieux"
 
-#: ../libsvn_ra_neon/session.c:1409
+#: ../libsvn_ra_neon/session.c:1418
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_neon"
 msgstr "Version (%d) du chargeur RA (accès dépôt) non supportée pour ra_neon"
@@ -3376,7 +3385,9 @@
 msgid "%s of '%s'"
 msgstr "%s de '%s'"
 
-#: ../libsvn_ra_neon/util.c:544 ../libsvn_ra_serf/mergeinfo.c:292
+#: ../libsvn_ra_neon/util.c:544 ../libsvn_ra_serf/getlocations.c:280
+#: ../libsvn_ra_serf/getlocationsegments.c:231
+#: ../libsvn_ra_serf/mergeinfo.c:292 ../libsvn_ra_serf/mergeinfo.c:306
 #, c-format
 msgid "'%s' path not found"
 msgstr "Chemin '%s' non trouvé"
@@ -3432,8 +3443,8 @@
 msgid "Missing 'realm' attribute in Authorization header."
 msgstr "Attribut 'realm' manquant dans l'entête 'Authorization'"
 
-#: ../libsvn_ra_serf/blame.c:464 ../libsvn_ra_serf/serf.c:632
-#: ../libsvn_ra_serf/update.c:2222 ../libsvn_ra_serf/util.c:1202
+#: ../libsvn_ra_serf/blame.c:464 ../libsvn_ra_serf/serf.c:662
+#: ../libsvn_ra_serf/update.c:2222 ../libsvn_ra_serf/util.c:1402
 msgid "The OPTIONS response did not include the requested version-controlled-configuration value"
 msgstr "La réponse à OPTIONS n'inclut pas de valeur pour 'version-controlled-configuration'"
 
@@ -3442,14 +3453,14 @@
 msgstr "La réponse à OPTIONS n'inclut pas de valeur pour 'baseline-relative-path'"
 
 #: ../libsvn_ra_serf/blame.c:496 ../libsvn_ra_serf/commit.c:1160
-#: ../libsvn_ra_serf/property.c:930 ../libsvn_ra_serf/serf.c:648
+#: ../libsvn_ra_serf/property.c:930 ../libsvn_ra_serf/serf.c:678
 #: ../libsvn_ra_serf/update.c:1135 ../libsvn_ra_serf/update.c:1680
 msgid "The OPTIONS response did not include the requested checked-in value"
 msgstr "La réponse à OPTIONS n'inclut pas de valeur pour 'checked-in'"
 
 #: ../libsvn_ra_serf/blame.c:523 ../libsvn_ra_serf/commit.c:1389
 #: ../libsvn_ra_serf/commit.c:1779 ../libsvn_ra_serf/property.c:944
-#: ../libsvn_ra_serf/serf.c:770 ../libsvn_ra_serf/serf.c:1006
+#: ../libsvn_ra_serf/serf.c:800 ../libsvn_ra_serf/serf.c:1036
 msgid "The OPTIONS response did not include the requested baseline-collection value"
 msgstr "La réponse à OPTIONS n'inclut pas de valeur pour 'baseline-collection'"
 
@@ -3534,24 +3545,24 @@
 msgid "Error retrieving replay REPORT (%d)"
 msgstr "Erreur à la récupération du REPORT de rejou (%d)"
 
-#: ../libsvn_ra_serf/serf.c:315
+#: ../libsvn_ra_serf/serf.c:323
 msgid "Module for accessing a repository via WebDAV protocol using serf."
 msgstr "Module d'accès à un dépôt via le protocole WebDAV avec serf."
 
-#: ../libsvn_ra_serf/serf.c:521
+#: ../libsvn_ra_serf/serf.c:551
 #, c-format
 msgid "Could not lookup hostname `%s'"
 msgstr "Impossible de résoudre le nom d'hôte : `%s'"
 
-#: ../libsvn_ra_serf/serf.c:665
+#: ../libsvn_ra_serf/serf.c:695
 msgid "The OPTIONS response did not include the requested version-name value"
 msgstr "La réponse à OPTIONS n'inclut pas de valeur pour 'version-name'"
 
-#: ../libsvn_ra_serf/serf.c:829
+#: ../libsvn_ra_serf/serf.c:859
 msgid "The OPTIONS response did not include the requested resourcetype value"
 msgstr "La réponse à OPTIONS n'inclut pas de valeur pour 'resourcetype'"
 
-#: ../libsvn_ra_serf/serf.c:1172
+#: ../libsvn_ra_serf/serf.c:1202
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_serf"
 msgstr "Version %d du chargeur RA (accès dépôt) non supportée pour ra_serf"
@@ -3561,16 +3572,16 @@
 msgid "GET request failed: %d %s"
 msgstr "Échec de la requête GET : %d %s"
 
-#: ../libsvn_ra_serf/update.c:2304
+#: ../libsvn_ra_serf/update.c:2302
 #, c-format
 msgid "Error retrieving REPORT (%d)"
 msgstr "Erreur à la récupération du REPORT (%d)"
 
-#: ../libsvn_ra_serf/util.c:986
+#: ../libsvn_ra_serf/util.c:1186
 msgid "Premature EOF seen from server"
 msgstr "Fin de fichier (EOF) prématurée rencontrée sur le serveur"
 
-#: ../libsvn_ra_serf/util.c:1037
+#: ../libsvn_ra_serf/util.c:1237
 msgid "Unspecified error message"
 msgstr "Message d'erreur non spécifié"
 
@@ -3579,74 +3590,69 @@
 msgid "Unknown hostname '%s'"
 msgstr "Nom d'hôte inconnu '%s'"
 
-#: ../libsvn_ra_svn/client.c:145
-#, c-format
-msgid "Can't create socket"
-msgstr "Impossible de créer un 'socket'"
-
-#: ../libsvn_ra_svn/client.c:149
+#: ../libsvn_ra_svn/client.c:158
 #, c-format
 msgid "Can't connect to host '%s'"
 msgstr "Impossible de se connecter à l'hôte '%s'"
 
-#: ../libsvn_ra_svn/client.c:172
+#: ../libsvn_ra_svn/client.c:181
 msgid "Prop diffs element not a list"
 msgstr "L'élément 'prop diffs' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:210
+#: ../libsvn_ra_svn/client.c:219
 #, c-format
 msgid "Unrecognized node kind '%s' from server"
 msgstr "Type de nœud '%s' non reconnu retourné par le serveur"
 
-#: ../libsvn_ra_svn/client.c:374
+#: ../libsvn_ra_svn/client.c:383
 #, c-format
 msgid "Undefined tunnel scheme '%s'"
 msgstr "Schéma de tunnel '%s' non définit"
 
-#: ../libsvn_ra_svn/client.c:391
+#: ../libsvn_ra_svn/client.c:400
 #, c-format
 msgid "Tunnel scheme %s requires environment variable %s to be defined"
 msgstr "Le schéma de tunnel '%s' requiert la variable d'environnement %s"
 
-#: ../libsvn_ra_svn/client.c:402
+#: ../libsvn_ra_svn/client.c:411
 #, c-format
 msgid "Can't tokenize command '%s'"
 msgstr "Impossible de découper la commande '%s'"
 
-#: ../libsvn_ra_svn/client.c:433
+#: ../libsvn_ra_svn/client.c:442
 #, c-format
 msgid "Error in child process: %s"
 msgstr "Erreur du processus fils : %s"
 
-#: ../libsvn_ra_svn/client.c:457
+#: ../libsvn_ra_svn/client.c:466
 #, c-format
 msgid "Can't create tunnel"
 msgstr "Impossible de créer le tunnel"
 
-#: ../libsvn_ra_svn/client.c:495
+#: ../libsvn_ra_svn/client.c:504
 #, c-format
 msgid "Illegal svn repository URL '%s'"
 msgstr "URL de dépôt svn illégale '%s'"
 
-#: ../libsvn_ra_svn/client.c:555
+#: ../libsvn_ra_svn/client.c:564
 #, c-format
 msgid "Server requires minimum version %d"
 msgstr "Le serveur requiert au minimum la version %d"
 
-#: ../libsvn_ra_svn/client.c:559
+#: ../libsvn_ra_svn/client.c:568
 #, c-format
 msgid "Server only supports versions up to %d"
 msgstr "Le serveur ne supporte les versions que jusqu'à la %d"
 
-#: ../libsvn_ra_svn/client.c:567
+#: ../libsvn_ra_svn/client.c:576
 msgid "Server does not support edit pipelining"
 msgstr "Le serveur n'accepte pas l'édition en file"
 
-#: ../libsvn_ra_svn/client.c:600
+#: ../libsvn_ra_svn/client.c:609
 msgid "Impossibly long repository root from server"
 msgstr "Racine du dépôt du serveur trop longue"
 
-#: ../libsvn_ra_svn/client.c:612
+#: ../libsvn_ra_svn/client.c:621
 msgid ""
 "Module for accessing a repository using the svn network protocol.\n"
 "  - with Cyrus SASL authentication"
@@ -3654,128 +3660,128 @@
 "Module d'accès à un dépôt avec le protocole réseau propre de svn.\n"
 "  - avec authentification Cyrus SASL"
 
-#: ../libsvn_ra_svn/client.c:616
+#: ../libsvn_ra_svn/client.c:625
 msgid "Module for accessing a repository using the svn network protocol."
 msgstr "Module d'accès à un dépôt avec le protocole réseau propre de svn."
 
-#: ../libsvn_ra_svn/client.c:777
+#: ../libsvn_ra_svn/client.c:786
 msgid "Server did not send repository root"
 msgstr "Le serveur n'a pas envoyé la racine du dépôt"
 
-#: ../libsvn_ra_svn/client.c:850
+#: ../libsvn_ra_svn/client.c:859
 msgid "Server doesn't support setting arbitrary revision properties during commit"
 msgstr "Le serveur ne peut pas définir des propriétés de révision arbitraires lors de la propagation (commit)"
 
-#: ../libsvn_ra_svn/client.c:938
+#: ../libsvn_ra_svn/client.c:947
 msgid "Non-string as part of file contents"
 msgstr "Partie non chaîne comme contenu de fichier"
 
-#: ../libsvn_ra_svn/client.c:1039
+#: ../libsvn_ra_svn/client.c:1048
 msgid "Dirlist element not a list"
 msgstr "L'élément 'dirlist' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1098
+#: ../libsvn_ra_svn/client.c:1107
 msgid "Mergeinfo element is not a list"
 msgstr "L'élément Mergeinfo n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1289
+#: ../libsvn_ra_svn/client.c:1298
 msgid "Log entry not a list"
 msgstr "L'entrée 'log' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1324
+#: ../libsvn_ra_svn/client.c:1333
 msgid "Changed-path entry not a list"
 msgstr "L'entrée 'changed-path' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1440
+#: ../libsvn_ra_svn/client.c:1449
 msgid "'stat' not implemented"
 msgstr "'stat' non implémenté"
 
-#: ../libsvn_ra_svn/client.c:1497
+#: ../libsvn_ra_svn/client.c:1506
 msgid "'get-locations' not implemented"
 msgstr "'get-locations' non implémenté"
 
-#: ../libsvn_ra_svn/client.c:1509
+#: ../libsvn_ra_svn/client.c:1518
 msgid "Location entry not a list"
 msgstr "L'entrée 'location' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1554
+#: ../libsvn_ra_svn/client.c:1563
 msgid "'get-location-segments' not implemented"
 msgstr "'get-location-segments' non implémenté"
 
-#: ../libsvn_ra_svn/client.c:1566
+#: ../libsvn_ra_svn/client.c:1575
 msgid "Location segment entry not a list"
 msgstr "L'entrée 'location segment' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1628
+#: ../libsvn_ra_svn/client.c:1637
 msgid "'get-file-revs' not implemented"
 msgstr "'get-file-revs' non implémenté"
 
-#: ../libsvn_ra_svn/client.c:1641
+#: ../libsvn_ra_svn/client.c:1650
 msgid "Revision entry not a list"
 msgstr "L'entrée 'revision' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1658 ../libsvn_ra_svn/client.c:1683
+#: ../libsvn_ra_svn/client.c:1667 ../libsvn_ra_svn/client.c:1692
 msgid "Text delta chunk not a string"
 msgstr "La différence de texte n'est pas une chaîne de caractères"
 
-#: ../libsvn_ra_svn/client.c:1695
+#: ../libsvn_ra_svn/client.c:1704
 msgid "The get-file-revs command didn't return any revisions"
 msgstr "La commande 'get-file-revs' n'a retourné aucune révision"
 
-#: ../libsvn_ra_svn/client.c:1743
+#: ../libsvn_ra_svn/client.c:1752
 msgid "Server doesn't support the lock command"
 msgstr "Commande lock non supportée par le serveur"
 
-#: ../libsvn_ra_svn/client.c:1807
+#: ../libsvn_ra_svn/client.c:1816
 msgid "Server doesn't support the unlock command"
 msgstr "Commande unlock non supportée par le serveur"
 
-#: ../libsvn_ra_svn/client.c:1904
+#: ../libsvn_ra_svn/client.c:1913
 msgid "Lock response not a list"
 msgstr "La réponse au verrouillage (lock) n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:1918
+#: ../libsvn_ra_svn/client.c:1927
 msgid "Unknown status for lock command"
 msgstr "État inconnu pour la commande de verrouillage (lock)"
 
-#: ../libsvn_ra_svn/client.c:1940
+#: ../libsvn_ra_svn/client.c:1949
 msgid "Didn't receive end marker for lock responses"
 msgstr "Aucun marqueur de fin reçu dans les réponses aux verrouillages"
 
-#: ../libsvn_ra_svn/client.c:2027
+#: ../libsvn_ra_svn/client.c:2036
 msgid "Unlock response not a list"
 msgstr "La réponse au déverrouillage n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:2041
+#: ../libsvn_ra_svn/client.c:2050
 msgid "Unknown status for unlock command"
 msgstr "État inconnu pour la commande de déverrouillage (unlock)"
 
-#: ../libsvn_ra_svn/client.c:2062
+#: ../libsvn_ra_svn/client.c:2071
 msgid "Didn't receive end marker for unlock responses"
 msgstr "Aucun marqueur de fin reçu dans les réponses aux déverrouillages"
 
-#: ../libsvn_ra_svn/client.c:2086 ../libsvn_ra_svn/client.c:2114
+#: ../libsvn_ra_svn/client.c:2095 ../libsvn_ra_svn/client.c:2123
 msgid "Server doesn't support the get-lock command"
 msgstr "Le serveur ne supporte pas la commande 'get-lock'"
 
-#: ../libsvn_ra_svn/client.c:2127
+#: ../libsvn_ra_svn/client.c:2136
 msgid "Lock element not a list"
 msgstr "L'élément 'lock' n'est pas une liste"
 
-#: ../libsvn_ra_svn/client.c:2150
+#: ../libsvn_ra_svn/client.c:2159
 msgid "Server doesn't support the replay command"
 msgstr "Le serveur ne supporte pas la commande 'replay'"
 
-#: ../libsvn_ra_svn/client.c:2182
+#: ../libsvn_ra_svn/client.c:2191
 msgid "Server doesn't support the replay-range command"
 msgstr "Le serveur ne supporte pas la commande 'replay-range'"
 
-#: ../libsvn_ra_svn/client.c:2200
+#: ../libsvn_ra_svn/client.c:2209
 #, c-format
 msgid "Expected 'revprops', found '%s'"
 msgstr "En attente de 'revprops', mais '%s' a été trouvé"
 
-#: ../libsvn_ra_svn/client.c:2310
+#: ../libsvn_ra_svn/client.c:2322
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_svn"
 msgstr "Version %d du chargeur RA (accès dépôt) non supporté pour ra_svn"
@@ -4255,24 +4261,24 @@
 msgid "Cannot replace a directory from within"
 msgstr "On ne peut remplacer un répertoire de l'intérieur de ce répertoire"
 
-#: ../libsvn_repos/reporter.c:1211
+#: ../libsvn_repos/reporter.c:1209
 msgid "Invalid report for top level of working copy"
 msgstr "Rapport invalide pour le sommet de la copie de travail"
 
-#: ../libsvn_repos/reporter.c:1226
+#: ../libsvn_repos/reporter.c:1224
 msgid "Two top-level reports with no target"
 msgstr "Deux rapports au sommet sans aucune cible"
 
-#: ../libsvn_repos/reporter.c:1278
+#: ../libsvn_repos/reporter.c:1282
 #, c-format
 msgid "Unsupported report depth '%s'"
 msgstr "Profondeur de rapport non supportée '%s'"
 
-#: ../libsvn_repos/reporter.c:1322
+#: ../libsvn_repos/reporter.c:1326
 msgid "Depth 'exclude' not supported for link"
 msgstr "Profondeur 'exclude' non supportée pour un lien"
 
-#: ../libsvn_repos/reporter.c:1401
+#: ../libsvn_repos/reporter.c:1405
 msgid "Request depth 'exclude' not supported"
 msgstr "Profondeur demandée 'exclude' non supportée"
 
@@ -4321,40 +4327,40 @@
 msgid "Creating conf directory"
 msgstr "Création du répertoire de configuration (conf)"
 
-#: ../libsvn_repos/repos.c:989
+#: ../libsvn_repos/repos.c:986
 msgid "Creating svnserve.conf file"
 msgstr "Création du fichier 'svnserve.conf'"
 
-#: ../libsvn_repos/repos.c:1007
+#: ../libsvn_repos/repos.c:1004
 msgid "Creating passwd file"
 msgstr "Création du fichier de mot de passe 'passwd'"
 
-#: ../libsvn_repos/repos.c:1049
+#: ../libsvn_repos/repos.c:1046
 msgid "Creating authz file"
 msgstr "Création du fichier d'autorisations 'authz'"
 
-#: ../libsvn_repos/repos.c:1084
+#: ../libsvn_repos/repos.c:1081
 msgid "Could not create top-level directory"
 msgstr "Impossible de créer le répertoire de niveau supérieur"
 
-#: ../libsvn_repos/repos.c:1096
+#: ../libsvn_repos/repos.c:1093
 msgid "Creating DAV sandbox dir"
 msgstr "Création du répertoire d'isolation DAV (dav)"
 
-#: ../libsvn_repos/repos.c:1167
+#: ../libsvn_repos/repos.c:1164
 msgid "Error opening db lockfile"
 msgstr "Erreur à l'ouverture du fichier de verrou db"
 
-#: ../libsvn_repos/repos.c:1204
+#: ../libsvn_repos/repos.c:1201
 msgid "Repository creation failed"
 msgstr "Échec de la création du dépôt"
 
-#: ../libsvn_repos/repos.c:1285
+#: ../libsvn_repos/repos.c:1282
 #, c-format
 msgid "Expected repository format '%d' or '%d'; found format '%d'"
 msgstr "Format de stockage attendu '%d' ou '%d'; format trouvé '%d'"
 
-#: ../libsvn_repos/repos.c:1508
+#: ../libsvn_repos/repos.c:1505
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "capacité inconnue '%s'"
@@ -4890,7 +4896,7 @@
 msgid "Could not find end of line in range list line in '%s'"
 msgstr "Impossible de trouver la fin de ligne dans la ligne de révision '%s'"
 
-#: ../libsvn_subr/mergeinfo.c:600
+#: ../libsvn_subr/mergeinfo.c:599
 #, c-format
 msgid "Could not parse mergeinfo string '%s'"
 msgstr "Impossible d'analyse la chaîne 'mergeinfo' '%s'"
@@ -4938,42 +4944,42 @@
 "'%s': Commande inconnue.\n"
 "\n"
 
-#: ../libsvn_subr/opt.c:850
+#: ../libsvn_subr/opt.c:864
 #, c-format
 msgid "Syntax error parsing revision '%s'"
 msgstr "Erreur de syntaxe sur la révision '%s'"
 
-#: ../libsvn_subr/opt.c:978
+#: ../libsvn_subr/opt.c:992
 #, c-format
 msgid "URL '%s' is not properly URI-encoded"
 msgstr "L'URL '%s' n'est pas correctement encodée (URI-encoded)"
 
-#: ../libsvn_subr/opt.c:984
+#: ../libsvn_subr/opt.c:998
 #, c-format
 msgid "URL '%s' contains a '..' element"
 msgstr "L'URL '%s' contient un composant '..'"
 
-#: ../libsvn_subr/opt.c:1013
+#: ../libsvn_subr/opt.c:1027
 #, c-format
 msgid "Error resolving case of '%s'"
 msgstr "Erreur à la résolution de la casse de '%s'"
 
-#: ../libsvn_subr/opt.c:1035
+#: ../libsvn_subr/opt.c:1049
 #, c-format
 msgid "'%s' ends in a reserved name"
 msgstr "'%s' fini comme un mot réservé"
 
-#: ../libsvn_subr/opt.c:1116
+#: ../libsvn_subr/opt.c:1130
 msgid "Revision property pair is empty"
 msgstr "La paire de la propriété de révision est vide"
 
-#: ../libsvn_subr/opt.c:1136 ../svn/propedit-cmd.c:60 ../svn/propget-cmd.c:180
+#: ../libsvn_subr/opt.c:1150 ../svn/propedit-cmd.c:60 ../svn/propget-cmd.c:180
 #: ../svn/propset-cmd.c:64
 #, c-format
 msgid "'%s' is not a valid Subversion property name"
 msgstr "'%s' n'est pas un nom de propriété de Subversion valide"
 
-#: ../libsvn_subr/opt.c:1164
+#: ../libsvn_subr/opt.c:1178
 #, c-format
 msgid ""
 "%s, version %s\n"
@@ -4984,7 +4990,7 @@
 "    compilé %s, %s\n"
 "\n"
 
-#: ../libsvn_subr/opt.c:1167
+#: ../libsvn_subr/opt.c:1181
 msgid ""
 "Copyright (C) 2000-2008 CollabNet.\n"
 "Subversion is open source software, see http://subversion.tigris.org/\n"
@@ -4996,7 +5002,7 @@
 "Il inclut du logiciel développé par CollabNet (http://www.Collab.Net/).\n"
 "\n"
 
-#: ../libsvn_subr/opt.c:1220 ../libsvn_subr/opt.c:1287
+#: ../libsvn_subr/opt.c:1234 ../libsvn_subr/opt.c:1301
 #, c-format
 msgid "Type '%s help' for usage.\n"
 msgstr "Entrer '%s help' pour l'aide.\n"
@@ -5957,72 +5963,72 @@
 msgid "Failed to add directory '%s': object of the same name as the administrative directory"
 msgstr "Échec à l'ajout du répertoire '%s' : objet du même nom que le répertoire d'administration"
 
-#: ../libsvn_wc/update_editor.c:1350
+#: ../libsvn_wc/update_editor.c:1369
 #, c-format
 msgid "Failed to add directory '%s': copyfrom arguments not yet supported"
 msgstr "Échec à l'ajout du répertoire '%s' : copie en provenance (copyfrom) non encore supportée"
 
-#: ../libsvn_wc/update_editor.c:1644
+#: ../libsvn_wc/update_editor.c:1663
 msgid "Couldn't do property merge"
 msgstr "Fusion de propriété impossible"
 
-#: ../libsvn_wc/update_editor.c:1717
+#: ../libsvn_wc/update_editor.c:1736
 #, c-format
 msgid "Failed to mark '%s' absent: item of the same name is already scheduled for addition"
 msgstr "Échec du marquage de '%s' comme absent : un objet de même nom est déjà en attente pour ajout"
 
-#: ../libsvn_wc/update_editor.c:1790
+#: ../libsvn_wc/update_editor.c:1809
 msgid "Bad copyfrom arguments received"
 msgstr "Mauvais arguments pour la source d'une copie"
 
-#: ../libsvn_wc/update_editor.c:1829
+#: ../libsvn_wc/update_editor.c:1848
 #, c-format
 msgid "Failed to add file '%s': a file of the same name is already scheduled for addition with history"
 msgstr "Échec de l'ajout du fichier '%s' : un fichier de même nom est déjà en attente pour ajout"
 
-#: ../libsvn_wc/update_editor.c:1841
+#: ../libsvn_wc/update_editor.c:1860
 #, c-format
 msgid "Failed to add file '%s': a non-file object of the same name already exists"
 msgstr "Échec de l'ajout du fichier '%s' : un objet de même nom existe déjà"
 
-#: ../libsvn_wc/update_editor.c:1856
+#: ../libsvn_wc/update_editor.c:1875
 #, c-format
 msgid "Failed to add file '%s': object of the same name already exists"
 msgstr "Échec à l'ajout du fichier '%s' : un objet de même nom existe déjà"
 
-#: ../libsvn_wc/update_editor.c:1914
+#: ../libsvn_wc/update_editor.c:1933
 #, c-format
 msgid "File '%s' in directory '%s' is not a versioned resource"
 msgstr "Le fichier '%s' du répertoire '%s' n'est pas versionné"
 
-#: ../libsvn_wc/update_editor.c:2068
+#: ../libsvn_wc/update_editor.c:2087
 #, c-format
 msgid "Checksum mismatch for '%s'; recorded: '%s', actual: '%s'"
 msgstr "Somme de contrôle différente pour '%s' ; stocké '%s', actuel '%s'"
 
-#: ../libsvn_wc/update_editor.c:2804
+#: ../libsvn_wc/update_editor.c:2825
 msgid "Destination directory of add-with-history is missing a URL"
 msgstr "Répertoire destination de 'add-with-history' (ajout avec historique) sans URL"
 
-#: ../libsvn_wc/update_editor.c:2819
+#: ../libsvn_wc/update_editor.c:2840
 msgid "Destination URLs are broken"
 msgstr "Les URLs destination sont incorrectes"
 
-#: ../libsvn_wc/update_editor.c:3076
+#: ../libsvn_wc/update_editor.c:3097
 msgid "No fetch_func supplied to update_editor"
 msgstr "Pas de 'fetch_func' fourni à 'update_editor'"
 
-#: ../libsvn_wc/update_editor.c:3317
+#: ../libsvn_wc/update_editor.c:3338
 #, c-format
 msgid "Shallowing of working copy depths is not yet supported"
 msgstr "La superficialisation des profondeurs d'une copie de travail n'est pas encore supporté"
 
-#: ../libsvn_wc/update_editor.c:3718
+#: ../libsvn_wc/update_editor.c:3739
 #, c-format
 msgid "'%s' has no ancestry information"
 msgstr "'%s' n'a pas d'ancêtre"
 
-#: ../libsvn_wc/update_editor.c:3872
+#: ../libsvn_wc/update_editor.c:3893
 #, c-format
 msgid "Copyfrom-url '%s' has different repository root than '%s'"
 msgstr "L'URL source '%s' concerne un dépôt différent de '%s'"
@@ -6060,15 +6066,15 @@
 msgid "'%s' does not appear to be a URL"
 msgstr "'%s' ne semble pas être une URL"
 
-#: ../svn/conflict-callbacks.c:140
+#: ../svn/conflict-callbacks.c:142
 msgid "No editor found."
 msgstr "Aucun éditeur n'a été trouvé."
 
-#: ../svn/conflict-callbacks.c:147
+#: ../svn/conflict-callbacks.c:149
 msgid "Error running editor."
 msgstr "Erreur à l'exécution de l'éditeur."
 
-#: ../svn/conflict-callbacks.c:157
+#: ../svn/conflict-callbacks.c:159
 #, c-format
 msgid ""
 "Invalid option; there's no merged version to edit.\n"
@@ -6077,71 +6083,71 @@
 "Option invalide : il n'y a pas de version fusionnée à éditer.\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:179
+#: ../svn/conflict-callbacks.c:181
 msgid "No merge tool found.\n"
 msgstr "Aucun outil de fusion n'a été trouvé.\n"
 
-#: ../svn/conflict-callbacks.c:186
+#: ../svn/conflict-callbacks.c:188
 msgid "Error running merge tool."
 msgstr "Erreur à l'exécution de l'outil de fusion."
 
-#: ../svn/conflict-callbacks.c:252
+#: ../svn/conflict-callbacks.c:258
 msgid "No editor found, leaving all conflicts."
 msgstr "Pas d'éditeur, tous les conflits sont laissés en l'état."
 
-#: ../svn/conflict-callbacks.c:261
+#: ../svn/conflict-callbacks.c:267
 msgid "Error running editor, leaving all conflicts."
 msgstr "Erreur à l'exécution de l'éditeur, tous les conflits sont laissés en place."
 
-#: ../svn/conflict-callbacks.c:293
+#: ../svn/conflict-callbacks.c:299
 msgid "No merge tool found, leaving all conflicts."
 msgstr "Pas d'outils de gestion de conflit, les conflits sont laissés en l'état."
 
-#: ../svn/conflict-callbacks.c:302
+#: ../svn/conflict-callbacks.c:308
 msgid "Error running merge tool leaving all conflicts."
 msgstr "Erreur de l'outils de gestion de conflits, les conflits sont laissés en l'état."
 
-#: ../svn/conflict-callbacks.c:338
+#: ../svn/conflict-callbacks.c:344
 #, c-format
 msgid "Conflict discovered in '%s'.\n"
 msgstr "Conflit découvert dans '%s'.\n"
 
-#: ../svn/conflict-callbacks.c:343
+#: ../svn/conflict-callbacks.c:349
 #, c-format
 msgid "Conflict for property '%s' discovered on '%s'.\n"
 msgstr "Conflit sur la propriété '%s' découvert sur '%s'.\n"
 
-#: ../svn/conflict-callbacks.c:360
+#: ../svn/conflict-callbacks.c:366
 #, c-format
 msgid "They want to delete the property, you want to change the value to '%s'.\n"
 msgstr "Ils veulent effacer la propriété, vous voulez en modifier la valeur en '%s'.\n"
 
-#: ../svn/conflict-callbacks.c:369
+#: ../svn/conflict-callbacks.c:375
 #, c-format
 msgid "They want to change the property value to '%s', you want to delete the property.\n"
 msgstr "Ils veulent modifier la valeur de la propriété en '%s, vous voulez l'effacer.\n"
 
-#: ../svn/conflict-callbacks.c:391
+#: ../svn/conflict-callbacks.c:397
 msgid "Select: (p) postpone"
 msgstr "Sélectionner : (p) report"
 
-#: ../svn/conflict-callbacks.c:394
+#: ../svn/conflict-callbacks.c:400
 msgid ", (df) diff-full, (e) edit"
 msgstr ", (df) diff entier, (e) édite"
 
-#: ../svn/conflict-callbacks.c:398
+#: ../svn/conflict-callbacks.c:404
 msgid ", (mf) mine-full, (tf) theirs-full"
 msgstr ", (mf) mien entier, (tf) autre entier"
 
-#: ../svn/conflict-callbacks.c:401
+#: ../svn/conflict-callbacks.c:407
 msgid ", (r) resolved"
 msgstr ", (r) résolu"
 
-#: ../svn/conflict-callbacks.c:405
+#: ../svn/conflict-callbacks.c:411
 msgid "(s) show all options: "
 msgstr "(s) affiche toutes les options : "
 
-#: ../svn/conflict-callbacks.c:413
+#: ../svn/conflict-callbacks.c:419
 #, c-format
 msgid ""
 "  (p)  postpone    - mark the conflict to be resolved later\n"
@@ -6164,7 +6170,7 @@
 "  (s)  aide          - affiche cette liste\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:436 ../svn/conflict-callbacks.c:577
+#: ../svn/conflict-callbacks.c:442 ../svn/conflict-callbacks.c:583
 #, c-format
 msgid ""
 "Sorry, '(mc) mine for conflicts' is not yet implemented; see\n"
@@ -6175,7 +6181,7 @@
 "voir http://subversion.tigris.org/issues/show_bug.cgi?id=3049\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:445 ../svn/conflict-callbacks.c:586
+#: ../svn/conflict-callbacks.c:451 ../svn/conflict-callbacks.c:592
 #, c-format
 msgid ""
 "Sorry, '(tc) theirs for conflicts' is not yet implemented; see\n"
@@ -6186,7 +6192,7 @@
 "voir http://subversion.tigris.org/issues/show_bug.cgi?id=3049\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:464
+#: ../svn/conflict-callbacks.c:470
 #, c-format
 msgid ""
 "Sorry, '(dc) diff of conflicts' is not yet implemented; see\n"
@@ -6197,7 +6203,7 @@
 "voir http://subversion.tigris.org/issues/show_bug.cgi?id=3048\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:474
+#: ../svn/conflict-callbacks.c:480
 #, c-format
 msgid ""
 "Invalid option; there's no merged version to diff.\n"
@@ -6206,7 +6212,7 @@
 "Option invalide ; il n'y a pas de version fusionnée à différentier.\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:492 ../svn/conflict-callbacks.c:506
+#: ../svn/conflict-callbacks.c:498 ../svn/conflict-callbacks.c:512
 #, c-format
 msgid ""
 "Invalid option.\n"
@@ -6215,7 +6221,7 @@
 "Option invalide.\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:536
+#: ../svn/conflict-callbacks.c:542
 #, c-format
 msgid ""
 "Conflict discovered when trying to add '%s'.\n"
@@ -6224,11 +6230,11 @@
 "Conflit découvert en essayant d'ajouter '%s'.\n"
 "Un objet de même nom existe déjà.\n"
 
-#: ../svn/conflict-callbacks.c:539
+#: ../svn/conflict-callbacks.c:545
 msgid "Select: (p) postpone, (mf) mine-full, (tf) theirs-full, (h) help:"
 msgstr "Sélectionner : (p) report, (mf) mien complet, (tf) autre complet, (h) aide :"
 
-#: ../svn/conflict-callbacks.c:551
+#: ../svn/conflict-callbacks.c:557
 #, c-format
 msgid ""
 "  (p)  postpone    - resolve the conflict later\n"
@@ -6311,7 +6317,7 @@
 "Subversion est un outil pour gérer des versions.\n"
 "Pour plus d'informations, voir http://subversion.tigris.org/\n"
 
-#: ../svn/help-cmd.c:65 ../svnsync/main.c:1786
+#: ../svn/help-cmd.c:65 ../svnsync/main.c:1823
 msgid ""
 "The following repository access (RA) modules are available:\n"
 "\n"
@@ -6337,7 +6343,7 @@
 msgid "'%s' has invalid revision"
 msgstr "'%s' a une révision invalide"
 
-#: ../svn/info-cmd.c:239 ../svn/mergeinfo-cmd.c:170 ../svnadmin/main.c:1199
+#: ../svn/info-cmd.c:239 ../svnadmin/main.c:1199
 #, c-format
 msgid "Path: %s\n"
 msgstr "Chemin : %s\n"
@@ -6909,14 +6915,18 @@
 "    ('"
 
 #: ../svn/main.c:274
-msgid "query a particular merge source URL"
-msgstr "interroge une URL source de fusion particulière"
+msgid ""
+"specify which collection of revisions to display\n"
+"                             ('"
+msgstr ""
+"précise quelle collection de révisions afficher\n"
+"                              ('"
 
-#: ../svn/main.c:276
+#: ../svn/main.c:279
 msgid "lump-merge all of source URL's unmerged changes"
 msgstr "Fusionne toutes les modifications non fusionnées des URLs sources"
 
-#: ../svn/main.c:323
+#: ../svn/main.c:326
 msgid ""
 "Put files and directories under version control, scheduling\n"
 "them for addition to repository.  They will be added in next commit.\n"
@@ -6926,11 +6936,11 @@
 "prévoyant leur ajout au dépôt lors de la prochaine propagation (commit).\n"
 "usage : add CHEMIN...\n"
 
-#: ../svn/main.c:328
+#: ../svn/main.c:331
 msgid "add intermediate parents"
 msgstr "ajoute les répertoires intermédiaires"
 
-#: ../svn/main.c:331
+#: ../svn/main.c:334
 msgid ""
 "Output the content of specified files or\n"
 "URLs with revision and author information in-line.\n"
@@ -6945,7 +6955,7 @@
 "\n"
 "  Si précisée, REV détermine quelle révision est d'abord regardée.\n"
 
-#: ../svn/main.c:340
+#: ../svn/main.c:343
 msgid ""
 "Output the content of specified files or URLs.\n"
 "usage: cat TARGET[@REV]...\n"
@@ -6958,7 +6968,7 @@
 "\n"
 "  Si précisée, REV détermine quelle révision est d'abord regardée.\n"
 
-#: ../svn/main.c:348
+#: ../svn/main.c:351
 msgid ""
 "Associate (or dissociate) changelist CLNAME with the named files.\n"
 "usage: 1. changelist CLNAME TARGET...\n"
@@ -6968,7 +6978,7 @@
 "usage : 1. changelist CLNOM CIBLE...\n"
 "        2. changelist --remove CIBLE...\n"
 
-#: ../svn/main.c:354
+#: ../svn/main.c:357
 msgid ""
 "Check out a working copy from a repository.\n"
 "usage: checkout URL[@REV]... [PATH]\n"
@@ -7014,7 +7024,7 @@
 "  modification locale à la copie de travail.\n"
 "  Toutes les propriétés stockées dans le dépôt sont appliquées aux objets.\n"
 
-#: ../svn/main.c:378
+#: ../svn/main.c:381
 msgid ""
 "Recursively clean up the working copy, removing locks, resuming\n"
 "unfinished operations, etc.\n"
@@ -7024,7 +7034,7 @@
 "reprenant les opérations en cours, etc.\n"
 "usage : cleanup [CHEMIN...]\n"
 
-#: ../svn/main.c:385
+#: ../svn/main.c:388
 msgid ""
 "Send changes from your working copy to the repository.\n"
 "usage: commit [PATH...]\n"
@@ -7042,7 +7052,7 @@
 "  Les éléments propagés (commit) qui étaient verrouillés (locked) sont\n"
 "  déverrouillés (unlock) en cas de réussite.\n"
 
-#: ../svn/main.c:393
+#: ../svn/main.c:396
 msgid ""
 "Send changes from your working copy to the repository.\n"
 "usage: commit [PATH...]\n"
@@ -7061,7 +7071,7 @@
 "  (sauf sous OS400). Les éléments propagés (commit) qui étaient verrouillés\n"
 "  (locked) sont déverrouillés (unlock) en cas de réussite.\n"
 
-#: ../svn/main.c:406
+#: ../svn/main.c:409
 msgid ""
 "Duplicate something in working copy or repository, remembering\n"
 "history.\n"
@@ -7102,7 +7112,7 @@
 "dépôt. En conséquence, elles ne peuvent, par défaut, propager les \n"
 "informations de suivi de fusion de la source à la destination.\n"
 
-#: ../svn/main.c:428
+#: ../svn/main.c:431
 msgid ""
 "Remove files and directories from version control.\n"
 "usage: 1. delete PATH...\n"
@@ -7131,7 +7141,7 @@
 "\n"
 "  2. Chaque URL est supprimée du dépôt via une propagation immédiate.\n"
 
-#: ../svn/main.c:444
+#: ../svn/main.c:447
 msgid ""
 "Display the differences between two revisions or paths.\n"
 "usage: 1. diff [-c M | -r N[:M]] [TARGET[@REV]...]\n"
@@ -7188,7 +7198,7 @@
 "  Utiliser simplement 'svn diff' pour afficher les modifications locales\n"
 "  dans la copie de travail.\n"
 
-#: ../svn/main.c:472
+#: ../svn/main.c:475
 msgid ""
 "Create an unversioned copy of a tree.\n"
 "usage: 1. export [-r REV] URL[@PEGREV] [PATH]\n"
@@ -7226,7 +7236,7 @@
 "\n"
 "  Si spécifiée, PEGREV donne la révision de la cible d'abord regardée.\n"
 
-#: ../svn/main.c:493
+#: ../svn/main.c:496
 msgid ""
 "Describe the usage of this program or its subcommands.\n"
 "usage: help [SUBCOMMAND...]\n"
@@ -7234,7 +7244,7 @@
 "Décrit l'usage de ce programme ou de ses sous-commandes.\n"
 "usage : help [SOUS_COMMANDE...]\n"
 
-#: ../svn/main.c:499
+#: ../svn/main.c:502
 msgid ""
 "Commit an unversioned file or tree into the repository.\n"
 "usage: import [PATH] URL\n"
@@ -7257,7 +7267,7 @@
 "  Les objects non versionnables tels les périphériques ou les pipes sont\n"
 "  ignorés si l'option '--force' est spécifiée.\n"
 
-#: ../svn/main.c:513
+#: ../svn/main.c:516
 msgid ""
 "Display information about a local or remote item.\n"
 "usage: info [TARGET[@REV]...]\n"
@@ -7273,7 +7283,7 @@
 "  CIBLE peut être un chemin dans une copie de travail ou une URL.\n"
 "  Si REV est spécifié, cette révision est d'abord regardée.\n"
 
-#: ../svn/main.c:523
+#: ../svn/main.c:526
 msgid ""
 "List directory entries in the repository.\n"
 "usage: list [TARGET[@REV]...]\n"
@@ -7310,7 +7320,7 @@
 "  Taille (en octets)\n"
 "  Date et heure de la dernière propagation\n"
 
-#: ../svn/main.c:544
+#: ../svn/main.c:547
 msgid ""
 "Lock working copy paths or URLs in the repository, so that\n"
 "no other user can commit changes to them.\n"
@@ -7324,19 +7334,19 @@
 "  Utiliser --force pour voler le verrou d'un autre utilisateur ou d'une\n"
 "  autre copie de travail.\n"
 
-#: ../svn/main.c:550
+#: ../svn/main.c:553
 msgid "read lock comment from file ARG"
 msgstr "lit les commentaire de verrouillage à partir du fichier ARG"
 
-#: ../svn/main.c:551
+#: ../svn/main.c:554
 msgid "specify lock comment ARG"
 msgstr "précise le commentaire de verrouillage ARG"
 
-#: ../svn/main.c:552
+#: ../svn/main.c:555
 msgid "force validity of lock comment source"
 msgstr "force la validité de la source du commentaire de verrouillage"
 
-#: ../svn/main.c:555
+#: ../svn/main.c:558
 msgid ""
 "Show the log messages for a set of revision(s) and/or file(s).\n"
 "usage: 1. log [PATH]\n"
@@ -7347,7 +7357,9 @@
 "\n"
 "  2. Print the log messages for the PATHs (default: '.') under URL.\n"
 "     If specified, REV determines in which revision the URL is first\n"
-"     looked up.  The default revision range is HEAD:1.\n"
+"     looked up, and the default revision range is REV:1; otherwise,\n"
+"     the URL is looked up in HEAD, and the default revision range is\n"
+"     HEAD:1.\n"
 "\n"
 "  With -v, also print all affected paths with each log message.\n"
 "  With -q, don't print the log message body itself (note that this is\n"
@@ -7372,8 +7384,10 @@
 "     Les révisions BASE:1 sont prises par défaut.\n"
 "\n"
 "  2. Affiche les entrées du journal pour les CHEMINs sous l'URL.\n"
-"     Si présente, REV détermine la révision d'abord prise en compte.\n"
-"     Les révisions HEAD:1 sont prises par défaut.\n"
+"     Si présente, REV détermine la révision d'abord prise en compte,\n"
+"     et l'intervalle de révision par défaut est REV:1 ; \n"
+"     Sinon, la révision de tête de l'URL est consultée, et\n"
+"     les révisions HEAD:1 sont prises par défaut.\n"
 "\n"
 "  Avec -v, affiche également les chemins concernés par le message.\n"
 "  Avec -q, le corps du message n'est pas affiché (compatible avec -v).\n"
@@ -7389,20 +7403,20 @@
 "    svn log http://www.exemple.fr/depot/projet/truc.c\n"
 "    svn log http://www.exemple.fr/depot/projet truc.c bidule.c\n"
 
-#: ../svn/main.c:582
+#: ../svn/main.c:587
 msgid "retrieve revision property ARG"
 msgstr "Retrouve la propriété de révision ARG"
 
-#: ../svn/main.c:583
+#: ../svn/main.c:588
 msgid "the change made by ARG"
 msgstr "Le changement fait par ARG"
 
-#: ../svn/main.c:586
+#: ../svn/main.c:591
 msgid ""
 "Apply the differences between two sources to a working copy path.\n"
 "usage: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]\n"
 "       2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]\n"
-"       3. merge [[-c M[,N]]... | [-r N:M]...] [SOURCE[@REV] [WCPATH]]\n"
+"       3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]\n"
 "\n"
 "  1. In the first form, the source URLs are specified at revisions\n"
 "     N and M.  These are the two sources to be compared.  The revisions\n"
@@ -7413,25 +7427,26 @@
 "     be specified.\n"
 "\n"
 "  3. In the third form, SOURCE can be either a URL or a working copy\n"
-"     path (in which case its corresponding URL is used).  If not\n"
-"     specified, SOURCE will be the same as WCPATH.  SOURCE in revision\n"
-"     REV is compared as it existed between revisions N and M for each\n"
-"     revision range provided.  If REV is not specified, HEAD is\n"
-"     assumed.  '-c M' is equivalent to '-r <M-1>:M', and '-c -M' does\n"
-"     the reverse: '-r M:<M-1>'.  If no revision ranges are specified,\n"
-"     the default range of 1:HEAD is used.  Multiple '-c' and/or '-r'\n"
-"     instances may be specified, and mixing of forward and reverse\n"
-"     ranges is allowed.\n"
+"     path (in which case its corresponding URL is used).  SOURCE (in\n"
+"     revision REV) is compared as it existed between revisions N and M\n"
+"     for each revision range provided.  If REV is not specified, HEAD\n"
+"     is assumed.  '-c M' is equivalent to '-r <M-1>:M', and '-c -M'\n"
+"     does the reverse: '-r M:<M-1>'.  If no revision ranges are\n"
+"     specified, the default range of 0:REV is used.  Multiple '-c'\n"
+"     and/or '-r' instances may be specified, and mixing of forward\n"
+"     and reverse ranges is allowed.\n"
 "\n"
 "  WCPATH is the working copy path that will receive the changes.\n"
 "  If WCPATH is omitted, a default value of '.' is assumed, unless\n"
 "  the sources have identical basenames that match a file within '.':\n"
 "  in which case, the differences will be applied to that file.\n"
 "\n"
-"  NOTE:  Subversion will only internally track metadata about the\n"
-"  merge operation if the two sources are ancestrally related -- if the\n"
+"  NOTE:  Subversion will only record metadata to track the merge\n"
+"  if the two sources are on the same line of history -- if the\n"
 "  first source is an ancestor of the second, or vice-versa.  This is\n"
 "  guaranteed to be the case when using the third form listed above.\n"
+"  The --ignore-ancestry option overrides this, forcing Subversion to\n"
+"  regard the sources as unrelated and not to track the merge.\n"
 msgstr ""
 "Applique les différences entre deux sources à une copie de travail.\n"
 "usage : 1. merge URL1[@N] URL2[@M] [CHEMIN]\n"
@@ -7447,12 +7462,11 @@
 "\n"
 "  3. Dans cette troisième forme, SOURCE est une URL ou un chemin dans la copie\n"
 "     de travail (auquel cas l'URL correspondante est utilisée). \n"
-"     Si non spécifiée, SOURCE sera identique à CHEMIN.\n"
-"     La SOURCE à la révision REV est comparée telle qu'elle existait entre\n"
-"     les révisions N et M pour chaque intervalle de révision fourni.\n"
+"     La SOURCE à la révision REV est comparée telle qu'elle existait entre les\n"
+"     révisions N et M pour chaque intervalle de révision fourni.\n"
 "     Si REV n'est pas précisée, HEAD est utilisée. '-c M' est équivalent\n"
 "     à '-r <M-1>:M' et '-c -M' à l'inverse, '-r M:<M-1>'. Si aucun intervalle\n"
-"     de révision n'est précisé, 1:HEAD est utilisé. Des intervalles multiples\n"
+"     de révision n'est précisé, 0:REV est utilisé. Des intervalles multiples\n"
 "     avec '-c' et/ou '-r' peuvent être utilisé, et il est possible de mélanger\n"
 "     des intervalles avant et arrière.\n"
 "\n"
@@ -7463,16 +7477,29 @@
 "  NOTE : Subversion garde trace en interne des fusions opérées si les deux\n"
 "  sources sont parentes l'une de l'autre, dans un sens ou dans l'autre. Cela\n"
 "  est garanti si la troisième forme ci-dessus est utilisée.\n"
+"  L'option '--ignore-ancestry' permet de forcer Subversion à considérer les\n"
+"  sources comme non parentes et de ne pas garder trace des fusions.\n"
 
-#: ../svn/main.c:623
+#: ../svn/main.c:629
 msgid ""
 "Query merge-related information.\n"
-"usage: mergeinfo [TARGET[@REV]...]\n"
+"usage: mergeinfo SOURCE-URL[@REV] [TARGET[@REV]]\n"
+"\n"
+"  Query information related to merges (or potential merges) between\n"
+"  SOURCE-URL and TARGET.  If the --show-revs option is not provided,\n"
+"  display revisions which have been merged from SOURCE-URL to TARGET.\n"
+"  Otherwise, display the type of information specified by the\n"
+"  --show-revs option.\n"
 msgstr ""
-"Demande les informations liées à la fusion (merge).\n"
-"usage : mergeinfo [CIBLE[@REV]...]\n"
+"Montre les informations liées aux fusions.\n"
+"Usage : mergeinfo URL-SOURCE[@REV] [CIBLE[@REV]]\n"
+"\n"
+"  Montre les informations liées aux fusions (ou fusions potentielles) entre\n"
+"  URL-SOURCE et CIBLE. Si l'option '--show-revs' n'est pas fournie, affiche\n"
+"  les révisions qui ont été fusionnées entre URL-SOURCE et CIBLE. Sinon, \n"
+"  affiche les informations liées à l'option '--show-revs'.\n"
 
-#: ../svn/main.c:628
+#: ../svn/main.c:640
 msgid ""
 "Create a new directory under version control.\n"
 "usage: 1. mkdir PATH...\n"
@@ -7501,7 +7528,7 @@
 "  Dans les deux cas, les répertoires intermédiaires doivent déjà exister,\n"
 "  sauf si l'option --parents est présente.\n"
 
-#: ../svn/main.c:645
+#: ../svn/main.c:657
 msgid ""
 "Move and/or rename something in working copy or repository.\n"
 "usage: move SRC... DST\n"
@@ -7531,7 +7558,7 @@
 "    URL -> URL : effectue un renommage côté serveur.\n"
 "  Toutes les sources doivent être du même type.\n"
 
-#: ../svn/main.c:661
+#: ../svn/main.c:673
 msgid ""
 "Remove a property from files, dirs, or revisions.\n"
 "usage: 1. propdel PROPNAME [PATH...]\n"
@@ -7549,7 +7576,7 @@
 "  2. Supprime une propriété non versionnée d'une révision du dépôt.\n"
 "     CIBLE détermine uniquement à quel dépôt accéder.\n"
 
-#: ../svn/main.c:672
+#: ../svn/main.c:684
 msgid ""
 "Edit a property with an external editor.\n"
 "usage: 1. propedit PROPNAME TARGET...\n"
@@ -7571,7 +7598,7 @@
 "\n"
 "Voir 'svn help propset' pour plus d'informations sur les propriétés.\n"
 
-#: ../svn/main.c:685
+#: ../svn/main.c:697
 msgid ""
 "Print the value of a property on files, dirs, or revisions.\n"
 "usage: 1. propget PROPNAME [TARGET[@REV]...]\n"
@@ -7604,7 +7631,7 @@
 "  Utiliser --strict pour désactiver ces améliorations esthétiques, par\n"
 "  exemple pour rediriger les propriétés binaires vers un fichier.\n"
 
-#: ../svn/main.c:703
+#: ../svn/main.c:715
 msgid ""
 "List all properties on files, dirs, or revisions.\n"
 "usage: 1. proplist [TARGET[@REV]...]\n"
@@ -7624,7 +7651,7 @@
 "  2. Liste les propriétés non versionnées d'une révision du dépôt.\n"
 "     CIBLE détermine uniquement à quel dépôt accéder.\n"
 
-#: ../svn/main.c:714
+#: ../svn/main.c:726
 msgid ""
 "Set the value of a property on files, dirs, or revisions.\n"
 "usage: 1. propset PROPNAME PROPVAL PATH...\n"
@@ -7638,7 +7665,7 @@
 "\n"
 "  Note: svn recognizes the following special versioned properties\n"
 "  but will store any arbitrary properties set:\n"
-"    svn:ignore     - A newline separated list of file patterns to ignore.\n"
+"    svn:ignore     - A newline separated list of file glob patterns to ignore.\n"
 "    svn:keywords   - Keywords to be expanded.  Valid keywords are:\n"
 "      URL, HeadURL             - The URL for the head version of the object.\n"
 "      Author, LastChangedBy    - The last person to modify the file.\n"
@@ -7742,35 +7769,48 @@
 "  modification non récursive sur un répertoire échouera. Une modification\n"
 "  récursive s'appliquera seulement aux fichiers fils du répertoire.\n"
 
-#: ../svn/main.c:774
+#: ../svn/main.c:786
 msgid "read property value from file ARG"
 msgstr "prend la valeur d'une propriété dans le fichier ARG"
 
-#: ../svn/main.c:777
+#: ../svn/main.c:789
+msgid ""
+"Resolve conflicts on working copy files or directories.\n"
+"usage: resolve [PATH...]\n"
+"\n"
+"  Note:  the --accept option is currently required.\n"
+msgstr ""
+"Résout les conflits de fichiers ou répertoires dans la copie de travail.\n"
+"Usage : resolve [CHEMIN...]\n"
+"\n"
+"  Note : l'option '--accept' est actuellement requise.\n"
+
+#: ../svn/main.c:794
+msgid ""
+"specify automatic conflict resolution source\n"
+"                            ('"
+msgstr ""
+"précise la source de la résolution automatique de conflit\n"
+"    '"
+
+#: ../svn/main.c:806
 msgid ""
 "Remove 'conflicted' state on working copy files or directories.\n"
 "usage: resolved PATH...\n"
 "\n"
 "  Note:  this subcommand does not semantically resolve conflicts or\n"
 "  remove conflict markers; it merely removes the conflict-related\n"
-"  artifact files and allows PATH to be committed again.\n"
+"  artifact files and allows PATH to be committed again.  It has been\n"
+"  deprecated in favor of running 'svn resolve --accept working'.\n"
 msgstr ""
 "Enlève l'état 'en conflit' (conflicted) d'un fichier ou répertoire local.\n"
-"usage : resolved PATH...\n"
+"usage : resolved CHEMIN...\n"
 "\n"
 "  Note : cette sous-commande ne résout pas le conflit sur le fond ; elle\n"
 "  supprime simplement les fichiers relatifs au conflit pour permettre une\n"
-"  propagation (commit) ultérieure.\n"
+"  propagation (commit) ultérieure. Lui préférer 'svn resolve --accept working'.\n"
 
-#: ../svn/main.c:784
-msgid ""
-"specify automatic conflict resolution source\n"
-"                             '"
-msgstr ""
-"précise la source de la résolution automatique de conflit\n"
-"    '"
-
-#: ../svn/main.c:795
+#: ../svn/main.c:816
 msgid ""
 "Restore pristine working copy file (undo most local edits).\n"
 "usage: revert PATH...\n"
@@ -7784,7 +7824,7 @@
 "  Note : cette sous-commande n'a pas besoin d'accès réseau, et résout les\n"
 "  conflits. Elle ne restaure cependant pas les répertoires supprimés.\n"
 
-#: ../svn/main.c:803
+#: ../svn/main.c:824
 msgid ""
 "Print the status of working copy files and directories.\n"
 "usage: status [PATH...]\n"
@@ -7933,7 +7973,7 @@
 "                 965       687 suzy         wc/zig.c\n"
 "    État par rapport à la révision   981\n"
 
-#: ../svn/main.c:879
+#: ../svn/main.c:900
 msgid ""
 "Update the working copy to a different URL.\n"
 "usage: 1. switch URL[@PEGREV] [PATH]\n"
@@ -7993,7 +8033,7 @@
 "  modification locale à la copie de travail.\n"
 "  Toutes les propriétés stockées dans le dépôt sont appliquées aux objets.\n"
 
-#: ../svn/main.c:913
+#: ../svn/main.c:934
 msgid ""
 "Unlock working copy paths or URLs.\n"
 "usage: unlock TARGET...\n"
@@ -8005,7 +8045,7 @@
 "\n"
 "  Utiliser --force pour casser le verrou.\n"
 
-#: ../svn/main.c:920
+#: ../svn/main.c:941
 msgid ""
 "Bring changes from the repository into the working copy.\n"
 "usage: update [PATH...]\n"
@@ -8078,73 +8118,73 @@
 "  la copie de travail cible de l'opération.  La profondeur peut seulement être\n"
 "  augmenté dans la version actuelle.  \n"
 
-#: ../svn/main.c:1000 ../svnadmin/main.c:78 ../svnlook/main.c:329
+#: ../svn/main.c:1021 ../svnadmin/main.c:78 ../svnlook/main.c:329
 #: ../svnsync/main.c:184
 msgid "Caught signal"
 msgstr "Signal reçu"
 
-#: ../svn/main.c:1122 ../svnlook/main.c:2083
+#: ../svn/main.c:1144 ../svnlook/main.c:2083
 msgid "Non-numeric limit argument given"
 msgstr "L'argument de l'option limit doit être numérique"
 
-#: ../svn/main.c:1128 ../svnlook/main.c:2089
+#: ../svn/main.c:1150 ../svnlook/main.c:2089
 msgid "Argument to --limit must be positive"
 msgstr "L'argument de --limit doit être positif"
 
-#: ../svn/main.c:1150 ../svn/main.c:1383
+#: ../svn/main.c:1172 ../svn/main.c:1412
 msgid "Can't specify -c with --old"
 msgstr "Option -c incompatible avec --old"
 
-#: ../svn/main.c:1160
+#: ../svn/main.c:1189
 msgid "Non-numeric change argument given to -c"
 msgstr "L'argument de l'option -c doit être numérique"
 
-#: ../svn/main.c:1168
+#: ../svn/main.c:1197
 msgid "There is no change 0"
 msgstr "Il n'y a pas de changement (option -c) 0"
 
-#: ../svn/main.c:1204 ../svnadmin/main.c:1473
+#: ../svn/main.c:1233 ../svnadmin/main.c:1473
 #, c-format
 msgid "Syntax error in revision argument '%s'"
 msgstr "Erreur de syntaxe à l'argument de révision '%s'"
 
-#: ../svn/main.c:1277 ../svn/main.c:1296
+#: ../svn/main.c:1306 ../svn/main.c:1325
 #, c-format
 msgid "Error converting depth from locale to UTF8"
 msgstr "Erreur en convertissant la profondeur de la 'locale' vers UTF8"
 
-#: ../svn/main.c:1285 ../svn/main.c:1304
+#: ../svn/main.c:1314 ../svn/main.c:1333
 #, c-format
 msgid "'%s' is not a valid depth; try 'empty', 'files', 'immediates', or 'infinity'"
 msgstr "'%s' n'est pas un profondeur valide ; essayer 'empty' (vide), 'files' (fichiers), 'immediates' (immédiat) ou 'infinity' (infini)"
 
-#: ../svn/main.c:1411
+#: ../svn/main.c:1440
 #, c-format
 msgid "Syntax error in native-eol argument '%s'"
 msgstr "Erreur de syntaxe à l'argument de fin de ligne native (native-eol) '%s'"
 
-#: ../svn/main.c:1457
+#: ../svn/main.c:1486
 #, c-format
-msgid "'%s' is not a valid accept value"
-msgstr "'%s' n'est pas une valeur d'acceptation valide"
+msgid "'%s' is not a valid --accept value"
+msgstr "'%s' n'est pas valide pour --accept"
 
-#: ../svn/main.c:1465
+#: ../svn/main.c:1495
 #, c-format
-msgid "'%s' is not a URL"
-msgstr "'%s' n'est pas une URL"
+msgid "'%s' is not a valid --show-revs value"
+msgstr "'%s' n'est pas valide pour --show-revs"
 
-#: ../svn/main.c:1527 ../svndumpfilter/main.c:1314 ../svnlook/main.c:2161
+#: ../svn/main.c:1557 ../svndumpfilter/main.c:1314 ../svnlook/main.c:2161
 #, c-format
 msgid "Subcommand argument required\n"
 msgstr "Argument de la sous-commande attendu\n"
 
-#: ../svn/main.c:1546 ../svnadmin/main.c:1605 ../svndumpfilter/main.c:1333
+#: ../svn/main.c:1576 ../svnadmin/main.c:1605 ../svndumpfilter/main.c:1333
 #: ../svnlook/main.c:2180
 #, c-format
 msgid "Unknown command: '%s'\n"
 msgstr "Commande inconnue : '%s'\n"
 
-#: ../svn/main.c:1580
+#: ../svn/main.c:1610
 #, c-format
 msgid ""
 "Subcommand '%s' doesn't accept option '%s'\n"
@@ -8153,122 +8193,110 @@
 "La sous-commande '%s' n'accepte pas l'option '%s'\n"
 "Entrer 'svn help %s' pour l'aide.\n"
 
-#: ../svn/main.c:1594
+#: ../svn/main.c:1624
 msgid "Multiple revision arguments encountered; can't specify -c twice, or both -c and -r"
 msgstr "Arguments de révision multiples : ne pas répéter -c, ou utiliser à la fois -c et -r"
 
-#: ../svn/main.c:1608
+#: ../svn/main.c:1638
 msgid "-r and -c can't be used with --reintegrate"
 msgstr "-r et -c ne peuvent être utilisées avec --reintegrate"
 
-#: ../svn/main.c:1617
+#: ../svn/main.c:1647
 msgid "--depth and --set-depth are mutually exclusive"
 msgstr "--depth et --set-depth sont mutuellement exclusives"
 
-#: ../svn/main.c:1667
+#: ../svn/main.c:1697
 msgid "Log message file is a versioned file; use '--force-log' to override"
 msgstr "Le fichier de l'entrée du journal est versionné; forcer avec '--force-log'"
 
-#: ../svn/main.c:1674
+#: ../svn/main.c:1704
 msgid "Lock comment file is a versioned file; use '--force-log' to override"
 msgstr "Le fichier de commentaire du verrou est versionné ; forcer avec '--force-log'"
 
-#: ../svn/main.c:1694
+#: ../svn/main.c:1724
 msgid "The log message is a pathname (was -F intended?); use '--force-log' to override"
 msgstr "Le message de propagation donné est un chemin (-F était voulu ?) ; forcer avec '--force-log'"
 
-#: ../svn/main.c:1701
+#: ../svn/main.c:1731
 msgid "The lock comment is a pathname (was -F intended?); use '--force-log' to override"
 msgstr "Le commentaire du verrou est un chemin de fichier (-F était voulu ?) ; forcer avec '--force-log'"
 
-#: ../svn/main.c:1712
+#: ../svn/main.c:1742
 msgid "--relocate and --depth are mutually exclusive"
 msgstr "--relocate et --depth sont mutuellement exclusives"
 
-#: ../svn/main.c:1788
+#: ../svn/main.c:1818
 msgid "--auto-props and --no-auto-props are mutually exclusive"
 msgstr "--auto-props et --no-auto-props sont mutuellement exclusives"
 
-#: ../svn/main.c:1802
+#: ../svn/main.c:1832
 msgid "--reintegrate cannot be used with --ignore-ancestry or --record-only"
 msgstr "--reintegrate ne peut être utilisé avec --ignore-ancestry ou --record-only"
 
-#: ../svn/main.c:1810
+#: ../svn/main.c:1840
 msgid "--reintegrate cannot be used with --ignore-ancestry"
 msgstr "--reintegrate ne peut être utilisé avec --ignore-ancestry"
 
-#: ../svn/main.c:1818
+#: ../svn/main.c:1848
 msgid "--reintegrate cannot be used with --record-only"
 msgstr "--reintegrate ne peut être utilise avec --record-only"
 
-#: ../svn/main.c:1931 ../svn/main.c:1937
+#: ../svn/main.c:1961 ../svn/main.c:1967
 #, c-format
 msgid "--accept=%s incompatible with --non-interactive"
 msgstr "--accept=%s incompatible avec --non-interactive"
 
-#: ../svn/main.c:1964
+#: ../svn/main.c:1994
 msgid "Try 'svn help' for more info"
 msgstr "Essayer 'svn help' pour plus d'information."
 
-#: ../svn/main.c:1974
+#: ../svn/main.c:2004
 msgid "svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)\n"
 msgstr "svn : lancer 'svn cleanup' pour enlever les verrous (cf 'svn help cleanup')\n"
 
-#: ../svn/merge-cmd.c:102
+#: ../svn/merge-cmd.c:105
+msgid "Merge source required"
+msgstr "Source de la fusion attendue"
+
+#: ../svn/merge-cmd.c:151
 msgid "Second revision required"
 msgstr "Seconde révision attendue"
 
-#: ../svn/merge-cmd.c:111 ../svn/merge-cmd.c:144
+#: ../svn/merge-cmd.c:160 ../svn/merge-cmd.c:193 ../svn/mergeinfo-cmd.c:74
 msgid "Too many arguments given"
 msgstr "Trop d'arguments donnés"
 
-#: ../svn/merge-cmd.c:133
+#: ../svn/merge-cmd.c:182
 msgid "Cannot specify a revision range with two URLs"
 msgstr "Impossible de préciser un intervalle de révision avec deux URLs"
 
-#: ../svn/merge-cmd.c:160
+#: ../svn/merge-cmd.c:209
 msgid "A working copy merge source needs an explicit revision"
 msgstr "Une fusion à partir de sources locales nécessite une révision explicite"
 
-#: ../svn/merge-cmd.c:243
+#: ../svn/merge-cmd.c:292
+msgid "--depth cannot be used with --reintegrate"
+msgstr "--deth ne peut être utilisé avec --reintegrate"
+
+#: ../svn/merge-cmd.c:297
 msgid "--force cannot be used with --reintegrate"
 msgstr "--force ne peut être utilisé avec --reintegrate"
 
-#: ../svn/mergeinfo-cmd.c:77
-#, c-format
-msgid "  Source path: %s\n"
-msgstr "  Chemin de la source : %s\n"
+#: ../svn/mergeinfo-cmd.c:71
+msgid "Not enough arguments given"
+msgstr "Nombre d'arguments insuffisant"
 
-#: ../svn/mergeinfo-cmd.c:79
+#: ../svn/mergeinfo-cmd.c:81 ../svnsync/main.c:700 ../svnsync/main.c:703
+#: ../svnsync/main.c:1642 ../svnsync/main.c:1792
 #, c-format
-msgid "    Merged ranges: "
-msgstr "    Révisions fusionnées : "
-
-#. Now fetch the available merges for this source.
-#. ### FIXME: There's no reason why this API should fail to
-#. ### answer the question (when asked of a 1.5+ server),
-#. ### short of something being quite wrong with the
-#. ### question.  Certainly, that the merge source URL can't
-#. ### be found in HEAD shouldn't mean we can't get any
-#. ### decent information about it out of the system.  It
-#. ### may just mean the system has to work harder to
-#. ### provide that information.
-#.
-#: ../svn/mergeinfo-cmd.c:93
-#, c-format
-msgid "    Eligible ranges: "
-msgstr "    Fusions possibles : "
-
-#: ../svn/mergeinfo-cmd.c:106
-#, c-format
-msgid "(source no longer available in HEAD)\n"
-msgstr "(source non disponible à la révision de tête - HEAD)\n"
+msgid "Path '%s' is not a URL"
+msgstr "Le chemin '%s' n'est pas une URL"
 
 #: ../svn/mkdir-cmd.c:88
 msgid "Try 'svn add' or 'svn add --non-recursive' instead?"
 msgstr "Essayer plutôt 'svn add' ou 'svn add --non-recursive' ?"
 
-#: ../svn/mkdir-cmd.c:94
+#: ../svn/mkdir-cmd.c:95
 msgid "Try 'svn mkdir --parents' instead?"
 msgstr "Essayer plutôt 'svn mkdir --parents' ?"
 
@@ -8421,7 +8449,7 @@
 msgid "Replacing      %s\n"
 msgstr "Remplacement   %s\n"
 
-#: ../svn/notify.c:374 ../svnsync/main.c:906
+#: ../svn/notify.c:374 ../svnsync/main.c:909
 #, c-format
 msgid "Transmitting file data "
 msgstr "Transmission des données "
@@ -8446,27 +8474,27 @@
 msgid "Path '%s' is no longer a member of a changelist.\n"
 msgstr "Le chemin '%s' n'est plus associé à une liste de changements.\n"
 
-#: ../svn/notify.c:427
+#: ../svn/notify.c:421
 #, c-format
 msgid "--- Merging differences between repository URLs into '%s':\n"
 msgstr "--- Fusion des différences des URLs du dépôt vers '%s' :\n"
 
-#: ../svn/notify.c:432
+#: ../svn/notify.c:426
 #, c-format
 msgid "--- Merging r%ld into '%s':\n"
 msgstr "--- Fusion de r%ld dans '%s':\n"
 
-#: ../svn/notify.c:436
+#: ../svn/notify.c:430
 #, c-format
 msgid "--- Reverse-merging r%ld into '%s':\n"
 msgstr "--- Fusion inverse de r%ld dans '%s' :\n"
 
-#: ../svn/notify.c:440
+#: ../svn/notify.c:434
 #, c-format
 msgid "--- Merging r%ld through r%ld into '%s':\n"
 msgstr "--- Fusion de r%ld à r%ld dans '%s':\n"
 
-#: ../svn/notify.c:446
+#: ../svn/notify.c:440
 #, c-format
 msgid "--- Reverse-merging r%ld through r%ld into '%s':\n"
 msgstr "--- Fusion inverse de r%ld à r%ld dans '%s' :\n"
@@ -8585,7 +8613,11 @@
 msgid "property '%s' set on '%s'\n"
 msgstr "Propriété '%s' définie sur '%s'\n"
 
-#: ../svn/resolved-cmd.c:74
+#: ../svn/resolve-cmd.c:74
+msgid "missing --accept option"
+msgstr "option '--accept' requise"
+
+#: ../svn/resolve-cmd.c:77
 msgid "invalid 'accept' ARG"
 msgstr "Argument 'accept' invalide"
 
@@ -9285,7 +9317,9 @@
 msgid ""
 "\n"
 "Upgrade completed.\n"
-msgstr "\nFin de la mise à jour.\n"
+msgstr ""
+"\n"
+"Fin de la mise à jour.\n"
 
 #: ../svnadmin/main.c:1459
 msgid "Multiple revision arguments encountered; try '-r N:M' instead of '-r N -r M'"
@@ -10057,7 +10091,9 @@
 msgid ""
 "\n"
 "Cyrus SASL authentication is available.\n"
-msgstr "\nAuthentification Cyrus SASL disponible.\n"
+msgstr ""
+"\n"
+"Authentification Cyrus SASL disponible.\n"
 
 #: ../svnserve/main.c:489
 #, c-format
@@ -10304,57 +10340,51 @@
 msgid "Destination repository is already synchronizing from '%s'"
 msgstr "Le dépôt destination est déjà synchronisé à partir de '%s'"
 
-#: ../svnsync/main.c:697 ../svnsync/main.c:700 ../svnsync/main.c:1605
-#: ../svnsync/main.c:1755
-#, c-format
-msgid "Path '%s' is not a URL"
-msgstr "Le chemin '%s' n'est pas une URL"
-
-#: ../svnsync/main.c:1208
+#: ../svnsync/main.c:1211
 #, c-format
 msgid "Committed revision %ld.\n"
 msgstr "Révision %ld propagée.\n"
 
-#: ../svnsync/main.c:1249
+#: ../svnsync/main.c:1252
 msgid "Destination repository has not been initialized"
 msgstr "Le dépôt destination n'a pas été initialisé"
 
-#: ../svnsync/main.c:1262
+#: ../svnsync/main.c:1265
 #, c-format
 msgid "UUID of source repository (%s) does not match expected UUID (%s)"
 msgstr "UUID du dépôt source (%s) différent de celui attendu (%s)"
 
-#: ../svnsync/main.c:1413
+#: ../svnsync/main.c:1439
 #, c-format
 msgid "Commit created rev %ld but should have created %ld"
 msgstr "La propagation (commit) a créé la révision %ld au lieu de la %ld"
 
-#: ../svnsync/main.c:1515
+#: ../svnsync/main.c:1545
 #, c-format
 msgid "Revision being currently copied (%ld), last merged revision (%ld), and destination HEAD (%ld) are inconsistent; have you committed to the destination without using svnsync?"
 msgstr "La révision en cours de copie (%ld), la dernière révision fusionnée (%ld), et la révision de tête de la destination (%ld) sont incohérentes. Auriez-vous propagé vers la destination sans utiliser 'svnsync' ?"
 
-#: ../svnsync/main.c:1552
+#: ../svnsync/main.c:1582
 #, c-format
 msgid "Destination HEAD (%ld) is not the last merged revision (%ld); have you committed to the destination without using svnsync?"
 msgstr "La révisions de tête (HEAD) de la destination (%ld) n'est pas la même que la dernière révision fusionnée (%ld). Auriez-vous propagé vers la destination sans utiliser 'svnsync' ?"
 
-#: ../svnsync/main.c:1648 ../svnsync/main.c:1653
+#: ../svnsync/main.c:1685 ../svnsync/main.c:1690
 #, c-format
 msgid "Cannot copy revprops for a revision (%ld) that has not been synchronized yet"
 msgstr "Impossible de copier les propriétés de révision d'une révision (%ld) non encore synchronisée"
 
-#: ../svnsync/main.c:1705
+#: ../svnsync/main.c:1742
 #, c-format
 msgid "'%s' is not a valid revision range"
 msgstr "'%s' n'est pas un intervalle de révisions valide"
 
-#: ../svnsync/main.c:1719 ../svnsync/main.c:1739
+#: ../svnsync/main.c:1756 ../svnsync/main.c:1776
 #, c-format
 msgid "Invalid revision number (%ld)"
 msgstr "Numéro de révision invalide (%ld)"
 
-#: ../svnsync/main.c:1779
+#: ../svnsync/main.c:1816
 msgid ""
 "general usage: svnsync SUBCOMMAND DEST_URL  [ARGS & OPTIONS ...]\n"
 "Type 'svnsync help <subcommand>' for help on a specific subcommand.\n"
@@ -10368,11 +10398,11 @@
 "\n"
 "Sous-commandes disponibles :\n"
 
-#: ../svnsync/main.c:1941
+#: ../svnsync/main.c:1978
 msgid "Cannot use --username or --password with any of --source-username, --source-password, --sync-username, or --sync-password.\n"
 msgstr "Impossible d'utiliser --username ou --password pour un des --source-username, --source-password, --sync-username ou --sync-password.\n"
 
-#: ../svnsync/main.c:2021
+#: ../svnsync/main.c:2058
 #, c-format
 msgid ""
 "Subcommand '%s' doesn't accept option '%s'\n"
@@ -10381,7 +10411,7 @@
 "La sous-commande '%s' n'accepte pas l'option '%s'\n"
 "Entrer 'svnsync help %s' pour l'aide.\n"
 
-#: ../svnsync/main.c:2093
+#: ../svnsync/main.c:2130
 msgid "Try 'svnsync help' for more info"
 msgstr "Essayer 'svnsync help' pour plus d'information"
 
@@ -10467,3 +10497,4 @@
 #, c-format
 msgid "'%s' not versioned, and not exported\n"
 msgstr "'%s' non versionné et non exporté\n"
+
diff --git a/subversion/po/pl.po b/subversion/po/pl.po
index b1d9efc..4c74852 100644
--- a/subversion/po/pl.po
+++ b/subversion/po/pl.po
@@ -35,8 +35,8 @@
 msgstr ""
 "Project-Id-Version: subversion 1.6\n"
 "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n"
-"POT-Creation-Date: 2008-04-06 21:30+0200\n"
-"PO-Revision-Date: 2008-04-06 21:30+0200\n"
+"POT-Creation-Date: 2008-04-12 01:00+0200\n"
+"PO-Revision-Date: 2008-04-12 01:00+0200\n"
 "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n"
 "Language-Team: Polish <dev@subversion.tigris.org>\n"
 "MIME-Version: 1.0\n"
@@ -1281,8 +1281,8 @@
 msgid "Cannot display: file marked as a binary type.%s"
 msgstr "Nie można wyświetlić: plik binarny.%s"
 
-#: ../libsvn_client/diff.c:881 ../libsvn_client/merge.c:3687
-#: ../libsvn_client/merge.c:4950
+#: ../libsvn_client/diff.c:881 ../libsvn_client/merge.c:3703
+#: ../libsvn_client/merge.c:4970
 msgid "Not all required revisions are specified"
 msgstr "Nie wszystkie wymagane wersje zostały podane"
 
@@ -1392,9 +1392,9 @@
 msgid "No common parent found, unable to operate on disjoint arguments"
 msgstr "Nie znaleziono wspólnego rodzica, nie można użyć rozłącznych argumentów"
 
-#: ../libsvn_client/locking_commands.c:261 ../libsvn_client/merge.c:4967
-#: ../libsvn_client/merge.c:4973 ../libsvn_client/merge.c:5544
-#: ../libsvn_client/merge.c:5700 ../libsvn_client/ra.c:386
+#: ../libsvn_client/locking_commands.c:261 ../libsvn_client/merge.c:4987
+#: ../libsvn_client/merge.c:4993 ../libsvn_client/merge.c:5564
+#: ../libsvn_client/merge.c:5720 ../libsvn_client/ra.c:386
 #: ../libsvn_client/ra.c:423 ../libsvn_client/ra.c:626
 #, c-format
 msgid "'%s' has no URL"
@@ -1455,25 +1455,25 @@
 #. xgettext: the '.working', '.merge-left.r%ld' and
 #. '.merge-right.r%ld' strings are used to tag onto a file
 #. name in case of a merge conflict
-#: ../libsvn_client/merge.c:737
+#: ../libsvn_client/merge.c:747
 msgid ".working"
 msgstr ".robocza"
 
-#: ../libsvn_client/merge.c:739
+#: ../libsvn_client/merge.c:749
 #, c-format
 msgid ".merge-left.r%ld"
 msgstr ".merge-lewo.w%ld"
 
-#: ../libsvn_client/merge.c:742
+#: ../libsvn_client/merge.c:752
 #, c-format
 msgid ".merge-right.r%ld"
 msgstr ".merge-prawo.w%ld"
 
-#: ../libsvn_client/merge.c:1655
+#: ../libsvn_client/merge.c:1666
 msgid "Cannot reverse-merge a range from a path's own future history; try updating first"
 msgstr "Nie można połączyć odwróconych zmian z własnej przyszłości ścieżki. Spróbuj najpierw zaktualizować kopię roboczą"
 
-#: ../libsvn_client/merge.c:2147
+#: ../libsvn_client/merge.c:2158
 #, c-format
 msgid ""
 "One or more conflicts were produced while merging r%ld:%ld into\n"
@@ -1486,45 +1486,45 @@
 "rozwiąż wszystkie konflikty i uruchom merge ponownie, by zastosować\n"
 "pozostałe wersje"
 
-#: ../libsvn_client/merge.c:4646
+#: ../libsvn_client/merge.c:4666
 msgid "Use of two URLs is not compatible with mergeinfo modification"
 msgstr "Użycie dwu URL-i jest niekompatybilne z modyfikacją informacji o połączeniach zmian"
 
-#: ../libsvn_client/merge.c:4653 ../libsvn_client/merge.c:4888
+#: ../libsvn_client/merge.c:4673 ../libsvn_client/merge.c:4908
 msgid "Merge from foreign repository is not compatible with mergeinfo modification"
 msgstr "Łączenie zmian z zewnętrznego repozytorium jest niekompatybilne z modyfikacją informacji o połączeniach zmian"
 
-#: ../libsvn_client/merge.c:5194
+#: ../libsvn_client/merge.c:5214
 msgid "Cannot reintegrate into a working copy with a switched subtree"
 msgstr "Nie można reintegrować do kopii roboczej z przełączonym poddrzewem"
 
-#: ../libsvn_client/merge.c:5199
+#: ../libsvn_client/merge.c:5219
 msgid "Cannot reintegrate into a working copy not entirely at infinite depth"
 msgstr "Nie można reintegrować do kopii roboczej z niecałkowicie nieskończoną głębokością"
 
-#: ../libsvn_client/merge.c:5204
+#: ../libsvn_client/merge.c:5224
 msgid "Cannot reintegrate into a working copy that has local modifications"
 msgstr "Nie można reintegrować do kopii roboczej posiadającej lokalne modyfikacje"
 
-#: ../libsvn_client/merge.c:5210
+#: ../libsvn_client/merge.c:5230
 msgid "Cannot determine revision of working copy"
 msgstr "Nie można określić wersji kopii roboczej"
 
-#: ../libsvn_client/merge.c:5214
+#: ../libsvn_client/merge.c:5234
 msgid "Cannot reintegrate into mixed-revision working copy; try updating first"
 msgstr "Nie można reintegrować do kopii roboczej z mieszanymi wersjami. Spróbuj najpierw zaktualizować kopię roboczą"
 
-#: ../libsvn_client/merge.c:5281
+#: ../libsvn_client/merge.c:5301
 #, c-format
 msgid "At least one revision (r%ld) not yet merged from '%s'"
 msgstr "Przynajmniej jedna wersja (r%ld) niepołączona jeszcze z '%s'"
 
-#: ../libsvn_client/merge.c:5439 ../libsvn_client/merge.c:5603
+#: ../libsvn_client/merge.c:5459 ../libsvn_client/merge.c:5623
 #, c-format
 msgid "'%s@%ld' must be ancestrally related to '%s@%ld'"
 msgstr "'%s@%ld' musi być spokrewnione z '%s@%ld'"
 
-#: ../libsvn_client/merge.c:5562
+#: ../libsvn_client/merge.c:5582
 #, c-format
 msgid "'%s' must be from the same repository as '%s'"
 msgstr "'%s' musi być z tego samego repozytorium co '%s'"
@@ -2776,8 +2776,8 @@
 msgid "Mismatched RA version for '%s': found %d.%d.%d%s, expected %d.%d.%d%s"
 msgstr "Niewłaściwa wersja RA dla '%s': znaleziona %d.%d.%d%s, oczekiwana %d.%d.%d%s"
 
-#: ../libsvn_ra/ra_loader.c:408 ../libsvn_ra_serf/serf.c:499
-#: ../libsvn_ra_serf/serf.c:616
+#: ../libsvn_ra/ra_loader.c:408 ../libsvn_ra_serf/serf.c:507
+#: ../libsvn_ra_serf/serf.c:624
 #, c-format
 msgid "Illegal repository URL '%s'"
 msgstr "Nieprawidłowy URL '%s' repozytorium"
@@ -2826,13 +2826,13 @@
 msgid "URL '%s' is not a child of the session's repository root URL '%s'"
 msgstr "URL '%s' nie jest katalogiem podrzędnym URL-u '%s' katalogu głównego repozytorium sesji"
 
-#: ../libsvn_ra_local/ra_plugin.c:1372 ../libsvn_ra_neon/session.c:913
-#: ../libsvn_ra_serf/serf.c:292 ../libsvn_ra_svn/client.c:2255
+#: ../libsvn_ra_local/ra_plugin.c:1373 ../libsvn_ra_neon/session.c:922
+#: ../libsvn_ra_serf/serf.c:300 ../libsvn_ra_svn/client.c:2258
 #, c-format
 msgid "Don't know anything about capability '%s'"
 msgstr "Nie wiadomo nic o zdolności '%s'"
 
-#: ../libsvn_ra_local/ra_plugin.c:1450
+#: ../libsvn_ra_local/ra_plugin.c:1451
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_local"
 msgstr "Nieobsługiwana wersja loadera modułu RA (%d) dla ra_local"
@@ -3197,15 +3197,15 @@
 msgid "PIN for token \"%s\" in slot \"%s\""
 msgstr "PIN dla żetonu \"%s\" w otworze \"%s\""
 
-#: ../libsvn_ra_neon/session.c:529 ../libsvn_ra_serf/serf.c:423
+#: ../libsvn_ra_neon/session.c:529 ../libsvn_ra_serf/serf.c:431
 msgid "Invalid URL: illegal character in proxy port number"
 msgstr "Błędny URL: niedozwolony znak w ramach numeru portu proxy"
 
-#: ../libsvn_ra_neon/session.c:533 ../libsvn_ra_serf/serf.c:427
+#: ../libsvn_ra_neon/session.c:533 ../libsvn_ra_serf/serf.c:435
 msgid "Invalid URL: negative proxy port number"
 msgstr "Błędny URL: ujemny numer portu proxy"
 
-#: ../libsvn_ra_neon/session.c:536 ../libsvn_ra_serf/serf.c:430
+#: ../libsvn_ra_neon/session.c:536 ../libsvn_ra_serf/serf.c:438
 msgid "Invalid URL: proxy port number greater than maximum TCP port number 65535"
 msgstr "Błędny URL: port proxy ma numer większy niż maksymalny dopuszczalny numer portu TCP (65535)"
 
@@ -3235,49 +3235,49 @@
 msgid "OPTIONS request (for capabilities) got HTTP response code %d"
 msgstr "Żądanie OPTIONS (dla zdolności) uzyskało kod %d odpowiedzi HTTP"
 
-#: ../libsvn_ra_neon/session.c:896 ../libsvn_ra_serf/serf.c:275
+#: ../libsvn_ra_neon/session.c:905 ../libsvn_ra_serf/serf.c:283
 #, c-format
 msgid "Don't know how to handle '%s' for capability '%s'"
 msgstr "Nie wiadomo, jak obsługiwać '%s' dla zdolności '%s'"
 
-#: ../libsvn_ra_neon/session.c:920 ../libsvn_ra_serf/serf.c:299
+#: ../libsvn_ra_neon/session.c:929 ../libsvn_ra_serf/serf.c:307
 #, c-format
 msgid "Attempt to fetch capability '%s' resulted in '%s'"
 msgstr "Próba pobrania zdolności '%s' skutkowała w '%s'"
 
-#: ../libsvn_ra_neon/session.c:943 ../libsvn_ra_serf/locks.c:548
+#: ../libsvn_ra_neon/session.c:952 ../libsvn_ra_serf/locks.c:548
 msgid "Malformed URL for repository"
 msgstr "Niepoprawny URL repozytorium"
 
-#: ../libsvn_ra_neon/session.c:993
+#: ../libsvn_ra_neon/session.c:1002
 msgid "Network socket initialization failed"
 msgstr "Nieudana inicjalizacja połączenia sieciowego"
 
-#: ../libsvn_ra_neon/session.c:1012
+#: ../libsvn_ra_neon/session.c:1021
 msgid "SSL is not supported"
 msgstr "SSL nie jest obsługiwany"
 
-#: ../libsvn_ra_neon/session.c:1177 ../libsvn_ra_serf/util.c:211
+#: ../libsvn_ra_neon/session.c:1186 ../libsvn_ra_serf/util.c:211
 #, c-format
 msgid "Invalid config: unable to load certificate file '%s'"
 msgstr "Błąd konfiguracji: ładowanie certyfikatu '%s' nie powiodło się"
 
-#: ../libsvn_ra_neon/session.c:1205
+#: ../libsvn_ra_neon/session.c:1214
 #, c-format
 msgid "Invalid config: unable to load PKCS#11 provider '%s'"
 msgstr "Błąd konfiguracji: nie można załadować dostawcy '%s' PKCS#11"
 
-#: ../libsvn_ra_neon/session.c:1330 ../libsvn_ra_serf/serf.c:1128
+#: ../libsvn_ra_neon/session.c:1339 ../libsvn_ra_serf/serf.c:1136
 msgid "The UUID property was not found on the resource or any of its parents"
 msgstr ""
 "Atrybut UUID nie został znaleziony ani w podanym obiekcie, ani też w\n"
 "żadnym z jego katalogów nadrzędnych"
 
-#: ../libsvn_ra_neon/session.c:1338
+#: ../libsvn_ra_neon/session.c:1347
 msgid "Please upgrade the server to 0.19 or later"
 msgstr "Zaktualizuj serwer do wersji 0.19 lub nowszej"
 
-#: ../libsvn_ra_neon/session.c:1409
+#: ../libsvn_ra_neon/session.c:1418
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_neon"
 msgstr "Nieobsługiwana wersja loadera RA (%d) dla ra_neon"
@@ -3358,7 +3358,7 @@
 msgid "Missing 'realm' attribute in Authorization header."
 msgstr "Brak atrybutu 'realm' w nagłówku Authorization."
 
-#: ../libsvn_ra_serf/blame.c:464 ../libsvn_ra_serf/serf.c:653
+#: ../libsvn_ra_serf/blame.c:464 ../libsvn_ra_serf/serf.c:661
 #: ../libsvn_ra_serf/update.c:2222 ../libsvn_ra_serf/util.c:1402
 msgid "The OPTIONS response did not include the requested version-controlled-configuration value"
 msgstr "Odpowiedź OPTIONS nie zawiera wymaganej wartości version-controlled-configuration"
@@ -3368,14 +3368,14 @@
 msgstr "Odpowiedź OPTIONS nie zawiera wymaganej wartości baseline-relative-path"
 
 #: ../libsvn_ra_serf/blame.c:496 ../libsvn_ra_serf/commit.c:1160
-#: ../libsvn_ra_serf/property.c:930 ../libsvn_ra_serf/serf.c:669
+#: ../libsvn_ra_serf/property.c:930 ../libsvn_ra_serf/serf.c:677
 #: ../libsvn_ra_serf/update.c:1135 ../libsvn_ra_serf/update.c:1680
 msgid "The OPTIONS response did not include the requested checked-in value"
 msgstr "Odpowiedź OPTIONS nie zawiera wymaganej wartości checked-in"
 
 #: ../libsvn_ra_serf/blame.c:523 ../libsvn_ra_serf/commit.c:1389
 #: ../libsvn_ra_serf/commit.c:1779 ../libsvn_ra_serf/property.c:944
-#: ../libsvn_ra_serf/serf.c:791 ../libsvn_ra_serf/serf.c:1027
+#: ../libsvn_ra_serf/serf.c:799 ../libsvn_ra_serf/serf.c:1035
 msgid "The OPTIONS response did not include the requested baseline-collection value"
 msgstr "Odpowiedź OPTIONS nie zawiera wymaganej wartości baseline-collection"
 
@@ -3460,24 +3460,24 @@
 msgid "Error retrieving replay REPORT (%d)"
 msgstr "Błąd podczas odbierania powtórzenia RAPORTU (%d)"
 
-#: ../libsvn_ra_serf/serf.c:315
+#: ../libsvn_ra_serf/serf.c:323
 msgid "Module for accessing a repository via WebDAV protocol using serf."
 msgstr "Moduł umożliwiający dostęp do repozytorium przy pomocy protokołu WebDAV przy użyciu biblioteki serf"
 
-#: ../libsvn_ra_serf/serf.c:542
+#: ../libsvn_ra_serf/serf.c:550
 #, c-format
 msgid "Could not lookup hostname `%s'"
 msgstr "Nie można odszukać hosta: `%s'"
 
-#: ../libsvn_ra_serf/serf.c:686
+#: ../libsvn_ra_serf/serf.c:694
 msgid "The OPTIONS response did not include the requested version-name value"
 msgstr "Odpowiedź OPTIONS nie zawiera wymaganej wartości version-name"
 
-#: ../libsvn_ra_serf/serf.c:850
+#: ../libsvn_ra_serf/serf.c:858
 msgid "The OPTIONS response did not include the requested resourcetype value"
 msgstr "Odpowiedź OPTIONS nie zawiera wymaganej wartości resourcetype"
 
-#: ../libsvn_ra_serf/serf.c:1193
+#: ../libsvn_ra_serf/serf.c:1201
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_serf"
 msgstr "Nieobsługiwana wersja loadera RA (%d) dla ra_serf"
@@ -3696,7 +3696,7 @@
 msgid "Expected 'revprops', found '%s'"
 msgstr "Oczekiwano 'revprops', znaleziono '%s'"
 
-#: ../libsvn_ra_svn/client.c:2319
+#: ../libsvn_ra_svn/client.c:2322
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_svn"
 msgstr "Nieobsługiwana wersja loadera RA (%d) dla ra_svn"
@@ -6227,7 +6227,7 @@
 "Subversion jest narzędziem zarządzania wersjami.\n"
 "Dla dodatkowych informacji zobacz http://subversion.tigris.org/\n"
 
-#: ../svn/help-cmd.c:65 ../svnsync/main.c:1786
+#: ../svn/help-cmd.c:65 ../svnsync/main.c:1823
 msgid ""
 "The following repository access (RA) modules are available:\n"
 "\n"
@@ -7296,7 +7296,9 @@
 "\n"
 "  2. Print the log messages for the PATHs (default: '.') under URL.\n"
 "     If specified, REV determines in which revision the URL is first\n"
-"     looked up.  The default revision range is HEAD:1.\n"
+"     looked up, and the default revision range is REV:1; otherwise,\n"
+"     the URL is looked up in HEAD, and the default revision range is\n"
+"     HEAD:1.\n"
 "\n"
 "  With -v, also print all affected paths with each log message.\n"
 "  With -q, don't print the log message body itself (note that this is\n"
@@ -7321,9 +7323,10 @@
 "     (domyślnie: '.'). Domyślnym zakresem wersji jest BASE:1.\n"
 "\n"
 "  2. Wypisz opisy zmian dla pliku lub katalogu w repozytorium, gdzie\n"
-"     ŚCIEŻKI (domyślnie: '.') są podane względem URL-u. WERSJA, jeśli ją\n"
-"     podano, określa, w której wersji URL będzie najpierw sprawdzany.\n"
-"     Domyślnym zakresem wersji jest HEAD:1.\n"
+"     ŚCIEŻKI (domyślnie: '.') są podane względem URL-u. Jeśli podano\n"
+"     WERSJĘ, określa ona, w której wersji URL będzie najpierw sprawdzany,\n"
+"     a domyślnym zakresem wersji jest WERSJA:1. W przeciwnym wypadku URL\n"
+"     jest sprawdzany w wersji HEAD, a domyślnym zakresem wersji jest HEAD:1.\n"
 "\n"
 "  Opcja -v powoduje dodatkowe wypisanie przy każdym opisie zmiany\n"
 "  wszystkich plików i katalogów, które zostały przy jej okazji\n"
@@ -7344,15 +7347,15 @@
 "    svn log http://www.example.com/repo/project/foo.c\n"
 "    svn log http://www.example.com/repo/project foo.c bar.c\n"
 
-#: ../svn/main.c:585
+#: ../svn/main.c:587
 msgid "retrieve revision property ARG"
 msgstr "pobierz atrybut wersji podany jako ARG"
 
-#: ../svn/main.c:586
+#: ../svn/main.c:588
 msgid "the change made by ARG"
 msgstr "zmiana wykonana przez argument ARG"
 
-#: ../svn/main.c:589
+#: ../svn/main.c:591
 msgid ""
 "Apply the differences between two sources to a working copy path.\n"
 "usage: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]\n"
@@ -7373,7 +7376,7 @@
 "     for each revision range provided.  If REV is not specified, HEAD\n"
 "     is assumed.  '-c M' is equivalent to '-r <M-1>:M', and '-c -M'\n"
 "     does the reverse: '-r M:<M-1>'.  If no revision ranges are\n"
-"     specified, the default range of 0:HEAD is used.  Multiple '-c'\n"
+"     specified, the default range of 0:REV is used.  Multiple '-c'\n"
 "     and/or '-r' instances may be specified, and mixing of forward\n"
 "     and reverse ranges is allowed.\n"
 "\n"
@@ -7409,7 +7412,7 @@
 "     dla każdego podanego zakresu wersji. Jeśli WERSJA nie jest określona,\n"
 "     przyjmowana jest wersja HEAD. '-c M' jest równoważne '-r <M-1>:M', a\n"
 "     '-c -M' działa odwrotnie: '-r M:<M-1>'. Jeśli nie podano żadnego zakresu\n"
-"     wersji, używany jest domyślny zakres 0:HEAD. Wiele opcji '-c' i/lub '-r'\n"
+"     wersji, używany jest domyślny zakres 0:WERSJA. Wiele opcji '-c' i/lub '-r'\n"
 "     może być podanych i mieszanie postępujących i odwróconych zakresów jest\n"
 "     dozwolone.\n"
 "\n"
@@ -7426,7 +7429,7 @@
 "  zmuszając Subversion do traktowania źródeł jako niespokrewnione i\n"
 "  nieśledzenia połączeń zmian.\n"
 
-#: ../svn/main.c:627
+#: ../svn/main.c:629
 msgid ""
 "Query merge-related information.\n"
 "usage: mergeinfo SOURCE-URL[@REV] [TARGET[@REV]]\n"
@@ -7446,7 +7449,7 @@
 "  skopiowane ze ŹRÓDŁOWEGO-URL-u do CELu. W przeciwnym wypadku wyświetl\n"
 "  rodzaj informacji określony przez opcję --show-revs.\n"
 
-#: ../svn/main.c:638
+#: ../svn/main.c:640
 msgid ""
 "Create a new directory under version control.\n"
 "usage: 1. mkdir PATH...\n"
@@ -7478,7 +7481,7 @@
 "  W obydwu wypadkach wszelkie nadrzędne katalogi muszą już istnieć,\n"
 "  jeśli nie podano opcji --parents.\n"
 
-#: ../svn/main.c:655
+#: ../svn/main.c:657
 msgid ""
 "Move and/or rename something in working copy or repository.\n"
 "usage: move SRC... DST\n"
@@ -7512,7 +7515,7 @@
 "                 kopii roboczej.\n"
 "  Wszystkie ŹRÓDŁA muszą być takiego samego typu.\n"
 
-#: ../svn/main.c:671
+#: ../svn/main.c:673
 msgid ""
 "Remove a property from files, dirs, or revisions.\n"
 "usage: 1. propdel PROPNAME [PATH...]\n"
@@ -7531,7 +7534,7 @@
 "  2. Usuwa niewersjonowane, zdalne atrybuty wersji w repozytorium.\n"
 "     CEL tylko określa, do którego repozytorium uzyskać dostęp.\n"
 
-#: ../svn/main.c:682
+#: ../svn/main.c:684
 msgid ""
 "Edit a property with an external editor.\n"
 "usage: 1. propedit PROPNAME TARGET...\n"
@@ -7555,7 +7558,7 @@
 "Zobacz 'svn help propset' w celu uzyskania dodatkowych informacji o\n"
 "ustawianiu atrybutów.\n"
 
-#: ../svn/main.c:695
+#: ../svn/main.c:697
 msgid ""
 "Print the value of a property on files, dirs, or revisions.\n"
 "usage: 1. propget PROPNAME [TARGET[@REV]...]\n"
@@ -7588,7 +7591,7 @@
 "  dana wartość. Opcja --strict powoduje pominięcie tych ozdobników (jest to\n"
 "  (użyteczne np. podczas kopiowania binarnej wartości atrybutu do pliku).\n"
 
-#: ../svn/main.c:713
+#: ../svn/main.c:715
 msgid ""
 "List all properties on files, dirs, or revisions.\n"
 "usage: 1. proplist [TARGET[@REV]...]\n"
@@ -7608,7 +7611,7 @@
 "  2. Wypisuje niewersjonowane, zdalne atrybuty wersji w repozytorium.\n"
 "     CEL tylko określa, do którego repozytorium uzyskać dostęp.\n"
 
-#: ../svn/main.c:724
+#: ../svn/main.c:726
 msgid ""
 "Set the value of a property on files, dirs, or revisions.\n"
 "usage: 1. propset PROPNAME PROPVAL PATH...\n"
@@ -7731,11 +7734,11 @@
 "  a uruchomienie z opcją --recursive spowoduje ustawienie atrybutu dla\n"
 "  wszystkich plików w tym katalogu.\n"
 
-#: ../svn/main.c:784
+#: ../svn/main.c:786
 msgid "read property value from file ARG"
 msgstr "odczytaj wartość atrybutu z pliku ARG"
 
-#: ../svn/main.c:787
+#: ../svn/main.c:789
 msgid ""
 "Resolve conflicts on working copy files or directories.\n"
 "usage: resolve [PATH...]\n"
@@ -7747,7 +7750,7 @@
 "\n"
 "  Uwaga: opcja --accept jest obecnie wymagana.\n"
 
-#: ../svn/main.c:792
+#: ../svn/main.c:794
 msgid ""
 "specify automatic conflict resolution source\n"
 "                            ('"
@@ -7755,7 +7758,7 @@
 "określ źródło automatycznego rozwiązywania konfliktów\n"
 "                            ('"
 
-#: ../svn/main.c:804
+#: ../svn/main.c:806
 msgid ""
 "Remove 'conflicted' state on working copy files or directories.\n"
 "usage: resolved PATH...\n"
@@ -7774,7 +7777,7 @@
 "  możliwość zatwierdzenia zmian. To polecenie jest przestarzałe - zamiast\n"
 "  niego należy używać 'svn resolve --accept working'.\n"
 
-#: ../svn/main.c:814
+#: ../svn/main.c:816
 msgid ""
 "Restore pristine working copy file (undo most local edits).\n"
 "usage: revert PATH...\n"
@@ -7790,7 +7793,7 @@
 "  rozwiązuje wszelkie konflikty. Jednak nie może ono odtworzyć skasowanych\n"
 "  katalogów.\n"
 
-#: ../svn/main.c:822
+#: ../svn/main.c:824
 msgid ""
 "Print the status of working copy files and directories.\n"
 "usage: status [PATH...]\n"
@@ -7942,7 +7945,7 @@
 "                 965       687 joe          wc/zig.c\n"
 "    Status względem wersji:   981\n"
 
-#: ../svn/main.c:898
+#: ../svn/main.c:900
 msgid ""
 "Update the working copy to a different URL.\n"
 "usage: 1. switch URL[@PEGREV] [PATH]\n"
@@ -8007,7 +8010,7 @@
 "     (np. zmienia się sposób dostępu albo nazwa maszyny), ale kopia\n"
 "     robocza nadal odpowiada temu samemu katalogowi w tym samym repozytorium.\n"
 
-#: ../svn/main.c:932
+#: ../svn/main.c:934
 msgid ""
 "Unlock working copy paths or URLs.\n"
 "usage: unlock TARGET...\n"
@@ -8019,7 +8022,7 @@
 "\n"
 "  Użyj opcję --force, aby zerwać blokadę.\n"
 
-#: ../svn/main.c:939
+#: ../svn/main.c:941
 msgid ""
 "Bring changes from the repository into the working copy.\n"
 "usage: update [PATH...]\n"
@@ -8099,73 +8102,73 @@
 "  tej operacji. Obecnie głębokość kopii roboczej może być tylko zwiększona.\n"
 "  Nie można uczynić katalogu bardziej płytkim.\n"
 
-#: ../svn/main.c:1019 ../svnadmin/main.c:78 ../svnlook/main.c:329
+#: ../svn/main.c:1021 ../svnadmin/main.c:78 ../svnlook/main.c:329
 #: ../svnsync/main.c:184
 msgid "Caught signal"
 msgstr "Złapano sygnał"
 
-#: ../svn/main.c:1142 ../svnlook/main.c:2083
+#: ../svn/main.c:1144 ../svnlook/main.c:2083
 msgid "Non-numeric limit argument given"
 msgstr "Nienumeryczny argument określający limit podany"
 
-#: ../svn/main.c:1148 ../svnlook/main.c:2089
+#: ../svn/main.c:1150 ../svnlook/main.c:2089
 msgid "Argument to --limit must be positive"
 msgstr "Argument dla --limit musi być dodatni"
 
-#: ../svn/main.c:1170 ../svn/main.c:1410
+#: ../svn/main.c:1172 ../svn/main.c:1412
 msgid "Can't specify -c with --old"
 msgstr "Nie można użyć opcji -c wraz z opcją --old"
 
-#: ../svn/main.c:1187
+#: ../svn/main.c:1189
 msgid "Non-numeric change argument given to -c"
 msgstr "Nienumeryczny argument określający zmianę podany do -c"
 
-#: ../svn/main.c:1195
+#: ../svn/main.c:1197
 msgid "There is no change 0"
 msgstr "Nie ma zmiany 0"
 
-#: ../svn/main.c:1231 ../svnadmin/main.c:1473
+#: ../svn/main.c:1233 ../svnadmin/main.c:1473
 #, c-format
 msgid "Syntax error in revision argument '%s'"
 msgstr "Błąd składniowy w numerze wersji '%s'"
 
-#: ../svn/main.c:1304 ../svn/main.c:1323
+#: ../svn/main.c:1306 ../svn/main.c:1325
 #, c-format
 msgid "Error converting depth from locale to UTF8"
 msgstr "Błąd podczas konwersji głębokości z lokalnego kodowania do UTF8"
 
-#: ../svn/main.c:1312 ../svn/main.c:1331
+#: ../svn/main.c:1314 ../svn/main.c:1333
 #, c-format
 msgid "'%s' is not a valid depth; try 'empty', 'files', 'immediates', or 'infinity'"
 msgstr "'%s' nie jest właściwą głębokością; spróbuj 'empty', 'files', 'immediates' lub 'infinity'"
 
-#: ../svn/main.c:1438
+#: ../svn/main.c:1440
 #, c-format
 msgid "Syntax error in native-eol argument '%s'"
 msgstr "Błąd składniowy w argumencie native-eol '%s'"
 
-#: ../svn/main.c:1484
+#: ../svn/main.c:1486
 #, c-format
 msgid "'%s' is not a valid --accept value"
 msgstr "'%s' nie jest poprawną wartością opcji --accept"
 
-#: ../svn/main.c:1493
+#: ../svn/main.c:1495
 #, c-format
 msgid "'%s' is not a valid --show-revs value"
 msgstr "'%s' nie jest poprawną wartością opcji --show-revs"
 
-#: ../svn/main.c:1555 ../svndumpfilter/main.c:1314 ../svnlook/main.c:2161
+#: ../svn/main.c:1557 ../svndumpfilter/main.c:1314 ../svnlook/main.c:2161
 #, c-format
 msgid "Subcommand argument required\n"
 msgstr "Podpolecenie wymaga podania argumentu\n"
 
-#: ../svn/main.c:1574 ../svnadmin/main.c:1605 ../svndumpfilter/main.c:1333
+#: ../svn/main.c:1576 ../svnadmin/main.c:1605 ../svndumpfilter/main.c:1333
 #: ../svnlook/main.c:2180
 #, c-format
 msgid "Unknown command: '%s'\n"
 msgstr "Nieznane polecenie: '%s'\n"
 
-#: ../svn/main.c:1608
+#: ../svn/main.c:1610
 #, c-format
 msgid ""
 "Subcommand '%s' doesn't accept option '%s'\n"
@@ -8174,64 +8177,64 @@
 "Podpolecenie '%s' nie obsługuje opcji '%s'.\n"
 "Użyj 'svn help %s', by uzyskać informacje o użyciu.\n"
 
-#: ../svn/main.c:1622
+#: ../svn/main.c:1624
 msgid "Multiple revision arguments encountered; can't specify -c twice, or both -c and -r"
 msgstr "Wielokrotnie podano opcję numeru wersji; nie można określić -c dwa razy, lub obydwu -c i -r"
 
-#: ../svn/main.c:1636
+#: ../svn/main.c:1638
 msgid "-r and -c can't be used with --reintegrate"
 msgstr "-r i -c nie mogą być używane z --reintegrate"
 
-#: ../svn/main.c:1645
+#: ../svn/main.c:1647
 msgid "--depth and --set-depth are mutually exclusive"
 msgstr "Opcje --depth i --set-depth nie mogą występować równocześnie"
 
-#: ../svn/main.c:1695
+#: ../svn/main.c:1697
 msgid "Log message file is a versioned file; use '--force-log' to override"
 msgstr "Plik z opisem zmian jest plikiem podlegającym zarządzaniu wersjami; użyj '--force-log', by wymusić jego użycie."
 
-#: ../svn/main.c:1702
+#: ../svn/main.c:1704
 msgid "Lock comment file is a versioned file; use '--force-log' to override"
 msgstr "Plik z opisem blokady jest plikiem podlegającym zarządzaniu wersjami; użyj '--force-log', by wymusić jego użycie."
 
-#: ../svn/main.c:1722
+#: ../svn/main.c:1724
 msgid "The log message is a pathname (was -F intended?); use '--force-log' to override"
 msgstr "Opis zmian jest ścieżką (chciano użyć -F?); użyj --force-log, by wymusić użycie takiego opisu"
 
-#: ../svn/main.c:1729
+#: ../svn/main.c:1731
 msgid "The lock comment is a pathname (was -F intended?); use '--force-log' to override"
 msgstr "Opis blokady jest ścieżką (chciano użyć -F?); użyj --force-log, bywymusić użycie takiego opisu"
 
-#: ../svn/main.c:1740
+#: ../svn/main.c:1742
 msgid "--relocate and --depth are mutually exclusive"
 msgstr "Opcje --relocate i --depth nie mogą występować równocześnie"
 
-#: ../svn/main.c:1816
+#: ../svn/main.c:1818
 msgid "--auto-props and --no-auto-props are mutually exclusive"
 msgstr "Opcje --auto-props i --no-auto-props nie mogą występować równocześnie"
 
-#: ../svn/main.c:1830
+#: ../svn/main.c:1832
 msgid "--reintegrate cannot be used with --ignore-ancestry or --record-only"
 msgstr "--reintegrate nie może być używane z --ignore-ancestry lub --record-only"
 
-#: ../svn/main.c:1838
+#: ../svn/main.c:1840
 msgid "--reintegrate cannot be used with --ignore-ancestry"
 msgstr "--reintegrate nie może być używane z --ignore-ancestry"
 
-#: ../svn/main.c:1846
+#: ../svn/main.c:1848
 msgid "--reintegrate cannot be used with --record-only"
 msgstr "--reintegrate nie może być używane z --record-only"
 
-#: ../svn/main.c:1959 ../svn/main.c:1965
+#: ../svn/main.c:1961 ../svn/main.c:1967
 #, c-format
 msgid "--accept=%s incompatible with --non-interactive"
 msgstr "--accept=%s jest niekompatybilne z --non-interactive"
 
-#: ../svn/main.c:1992
+#: ../svn/main.c:1994
 msgid "Try 'svn help' for more info"
 msgstr "Użyj 'svn help', by otrzymać dodatkowe instrukcje"
 
-#: ../svn/main.c:2002
+#: ../svn/main.c:2004
 msgid "svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)\n"
 msgstr ""
 "svn: uruchom 'svn cleanup', by usunąć blokady (więcej informacji -\n"
@@ -8258,6 +8261,10 @@
 msgstr "Użycie kopii roboczej jako źródła dla dołączania wymaga podania jawnej wersji"
 
 #: ../svn/merge-cmd.c:292
+msgid "--depth cannot be used with --reintegrate"
+msgstr "--depth nie może być używane z --reintegrate"
+
+#: ../svn/merge-cmd.c:297
 msgid "--force cannot be used with --reintegrate"
 msgstr "--force nie może być używane z --reintegrate"
 
@@ -8265,8 +8272,8 @@
 msgid "Not enough arguments given"
 msgstr "Zbyt mało parametrów"
 
-#: ../svn/mergeinfo-cmd.c:81 ../svnsync/main.c:697 ../svnsync/main.c:700
-#: ../svnsync/main.c:1605 ../svnsync/main.c:1755
+#: ../svn/mergeinfo-cmd.c:81 ../svnsync/main.c:700 ../svnsync/main.c:703
+#: ../svnsync/main.c:1642 ../svnsync/main.c:1792
 #, c-format
 msgid "Path '%s' is not a URL"
 msgstr "Ścieżka '%s' nie jest URL-em"
@@ -8427,7 +8434,7 @@
 msgid "Replacing      %s\n"
 msgstr "Zastępowanie    %s\n"
 
-#: ../svn/notify.c:374 ../svnsync/main.c:906
+#: ../svn/notify.c:374 ../svnsync/main.c:909
 #, c-format
 msgid "Transmitting file data "
 msgstr "Przesyłanie treści pliku"
@@ -8452,27 +8459,27 @@
 msgid "Path '%s' is no longer a member of a changelist.\n"
 msgstr "Ścieżka '%s' już nie jest członkiem listy zmian.\n"
 
-#: ../svn/notify.c:427
+#: ../svn/notify.c:421
 #, c-format
 msgid "--- Merging differences between repository URLs into '%s':\n"
 msgstr "--- Łączenie zmian nastąpiłych pomiędzy URL-ami repozytorium do '%s':\n"
 
-#: ../svn/notify.c:432
+#: ../svn/notify.c:426
 #, c-format
 msgid "--- Merging r%ld into '%s':\n"
 msgstr "--- Łączenie zmian nastąpiłych w r%ld do '%s':\n"
 
-#: ../svn/notify.c:436
+#: ../svn/notify.c:430
 #, c-format
 msgid "--- Reverse-merging r%ld into '%s':\n"
 msgstr "--- Łączenie odwróconych zmian nastąpiłych w r%ld do '%s':\n"
 
-#: ../svn/notify.c:440
+#: ../svn/notify.c:434
 #, c-format
 msgid "--- Merging r%ld through r%ld into '%s':\n"
 msgstr "--- Łączenie zmian nastąpiłych od r%ld do r%ld do '%s':\n"
 
-#: ../svn/notify.c:446
+#: ../svn/notify.c:440
 #, c-format
 msgid "--- Reverse-merging r%ld through r%ld into '%s':\n"
 msgstr "--- Łączenie odwróconych zmian nastąpiłych między r%ld a r%ld do '%s':\n"
@@ -10346,51 +10353,51 @@
 msgid "Destination repository is already synchronizing from '%s'"
 msgstr "Repozytorium docelowe jest już synchronizujące z '%s'"
 
-#: ../svnsync/main.c:1208
+#: ../svnsync/main.c:1211
 #, c-format
 msgid "Committed revision %ld.\n"
 msgstr "Zatwierdzona wersja %ld.\n"
 
-#: ../svnsync/main.c:1249
+#: ../svnsync/main.c:1252
 msgid "Destination repository has not been initialized"
 msgstr "Docelowe repozytorium nie zostało zainicjalizowane"
 
-#: ../svnsync/main.c:1262
+#: ../svnsync/main.c:1265
 #, c-format
 msgid "UUID of source repository (%s) does not match expected UUID (%s)"
 msgstr "UUID źródłowego repozytorium (%s) nie zgadza się z oczekiwanym UUID (%s)"
 
-#: ../svnsync/main.c:1413
+#: ../svnsync/main.c:1439
 #, c-format
 msgid "Commit created rev %ld but should have created %ld"
 msgstr "Zatwierdzanie zmian stworzyło wersję o numerze %ld, a powinno stworzyć %ld"
 
-#: ../svnsync/main.c:1515
+#: ../svnsync/main.c:1545
 #, c-format
 msgid "Revision being currently copied (%ld), last merged revision (%ld), and destination HEAD (%ld) are inconsistent; have you committed to the destination without using svnsync?"
 msgstr "Wersja obecnie kopiowana (%ld), ostatnio połączona wersja (%ld) i docelowa wersja HEAD (%ld) są niespójne; czy przeprowadziłeś zatwierdzenie do docelowego repozytorium bez użycia svnsync?"
 
-#: ../svnsync/main.c:1552
+#: ../svnsync/main.c:1582
 #, c-format
 msgid "Destination HEAD (%ld) is not the last merged revision (%ld); have you committed to the destination without using svnsync?"
 msgstr "Docelowa wersja HEAD (%ld) nie jest ostatnio połączoną wersją (%ld); czy przeprowadziłeś zatwierdzenie do docelowego repozytorium bez użycia svnsync?"
 
-#: ../svnsync/main.c:1648 ../svnsync/main.c:1653
+#: ../svnsync/main.c:1685 ../svnsync/main.c:1690
 #, c-format
 msgid "Cannot copy revprops for a revision (%ld) that has not been synchronized yet"
 msgstr "Nie można skopiować atrybutów wersji (%ld), która jeszcze nie była synchronizowana"
 
-#: ../svnsync/main.c:1705
+#: ../svnsync/main.c:1742
 #, c-format
 msgid "'%s' is not a valid revision range"
 msgstr "'%s' nie jest poprawnym zakresem wersji"
 
-#: ../svnsync/main.c:1719 ../svnsync/main.c:1739
+#: ../svnsync/main.c:1756 ../svnsync/main.c:1776
 #, c-format
 msgid "Invalid revision number (%ld)"
 msgstr "Błędny numer wersji (%ld)"
 
-#: ../svnsync/main.c:1779
+#: ../svnsync/main.c:1816
 msgid ""
 "general usage: svnsync SUBCOMMAND DEST_URL  [ARGS & OPTIONS ...]\n"
 "Type 'svnsync help <subcommand>' for help on a specific subcommand.\n"
@@ -10406,11 +10413,11 @@
 "\n"
 "Dostępne podpolecenia:\n"
 
-#: ../svnsync/main.c:1941
+#: ../svnsync/main.c:1978
 msgid "Cannot use --username or --password with any of --source-username, --source-password, --sync-username, or --sync-password.\n"
 msgstr "Nie można użyć opcji --username lub --password jednocześnie z którąkolwiek z opcji --source-username, --source-password, --sync-username lub --sync-password.\n"
 
-#: ../svnsync/main.c:2021
+#: ../svnsync/main.c:2058
 #, c-format
 msgid ""
 "Subcommand '%s' doesn't accept option '%s'\n"
@@ -10419,7 +10426,7 @@
 "Podpolecenie '%s' nie obsługuje opcji '%s'.\n"
 "Użyj 'svnsync help %s', by uzyskać informacje o użyciu.\n"
 
-#: ../svnsync/main.c:2093
+#: ../svnsync/main.c:2130
 msgid "Try 'svnsync help' for more info"
 msgstr "Użyj 'svnsync help', aby uzyskać więcej informacji"
 
diff --git a/subversion/po/zh_CN.po b/subversion/po/zh_CN.po
index 038984c..66b21a7 100644
--- a/subversion/po/zh_CN.po
+++ b/subversion/po/zh_CN.po
@@ -36,8 +36,8 @@
 msgstr ""
 "Project-Id-Version: subversion 1.5.0\n"
 "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n"
-"POT-Creation-Date: 2008-03-13 14:58+0800\n"
-"PO-Revision-Date: 2008-03-09 15:37+0800\n"
+"POT-Creation-Date: 2008-04-14 14:53+0800\n"
+"PO-Revision-Date: 2008-04-14 14:50+0800\n"
 "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n"
 "Language-Team: Simplified Chinese <dev@subversion.tigris.org>\n"
 "MIME-Version: 1.0\n"
@@ -640,316 +640,320 @@
 msgid "Initialization of SSPI library failed"
 msgstr "初始化 SSPI 库失败"
 
-#: ../include/svn_error_codes.h:851
+#: ../include/svn_error_codes.h:847
+msgid "Server SSL certificate untrusted"
+msgstr "服务器的 SSL 证书不被信任"
+
+#: ../include/svn_error_codes.h:855
 msgid "Credential data unavailable"
 msgstr "无法取得凭证数据"
 
-#: ../include/svn_error_codes.h:855
+#: ../include/svn_error_codes.h:859
 msgid "No authentication provider available"
 msgstr "没有可用的认证提供者"
 
-#: ../include/svn_error_codes.h:859 ../include/svn_error_codes.h:863
+#: ../include/svn_error_codes.h:863 ../include/svn_error_codes.h:867
 msgid "All authentication providers exhausted"
 msgstr "所有的认证提供者都不可用"
 
-#: ../include/svn_error_codes.h:868
+#: ../include/svn_error_codes.h:872
 msgid "Authentication failed"
 msgstr "认证失败"
 
-#: ../include/svn_error_codes.h:874
+#: ../include/svn_error_codes.h:878
 msgid "Read access denied for root of edit"
 msgstr "编辑根目录时拒绝读取"
 
-#: ../include/svn_error_codes.h:879
+#: ../include/svn_error_codes.h:883
 msgid "Item is not readable"
 msgstr "条目不可读"
 
-#: ../include/svn_error_codes.h:884
+#: ../include/svn_error_codes.h:888
 msgid "Item is partially readable"
 msgstr "条目部分可读"
 
-#: ../include/svn_error_codes.h:888
+#: ../include/svn_error_codes.h:892
 msgid "Invalid authz configuration"
 msgstr "认证配置无效"
 
-#: ../include/svn_error_codes.h:893
+#: ../include/svn_error_codes.h:897
 msgid "Item is not writable"
 msgstr "条目不能写"
 
-#: ../include/svn_error_codes.h:899
+#: ../include/svn_error_codes.h:903
 msgid "Svndiff data has invalid header"
 msgstr "svndiff 数据包含无效头"
 
-#: ../include/svn_error_codes.h:903
+#: ../include/svn_error_codes.h:907
 msgid "Svndiff data contains corrupt window"
 msgstr "Svndiff 数据包含损坏窗口"
 
-#: ../include/svn_error_codes.h:907
+#: ../include/svn_error_codes.h:911
 msgid "Svndiff data contains backward-sliding source view"
 msgstr "Svndiff 数据包含向后变化的资源视图"
 
-#: ../include/svn_error_codes.h:911
+#: ../include/svn_error_codes.h:915
 msgid "Svndiff data contains invalid instruction"
 msgstr "svndiff 数据包含无效指令"
 
-#: ../include/svn_error_codes.h:915
+#: ../include/svn_error_codes.h:919
 msgid "Svndiff data ends unexpectedly"
 msgstr "svndiff 数据意外结束"
 
-#: ../include/svn_error_codes.h:919
+#: ../include/svn_error_codes.h:923
 msgid "Svndiff compressed data is invalid"
 msgstr "非法 svndiff 压缩数据"
 
-#: ../include/svn_error_codes.h:925
+#: ../include/svn_error_codes.h:929
 msgid "Diff data source modified unexpectedly"
 msgstr "svndiff 数据被意外修改"
 
-#: ../include/svn_error_codes.h:931
+#: ../include/svn_error_codes.h:935
 msgid "Apache has no path to an SVN filesystem"
 msgstr "Apache 没有指向 SVN 文件系统的路径"
 
-#: ../include/svn_error_codes.h:935
+#: ../include/svn_error_codes.h:939
 msgid "Apache got a malformed URI"
 msgstr "Apache 得到非法 URI"
 
-#: ../include/svn_error_codes.h:939
+#: ../include/svn_error_codes.h:943
 msgid "Activity not found"
 msgstr "没有找到活动项"
 
-#: ../include/svn_error_codes.h:943
+#: ../include/svn_error_codes.h:947
 msgid "Baseline incorrect"
 msgstr "基线错误"
 
-#: ../include/svn_error_codes.h:947
+#: ../include/svn_error_codes.h:951
 msgid "Input/output error"
 msgstr "输出/输出错误"
 
-#: ../include/svn_error_codes.h:953
+#: ../include/svn_error_codes.h:957
 msgid "A path under version control is needed for this operation"
 msgstr "只能对纳入版本控制的路径执行此操作"
 
-#: ../include/svn_error_codes.h:957
+#: ../include/svn_error_codes.h:961
 msgid "Repository access is needed for this operation"
 msgstr "此操作需要存取版本库"
 
-#: ../include/svn_error_codes.h:961
+#: ../include/svn_error_codes.h:965
 msgid "Bogus revision information given"
 msgstr "给出的版本信息非法"
 
-#: ../include/svn_error_codes.h:965
+#: ../include/svn_error_codes.h:969
 msgid "Attempting to commit to a URL more than once"
 msgstr "试图对 URL 进行多次提交"
 
-#: ../include/svn_error_codes.h:969
+#: ../include/svn_error_codes.h:973
 msgid "Operation does not apply to binary file"
 msgstr "不能对二进制文件执行此操作"
 
-#: ../include/svn_error_codes.h:975
+#: ../include/svn_error_codes.h:979
 msgid "Format of an svn:externals property was invalid"
 msgstr "svn:externals 属性格式非法"
 
-#: ../include/svn_error_codes.h:979
+#: ../include/svn_error_codes.h:983
 msgid "Attempting restricted operation for modified resource"
 msgstr "试图对已修改的资源进行受限操作"
 
-#: ../include/svn_error_codes.h:983
+#: ../include/svn_error_codes.h:987
 msgid "Operation does not apply to directory"
 msgstr "不能对目录执行此操作"
 
-#: ../include/svn_error_codes.h:987
+#: ../include/svn_error_codes.h:991
 msgid "Revision range is not allowed"
 msgstr "不允许的版本范围"
 
-#: ../include/svn_error_codes.h:991
+#: ../include/svn_error_codes.h:995
 msgid "Inter-repository relocation not allowed"
 msgstr "不支持版本库之间的重新定位"
 
-#: ../include/svn_error_codes.h:995
+#: ../include/svn_error_codes.h:999
 msgid "Author name cannot contain a newline"
 msgstr "作者名称不能换行"
 
-#: ../include/svn_error_codes.h:999
+#: ../include/svn_error_codes.h:1003
 msgid "Bad property name"
 msgstr "属性名称错误"
 
-#: ../include/svn_error_codes.h:1004
+#: ../include/svn_error_codes.h:1008
 msgid "Two versioned resources are unrelated"
 msgstr "两个纳入版本控制的资源不相关"
 
-#: ../include/svn_error_codes.h:1009
+#: ../include/svn_error_codes.h:1013
 msgid "Path has no lock token"
 msgstr "路径没有锁定令牌"
 
-#: ../include/svn_error_codes.h:1014
+#: ../include/svn_error_codes.h:1018
 msgid "Operation does not support multiple sources"
 msgstr "此操作不支持多个源对象"
 
-#: ../include/svn_error_codes.h:1019
+#: ../include/svn_error_codes.h:1023
 msgid "No versioned parent directories"
 msgstr "没有受版本控制的父目录"
 
-#: ../include/svn_error_codes.h:1024
+#: ../include/svn_error_codes.h:1028
 msgid "Working copy and merge source not ready for reintegration"
 msgstr "工作副本与合并来源没有准备好复兴"
 
-#: ../include/svn_error_codes.h:1030
+#: ../include/svn_error_codes.h:1034
 msgid "A problem occurred; see later errors for details"
 msgstr "发生问题；请参阅随后的错误信息"
 
-#: ../include/svn_error_codes.h:1034
+#: ../include/svn_error_codes.h:1038
 msgid "Failure loading plugin"
 msgstr "加载插件失败"
 
-#: ../include/svn_error_codes.h:1038
+#: ../include/svn_error_codes.h:1042
 msgid "Malformed file"
 msgstr "文件格式错误"
 
-#: ../include/svn_error_codes.h:1042
+#: ../include/svn_error_codes.h:1046
 msgid "Incomplete data"
 msgstr "数据不完整"
 
-#: ../include/svn_error_codes.h:1046
+#: ../include/svn_error_codes.h:1050
 msgid "Incorrect parameters given"
 msgstr "参数不正确"
 
-#: ../include/svn_error_codes.h:1050
+#: ../include/svn_error_codes.h:1054
 msgid "Tried a versioning operation on an unversioned resource"
 msgstr "试图对未纳入版本控制的资源进行版本操作"
 
-#: ../include/svn_error_codes.h:1054
+#: ../include/svn_error_codes.h:1058
 msgid "Test failed"
 msgstr "测试失败"
 
-#: ../include/svn_error_codes.h:1058
+#: ../include/svn_error_codes.h:1062
 msgid "Trying to use an unsupported feature"
 msgstr "试图使用不支持的特性"
 
-#: ../include/svn_error_codes.h:1062
+#: ../include/svn_error_codes.h:1066
 msgid "Unexpected or unknown property kind"
 msgstr "意外或未知的属性类型"
 
-#: ../include/svn_error_codes.h:1066
+#: ../include/svn_error_codes.h:1070
 msgid "Illegal target for the requested operation"
 msgstr "此请求操作的目标非法"
 
-#: ../include/svn_error_codes.h:1070
+#: ../include/svn_error_codes.h:1074
 msgid "MD5 checksum is missing"
 msgstr "没有 MD5 校验和"
 
-#: ../include/svn_error_codes.h:1074
+#: ../include/svn_error_codes.h:1078
 msgid "Directory needs to be empty but is not"
 msgstr "必须为空的目录有内容"
 
-#: ../include/svn_error_codes.h:1078
+#: ../include/svn_error_codes.h:1082
 msgid "Error calling external program"
 msgstr "调用外部程序错误"
 
-#: ../include/svn_error_codes.h:1082
+#: ../include/svn_error_codes.h:1086
 msgid "Python exception has been set with the error"
 msgstr "Python 异常被设为错误"
 
-#: ../include/svn_error_codes.h:1086
+#: ../include/svn_error_codes.h:1090
 msgid "A checksum mismatch occurred"
 msgstr "校验和错误"
 
-#: ../include/svn_error_codes.h:1090
+#: ../include/svn_error_codes.h:1094
 msgid "The operation was interrupted"
 msgstr "操作被中断"
 
-#: ../include/svn_error_codes.h:1094
+#: ../include/svn_error_codes.h:1098
 msgid "The specified diff option is not supported"
 msgstr "不支持指定的 diff 选项"
 
-#: ../include/svn_error_codes.h:1098
+#: ../include/svn_error_codes.h:1102
 msgid "Property not found"
 msgstr "找不到属性"
 
-#: ../include/svn_error_codes.h:1102
+#: ../include/svn_error_codes.h:1106
 msgid "No auth file path available"
 msgstr "未提供 auth 文件路径"
 
-#: ../include/svn_error_codes.h:1107
+#: ../include/svn_error_codes.h:1111
 msgid "Incompatible library version"
 msgstr "不兼容的库版本"
 
-#: ../include/svn_error_codes.h:1112
+#: ../include/svn_error_codes.h:1116
 msgid "Mergeinfo parse error"
 msgstr "分析合并信息出错"
 
-#: ../include/svn_error_codes.h:1117
+#: ../include/svn_error_codes.h:1121
 msgid "Cease invocation of this API"
 msgstr "停止调用此 API"
 
-#: ../include/svn_error_codes.h:1122
+#: ../include/svn_error_codes.h:1126
 msgid "Error parsing revision number"
 msgstr "解析版本号出错"
 
-#: ../include/svn_error_codes.h:1127
+#: ../include/svn_error_codes.h:1131
 msgid "Iteration terminated before completion"
 msgstr "迭代在完成前终止"
 
-#: ../include/svn_error_codes.h:1132
+#: ../include/svn_error_codes.h:1136
 msgid "Unknown changelist"
 msgstr "未知修改列表"
 
-#: ../include/svn_error_codes.h:1137
+#: ../include/svn_error_codes.h:1141
 msgid "Reserved directory name in command line arguments"
 msgstr "在命令行参数中包含保留的目录名称"
 
-#: ../include/svn_error_codes.h:1142
+#: ../include/svn_error_codes.h:1146
 msgid "Inquiry about unknown capability"
 msgstr "查询未知特性"
 
-#: ../include/svn_error_codes.h:1148
+#: ../include/svn_error_codes.h:1152
 msgid "Error parsing arguments"
 msgstr "解析参数出错"
 
-#: ../include/svn_error_codes.h:1152
+#: ../include/svn_error_codes.h:1156
 msgid "Not enough arguments provided"
 msgstr "没有提供足够的参数"
 
-#: ../include/svn_error_codes.h:1156
+#: ../include/svn_error_codes.h:1160
 msgid "Mutually exclusive arguments specified"
 msgstr "参数冲突"
 
-#: ../include/svn_error_codes.h:1160
+#: ../include/svn_error_codes.h:1164
 msgid "Attempted command in administrative dir"
 msgstr "试图在管理目录中执行命令"
 
-#: ../include/svn_error_codes.h:1164
+#: ../include/svn_error_codes.h:1168
 msgid "The log message file is under version control"
 msgstr "日志信息文件被纳入版本控制"
 
-#: ../include/svn_error_codes.h:1168
+#: ../include/svn_error_codes.h:1172
 msgid "The log message is a pathname"
 msgstr "日志信息是路径名"
 
-#: ../include/svn_error_codes.h:1172
+#: ../include/svn_error_codes.h:1176
 msgid "Committing in directory scheduled for addition"
 msgstr "在调度增加的目录中进行提交"
 
-#: ../include/svn_error_codes.h:1176
+#: ../include/svn_error_codes.h:1180
 msgid "No external editor available"
 msgstr "没有外部编辑器可用"
 
-#: ../include/svn_error_codes.h:1180
+#: ../include/svn_error_codes.h:1184
 msgid "Something is wrong with the log message's contents"
 msgstr "日志信息内容不妥"
 
-#: ../include/svn_error_codes.h:1184
+#: ../include/svn_error_codes.h:1188
 msgid "A log message was given where none was necessary"
 msgstr "在不需要时给出日志信息"
 
-#: ../include/svn_error_codes.h:1188
+#: ../include/svn_error_codes.h:1192
 msgid "No external merge tool available"
 msgstr "没有外部合并工具可用"
 
-#: ../libsvn_client/add.c:348 ../libsvn_wc/copy.c:188
+#: ../libsvn_client/add.c:350 ../libsvn_wc/copy.c:188
 #, c-format
 msgid "Can't close directory '%s'"
 msgstr "无法关闭目录 “%s”"
 
-#: ../libsvn_client/add.c:356
+#: ../libsvn_client/add.c:358
 #, c-format
 msgid "Error during add of '%s'"
 msgstr "增加 “%s” 时出错"
@@ -1020,15 +1024,15 @@
 msgid "'%s' does not exist"
 msgstr "“%s” 不存在"
 
-#: ../libsvn_client/commit.c:634 ../libsvn_client/copy.c:518
+#: ../libsvn_client/commit.c:634 ../libsvn_client/copy.c:513
 #: ../svnlook/main.c:1271
 #, c-format
 msgid "Path '%s' does not exist"
 msgstr "路径 “%s” 不存在"
 
-#: ../libsvn_client/commit.c:769 ../libsvn_client/copy.c:527
-#: ../libsvn_client/copy.c:917 ../libsvn_client/copy.c:1158
-#: ../libsvn_client/copy.c:1585
+#: ../libsvn_client/commit.c:769 ../libsvn_client/copy.c:522
+#: ../libsvn_client/copy.c:912 ../libsvn_client/copy.c:1153
+#: ../libsvn_client/copy.c:1580
 #, c-format
 msgid "Path '%s' already exists"
 msgstr "路径 “%s” 已经存在"
@@ -1038,7 +1042,7 @@
 msgid "'%s' is a reserved name and cannot be imported"
 msgstr "“%s” 是保留名称，无法被导入"
 
-#: ../libsvn_client/commit.c:917 ../libsvn_client/copy.c:1325
+#: ../libsvn_client/commit.c:917 ../libsvn_client/copy.c:1320
 msgid "Commit failed (details follow):"
 msgstr "提交失败(细节如下): "
 
@@ -1135,76 +1139,76 @@
 msgid "Standard properties can't be set explicitly as revision properties"
 msgstr "标准属性不能设置为版本属性"
 
-#: ../libsvn_client/copy.c:543 ../libsvn_client/copy.c:1601
+#: ../libsvn_client/copy.c:538 ../libsvn_client/copy.c:1596
 #: ../libsvn_client/update.c:140
 #, c-format
 msgid "Path '%s' is not a directory"
 msgstr "路径 “%s” 不是目录"
 
-#: ../libsvn_client/copy.c:783
+#: ../libsvn_client/copy.c:778
 #, c-format
 msgid "Source and dest appear not to be in the same repository (src: '%s'; dst: '%s')"
 msgstr "来源与目标似乎不在同一版本库 (来源: “%s”；目的: “%s”)"
 
-#: ../libsvn_client/copy.c:898
+#: ../libsvn_client/copy.c:893
 #, c-format
 msgid "Cannot move URL '%s' into itself"
 msgstr "无法移动 URL “%s” 到本身"
 
-#: ../libsvn_client/copy.c:907 ../libsvn_client/prop_commands.c:237
+#: ../libsvn_client/copy.c:902 ../libsvn_client/prop_commands.c:249
 #, c-format
 msgid "Path '%s' does not exist in revision %ld"
 msgstr "路径 “%s” 不在版本 %ld 中"
 
-#: ../libsvn_client/copy.c:1424
+#: ../libsvn_client/copy.c:1419
 #, c-format
 msgid "Source URL '%s' is from foreign repository; leaving it as a disjoint WC"
 msgstr "源 URL “%s” 来自其它版本库；把它当作脱离的工作副本"
 
-#: ../libsvn_client/copy.c:1572
+#: ../libsvn_client/copy.c:1567
 #, c-format
 msgid "Path '%s' not found in revision %ld"
 msgstr "路径 “%s” 不在版本 %ld 中"
 
-#: ../libsvn_client/copy.c:1577
+#: ../libsvn_client/copy.c:1572
 #, c-format
 msgid "Path '%s' not found in head revision"
 msgstr "HEAD 版本中找不到路径 “%s”"
 
-#: ../libsvn_client/copy.c:1627
+#: ../libsvn_client/copy.c:1622
 #, c-format
 msgid "Entry for '%s' exists (though the working file is missing)"
 msgstr "“%s” 的入口存在(尽管丢失了工作文件)"
 
-#: ../libsvn_client/copy.c:1719 ../libsvn_client/diff.c:1694
-#: ../libsvn_client/log.c:334
+#: ../libsvn_client/copy.c:1712 ../libsvn_client/diff.c:1724
+#: ../libsvn_client/log.c:335
 msgid "Revision type requires a working copy path, not a URL"
 msgstr "版本类型需要工作目录，不是 URL"
 
-#: ../libsvn_client/copy.c:1764
+#: ../libsvn_client/copy.c:1757
 msgid "Cannot mix repository and working copy sources"
 msgstr "不能在源中混合版本库和工作副本"
 
-#: ../libsvn_client/copy.c:1807
+#: ../libsvn_client/copy.c:1800
 #, c-format
 msgid "Cannot copy path '%s' into its own child '%s'"
 msgstr "无法复制路径 “%s” 到其子目录 “%s” 中"
 
-#: ../libsvn_client/copy.c:1827
+#: ../libsvn_client/copy.c:1820
 #, c-format
 msgid "Cannot move path '%s' into itself"
 msgstr "无法移动路径 “%s” 到本身"
 
-#: ../libsvn_client/copy.c:1836
+#: ../libsvn_client/copy.c:1829
 msgid "Moves between the working copy and the repository are not supported"
 msgstr "不支持在工作副本和版本库之间移动"
 
-#: ../libsvn_client/copy.c:1899
+#: ../libsvn_client/copy.c:1892
 #, c-format
 msgid "'%s' does not have a URL associated with it"
 msgstr "“%s” 没有关联的 URL"
 
-#: ../libsvn_client/copy.c:2269 ../svn/move-cmd.c:61
+#: ../libsvn_client/copy.c:2262 ../svn/move-cmd.c:61
 msgid "Cannot specify revisions (except HEAD) with move operations"
 msgstr "移动操作不能指定版本"
 
@@ -1215,7 +1219,7 @@
 
 #: ../libsvn_client/delete.c:67 ../libsvn_wc/adm_ops.c:2955
 #: ../libsvn_wc/entries.c:1272 ../libsvn_wc/entries.c:2383
-#: ../libsvn_wc/entries.c:3005 ../libsvn_wc/update_editor.c:2375
+#: ../libsvn_wc/entries.c:3005 ../libsvn_wc/update_editor.c:2394
 #, c-format
 msgid "'%s' is not under version control"
 msgstr "“%s” 尚未纳入版本控制"
@@ -1261,12 +1265,12 @@
 msgid "Modified: %s%s"
 msgstr "已修改: %s%s"
 
-#: ../libsvn_client/diff.c:352
+#: ../libsvn_client/diff.c:366
 #, c-format
 msgid "%s\t(revision %ld)"
 msgstr "%s\t（版本 %ld）"
 
-#: ../libsvn_client/diff.c:354
+#: ../libsvn_client/diff.c:368
 #, c-format
 msgid "%s\t(working copy)"
 msgstr "%s\t（工作副本）"
@@ -1276,34 +1280,34 @@
 msgid "Cannot display: file marked as a binary type.%s"
 msgstr "无法显示: 文件标记为二进制类型。%s"
 
-#: ../libsvn_client/diff.c:894 ../libsvn_client/merge.c:3785
-#: ../libsvn_client/merge.c:5123
+#: ../libsvn_client/diff.c:881 ../libsvn_client/merge.c:3703
+#: ../libsvn_client/merge.c:4970
 msgid "Not all required revisions are specified"
 msgstr "没有全部提供需要的版本"
 
-#: ../libsvn_client/diff.c:909
+#: ../libsvn_client/diff.c:896
 msgid "At least one revision must be non-local for a pegged diff"
 msgstr "对于 peg 差异，必须至少有一个非本地版本"
 
-#: ../libsvn_client/diff.c:1021 ../libsvn_client/diff.c:1033
+#: ../libsvn_client/diff.c:1008 ../libsvn_client/diff.c:1020
 #, c-format
 msgid "'%s' was not found in the repository at revision %ld"
 msgstr "“%s” 不在版本库版本 %ld 中"
 
-#: ../libsvn_client/diff.c:1092
+#: ../libsvn_client/diff.c:1079
 msgid "Sorry, svn_client_diff4 was called in a way that is not yet supported"
 msgstr "抱歉，svn_client_diff4 尚不支持这种调用方式"
 
-#: ../libsvn_client/diff.c:1133
+#: ../libsvn_client/diff.c:1119
 msgid "Only diffs between a path's text-base and its working files are supported at this time"
 msgstr "当前 diff 只支持参考文件与其工作文件比较"
 
-#: ../libsvn_client/diff.c:1279 ../libsvn_client/switch.c:126
+#: ../libsvn_client/diff.c:1264 ../libsvn_client/switch.c:126
 #, c-format
 msgid "Directory '%s' has no URL"
 msgstr "目录 “%s” 没有 URL"
 
-#: ../libsvn_client/diff.c:1493
+#: ../libsvn_client/diff.c:1475
 msgid "Summarizing diff can only compare repository to repository"
 msgstr "只有版本库和版本库才能比较差异概要"
 
@@ -1327,7 +1331,7 @@
 msgstr "“%s” 已存在"
 
 #: ../libsvn_client/export.c:725 ../libsvn_wc/adm_crawler.c:1092
-#: ../libsvn_wc/update_editor.c:2059 ../libsvn_wc/update_editor.c:2725
+#: ../libsvn_wc/update_editor.c:2078 ../libsvn_wc/update_editor.c:2746
 #, c-format
 msgid "Checksum mismatch for '%s'; expected: '%s', actual: '%s'"
 msgstr "“%s” 的校验和不匹配；期望: “%s”，实际: “%s”"
@@ -1362,6 +1366,11 @@
 msgid "Traversal of '%s' found no ambient depth"
 msgstr "在 “%s” 中找不到深度"
 
+#: ../libsvn_client/externals.c:821
+#, c-format
+msgid "'%s' is not a URL"
+msgstr "“%s”不是 URL"
+
 #: ../libsvn_client/info.c:420
 #, c-format
 msgid "Server does not support retrieving information about the repository root"
@@ -1382,9 +1391,9 @@
 msgid "No common parent found, unable to operate on disjoint arguments"
 msgstr "没有找到公共父节点，不能在分离的参数上操作"
 
-#: ../libsvn_client/locking_commands.c:261 ../libsvn_client/merge.c:5140
-#: ../libsvn_client/merge.c:5146 ../libsvn_client/merge.c:5700
-#: ../libsvn_client/merge.c:5856 ../libsvn_client/ra.c:386
+#: ../libsvn_client/locking_commands.c:261 ../libsvn_client/merge.c:4987
+#: ../libsvn_client/merge.c:4993 ../libsvn_client/merge.c:5564
+#: ../libsvn_client/merge.c:5720 ../libsvn_client/ra.c:386
 #: ../libsvn_client/ra.c:423 ../libsvn_client/ra.c:626
 #, c-format
 msgid "'%s' has no URL"
@@ -1405,7 +1414,7 @@
 msgstr "“%s” 没有被锁定"
 
 #: ../libsvn_client/locking_commands.c:407 ../libsvn_fs/fs-loader.c:1035
-#: ../libsvn_ra/ra_loader.c:1125
+#: ../libsvn_ra/ra_loader.c:1127
 msgid "Lock comment contains illegal characters"
 msgstr "锁定注释包含非法字符"
 
@@ -1413,17 +1422,17 @@
 msgid "Missing required revision specification"
 msgstr "未提供请求的版本"
 
-#: ../libsvn_client/log.c:371
+#: ../libsvn_client/log.c:372
 msgid "When specifying working copy paths, only one target may be given"
 msgstr "当指定工作副本路径时，只能给出一个目标"
 
-#: ../libsvn_client/log.c:394 ../libsvn_client/status.c:296
+#: ../libsvn_client/log.c:395 ../libsvn_client/status.c:296
 #: ../libsvn_client/update.c:154
 #, c-format
 msgid "Entry '%s' has no URL"
 msgstr "条目“%s”没有URL"
 
-#: ../libsvn_client/log.c:647
+#: ../libsvn_client/log.c:645
 msgid "No commits in repository"
 msgstr "版本库中没有提交"
 
@@ -1445,25 +1454,25 @@
 #. xgettext: the '.working', '.merge-left.r%ld' and
 #. '.merge-right.r%ld' strings are used to tag onto a file
 #. name in case of a merge conflict
-#: ../libsvn_client/merge.c:758
+#: ../libsvn_client/merge.c:747
 msgid ".working"
 msgstr ".working"
 
-#: ../libsvn_client/merge.c:760
+#: ../libsvn_client/merge.c:749
 #, c-format
 msgid ".merge-left.r%ld"
 msgstr ".merge-left.r%ld"
 
-#: ../libsvn_client/merge.c:763
+#: ../libsvn_client/merge.c:752
 #, c-format
 msgid ".merge-right.r%ld"
 msgstr ".merge-right.r%ld"
 
-#: ../libsvn_client/merge.c:1676
+#: ../libsvn_client/merge.c:1666
 msgid "Cannot reverse-merge a range from a path's own future history; try updating first"
 msgstr "不能从路径的未来历史中反向合并范围；请先更新"
 
-#: ../libsvn_client/merge.c:2209
+#: ../libsvn_client/merge.c:2158
 #, c-format
 msgid ""
 "One or more conflicts were produced while merging r%ld:%ld into\n"
@@ -1474,45 +1483,45 @@
 "当合并 r%ld:%ld 到 “%s” 时出现了一个或更多的冲突\n"
 "请解决所有冲突后，再次运行合并，处理剩余的未合并版本"
 
-#: ../libsvn_client/merge.c:4771
+#: ../libsvn_client/merge.c:4666
 msgid "Use of two URLs is not compatible with mergeinfo modification"
 msgstr "使用两个 URL 与合并信息修改不兼容"
 
-#: ../libsvn_client/merge.c:4778 ../libsvn_client/merge.c:5061
+#: ../libsvn_client/merge.c:4673 ../libsvn_client/merge.c:4908
 msgid "Merge from foreign repository is not compatible with mergeinfo modification"
 msgstr "从外部版本库合并与合并信息修改不兼容"
 
-#: ../libsvn_client/merge.c:5367
+#: ../libsvn_client/merge.c:5214
 msgid "Cannot reintegrate into a working copy with a switched subtree"
 msgstr "不能复兴到包含已经切换子目录的工作副本"
 
-#: ../libsvn_client/merge.c:5372
+#: ../libsvn_client/merge.c:5219
 msgid "Cannot reintegrate into a working copy not entirely at infinite depth"
 msgstr "不能复兴到非全部无限制深度的工作副本"
 
-#: ../libsvn_client/merge.c:5377
+#: ../libsvn_client/merge.c:5224
 msgid "Cannot reintegrate into a working copy that has local modifications"
 msgstr "不能复兴到有本地修改的工作副本"
 
-#: ../libsvn_client/merge.c:5383
+#: ../libsvn_client/merge.c:5230
 msgid "Cannot determine revision of working copy"
 msgstr "不能确定工作副本的版本"
 
-#: ../libsvn_client/merge.c:5387
+#: ../libsvn_client/merge.c:5234
 msgid "Cannot reintegrate into mixed-revision working copy; try updating first"
 msgstr "不能复兴到有混合版本的工作副本；请先更新"
 
-#: ../libsvn_client/merge.c:5454
+#: ../libsvn_client/merge.c:5301
 #, c-format
 msgid "At least one revision (r%ld) not yet merged from '%s'"
 msgstr "至少有一个版本(r%ld)没有自“%s”合并"
 
-#: ../libsvn_client/merge.c:5595 ../libsvn_client/merge.c:5759
+#: ../libsvn_client/merge.c:5459 ../libsvn_client/merge.c:5623
 #, c-format
 msgid "'%s@%ld' must be ancestrally related to '%s@%ld'"
 msgstr "“%s@%ld”必须与“%s@%ld”有祖先关系"
 
-#: ../libsvn_client/merge.c:5718
+#: ../libsvn_client/merge.c:5582
 #, c-format
 msgid "'%s' must be from the same repository as '%s'"
 msgstr "“%s”必须与“%s”在同一个版本库中"
@@ -1522,46 +1531,46 @@
 msgid "'%s' is a wcprop, thus not accessible to clients"
 msgstr "“%s” 是一个工作副本属性，应此不能被客户端存取"
 
-#: ../libsvn_client/prop_commands.c:224
+#: ../libsvn_client/prop_commands.c:236
 #, c-format
 msgid "Property '%s' is not a regular property"
 msgstr "属性 “%s” 不是常规属性"
 
-#: ../libsvn_client/prop_commands.c:326
+#: ../libsvn_client/prop_commands.c:338
 #, c-format
 msgid "Revision property '%s' not allowed in this context"
 msgstr "此上下文中不允许版本属性 “%s”"
 
-#: ../libsvn_client/prop_commands.c:333 ../libsvn_client/prop_commands.c:472
+#: ../libsvn_client/prop_commands.c:345 ../libsvn_client/prop_commands.c:486
 #, c-format
 msgid "Bad property name: '%s'"
 msgstr "属性名称错误: “%s”"
 
-#: ../libsvn_client/prop_commands.c:343
+#: ../libsvn_client/prop_commands.c:355
 #, c-format
 msgid "Setting property on non-local target '%s' needs a base revision"
 msgstr "设定非本地目标 “%s” 的属性需要版本参数"
 
-#: ../libsvn_client/prop_commands.c:348
+#: ../libsvn_client/prop_commands.c:360
 #, c-format
 msgid "Setting property recursively on non-local target '%s' is not supported"
 msgstr "不支持递归设置非本地目标 “%s” 的属性"
 
-#: ../libsvn_client/prop_commands.c:363
+#: ../libsvn_client/prop_commands.c:375
 #, c-format
 msgid "Setting property '%s' on non-local target '%s' is not supported"
 msgstr "不支持设置属性 “%s” 于非本地目标 “%s”"
 
-#: ../libsvn_client/prop_commands.c:468
+#: ../libsvn_client/prop_commands.c:482
 msgid "Value will not be set unless forced"
 msgstr "除非强迫为之，否则其值不会被设定"
 
-#: ../libsvn_client/prop_commands.c:649
+#: ../libsvn_client/prop_commands.c:663
 #, c-format
 msgid "'%s' does not exist in revision %ld"
 msgstr "没有路径 “%s” 在版本 %ld 中"
 
-#: ../libsvn_client/prop_commands.c:656 ../libsvn_client/prop_commands.c:995
+#: ../libsvn_client/prop_commands.c:670 ../libsvn_client/prop_commands.c:1009
 #, c-format
 msgid "Unknown node kind for '%s'"
 msgstr "“%s” 是未知的节点类型"
@@ -1602,7 +1611,7 @@
 msgstr "“%s” 的请求版本类型无法识别"
 
 #: ../libsvn_client/switch.c:144 ../libsvn_ra_local/ra_plugin.c:196
-#: ../libsvn_ra_local/ra_plugin.c:271 ../libsvn_wc/update_editor.c:3244
+#: ../libsvn_ra_local/ra_plugin.c:271 ../libsvn_wc/update_editor.c:3266
 #, c-format
 msgid ""
 "'%s'\n"
@@ -1817,12 +1826,12 @@
 msgid "reading copy"
 msgstr "正在读取副本"
 
-#: ../libsvn_fs_base/bdb/node-origins-table.c:110
+#: ../libsvn_fs_base/bdb/node-origins-table.c:111
 #, c-format
 msgid "Node origin for '%s' exists in filesystem '%s' with a different value (%s) than what we were about to store (%s)"
 msgstr "“%s” 的原始节点在文件系统 “%s” 中，取值(%s)与我们要存储的值(%s)不同"
 
-#: ../libsvn_fs_base/bdb/node-origins-table.c:120
+#: ../libsvn_fs_base/bdb/node-origins-table.c:121
 msgid "storing node-origins record"
 msgstr "正在存储节点原始记录"
 
@@ -2277,49 +2286,49 @@
 msgid "Cannot compare property value between two different filesystems"
 msgstr "不能在两个不同的文件系统之间比较属性值"
 
-#: ../libsvn_fs_base/tree.c:1726
+#: ../libsvn_fs_base/tree.c:1733
 msgid "Corrupt DB: faulty predecessor count"
 msgstr "损坏的数据库: 先前的数目不完整"
 
-#: ../libsvn_fs_base/tree.c:1781 ../libsvn_fs_fs/tree.c:1190
+#: ../libsvn_fs_base/tree.c:1788 ../libsvn_fs_fs/tree.c:1190
 #, c-format
 msgid "Unexpected immutable node at '%s'"
 msgstr "“%s”有意外的不变节点"
 
-#: ../libsvn_fs_base/tree.c:1802 ../libsvn_fs_fs/tree.c:1213
+#: ../libsvn_fs_base/tree.c:1809 ../libsvn_fs_fs/tree.c:1213
 #, c-format
 msgid "Conflict at '%s'"
 msgstr "在“%s”冲突"
 
-#: ../libsvn_fs_base/tree.c:1855 ../libsvn_fs_base/tree.c:2607
+#: ../libsvn_fs_base/tree.c:1862 ../libsvn_fs_base/tree.c:2614
 #: ../libsvn_fs_fs/tree.c:1264 ../libsvn_fs_fs/tree.c:1803
 msgid "Bad merge; ancestor, source, and target not all in same fs"
 msgstr "错误的合并；初始，原始，目标不在同一个文件系统"
 
-#: ../libsvn_fs_base/tree.c:1871 ../libsvn_fs_fs/tree.c:1280
+#: ../libsvn_fs_base/tree.c:1878 ../libsvn_fs_fs/tree.c:1280
 #, c-format
 msgid "Bad merge; target '%s' has id '%s', same as ancestor"
 msgstr "错误的合并: 目标“%s”拥有标识“%s”，与初始相同"
 
-#: ../libsvn_fs_base/tree.c:2414
+#: ../libsvn_fs_base/tree.c:2421
 #, c-format
 msgid "Transaction '%s' out-of-date with respect to revision '%s'"
 msgstr "事务 “%s” 过时，对于版本 “%s” "
 
-#: ../libsvn_fs_base/tree.c:2792 ../libsvn_fs_fs/tree.c:1940
+#: ../libsvn_fs_base/tree.c:2799 ../libsvn_fs_fs/tree.c:1940
 msgid "The root directory cannot be deleted"
 msgstr "不能删除根目录"
 
-#: ../libsvn_fs_base/tree.c:3013 ../libsvn_fs_fs/tree.c:2022
+#: ../libsvn_fs_base/tree.c:3020 ../libsvn_fs_fs/tree.c:2022
 #, c-format
 msgid "Cannot copy between two different filesystems ('%s' and '%s')"
 msgstr "不能在两个不同的文件系统（“%s”和“%s”）之间复制"
 
-#: ../libsvn_fs_base/tree.c:3022 ../libsvn_fs_fs/tree.c:2028
+#: ../libsvn_fs_base/tree.c:3029 ../libsvn_fs_fs/tree.c:2028
 msgid "Copy from mutable tree not currently supported"
 msgstr "当前不支持从可变的树复制"
 
-#: ../libsvn_fs_base/tree.c:3519 ../libsvn_fs_fs/tree.c:2476
+#: ../libsvn_fs_base/tree.c:3526 ../libsvn_fs_fs/tree.c:2476
 #, c-format
 msgid ""
 "Base checksum mismatch on '%s':\n"
@@ -2330,23 +2339,23 @@
 "  期望: %s\n"
 "  实际: %s\n"
 
-#: ../libsvn_fs_base/tree.c:3774 ../libsvn_fs_fs/tree.c:2712
+#: ../libsvn_fs_base/tree.c:3781 ../libsvn_fs_fs/tree.c:2712
 msgid "Cannot compare file contents between two different filesystems"
 msgstr "不能在两个不同的文件系统间比较文件内容"
 
-#: ../libsvn_fs_base/tree.c:3783 ../libsvn_fs_base/tree.c:3788
+#: ../libsvn_fs_base/tree.c:3790 ../libsvn_fs_base/tree.c:3795
 #: ../libsvn_fs_fs/tree.c:2721 ../libsvn_fs_fs/tree.c:2726
 #: ../libsvn_ra/compat.c:677
 #, c-format
 msgid "'%s' is not a file"
 msgstr "“%s”不是一个文件"
 
-#: ../libsvn_fs_base/tree.c:4793 ../libsvn_fs_base/tree.c:4981
+#: ../libsvn_fs_base/tree.c:4800 ../libsvn_fs_base/tree.c:4988
 #, c-format
 msgid "Node-revision '%s' claims to have mergeinfo but doesn't"
 msgstr "节点版本“%s”声称自己有合并信息，实际上却没有"
 
-#: ../libsvn_fs_base/tree.c:4817
+#: ../libsvn_fs_base/tree.c:4824
 #, c-format
 msgid "Node-revision '%s' claims to sit atop a tree containing mergeinfo but is not a directory"
 msgstr "节点版本“%s”声称自己是包含合并信息的树顶，实际上却不是目录"
@@ -2757,8 +2766,8 @@
 msgid "Mismatched RA version for '%s': found %d.%d.%d%s, expected %d.%d.%d%s"
 msgstr "“%s”的 RA 版本不匹配: 找到 %d.%d.%d%s，期望 %d.%d.%d%s"
 
-#: ../libsvn_ra/ra_loader.c:408 ../libsvn_ra_serf/serf.c:481
-#: ../libsvn_ra_serf/serf.c:595
+#: ../libsvn_ra/ra_loader.c:408 ../libsvn_ra_serf/serf.c:507
+#: ../libsvn_ra_serf/serf.c:625
 #, c-format
 msgid "Illegal repository URL '%s'"
 msgstr "非法版本库 URL “%s”"
@@ -2777,12 +2786,12 @@
 msgid "'%s' isn't in the same repository as '%s'"
 msgstr "“%s”与“%s”并不在同一个版本库中"
 
-#: ../libsvn_ra/ra_loader.c:1284
+#: ../libsvn_ra/ra_loader.c:1286
 #, c-format
 msgid "  - handles '%s' scheme\n"
 msgstr "  - 处理“%s”方案\n"
 
-#: ../libsvn_ra/ra_loader.c:1370
+#: ../libsvn_ra/ra_loader.c:1372
 #, c-format
 msgid "Unrecognized URL scheme '%s'"
 msgstr "无法识别的URL方案(一般需要svn://，http://，file://等开头)“%s”"
@@ -2807,13 +2816,13 @@
 msgid "URL '%s' is not a child of the session's repository root URL '%s'"
 msgstr "URL “%s” 不是会话版本库根 URL “%s” 的子节点"
 
-#: ../libsvn_ra_local/ra_plugin.c:1372 ../libsvn_ra_neon/session.c:913
-#: ../libsvn_ra_serf/serf.c:292 ../libsvn_ra_svn/client.c:2246
+#: ../libsvn_ra_local/ra_plugin.c:1373 ../libsvn_ra_neon/session.c:922
+#: ../libsvn_ra_serf/serf.c:300 ../libsvn_ra_svn/client.c:2258
 #, c-format
 msgid "Don't know anything about capability '%s'"
 msgstr "不知道特性 “%s” 的任何信息"
 
-#: ../libsvn_ra_local/ra_plugin.c:1450
+#: ../libsvn_ra_local/ra_plugin.c:1451
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_local"
 msgstr "不支持ra_local RA加载器版本 %d"
@@ -2868,19 +2877,19 @@
 msgid "Could not write svndiff to temp file"
 msgstr "无法将 svndiff 写入临时文件"
 
-#: ../libsvn_ra_neon/fetch.c:254
+#: ../libsvn_ra_neon/fetch.c:257
 msgid "Could not save the URL of the version resource"
 msgstr "无法储存版本资源的URL"
 
-#: ../libsvn_ra_neon/fetch.c:447
+#: ../libsvn_ra_neon/fetch.c:450
 msgid "Could not get content-type from response"
 msgstr "不能从响应中获得内容类型"
 
-#: ../libsvn_ra_neon/fetch.c:540
+#: ../libsvn_ra_neon/fetch.c:543
 msgid "Could not save file"
 msgstr "无法保存文件"
 
-#: ../libsvn_ra_neon/fetch.c:761 ../libsvn_ra_svn/client.c:960
+#: ../libsvn_ra_neon/fetch.c:764 ../libsvn_ra_svn/client.c:969
 #, c-format
 msgid ""
 "Checksum mismatch for '%s':\n"
@@ -2891,105 +2900,105 @@
 "  期望的校验和: %s\n"
 "  实际的校验和: %s\n"
 
-#: ../libsvn_ra_neon/fetch.c:1007
+#: ../libsvn_ra_neon/fetch.c:1010
 msgid "Server response missing the expected deadprop-count property"
 msgstr "服务器响应丢失了期望的 deadprop-count 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1174 ../libsvn_ra_serf/commit.c:2135
+#: ../libsvn_ra_neon/fetch.c:1177 ../libsvn_ra_serf/commit.c:2135
 msgid "DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent"
 msgstr "DAV 请求失败；可能是版本库的 pre-revprop-change 钩子执行失败或者不存在"
 
-#: ../libsvn_ra_neon/fetch.c:1417
+#: ../libsvn_ra_neon/fetch.c:1422
 #, c-format
 msgid "Missing rev attr in target-revision element"
 msgstr "元素 target-revision 没有 rev 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1428 ../libsvn_ra_serf/update.c:1466
+#: ../libsvn_ra_neon/fetch.c:1433 ../libsvn_ra_serf/update.c:1466
 #, c-format
 msgid "Missing name attr in absent-directory element"
 msgstr "元素 absent-directory 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1444 ../libsvn_ra_serf/update.c:1489
+#: ../libsvn_ra_neon/fetch.c:1449 ../libsvn_ra_serf/update.c:1489
 #, c-format
 msgid "Missing name attr in absent-file element"
 msgstr "元素 absent-file 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1459
+#: ../libsvn_ra_neon/fetch.c:1464
 #, c-format
 msgid "Missing path attr in resource element"
 msgstr "元素 resource 没有 path 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1468
+#: ../libsvn_ra_neon/fetch.c:1473
 #, c-format
 msgid "Missing rev attr in open-directory element"
 msgstr "元素 open-directory 没有 rev 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1499 ../libsvn_ra_serf/replay.c:255
+#: ../libsvn_ra_neon/fetch.c:1504 ../libsvn_ra_serf/replay.c:255
 #: ../libsvn_ra_serf/update.c:1295
 #, c-format
 msgid "Missing name attr in open-directory element"
 msgstr "元素 open-directory 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1526 ../libsvn_ra_serf/replay.c:281
+#: ../libsvn_ra_neon/fetch.c:1531 ../libsvn_ra_serf/replay.c:281
 #: ../libsvn_ra_serf/update.c:1330
 #, c-format
 msgid "Missing name attr in add-directory element"
 msgstr "元素 add-directory 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1539
+#: ../libsvn_ra_neon/fetch.c:1544
 #, c-format
 msgid "Missing copyfrom-rev attr in add-directory element"
 msgstr "元素 add-directory 没有 copyfrom-rev 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1616
+#: ../libsvn_ra_neon/fetch.c:1621
 #, c-format
 msgid "Missing rev attr in open-file element"
 msgstr "元素 open-file 没有 rev 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1623 ../libsvn_ra_serf/replay.c:316
+#: ../libsvn_ra_neon/fetch.c:1628 ../libsvn_ra_serf/replay.c:316
 #: ../libsvn_ra_serf/update.c:1370
 #, c-format
 msgid "Missing name attr in open-file element"
 msgstr "元素 open-file 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1649 ../libsvn_ra_serf/replay.c:342
+#: ../libsvn_ra_neon/fetch.c:1654 ../libsvn_ra_serf/replay.c:342
 #: ../libsvn_ra_serf/update.c:1405
 #, c-format
 msgid "Missing name attr in add-file element"
 msgstr "元素 add-file 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1662
+#: ../libsvn_ra_neon/fetch.c:1667
 #, c-format
 msgid "Missing copyfrom-rev attr in add-file element"
 msgstr "元素 add-file 没有 copyfrom-rev 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1717
+#: ../libsvn_ra_neon/fetch.c:1722
 #, c-format
 msgid "Missing name attr in set-prop element"
 msgstr "元素 set-pro 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1731
+#: ../libsvn_ra_neon/fetch.c:1736
 #, c-format
 msgid "Missing name attr in remove-prop element"
 msgstr "元素 remove-prop 没有 name 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1805 ../libsvn_ra_serf/replay.c:229
+#: ../libsvn_ra_neon/fetch.c:1810 ../libsvn_ra_serf/replay.c:229
 #: ../libsvn_ra_serf/update.c:1435
 #, c-format
 msgid "Missing name attr in delete-entry element"
 msgstr "元素 delete-entry 没有 attr 属性"
 
-#: ../libsvn_ra_neon/fetch.c:1945
+#: ../libsvn_ra_neon/fetch.c:1972
 #, c-format
 msgid "Error writing to '%s': unexpected EOF"
 msgstr "写入 “%s” 时出错: 意外的 EOF"
 
-#: ../libsvn_ra_neon/fetch.c:2092
+#: ../libsvn_ra_neon/fetch.c:2119
 #, c-format
 msgid "Unknown XML encoding: '%s'"
 msgstr "未知的 XML 编码: “%s”"
 
-#: ../libsvn_ra_neon/fetch.c:2379
+#: ../libsvn_ra_neon/fetch.c:2418
 #, c-format
 msgid "REPORT response handling failed to complete the editor drive"
 msgstr "处理报告响应失败，不能完成编辑"
@@ -3015,7 +3024,7 @@
 msgstr "服务器请求 dated-rev 的响应无效"
 
 #: ../libsvn_ra_neon/get_location_segments.c:118
-#: ../libsvn_ra_serf/getlocationsegments.c:101 ../libsvn_ra_svn/client.c:1575
+#: ../libsvn_ra_serf/getlocationsegments.c:101 ../libsvn_ra_svn/client.c:1584
 msgid "Expected valid revision range"
 msgstr "期望合法的版本范围"
 
@@ -3064,7 +3073,7 @@
 msgid "'%s' is not locked in the repository"
 msgstr "版本库中的“%s”没有被锁定"
 
-#: ../libsvn_ra_neon/lock.c:529
+#: ../libsvn_ra_neon/lock.c:528
 msgid "Failed to fetch lock information"
 msgstr "获取锁信息失败"
 
@@ -3074,7 +3083,7 @@
 msgstr "元素 revprop 没有 name 属性"
 
 #: ../libsvn_ra_neon/log.c:433 ../libsvn_ra_serf/log.c:533
-#: ../libsvn_ra_svn/client.c:1300
+#: ../libsvn_ra_svn/client.c:1309
 msgid "Server does not support custom revprops via log"
 msgstr "服务器不支持通过日志自定义 revprops"
 
@@ -3178,15 +3187,15 @@
 msgid "PIN for token \"%s\" in slot \"%s\""
 msgstr "钉住令牌“%s”于通道“%s”"
 
-#: ../libsvn_ra_neon/session.c:529 ../libsvn_ra_serf/serf.c:405
+#: ../libsvn_ra_neon/session.c:529 ../libsvn_ra_serf/serf.c:431
 msgid "Invalid URL: illegal character in proxy port number"
 msgstr "无效URL: 代理端口中有非法字符"
 
-#: ../libsvn_ra_neon/session.c:533 ../libsvn_ra_serf/serf.c:409
+#: ../libsvn_ra_neon/session.c:533 ../libsvn_ra_serf/serf.c:435
 msgid "Invalid URL: negative proxy port number"
 msgstr "无效URL: 负的代理端口"
 
-#: ../libsvn_ra_neon/session.c:536 ../libsvn_ra_serf/serf.c:412
+#: ../libsvn_ra_neon/session.c:536 ../libsvn_ra_serf/serf.c:438
 msgid "Invalid URL: proxy port number greater than maximum TCP port number 65535"
 msgstr "无效URL: 代理端口大于TCP通信端口最大值65535"
 
@@ -3216,47 +3225,47 @@
 msgid "OPTIONS request (for capabilities) got HTTP response code %d"
 msgstr "OPTIONS 请求(特性)得到 HTTP 响应码 %d"
 
-#: ../libsvn_ra_neon/session.c:896 ../libsvn_ra_serf/serf.c:275
+#: ../libsvn_ra_neon/session.c:905 ../libsvn_ra_serf/serf.c:283
 #, c-format
 msgid "Don't know how to handle '%s' for capability '%s'"
 msgstr "不知道如何处理“%s”，对于特性“%s”"
 
-#: ../libsvn_ra_neon/session.c:920 ../libsvn_ra_serf/serf.c:299
+#: ../libsvn_ra_neon/session.c:929 ../libsvn_ra_serf/serf.c:307
 #, c-format
 msgid "Attempt to fetch capability '%s' resulted in '%s'"
 msgstr "试图取得特性 “%s” 导致 “%s”"
 
-#: ../libsvn_ra_neon/session.c:943 ../libsvn_ra_serf/locks.c:548
+#: ../libsvn_ra_neon/session.c:952 ../libsvn_ra_serf/locks.c:548
 msgid "Malformed URL for repository"
 msgstr "版本库的 URL 非法"
 
-#: ../libsvn_ra_neon/session.c:993
+#: ../libsvn_ra_neon/session.c:1002
 msgid "Network socket initialization failed"
 msgstr "创建网络套接字失败"
 
-#: ../libsvn_ra_neon/session.c:1012
+#: ../libsvn_ra_neon/session.c:1021
 msgid "SSL is not supported"
 msgstr "不支持 SSL"
 
-#: ../libsvn_ra_neon/session.c:1177
+#: ../libsvn_ra_neon/session.c:1186 ../libsvn_ra_serf/util.c:211
 #, c-format
 msgid "Invalid config: unable to load certificate file '%s'"
 msgstr "无效的配置: 无法加载证书文件“%s”"
 
-#: ../libsvn_ra_neon/session.c:1205
+#: ../libsvn_ra_neon/session.c:1214
 #, c-format
 msgid "Invalid config: unable to load PKCS#11 provider '%s'"
 msgstr "无效的配置: 无法加载 PKCS#11 提供者“%s”"
 
-#: ../libsvn_ra_neon/session.c:1330 ../libsvn_ra_serf/serf.c:1107
+#: ../libsvn_ra_neon/session.c:1339 ../libsvn_ra_serf/serf.c:1137
 msgid "The UUID property was not found on the resource or any of its parents"
 msgstr "无法在本资源或其任何父项目中找到UUID属性"
 
-#: ../libsvn_ra_neon/session.c:1338
+#: ../libsvn_ra_neon/session.c:1347
 msgid "Please upgrade the server to 0.19 or later"
 msgstr "请将服务器升级至0.19或更新的版本"
 
-#: ../libsvn_ra_neon/session.c:1409
+#: ../libsvn_ra_neon/session.c:1418
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_neon"
 msgstr "不支持的 ra_neon RA 加载器版本(%d)"
@@ -3279,7 +3288,9 @@
 msgid "%s of '%s'"
 msgstr "方法 %s 失败于 “%s”"
 
-#: ../libsvn_ra_neon/util.c:544 ../libsvn_ra_serf/mergeinfo.c:292
+#: ../libsvn_ra_neon/util.c:544 ../libsvn_ra_serf/getlocations.c:280
+#: ../libsvn_ra_serf/getlocationsegments.c:231
+#: ../libsvn_ra_serf/mergeinfo.c:292 ../libsvn_ra_serf/mergeinfo.c:306
 #, c-format
 msgid "'%s' path not found"
 msgstr "找不到路径 “%s”"
@@ -3335,8 +3346,8 @@
 msgid "Missing 'realm' attribute in Authorization header."
 msgstr "认证头丢失属性“realm”"
 
-#: ../libsvn_ra_serf/blame.c:464 ../libsvn_ra_serf/serf.c:632
-#: ../libsvn_ra_serf/update.c:2222 ../libsvn_ra_serf/util.c:1201
+#: ../libsvn_ra_serf/blame.c:464 ../libsvn_ra_serf/serf.c:662
+#: ../libsvn_ra_serf/update.c:2222 ../libsvn_ra_serf/util.c:1402
 msgid "The OPTIONS response did not include the requested version-controlled-configuration value"
 msgstr "OPTIONS 响应中没有包含请求的 version-controlled-configuration 值。"
 
@@ -3345,14 +3356,14 @@
 msgstr "OPTIONS 响应中没有包含请求的 baseline-relative-path 值。"
 
 #: ../libsvn_ra_serf/blame.c:496 ../libsvn_ra_serf/commit.c:1160
-#: ../libsvn_ra_serf/property.c:930 ../libsvn_ra_serf/serf.c:648
+#: ../libsvn_ra_serf/property.c:930 ../libsvn_ra_serf/serf.c:678
 #: ../libsvn_ra_serf/update.c:1135 ../libsvn_ra_serf/update.c:1680
 msgid "The OPTIONS response did not include the requested checked-in value"
 msgstr "OPTIONS 响应中没有包含请求的 checked-in 值。"
 
 #: ../libsvn_ra_serf/blame.c:523 ../libsvn_ra_serf/commit.c:1389
 #: ../libsvn_ra_serf/commit.c:1779 ../libsvn_ra_serf/property.c:944
-#: ../libsvn_ra_serf/serf.c:770 ../libsvn_ra_serf/serf.c:1006
+#: ../libsvn_ra_serf/serf.c:800 ../libsvn_ra_serf/serf.c:1036
 msgid "The OPTIONS response did not include the requested baseline-collection value"
 msgstr "OPTIONS 响应中没有包含请求的 baseline-collection 值。"
 
@@ -3437,24 +3448,24 @@
 msgid "Error retrieving replay REPORT (%d)"
 msgstr "获取重放报告出错(%d)"
 
-#: ../libsvn_ra_serf/serf.c:315
+#: ../libsvn_ra_serf/serf.c:323
 msgid "Module for accessing a repository via WebDAV protocol using serf."
 msgstr "通过 WebDAV 协议使用 serf 访问版本库的模块。"
 
-#: ../libsvn_ra_serf/serf.c:521
+#: ../libsvn_ra_serf/serf.c:551
 #, c-format
 msgid "Could not lookup hostname `%s'"
 msgstr "无法解析主机 “%s” 的地址"
 
-#: ../libsvn_ra_serf/serf.c:665
+#: ../libsvn_ra_serf/serf.c:695
 msgid "The OPTIONS response did not include the requested version-name value"
 msgstr "OPTIONS 响应中没有包含请求的 version-name 值。"
 
-#: ../libsvn_ra_serf/serf.c:829
+#: ../libsvn_ra_serf/serf.c:859
 msgid "The OPTIONS response did not include the requested resourcetype value"
 msgstr "OPTIONS 响应中没有包含请求的 resourcetype 值。"
 
-#: ../libsvn_ra_serf/serf.c:1172
+#: ../libsvn_ra_serf/serf.c:1202
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_serf"
 msgstr "不支持ra_serf RA加载器版本 %d"
@@ -3464,16 +3475,16 @@
 msgid "GET request failed: %d %s"
 msgstr "GET 请求失败: %d %s"
 
-#: ../libsvn_ra_serf/update.c:2298
+#: ../libsvn_ra_serf/update.c:2302
 #, c-format
 msgid "Error retrieving REPORT (%d)"
 msgstr "获取报告出错(%d)"
 
-#: ../libsvn_ra_serf/util.c:986
+#: ../libsvn_ra_serf/util.c:1186
 msgid "Premature EOF seen from server"
 msgstr "从服务器发现EOF太早"
 
-#: ../libsvn_ra_serf/util.c:1036
+#: ../libsvn_ra_serf/util.c:1237
 msgid "Unspecified error message"
 msgstr "未指明的错误信息"
 
@@ -3482,201 +3493,196 @@
 msgid "Unknown hostname '%s'"
 msgstr "未知的主机“%s”"
 
-#: ../libsvn_ra_svn/client.c:145
-#, c-format
-msgid "Can't create socket"
-msgstr "无法创建 socket"
-
-#: ../libsvn_ra_svn/client.c:149
+#: ../libsvn_ra_svn/client.c:158
 #, c-format
 msgid "Can't connect to host '%s'"
 msgstr "无法连接主机“%s”"
 
-#: ../libsvn_ra_svn/client.c:172
+#: ../libsvn_ra_svn/client.c:181
 msgid "Prop diffs element not a list"
 msgstr "Prop diffs 元素不是一个列表"
 
-#: ../libsvn_ra_svn/client.c:210
+#: ../libsvn_ra_svn/client.c:219
 #, c-format
 msgid "Unrecognized node kind '%s' from server"
 msgstr "服务器返回无法识别的节点类型 “%s”"
 
-#: ../libsvn_ra_svn/client.c:374
+#: ../libsvn_ra_svn/client.c:383
 #, c-format
 msgid "Undefined tunnel scheme '%s'"
 msgstr "无法识别的隧道方案 “%s”"
 
-#: ../libsvn_ra_svn/client.c:391
+#: ../libsvn_ra_svn/client.c:400
 #, c-format
 msgid "Tunnel scheme %s requires environment variable %s to be defined"
 msgstr "隧道方案 %s 需要设定环境变量 %s"
 
-#: ../libsvn_ra_svn/client.c:402
+#: ../libsvn_ra_svn/client.c:411
 #, c-format
 msgid "Can't tokenize command '%s'"
 msgstr "不能解析命令“%s”"
 
-#: ../libsvn_ra_svn/client.c:433
+#: ../libsvn_ra_svn/client.c:442
 #, c-format
 msgid "Error in child process: %s"
 msgstr "子进程错误: %s"
 
-#: ../libsvn_ra_svn/client.c:457
+#: ../libsvn_ra_svn/client.c:466
 #, c-format
 msgid "Can't create tunnel"
 msgstr "无法创建隧道"
 
-#: ../libsvn_ra_svn/client.c:495
+#: ../libsvn_ra_svn/client.c:504
 #, c-format
 msgid "Illegal svn repository URL '%s'"
 msgstr "非法的svn版本库URL“%s”"
 
-#: ../libsvn_ra_svn/client.c:555
+#: ../libsvn_ra_svn/client.c:564
 #, c-format
 msgid "Server requires minimum version %d"
 msgstr "服务器要求的最低版本是 %d"
 
-#: ../libsvn_ra_svn/client.c:559
+#: ../libsvn_ra_svn/client.c:568
 #, c-format
 msgid "Server only supports versions up to %d"
 msgstr "服务器支持的版本不大于 %d"
 
-#: ../libsvn_ra_svn/client.c:567
+#: ../libsvn_ra_svn/client.c:576
 msgid "Server does not support edit pipelining"
 msgstr "服务器不支持流水线编辑"
 
-#: ../libsvn_ra_svn/client.c:600
+#: ../libsvn_ra_svn/client.c:609
 msgid "Impossibly long repository root from server"
 msgstr "服务器返回的版本库根路径太长"
 
-#: ../libsvn_ra_svn/client.c:612
+#: ../libsvn_ra_svn/client.c:621
 msgid ""
 "Module for accessing a repository using the svn network protocol.\n"
 "  - with Cyrus SASL authentication"
 msgstr "使用 svn 网络协议访问版本库的模块。  - 使用 Cyrus SASL 认证"
 
-#: ../libsvn_ra_svn/client.c:616
+#: ../libsvn_ra_svn/client.c:625
 msgid "Module for accessing a repository using the svn network protocol."
 msgstr "使用 svn 网络协议访问版本库的模块。"
 
-#: ../libsvn_ra_svn/client.c:777
+#: ../libsvn_ra_svn/client.c:786
 msgid "Server did not send repository root"
 msgstr "服务器没有返回版本库根路径"
 
-#: ../libsvn_ra_svn/client.c:850
+#: ../libsvn_ra_svn/client.c:859
 msgid "Server doesn't support setting arbitrary revision properties during commit"
 msgstr "在提交时，服务器不支持设置任意版本属性"
 
-#: ../libsvn_ra_svn/client.c:938
+#: ../libsvn_ra_svn/client.c:947
 msgid "Non-string as part of file contents"
 msgstr "部份文件内容不是字符串"
 
-#: ../libsvn_ra_svn/client.c:1039
+#: ../libsvn_ra_svn/client.c:1048
 msgid "Dirlist element not a list"
 msgstr "目录列表元素不是列表"
 
-#: ../libsvn_ra_svn/client.c:1098
+#: ../libsvn_ra_svn/client.c:1107
 msgid "Mergeinfo element is not a list"
 msgstr "Mergeinfo 元素不是列表"
 
-#: ../libsvn_ra_svn/client.c:1289
+#: ../libsvn_ra_svn/client.c:1298
 msgid "Log entry not a list"
 msgstr "日志条目不是列表"
 
-#: ../libsvn_ra_svn/client.c:1324
+#: ../libsvn_ra_svn/client.c:1333
 msgid "Changed-path entry not a list"
 msgstr "已修改路径条目不是列表"
 
-#: ../libsvn_ra_svn/client.c:1440
+#: ../libsvn_ra_svn/client.c:1449
 msgid "'stat' not implemented"
 msgstr "未实现“stat”"
 
-#: ../libsvn_ra_svn/client.c:1497
+#: ../libsvn_ra_svn/client.c:1506
 msgid "'get-locations' not implemented"
 msgstr "未实现“get-locations”"
 
-#: ../libsvn_ra_svn/client.c:1509
+#: ../libsvn_ra_svn/client.c:1518
 msgid "Location entry not a list"
 msgstr "区域条目不是列表"
 
-#: ../libsvn_ra_svn/client.c:1554
+#: ../libsvn_ra_svn/client.c:1563
 msgid "'get-location-segments' not implemented"
 msgstr "未实现 “get-location-segments”"
 
-#: ../libsvn_ra_svn/client.c:1566
+#: ../libsvn_ra_svn/client.c:1575
 msgid "Location segment entry not a list"
 msgstr "位置分段入口不是列表"
 
-#: ../libsvn_ra_svn/client.c:1628
+#: ../libsvn_ra_svn/client.c:1637
 msgid "'get-file-revs' not implemented"
 msgstr "未实现“get-file-revs”"
 
-#: ../libsvn_ra_svn/client.c:1641
+#: ../libsvn_ra_svn/client.c:1650
 msgid "Revision entry not a list"
 msgstr "版本条目不是列表"
 
-#: ../libsvn_ra_svn/client.c:1658 ../libsvn_ra_svn/client.c:1683
+#: ../libsvn_ra_svn/client.c:1667 ../libsvn_ra_svn/client.c:1692
 msgid "Text delta chunk not a string"
 msgstr "文本差异块不是字符串"
 
-#: ../libsvn_ra_svn/client.c:1695
+#: ../libsvn_ra_svn/client.c:1704
 msgid "The get-file-revs command didn't return any revisions"
 msgstr "get-file-revs 命令没有返回任何版本"
 
-#: ../libsvn_ra_svn/client.c:1743
+#: ../libsvn_ra_svn/client.c:1752
 msgid "Server doesn't support the lock command"
 msgstr "服务器不支持加锁"
 
-#: ../libsvn_ra_svn/client.c:1807
+#: ../libsvn_ra_svn/client.c:1816
 msgid "Server doesn't support the unlock command"
 msgstr "服务器不支持解锁"
 
-#: ../libsvn_ra_svn/client.c:1904
+#: ../libsvn_ra_svn/client.c:1913
 msgid "Lock response not a list"
 msgstr "加锁响应不是列表"
 
-#: ../libsvn_ra_svn/client.c:1918
+#: ../libsvn_ra_svn/client.c:1927
 msgid "Unknown status for lock command"
 msgstr "加锁命令的状态未知"
 
-#: ../libsvn_ra_svn/client.c:1940
+#: ../libsvn_ra_svn/client.c:1949
 msgid "Didn't receive end marker for lock responses"
 msgstr "加锁响应没有结束标记"
 
-#: ../libsvn_ra_svn/client.c:2027
+#: ../libsvn_ra_svn/client.c:2036
 msgid "Unlock response not a list"
 msgstr "解锁响应不是列表"
 
-#: ../libsvn_ra_svn/client.c:2041
+#: ../libsvn_ra_svn/client.c:2050
 msgid "Unknown status for unlock command"
 msgstr "未知的解锁命令状态"
 
-#: ../libsvn_ra_svn/client.c:2062
+#: ../libsvn_ra_svn/client.c:2071
 msgid "Didn't receive end marker for unlock responses"
 msgstr "解锁响应没有结束标记"
 
-#: ../libsvn_ra_svn/client.c:2086 ../libsvn_ra_svn/client.c:2114
+#: ../libsvn_ra_svn/client.c:2095 ../libsvn_ra_svn/client.c:2123
 msgid "Server doesn't support the get-lock command"
 msgstr "服务器不支持命令 get-lock"
 
-#: ../libsvn_ra_svn/client.c:2127
+#: ../libsvn_ra_svn/client.c:2136
 msgid "Lock element not a list"
 msgstr "Lock元素不是列表"
 
-#: ../libsvn_ra_svn/client.c:2150
+#: ../libsvn_ra_svn/client.c:2159
 msgid "Server doesn't support the replay command"
 msgstr "服务器不支持重放命令"
 
-#: ../libsvn_ra_svn/client.c:2182
+#: ../libsvn_ra_svn/client.c:2191
 msgid "Server doesn't support the replay-range command"
 msgstr "服务器不支持重放范围命令"
 
-#: ../libsvn_ra_svn/client.c:2200
+#: ../libsvn_ra_svn/client.c:2209
 #, c-format
 msgid "Expected 'revprops', found '%s'"
 msgstr "期望“revprops”，发现“%s”"
 
-#: ../libsvn_ra_svn/client.c:2310
+#: ../libsvn_ra_svn/client.c:2322
 #, c-format
 msgid "Unsupported RA loader version (%d) for ra_svn"
 msgstr "不支持ra_svn RA加载器版本 %d"
@@ -4154,24 +4160,24 @@
 msgid "Cannot replace a directory from within"
 msgstr "不能在子目录中替换目录"
 
-#: ../libsvn_repos/reporter.c:1211
+#: ../libsvn_repos/reporter.c:1209
 msgid "Invalid report for top level of working copy"
 msgstr "最上层工作副本报告无效"
 
-#: ../libsvn_repos/reporter.c:1226
+#: ../libsvn_repos/reporter.c:1224
 msgid "Two top-level reports with no target"
 msgstr "两个最上层报告没有目标"
 
-#: ../libsvn_repos/reporter.c:1278
+#: ../libsvn_repos/reporter.c:1282
 #, c-format
 msgid "Unsupported report depth '%s'"
 msgstr "不支持报告深度“%s”"
 
-#: ../libsvn_repos/reporter.c:1322
+#: ../libsvn_repos/reporter.c:1326
 msgid "Depth 'exclude' not supported for link"
 msgstr "深度 “exclude” 不支持链接"
 
-#: ../libsvn_repos/reporter.c:1401
+#: ../libsvn_repos/reporter.c:1405
 msgid "Request depth 'exclude' not supported"
 msgstr "不支持请求的深度 “exclude”"
 
@@ -4220,40 +4226,40 @@
 msgid "Creating conf directory"
 msgstr "正在创建 conf 目录"
 
-#: ../libsvn_repos/repos.c:989
+#: ../libsvn_repos/repos.c:986
 msgid "Creating svnserve.conf file"
 msgstr "正在创建 svnserve.conf 文件"
 
-#: ../libsvn_repos/repos.c:1007
+#: ../libsvn_repos/repos.c:1004
 msgid "Creating passwd file"
 msgstr "正在创建 passwd 文件"
 
-#: ../libsvn_repos/repos.c:1049
+#: ../libsvn_repos/repos.c:1046
 msgid "Creating authz file"
 msgstr "正在创建 authz 文件"
 
-#: ../libsvn_repos/repos.c:1084
+#: ../libsvn_repos/repos.c:1081
 msgid "Could not create top-level directory"
 msgstr "无法创建最上层目录"
 
-#: ../libsvn_repos/repos.c:1096
+#: ../libsvn_repos/repos.c:1093
 msgid "Creating DAV sandbox dir"
 msgstr "正在创建 DAV 沙箱目录"
 
-#: ../libsvn_repos/repos.c:1167
+#: ../libsvn_repos/repos.c:1164
 msgid "Error opening db lockfile"
 msgstr "打开数据库锁文件出错"
 
-#: ../libsvn_repos/repos.c:1204
+#: ../libsvn_repos/repos.c:1201
 msgid "Repository creation failed"
 msgstr "创建版本库失败"
 
-#: ../libsvn_repos/repos.c:1285
+#: ../libsvn_repos/repos.c:1282
 #, c-format
 msgid "Expected repository format '%d' or '%d'; found format '%d'"
 msgstr "期望版本库格式是“%d”或“%d”；发现格式是“%d”"
 
-#: ../libsvn_repos/repos.c:1508
+#: ../libsvn_repos/repos.c:1505
 #, c-format
 msgid "unknown capability '%s'"
 msgstr "未知特性“%s”"
@@ -4789,7 +4795,7 @@
 msgid "Could not find end of line in range list line in '%s'"
 msgstr "在“%s”的范围列表行中没有找到行结束符"
 
-#: ../libsvn_subr/mergeinfo.c:600
+#: ../libsvn_subr/mergeinfo.c:599
 #, c-format
 msgid "Could not parse mergeinfo string '%s'"
 msgstr "不能解析合并信息字符串“%s”"
@@ -4837,42 +4843,42 @@
 "“%s”: 未知命令。\n"
 "\n"
 
-#: ../libsvn_subr/opt.c:850
+#: ../libsvn_subr/opt.c:864
 #, c-format
 msgid "Syntax error parsing revision '%s'"
 msgstr "解析版本“%s”时发生语法错误"
 
-#: ../libsvn_subr/opt.c:978
+#: ../libsvn_subr/opt.c:992
 #, c-format
 msgid "URL '%s' is not properly URI-encoded"
 msgstr "URL“%s”不是正确的URI编码"
 
-#: ../libsvn_subr/opt.c:984
+#: ../libsvn_subr/opt.c:998
 #, c-format
 msgid "URL '%s' contains a '..' element"
 msgstr "URL“%s”包含“..”元素"
 
-#: ../libsvn_subr/opt.c:1013
+#: ../libsvn_subr/opt.c:1027
 #, c-format
 msgid "Error resolving case of '%s'"
 msgstr "解析“%s”出错"
 
-#: ../libsvn_subr/opt.c:1035
+#: ../libsvn_subr/opt.c:1049
 #, c-format
 msgid "'%s' ends in a reserved name"
 msgstr "“%s”以保留名称结束"
 
-#: ../libsvn_subr/opt.c:1116
+#: ../libsvn_subr/opt.c:1130
 msgid "Revision property pair is empty"
 msgstr "版本属性对为空"
 
-#: ../libsvn_subr/opt.c:1136 ../svn/propedit-cmd.c:60 ../svn/propget-cmd.c:180
+#: ../libsvn_subr/opt.c:1150 ../svn/propedit-cmd.c:60 ../svn/propget-cmd.c:180
 #: ../svn/propset-cmd.c:64
 #, c-format
 msgid "'%s' is not a valid Subversion property name"
 msgstr "“%s”不是有效的 Subversion 属性名称"
 
-#: ../libsvn_subr/opt.c:1164
+#: ../libsvn_subr/opt.c:1178
 #, c-format
 msgid ""
 "%s, version %s\n"
@@ -4883,7 +4889,7 @@
 "   编译于 %s，%s\n"
 "\n"
 
-#: ../libsvn_subr/opt.c:1167
+#: ../libsvn_subr/opt.c:1181
 msgid ""
 "Copyright (C) 2000-2008 CollabNet.\n"
 "Subversion is open source software, see http://subversion.tigris.org/\n"
@@ -4895,7 +4901,7 @@
 "此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。\n"
 "\n"
 
-#: ../libsvn_subr/opt.c:1220 ../libsvn_subr/opt.c:1287
+#: ../libsvn_subr/opt.c:1234 ../libsvn_subr/opt.c:1301
 #, c-format
 msgid "Type '%s help' for usage.\n"
 msgstr "使用“%s help”得到用法。\n"
@@ -5845,72 +5851,72 @@
 msgid "Failed to add directory '%s': object of the same name as the administrative directory"
 msgstr "无法增加目录“%s”: 对象与管理目录同名"
 
-#: ../libsvn_wc/update_editor.c:1350
+#: ../libsvn_wc/update_editor.c:1369
 #, c-format
 msgid "Failed to add directory '%s': copyfrom arguments not yet supported"
 msgstr "无法增加目录“%s”:尚不支持 copyfrom 参数"
 
-#: ../libsvn_wc/update_editor.c:1644
+#: ../libsvn_wc/update_editor.c:1663
 msgid "Couldn't do property merge"
 msgstr "无法进行属性合并"
 
-#: ../libsvn_wc/update_editor.c:1717
+#: ../libsvn_wc/update_editor.c:1736
 #, c-format
 msgid "Failed to mark '%s' absent: item of the same name is already scheduled for addition"
 msgstr "无法将“%s”标记为不存在: 同名项目已加入增加调度"
 
-#: ../libsvn_wc/update_editor.c:1790
+#: ../libsvn_wc/update_editor.c:1809
 msgid "Bad copyfrom arguments received"
 msgstr "接收到非法的 copyfrom 参数"
 
-#: ../libsvn_wc/update_editor.c:1829
+#: ../libsvn_wc/update_editor.c:1848
 #, c-format
 msgid "Failed to add file '%s': a file of the same name is already scheduled for addition with history"
 msgstr "无法新增文件“%s”: 同名文件已加入新增调度"
 
-#: ../libsvn_wc/update_editor.c:1841
+#: ../libsvn_wc/update_editor.c:1860
 #, c-format
 msgid "Failed to add file '%s': a non-file object of the same name already exists"
 msgstr "无法新增文件“%s”: 同名非文件对象已存在"
 
-#: ../libsvn_wc/update_editor.c:1856
+#: ../libsvn_wc/update_editor.c:1875
 #, c-format
 msgid "Failed to add file '%s': object of the same name already exists"
 msgstr "无法增加文件“%s”: 同名对象已存在"
 
-#: ../libsvn_wc/update_editor.c:1914
+#: ../libsvn_wc/update_editor.c:1933
 #, c-format
 msgid "File '%s' in directory '%s' is not a versioned resource"
 msgstr "文件 “%s” 不是版本控制资源，在目录 “%s” 中"
 
-#: ../libsvn_wc/update_editor.c:2068
+#: ../libsvn_wc/update_editor.c:2087
 #, c-format
 msgid "Checksum mismatch for '%s'; recorded: '%s', actual: '%s'"
 msgstr "“%s” 的校验和不匹配；记录: “%s”，实际: “%s”"
 
-#: ../libsvn_wc/update_editor.c:2804
+#: ../libsvn_wc/update_editor.c:2825
 msgid "Destination directory of add-with-history is missing a URL"
 msgstr "add-with-history 的目标目录缺少 URL"
 
-#: ../libsvn_wc/update_editor.c:2819
+#: ../libsvn_wc/update_editor.c:2840
 msgid "Destination URLs are broken"
 msgstr "目的 URL 无效"
 
-#: ../libsvn_wc/update_editor.c:3076
+#: ../libsvn_wc/update_editor.c:3097
 msgid "No fetch_func supplied to update_editor"
 msgstr "没有为 update_editor 提供 fetch_func"
 
-#: ../libsvn_wc/update_editor.c:3316
+#: ../libsvn_wc/update_editor.c:3338
 #, c-format
 msgid "Shallowing of working copy depths is not yet supported"
 msgstr "不支持收缩工作副本的深度"
 
-#: ../libsvn_wc/update_editor.c:3717
+#: ../libsvn_wc/update_editor.c:3739
 #, c-format
 msgid "'%s' has no ancestry information"
 msgstr "“%s”没有演进历程信息"
 
-#: ../libsvn_wc/update_editor.c:3871
+#: ../libsvn_wc/update_editor.c:3893
 #, c-format
 msgid "Copyfrom-url '%s' has different repository root than '%s'"
 msgstr "Copyfrom-url“%s”与“%s”的版本库根目录不相同"
@@ -5948,15 +5954,15 @@
 msgid "'%s' does not appear to be a URL"
 msgstr "“%s”不像是URL"
 
-#: ../svn/conflict-callbacks.c:140
+#: ../svn/conflict-callbacks.c:142
 msgid "No editor found."
 msgstr "没有发现编辑器。"
 
-#: ../svn/conflict-callbacks.c:147
+#: ../svn/conflict-callbacks.c:149
 msgid "Error running editor."
 msgstr "执行编辑器错误。"
 
-#: ../svn/conflict-callbacks.c:157
+#: ../svn/conflict-callbacks.c:159
 #, c-format
 msgid ""
 "Invalid option; there's no merged version to edit.\n"
@@ -5965,71 +5971,71 @@
 "非法选项；没有已合并的版本来编辑。\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:179
+#: ../svn/conflict-callbacks.c:181
 msgid "No merge tool found.\n"
 msgstr "没有发现合并工具。\n"
 
-#: ../svn/conflict-callbacks.c:186
+#: ../svn/conflict-callbacks.c:188
 msgid "Error running merge tool."
 msgstr "执行合并工具错误。"
 
-#: ../svn/conflict-callbacks.c:252
+#: ../svn/conflict-callbacks.c:258
 msgid "No editor found, leaving all conflicts."
 msgstr "没有发现编辑器，不处理冲突。"
 
-#: ../svn/conflict-callbacks.c:261
+#: ../svn/conflict-callbacks.c:267
 msgid "Error running editor, leaving all conflicts."
 msgstr "执行编辑器错误，不处理冲突。"
 
-#: ../svn/conflict-callbacks.c:293
+#: ../svn/conflict-callbacks.c:299
 msgid "No merge tool found, leaving all conflicts."
 msgstr "没有发现合并工具，不处理冲突。"
 
-#: ../svn/conflict-callbacks.c:302
+#: ../svn/conflict-callbacks.c:308
 msgid "Error running merge tool leaving all conflicts."
 msgstr "执行合并工具错误，不处理冲突。"
 
-#: ../svn/conflict-callbacks.c:338
+#: ../svn/conflict-callbacks.c:344
 #, c-format
 msgid "Conflict discovered in '%s'.\n"
 msgstr "在 “%s” 中发现冲突。\n"
 
-#: ../svn/conflict-callbacks.c:343
+#: ../svn/conflict-callbacks.c:349
 #, c-format
 msgid "Conflict for property '%s' discovered on '%s'.\n"
 msgstr "属性 “%s” 冲突，位于 “%s”。\n"
 
-#: ../svn/conflict-callbacks.c:360
+#: ../svn/conflict-callbacks.c:366
 #, c-format
 msgid "They want to delete the property, you want to change the value to '%s'.\n"
 msgstr "他人想删除此属性，你想改变其取值为 “%s”。\n"
 
-#: ../svn/conflict-callbacks.c:369
+#: ../svn/conflict-callbacks.c:375
 #, c-format
 msgid "They want to change the property value to '%s', you want to delete the property.\n"
 msgstr "他人想改变其取值为 “%s”，你想删除此属性。\n"
 
-#: ../svn/conflict-callbacks.c:391
+#: ../svn/conflict-callbacks.c:397
 msgid "Select: (p) postpone"
 msgstr "选择: (p) 推迟"
 
-#: ../svn/conflict-callbacks.c:394
+#: ../svn/conflict-callbacks.c:400
 msgid ", (df) diff-full, (e) edit"
 msgstr "，(df) 显示全部差异，(e) 编辑"
 
-#: ../svn/conflict-callbacks.c:398
+#: ../svn/conflict-callbacks.c:404
 msgid ", (mf) mine-full, (tf) theirs-full"
 msgstr "，(mf) 全用我的，(tf) 全用他人的"
 
-#: ../svn/conflict-callbacks.c:401
+#: ../svn/conflict-callbacks.c:407
 msgid ", (r) resolved"
 msgstr "，(r) 已解决"
 
-#: ../svn/conflict-callbacks.c:405
-msgid "(h) help for more options: "
-msgstr "(h) 使用帮助以得到更多选项: "
+#: ../svn/conflict-callbacks.c:411
+msgid "(s) show all options: "
+msgstr "(s) 显示全部选项: "
 
-#: ../svn/conflict-callbacks.c:413
+#: ../svn/conflict-callbacks.c:419
 #, c-format
 msgid ""
 "  (p)  postpone    - mark the conflict to be resolved later\n"
@@ -6039,7 +6045,7 @@
 "  (mf) mine-full   - accept my version of entire file (ignore their changes)\n"
 "  (tf) theirs-full - accept their version of entire file (lose my changes)\n"
 "  (l)  launch      - launch external tool to resolve conflict\n"
-"  (h)  help        - show this list\n"
+"  (s)  show all    - show this list\n"
 "\n"
 msgstr ""
 "  (p)  推迟           - 标记以后解决冲突\n"
@@ -6049,10 +6055,10 @@
 "  (mf) 全用我的       - 使用我的文件(忽略他人的修改)\n"
 "  (tf) 全用他人的     - 使用他人的文件(放弃我的修改)\n"
 "  (l)  执行           - 使用第三方工具解决冲突\n"
-"  (h)  帮助           - 显示这个列表\n"
+"  (s)  显示全部选项   - 显示这个列表\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:436 ../svn/conflict-callbacks.c:577
+#: ../svn/conflict-callbacks.c:442 ../svn/conflict-callbacks.c:583
 #, c-format
 msgid ""
 "Sorry, '(mc) mine for conflicts' is not yet implemented; see\n"
@@ -6063,7 +6069,7 @@
 "http://subversion.tigris.org/issues/show_bug.cgi?id=3049\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:445 ../svn/conflict-callbacks.c:586
+#: ../svn/conflict-callbacks.c:451 ../svn/conflict-callbacks.c:592
 #, c-format
 msgid ""
 "Sorry, '(tc) theirs for conflicts' is not yet implemented; see\n"
@@ -6074,7 +6080,7 @@
 "http://subversion.tigris.org/issues/show_bug.cgi?id=3049\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:464
+#: ../svn/conflict-callbacks.c:470
 #, c-format
 msgid ""
 "Sorry, '(dc) diff of conflicts' is not yet implemented; see\n"
@@ -6085,7 +6091,7 @@
 "http://subversion.tigris.org/issues/show_bug.cgi?id=3048\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:474
+#: ../svn/conflict-callbacks.c:480
 #, c-format
 msgid ""
 "Invalid option; there's no merged version to diff.\n"
@@ -6094,7 +6100,7 @@
 "非法选项；没有已合并的版本来比较差异。\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:492 ../svn/conflict-callbacks.c:506
+#: ../svn/conflict-callbacks.c:498 ../svn/conflict-callbacks.c:512
 #, c-format
 msgid ""
 "Invalid option.\n"
@@ -6103,7 +6109,7 @@
 "无效选项。\n"
 "\n"
 
-#: ../svn/conflict-callbacks.c:536
+#: ../svn/conflict-callbacks.c:542
 #, c-format
 msgid ""
 "Conflict discovered when trying to add '%s'.\n"
@@ -6112,23 +6118,23 @@
 "增加 “%s” 时出现冲突。\n"
 "同名对象已存在。\n"
 
-#: ../svn/conflict-callbacks.c:539
+#: ../svn/conflict-callbacks.c:545
 msgid "Select: (p) postpone, (mf) mine-full, (tf) theirs-full, (h) help:"
 msgstr "选择：(p) 推迟，(mf) 全用我的，(tf) 全用他人的，(h) 帮助："
 
-#: ../svn/conflict-callbacks.c:551
+#: ../svn/conflict-callbacks.c:557
 #, c-format
 msgid ""
 "  (p)  postpone    - resolve the conflict later\n"
 "  (mf) mine-full   - accept pre-existing item (ignore upstream addition)\n"
 "  (tf) theirs-full - accept incoming item (overwrite pre-existing item)\n"
-"  (h)  help        - show this list\n"
+"  (h)  help        - show this help\n"
 "\n"
 msgstr ""
-"  (p)  推迟           - 以后解决冲突\n"
-"  (mf) 全用我的       - 使用先前的项目(忽略上游的修改)\n"
-"  (tf) 全用他人的     - 使用引入的项目(覆盖先前的项目)\n"
-"  (h)  帮助           - 显示这个列表\n"
+"  (p)  推迟            - 以后解决冲突\n"
+"  (mf) 全用我的        - 使用先前的项目(忽略上游的修改)\n"
+"  (tf) 全用他人的      - 使用引入的项目(覆盖先前的项目)\n"
+"  (h)  帮助            - 显示这个列表\n"
 "\n"
 
 #: ../svn/copy-cmd.c:126 ../svn/delete-cmd.c:65 ../svn/mkdir-cmd.c:66
@@ -6197,7 +6203,7 @@
 "Subversion 是版本控制工具。\n"
 "欲取得详细资料，请参阅 http://subversion.tigris.org/\n"
 
-#: ../svn/help-cmd.c:65 ../svnsync/main.c:1786
+#: ../svn/help-cmd.c:65 ../svnsync/main.c:1823
 msgid ""
 "The following repository access (RA) modules are available:\n"
 "\n"
@@ -6223,7 +6229,7 @@
 msgid "'%s' has invalid revision"
 msgstr "“%s”的版本无效"
 
-#: ../svn/info-cmd.c:239 ../svn/mergeinfo-cmd.c:170 ../svnadmin/main.c:1199
+#: ../svn/info-cmd.c:239 ../svnadmin/main.c:1199
 #, c-format
 msgid "Path: %s\n"
 msgstr "路径: %s\n"
@@ -6786,14 +6792,18 @@
 "                            ('"
 
 #: ../svn/main.c:274
-msgid "query a particular merge source URL"
-msgstr "查询精确的合并源 URL"
+msgid ""
+"specify which collection of revisions to display\n"
+"                             ('"
+msgstr ""
+"指定显示哪个版本集合\n"
+"                             ('"
 
-#: ../svn/main.c:276
+#: ../svn/main.c:279
 msgid "lump-merge all of source URL's unmerged changes"
 msgstr "批量合并所有源 URL 中未合并的修改"
 
-#: ../svn/main.c:323
+#: ../svn/main.c:326
 msgid ""
 "Put files and directories under version control, scheduling\n"
 "them for addition to repository.  They will be added in next commit.\n"
@@ -6802,11 +6812,11 @@
 "把文件和目录纳入版本控制，通过调度加到版本库。它们会在下一次提交时加入。\n"
 "用法: add 路径...\n"
 
-#: ../svn/main.c:328
+#: ../svn/main.c:331
 msgid "add intermediate parents"
 msgstr "增加中间父目录"
 
-#: ../svn/main.c:331
+#: ../svn/main.c:334
 msgid ""
 "Output the content of specified files or\n"
 "URLs with revision and author information in-line.\n"
@@ -6822,7 +6832,7 @@
 "      如果指定了版本，将从指定的版本开始查找。\n"
 "  \n"
 
-#: ../svn/main.c:340
+#: ../svn/main.c:343
 msgid ""
 "Output the content of specified files or URLs.\n"
 "usage: cat TARGET[@REV]...\n"
@@ -6836,7 +6846,7 @@
 "      如果指定了版本，将从指定的版本开始查找。\n"
 "  \n"
 
-#: ../svn/main.c:348
+#: ../svn/main.c:351
 msgid ""
 "Associate (or dissociate) changelist CLNAME with the named files.\n"
 "usage: 1. changelist CLNAME TARGET...\n"
@@ -6846,7 +6856,7 @@
 "使用: 1. changelist CLNAME TARGET...\n"
 "      2. changelist --remove TARGET...\n"
 
-#: ../svn/main.c:354
+#: ../svn/main.c:357
 msgid ""
 "Check out a working copy from a repository.\n"
 "usage: checkout URL[@REV]... [PATH]\n"
@@ -6884,7 +6894,7 @@
 "  径，那么也会受版本控制。对于障碍路径中的文件，如果与版本库内的不同，将视为工\n"
 "  作副本发生本地修改。版本库中的所有属性都应用于障碍路径。\n"
 
-#: ../svn/main.c:378
+#: ../svn/main.c:381
 msgid ""
 "Recursively clean up the working copy, removing locks, resuming\n"
 "unfinished operations, etc.\n"
@@ -6894,7 +6904,7 @@
 "\n"
 "用法: cleanup [路径...]\n"
 
-#: ../svn/main.c:385
+#: ../svn/main.c:388
 msgid ""
 "Send changes from your working copy to the repository.\n"
 "usage: commit [PATH...]\n"
@@ -6911,7 +6921,7 @@
 "     选项，编辑器会被启动。如果有目标是锁定的或者包含锁定条目，则在成功\n"
 "     提交后会被解锁。\n"
 
-#: ../svn/main.c:393
+#: ../svn/main.c:396
 msgid ""
 "Send changes from your working copy to the repository.\n"
 "usage: commit [PATH...]\n"
@@ -6929,7 +6939,7 @@
 "     因此必须指定 --message 或 --file 选项。如果有目标是锁定的\n"
 "     或者包含锁定条目，则在成功提交后会被解锁。\n"
 
-#: ../svn/main.c:406
+#: ../svn/main.c:409
 msgid ""
 "Duplicate something in working copy or repository, remembering\n"
 "history.\n"
@@ -6967,7 +6977,7 @@
 "操作不会与版本库通信。同样地，在缺省情况下，不能从复制源到目的地传播合\n"
 "并跟踪信息。\n"
 
-#: ../svn/main.c:428
+#: ../svn/main.c:431
 msgid ""
 "Remove files and directories from version control.\n"
 "usage: 1. delete PATH...\n"
@@ -6994,7 +7004,7 @@
 "\n"
 "  2、每个 UR L指定的项目会通过立即提交从版本库中删除。\n"
 
-#: ../svn/main.c:444
+#: ../svn/main.c:447
 msgid ""
 "Display the differences between two revisions or paths.\n"
 "usage: 1. diff [-c M | -r N[:M]] [TARGET[@REV]...]\n"
@@ -7039,7 +7049,7 @@
 "\n"
 "     使用不加参数的 “svn diff” 显示工作副本中的本地修改。\n"
 
-#: ../svn/main.c:472
+#: ../svn/main.c:475
 msgid ""
 "Create an unversioned copy of a tree.\n"
 "usage: 1. export [-r REV] URL[@PEGREV] [PATH]\n"
@@ -7077,7 +7087,7 @@
 "     如果指定了 PEGREV ，将从指定的版本本开始查找。\n"
 "\n"
 
-#: ../svn/main.c:493
+#: ../svn/main.c:496
 msgid ""
 "Describe the usage of this program or its subcommands.\n"
 "usage: help [SUBCOMMAND...]\n"
@@ -7085,7 +7095,7 @@
 "描述本程序或其子命令的用法。\n"
 "用法: help [子命令...]\n"
 
-#: ../svn/main.c:499
+#: ../svn/main.c:502
 msgid ""
 "Commit an unversioned file or tree into the repository.\n"
 "usage: import [PATH] URL\n"
@@ -7107,7 +7117,7 @@
 "  如果 PATH 是目录，则其下的内容直接加入到 URL 指定的位置内。\n"
 "  如果使用了 “--force”，那么不能纳入版本控制的项目，例如设备文件，管道等，会被忽略。\n"
 
-#: ../svn/main.c:513
+#: ../svn/main.c:516
 msgid ""
 "Display information about a local or remote item.\n"
 "usage: info [TARGET[@REV]...]\n"
@@ -7123,7 +7133,7 @@
 "  TARGET 可以是工作副本中的路径或版本库中的URL。REV指定从哪个\n"
 "  版本开始查找目标。\n"
 
-#: ../svn/main.c:523
+#: ../svn/main.c:526
 msgid ""
 "List directory entries in the repository.\n"
 "usage: list [TARGET[@REV]...]\n"
@@ -7160,7 +7170,7 @@
 "    大小 (以字节为单位)\n"
 "    最后一次提交的日期与时间\n"
 
-#: ../svn/main.c:544
+#: ../svn/main.c:547
 msgid ""
 "Lock working copy paths or URLs in the repository, so that\n"
 "no other user can commit changes to them.\n"
@@ -7173,19 +7183,19 @@
 "\n"
 "     使用 --force 选项可以从其他用户或工作副本窃取到锁。\n"
 
-#: ../svn/main.c:550
+#: ../svn/main.c:553
 msgid "read lock comment from file ARG"
 msgstr "从文件 ARG 读取加锁注释"
 
-#: ../svn/main.c:551
+#: ../svn/main.c:554
 msgid "specify lock comment ARG"
 msgstr "指定加锁注释ARG"
 
-#: ../svn/main.c:552
+#: ../svn/main.c:555
 msgid "force validity of lock comment source"
 msgstr "强制校验锁定注释源"
 
-#: ../svn/main.c:555
+#: ../svn/main.c:558
 msgid ""
 "Show the log messages for a set of revision(s) and/or file(s).\n"
 "usage: 1. log [PATH]\n"
@@ -7196,7 +7206,9 @@
 "\n"
 "  2. Print the log messages for the PATHs (default: '.') under URL.\n"
 "     If specified, REV determines in which revision the URL is first\n"
-"     looked up.  The default revision range is HEAD:1.\n"
+"     looked up, and the default revision range is REV:1; otherwise,\n"
+"     the URL is looked up in HEAD, and the default revision range is\n"
+"     HEAD:1.\n"
 "\n"
 "  With -v, also print all affected paths with each log message.\n"
 "  With -q, don't print the log message body itself (note that this is\n"
@@ -7217,17 +7229,17 @@
 "用法: 1、log [PATH]\n"
 "      2、log URL[@REV] [PATH...]\n"
 "\n"
-"  1、显示本地 PATH (默认: “.”) 的日志信息。默认的版本范围为\n"
-"     BASE:1。\n"
+"  1、显示本地 PATH (默认: “.”) 的日志信息。默认的版本范围是 BASE:1。\n"
 "\n"
-"  2、显示 URL 下的 PATH (默认: “.”) 的日志信息。REV指定从哪个版本开始查找\n"
-"     URL。默认的版本范围为 HEAD:1。\n"
+"  2、显示 URL 中 PATH (默认: “.”) 的日志信息。如果指定了 REV，就从 REV\n"
+"     开始查找 URL，版本范围是 REV:1。否则就从 HEAD 开始查找 URL，版本范围\n"
+"     是 HEAD:1。\n"
 "\n"
 "  使用 -v 时，在日志信息中显示受影响的路径名。\n"
-"  使用 -q 时，不显示日志信息主体 (请注意，这可和 -v 并存)。\n"
+"  使用 -q 时，不显示日志信息主体 (请注意，它可与 -v 并存)。\n"
 "\n"
-"  每一条日志信息只会显示一次，即使指定某一个修改中涉及到的多个文件。默认日志\n"
-"  信息会追溯复制历史；使用 --stop-on-copy 可以关闭这种行为，这便于找出分支点。\n"
+"  每条日志信息只会显示一次，即使指定了此版本涉及到的多个路径。默认日志信息\n"
+"  会追溯复制历史；使用 --stop-on-copy 可以关闭这种行为，用来找出分支点。\n"
 "\n"
 "  范例: \n"
 "    svn log\n"
@@ -7235,20 +7247,20 @@
 "    svn log http://www.example.com/repo/project/foo.c\n"
 "    svn log http://www.example.com/repo/project foo.c bar.c\n"
 
-#: ../svn/main.c:582
+#: ../svn/main.c:587
 msgid "retrieve revision property ARG"
 msgstr "获取版本属性 ARG"
 
-#: ../svn/main.c:583
+#: ../svn/main.c:588
 msgid "the change made by ARG"
 msgstr "ARG 引起的改变"
 
-#: ../svn/main.c:586
+#: ../svn/main.c:591
 msgid ""
 "Apply the differences between two sources to a working copy path.\n"
 "usage: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]\n"
 "       2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]\n"
-"       3. merge [[-c M[,N]]... | [-r N:M]...] [SOURCE[@REV] [WCPATH]]\n"
+"       3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]\n"
 "\n"
 "  1. In the first form, the source URLs are specified at revisions\n"
 "     N and M.  These are the two sources to be compared.  The revisions\n"
@@ -7259,30 +7271,31 @@
 "     be specified.\n"
 "\n"
 "  3. In the third form, SOURCE can be either a URL or a working copy\n"
-"     path (in which case its corresponding URL is used).  If not\n"
-"     specified, SOURCE will be the same as WCPATH.  SOURCE in revision\n"
-"     REV is compared as it existed between revisions N and M for each\n"
-"     revision range provided.  If REV is not specified, HEAD is\n"
-"     assumed.  '-c M' is equivalent to '-r <M-1>:M', and '-c -M' does\n"
-"     the reverse: '-r M:<M-1>'.  If no revision ranges are specified,\n"
-"     the default range of 1:HEAD is used.  Multiple '-c' and/or '-r'\n"
-"     instances may be specified, and mixing of forward and reverse\n"
-"     ranges is allowed.\n"
+"     path (in which case its corresponding URL is used).  SOURCE (in\n"
+"     revision REV) is compared as it existed between revisions N and M\n"
+"     for each revision range provided.  If REV is not specified, HEAD\n"
+"     is assumed.  '-c M' is equivalent to '-r <M-1>:M', and '-c -M'\n"
+"     does the reverse: '-r M:<M-1>'.  If no revision ranges are\n"
+"     specified, the default range of 0:REV is used.  Multiple '-c'\n"
+"     and/or '-r' instances may be specified, and mixing of forward\n"
+"     and reverse ranges is allowed.\n"
 "\n"
 "  WCPATH is the working copy path that will receive the changes.\n"
 "  If WCPATH is omitted, a default value of '.' is assumed, unless\n"
 "  the sources have identical basenames that match a file within '.':\n"
 "  in which case, the differences will be applied to that file.\n"
 "\n"
-"  NOTE:  Subversion will only internally track metadata about the\n"
-"  merge operation if the two sources are ancestrally related -- if the\n"
+"  NOTE:  Subversion will only record metadata to track the merge\n"
+"  if the two sources are on the same line of history -- if the\n"
 "  first source is an ancestor of the second, or vice-versa.  This is\n"
 "  guaranteed to be the case when using the third form listed above.\n"
+"  The --ignore-ancestry option overrides this, forcing Subversion to\n"
+"  regard the sources as unrelated and not to track the merge.\n"
 msgstr ""
 "将两个源差异应用至工作副本路径。\n"
-"用法: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]\n"
-"      2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]\n"
-"      3. merge [[-c M[,N]]... | [-r N:M]...] [SOURCE[@REV] [WCPATH]]\n"
+"用法:  1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]\n"
+"       2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]\n"
+"       3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]\n"
 "\n"
 "  1、第一种形式中，源 URL 的版本 N 与 M 作为比较的来源。如果没有指定版本，默认\n"
 "     为 HEAD。\n"
@@ -7294,7 +7307,7 @@
 "     的 URL)。如果没有指定，SOURCE 就和 WCPATH 相同。比较版本为 REV 的 SOURCE，\n"
 "     就像它在版本 N 到 M 存在一样。如果没有给出 REV，默认为 HEAD。选项 “-c M”\n"
 "     等价于 “-r <M-1>:M”，“-c -M” 与之相反，等价于 “-r M:<M-1>”。如果没\n"
-"     有指定版本范围，默认为 1:HEAD。可以指定多个 “-c” 或 “-r”，并且可以混\n"
+"     有指定版本范围，默认为 0:REV。可以指定多个 “-c” 或 “-r”，并且可以混\n"
 "     合使用向前范围或向后范围。\n"
 "\n"
 "  WCPATH 是接收修改的工作副本路径。如果省略了 WCPATH，默认为 “.”，除非来源中\n"
@@ -7302,17 +7315,28 @@
 "\n"
 "  注意:  Subversion 只有当两个合并源有继承关系的时候才会内部跟踪合并操作的源数\n"
 "  据 -- 即如果第一个合并源是第二个的祖先，或者相反。在上述的第三种形式中，已经\n"
-"  保证了满足条件。\n"
+"  保证了满足条件。选项 --ignore-ancestry 忽略继承关系，强制 Subversion 认为合并\n"
+"  源之间没有关系，不跟踪本次合并。\n"
 
-#: ../svn/main.c:623
+#: ../svn/main.c:629
 msgid ""
 "Query merge-related information.\n"
-"usage: mergeinfo [TARGET[@REV]...]\n"
+"usage: mergeinfo SOURCE-URL[@REV] [TARGET[@REV]]\n"
+"\n"
+"  Query information related to merges (or potential merges) between\n"
+"  SOURCE-URL and TARGET.  If the --show-revs option is not provided,\n"
+"  display revisions which have been merged from SOURCE-URL to TARGET.\n"
+"  Otherwise, display the type of information specified by the\n"
+"  --show-revs option.\n"
 msgstr ""
-"查询合并相关的信息。\n"
-"用法: mergeinfo [TARGET[@REV]...]\n"
+"查询合并相关信息。\n"
+"用法: mergeinfo SOURCE-URL[@REV] [TARGET[@REV]]\n"
+"\n"
+"  查询 SOURCE-URL 与 TARGET 之间的合并(或潜在合并)信息。如果没有提供选项\n"
+"  --show-revs，那么就显示已经从 SOURCE-URL 合并到 TARGET 的版本。否则就显\n"
+"  示选项 --show-revs 指定的信息类型。\n"
 
-#: ../svn/main.c:628
+#: ../svn/main.c:640
 msgid ""
 "Create a new directory under version control.\n"
 "usage: 1. mkdir PATH...\n"
@@ -7343,7 +7367,7 @@
 "  在这两个情况下，所有的中间目录都必须事先存在，\n"
 "  除非使用选项 --parents。\n"
 
-#: ../svn/main.c:645
+#: ../svn/main.c:657
 msgid ""
 "Move and/or rename something in working copy or repository.\n"
 "usage: move SRC... DST\n"
@@ -7372,7 +7396,7 @@
 "    URL -> URL :  完全是服务器端更名。\n"
 "  所有 SRC 必须是同一类型。\n"
 
-#: ../svn/main.c:661
+#: ../svn/main.c:673
 msgid ""
 "Remove a property from files, dirs, or revisions.\n"
 "usage: 1. propdel PROPNAME [PATH...]\n"
@@ -7389,7 +7413,7 @@
 "  1、删除工作副本中纳入版本管理的文件或目录的属性。\n"
 "  2、删除版本库中版本的属性。TARGET只用来判断访问哪个版本库。\n"
 
-#: ../svn/main.c:672
+#: ../svn/main.c:684
 msgid ""
 "Edit a property with an external editor.\n"
 "usage: 1. propedit PROPNAME TARGET...\n"
@@ -7411,7 +7435,7 @@
 "\n"
 "参见 “svn help propset” 获得更多设置属性的信息。\n"
 
-#: ../svn/main.c:685
+#: ../svn/main.c:697
 msgid ""
 "Print the value of a property on files, dirs, or revisions.\n"
 "usage: 1. propget PROPNAME [TARGET[@REV]...]\n"
@@ -7441,7 +7465,7 @@
 "  使用 --strict 选项可以关闭这些美化行为 (它很有用，例如将二进制属\n"
 "  性内容重定向到一个文件)。\n"
 
-#: ../svn/main.c:703
+#: ../svn/main.c:715
 msgid ""
 "List all properties on files, dirs, or revisions.\n"
 "usage: 1. proplist [TARGET[@REV]...]\n"
@@ -7459,7 +7483,7 @@
 "      1、显示目标的属性。REV指定从哪个版本开始查找目标。\n"
 "      2、列出版本库中版本的属性。TARGET只用来判断访问哪个版本库。\n"
 
-#: ../svn/main.c:714
+#: ../svn/main.c:726
 msgid ""
 "Set the value of a property on files, dirs, or revisions.\n"
 "usage: 1. propset PROPNAME PROPVAL PATH...\n"
@@ -7473,7 +7497,7 @@
 "\n"
 "  Note: svn recognizes the following special versioned properties\n"
 "  but will store any arbitrary properties set:\n"
-"    svn:ignore     - A newline separated list of file patterns to ignore.\n"
+"    svn:ignore     - A newline separated list of file glob patterns to ignore.\n"
 "    svn:keywords   - Keywords to be expanded.  Valid keywords are:\n"
 "      URL, HeadURL             - The URL for the head version of the object.\n"
 "      Author, LastChangedBy    - The last person to modify the file.\n"
@@ -7521,14 +7545,14 @@
 "  only on the file children of the directory.\n"
 msgstr ""
 "设定目录、文件或版本的属性。\n"
-"用法: 1、propset PROPNAME PROPVAL PATH...\n"
-"      2、propset PROPNAME --revprop -r REV PROPVAL [TARGET]\n"
+"用法: 1. propset PROPNAME PROPVAL PATH...\n"
+"       2. propset PROPNAME --revprop -r REV PROPVAL [TARGET]\n"
 "\n"
 "  1、在工作副本中创建或修改一个受版本控制的属性。\n"
-"  2、在版本库的 REV 版本创建或者修改一个未版本控制的属性。\n"
+"  2、在版本库的 REV 版本创建或者修改一个非版本控制的属性。\n"
 "     TARGET 只用来判断访问哪一个版本库。\n"
 "\n"
-"  可以使用 --file 选项来代替 PROPVAL 赋值。\n"
+"  可以使用选项 --file 来代替 PROPVAL 赋值。\n"
 "\n"
 "  注意: svn 除了能存储任意属性外，还识别以下专用的版本控制属性: \n"
 "    svn:ignore     - 以换行符隔开的文件忽略模式列表。\n"
@@ -7562,42 +7586,56 @@
 "            /    相对于服务器根\n"
 "        相对路径“relative_path relative_path”这种不明确的格式来自\n"
 "        “relative_url relative_path”和 peg 版本支持。\n"
-"    svn:needs-lock - 此属性表明文件在修改前应被加锁，\n"
-"        如果没有被加锁，则此文件在工作副本中应被设为只读。使用\n"
+"    svn:needs-lock - 此属性表明文件在修改前应该加锁。\n"
+"        如果没有加锁，则此文件在工作副本中应被设为只读。使用\n"
 "        “svn propdel svn:needs-lock PATH...” 清除。\n"
 "\n"
 "    svn:keywords, svn:executable, svn:eol-style, svn:mime-type 以及\n"
 "    svn:needs-lock 属性不能设置在目录上。使用非递归选项(-N)在目录上\n"
 "    设置这些属性时会失败，递归操作时只会作用于指定目录中的文件子孙上。\n"
 
-#: ../svn/main.c:774
+#: ../svn/main.c:786
 msgid "read property value from file ARG"
 msgstr "从文件 ARG 读取属性值"
 
-#: ../svn/main.c:777
+#: ../svn/main.c:789
+msgid ""
+"Resolve conflicts on working copy files or directories.\n"
+"usage: resolve [PATH...]\n"
+"\n"
+"  Note:  the --accept option is currently required.\n"
+msgstr ""
+"解决工作副本中目录或文件的冲突。\n"
+"用法: resolve [PATH...]\n"
+"\n"
+"  注意:  当前需要选项 --accept 。\n"
+
+#: ../svn/main.c:794
+msgid ""
+"specify automatic conflict resolution source\n"
+"                            ('"
+msgstr ""
+"指定自动解决冲突源\n"
+"                            ('"
+
+#: ../svn/main.c:806
 msgid ""
 "Remove 'conflicted' state on working copy files or directories.\n"
 "usage: resolved PATH...\n"
 "\n"
 "  Note:  this subcommand does not semantically resolve conflicts or\n"
 "  remove conflict markers; it merely removes the conflict-related\n"
-"  artifact files and allows PATH to be committed again.\n"
+"  artifact files and allows PATH to be committed again.  It has been\n"
+"  deprecated in favor of running 'svn resolve --accept working'.\n"
 msgstr ""
 "删除工作副本中目录或文件的“冲突”状态。\n"
 "用法: resolved PATH...\n"
 "\n"
-"  注意: 本子命令不会依语法来解决冲突或是删除冲突标记；它只是删除冲突的\n"
-"        相关附加文件，让 PATH 可以被再次提交。\n"
+"  注意: 本子命令不会依语法来解决冲突或是删除冲突标记；它只是删除冲突相关的\n"
+"        附加文件，让 PATH 可以被再次提交。它已经过时，被\n"
+"        “svn resolve --accept working”取代。\n"
 
-#: ../svn/main.c:784
-msgid ""
-"specify automatic conflict resolution source\n"
-"                             '"
-msgstr ""
-"指定自动解决冲突源\n"
-"                             “"
-
-#: ../svn/main.c:795
+#: ../svn/main.c:816
 msgid ""
 "Restore pristine working copy file (undo most local edits).\n"
 "usage: revert PATH...\n"
@@ -7611,7 +7649,7 @@
 "  注意: 本子命令不会访问网络，它解除任何冲突的状态。\n"
 "  但是，它不恢复被删除的目录。\n"
 
-#: ../svn/main.c:803
+#: ../svn/main.c:824
 msgid ""
 "Print the status of working copy files and directories.\n"
 "usage: status [PATH...]\n"
@@ -7758,7 +7796,7 @@
 "                 965       687 joe          wc/zig.c\n"
 "    Status against revision:   981\n"
 
-#: ../svn/main.c:879
+#: ../svn/main.c:900
 msgid ""
 "Update the working copy to a different URL.\n"
 "usage: 1. switch URL[@PEGREV] [PATH]\n"
@@ -7811,7 +7849,7 @@
 "     变(比如方案或者主机名称变动)，但是工作副本仍旧对应同一版本库的同一目录\n"
 "     时，使用这个命令更新工作副本与档案库的对应关系。\n"
 
-#: ../svn/main.c:913
+#: ../svn/main.c:934
 msgid ""
 "Unlock working copy paths or URLs.\n"
 "usage: unlock TARGET...\n"
@@ -7823,7 +7861,7 @@
 "\n"
 "    使用 --force 终止锁定。\n"
 
-#: ../svn/main.c:920
+#: ../svn/main.c:941
 msgid ""
 "Bring changes from the repository into the working copy.\n"
 "usage: update [PATH...]\n"
@@ -7892,73 +7930,73 @@
 "  使用“--set-depth”选项设置此操作目标的工作副本之新深度。目前工作副本的\n"
 "  深度只能增加(嵌入更深)；你不能让目录收缩。\n"
 
-#: ../svn/main.c:1000 ../svnadmin/main.c:78 ../svnlook/main.c:329
+#: ../svn/main.c:1021 ../svnadmin/main.c:78 ../svnlook/main.c:329
 #: ../svnsync/main.c:184
 msgid "Caught signal"
 msgstr "捕捉到信号"
 
-#: ../svn/main.c:1122 ../svnlook/main.c:2083
+#: ../svn/main.c:1144 ../svnlook/main.c:2083
 msgid "Non-numeric limit argument given"
 msgstr "--limit取值不是数字"
 
-#: ../svn/main.c:1128 ../svnlook/main.c:2089
+#: ../svn/main.c:1150 ../svnlook/main.c:2089
 msgid "Argument to --limit must be positive"
 msgstr "--limit取值必须为正"
 
-#: ../svn/main.c:1150 ../svn/main.c:1383
+#: ../svn/main.c:1172 ../svn/main.c:1412
 msgid "Can't specify -c with --old"
 msgstr "不能同时指定 -c 和 --old"
 
-#: ../svn/main.c:1160
+#: ../svn/main.c:1189
 msgid "Non-numeric change argument given to -c"
 msgstr "-c 选项的取值不是数字"
 
-#: ../svn/main.c:1168
+#: ../svn/main.c:1197
 msgid "There is no change 0"
 msgstr "没有版本 0"
 
-#: ../svn/main.c:1204 ../svnadmin/main.c:1473
+#: ../svn/main.c:1233 ../svnadmin/main.c:1473
 #, c-format
 msgid "Syntax error in revision argument '%s'"
 msgstr "版本参数“%s”中有语法错误"
 
-#: ../svn/main.c:1277 ../svn/main.c:1296
+#: ../svn/main.c:1306 ../svn/main.c:1325
 #, c-format
 msgid "Error converting depth from locale to UTF8"
 msgstr "深度从本地编码转换到 UTF8 失败"
 
-#: ../svn/main.c:1285 ../svn/main.c:1304
+#: ../svn/main.c:1314 ../svn/main.c:1333
 #, c-format
 msgid "'%s' is not a valid depth; try 'empty', 'files', 'immediates', or 'infinity'"
 msgstr "“%s” 不是有效的深度；尝试 “empty”，“files”，“immediates”，或 “infinity”"
 
-#: ../svn/main.c:1411
+#: ../svn/main.c:1440
 #, c-format
 msgid "Syntax error in native-eol argument '%s'"
 msgstr "原生换行符号参数“%s”中有语法错误"
 
-#: ../svn/main.c:1457
+#: ../svn/main.c:1486
 #, c-format
-msgid "'%s' is not a valid accept value"
-msgstr "“%s” 不是有效值"
+msgid "'%s' is not a valid --accept value"
+msgstr "“%s” 是非法 --accept 取值"
 
-#: ../svn/main.c:1465
+#: ../svn/main.c:1495
 #, c-format
-msgid "'%s' is not a URL"
-msgstr "“%s”不是 URL"
+msgid "'%s' is not a valid --show-revs value"
+msgstr "“%s” 是非法 --show-revs 取值"
 
-#: ../svn/main.c:1527 ../svndumpfilter/main.c:1314 ../svnlook/main.c:2161
+#: ../svn/main.c:1557 ../svndumpfilter/main.c:1314 ../svnlook/main.c:2161
 #, c-format
 msgid "Subcommand argument required\n"
 msgstr "必须提供子命令参数\n"
 
-#: ../svn/main.c:1546 ../svnadmin/main.c:1605 ../svndumpfilter/main.c:1333
+#: ../svn/main.c:1576 ../svnadmin/main.c:1605 ../svndumpfilter/main.c:1333
 #: ../svnlook/main.c:2180
 #, c-format
 msgid "Unknown command: '%s'\n"
 msgstr "未知命令: “%s”\n"
 
-#: ../svn/main.c:1580
+#: ../svn/main.c:1610
 #, c-format
 msgid ""
 "Subcommand '%s' doesn't accept option '%s'\n"
@@ -7967,122 +8005,110 @@
 "子命令“%s”不接受选项“%s”\n"
 "输入“svn help %s”得到用法。\n"
 
-#: ../svn/main.c:1594
+#: ../svn/main.c:1624
 msgid "Multiple revision arguments encountered; can't specify -c twice, or both -c and -r"
 msgstr "遇到了多个版本参数；不能指定 -c 两次或者同时使用 -c 和 -r"
 
-#: ../svn/main.c:1608
+#: ../svn/main.c:1638
 msgid "-r and -c can't be used with --reintegrate"
 msgstr "-r 和 -c 不能与 --reintegrate 共存"
 
-#: ../svn/main.c:1617
+#: ../svn/main.c:1647
 msgid "--depth and --set-depth are mutually exclusive"
 msgstr "--depth 与 --set-depth 是互斥的"
 
-#: ../svn/main.c:1667
+#: ../svn/main.c:1697
 msgid "Log message file is a versioned file; use '--force-log' to override"
 msgstr "日志信息文件受版本控制；请使用“--force-log”强制执行"
 
-#: ../svn/main.c:1674
+#: ../svn/main.c:1704
 msgid "Lock comment file is a versioned file; use '--force-log' to override"
 msgstr "锁注释文件受版本控制；请使用“--force-log”强制执行"
 
-#: ../svn/main.c:1694
+#: ../svn/main.c:1724
 msgid "The log message is a pathname (was -F intended?); use '--force-log' to override"
 msgstr "日志信息是路径名称 (本来想用 -F 选项的吗？)；请使用“--force-log”强制执行"
 
-#: ../svn/main.c:1701
+#: ../svn/main.c:1731
 msgid "The lock comment is a pathname (was -F intended?); use '--force-log' to override"
 msgstr "锁注释是路径名称 (本来想用-F 选项的吗？)；请使用“--force-log”强制执行"
 
-#: ../svn/main.c:1712
+#: ../svn/main.c:1742
 msgid "--relocate and --depth are mutually exclusive"
 msgstr "--relocate 与 --depth 是互斥的"
 
-#: ../svn/main.c:1788
+#: ../svn/main.c:1818
 msgid "--auto-props and --no-auto-props are mutually exclusive"
 msgstr "--auto-props 与 --no-auto-props 是互斥的"
 
-#: ../svn/main.c:1802
+#: ../svn/main.c:1832
 msgid "--reintegrate cannot be used with --ignore-ancestry or --record-only"
 msgstr "--reintegrate 不能与 --ignore-ancestry 或 --record-only 共存"
 
-#: ../svn/main.c:1810
+#: ../svn/main.c:1840
 msgid "--reintegrate cannot be used with --ignore-ancestry"
 msgstr "--reintegrate 不能与 --ignore-ancestry 共存"
 
-#: ../svn/main.c:1818
+#: ../svn/main.c:1848
 msgid "--reintegrate cannot be used with --record-only"
 msgstr "--reintegrate 不能与 --record-only 共存"
 
-#: ../svn/main.c:1931 ../svn/main.c:1937
+#: ../svn/main.c:1961 ../svn/main.c:1967
 #, c-format
 msgid "--accept=%s incompatible with --non-interactive"
 msgstr "--accept=%s 与 --non-interactive 不兼容"
 
-#: ../svn/main.c:1964
+#: ../svn/main.c:1994
 msgid "Try 'svn help' for more info"
 msgstr "请使用 “svn help” 以得到更多信息"
 
-#: ../svn/main.c:1974
+#: ../svn/main.c:2004
 msgid "svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)\n"
 msgstr "svn: 运行“svn cleanup”删除锁定 (输入“svn help cleanup”得到用法)\n"
 
-#: ../svn/merge-cmd.c:102
+#: ../svn/merge-cmd.c:105
+msgid "Merge source required"
+msgstr "需要合并源"
+
+#: ../svn/merge-cmd.c:151
 msgid "Second revision required"
 msgstr "需要第二个版本"
 
-#: ../svn/merge-cmd.c:111 ../svn/merge-cmd.c:144
+#: ../svn/merge-cmd.c:160 ../svn/merge-cmd.c:193 ../svn/mergeinfo-cmd.c:74
 msgid "Too many arguments given"
 msgstr "参数过多"
 
-#: ../svn/merge-cmd.c:133
+#: ../svn/merge-cmd.c:182
 msgid "Cannot specify a revision range with two URLs"
 msgstr "不能对两个 URL 指定版本范围"
 
-#: ../svn/merge-cmd.c:160
+#: ../svn/merge-cmd.c:209
 msgid "A working copy merge source needs an explicit revision"
 msgstr "工作副本的合并来源需要指定版本"
 
-#: ../svn/merge-cmd.c:243
+#: ../svn/merge-cmd.c:292
+msgid "--depth cannot be used with --reintegrate"
+msgstr "--depth 不能与 --reintegrate 共存"
+
+#: ../svn/merge-cmd.c:297
 msgid "--force cannot be used with --reintegrate"
 msgstr "--force 不能与 --reintegrate 共存"
 
-#: ../svn/mergeinfo-cmd.c:77
-#, c-format
-msgid "  Source path: %s\n"
-msgstr "  源路径: %s\n"
+#: ../svn/mergeinfo-cmd.c:71
+msgid "Not enough arguments given"
+msgstr "没有提供足够的参数"
 
-#: ../svn/mergeinfo-cmd.c:79
+#: ../svn/mergeinfo-cmd.c:81 ../svnsync/main.c:700 ../svnsync/main.c:703
+#: ../svnsync/main.c:1642 ../svnsync/main.c:1792
 #, c-format
-msgid "    Merged ranges: "
-msgstr "    合并范围: "
-
-#. Now fetch the available merges for this source.
-#. ### FIXME: There's no reason why this API should fail to
-#. ### answer the question (when asked of a 1.5+ server),
-#. ### short of something being quite wrong with the
-#. ### question.  Certainly, that the merge source URL can't
-#. ### be found in HEAD shouldn't mean we can't get any
-#. ### decent information about it out of the system.  It
-#. ### may just mean the system has to work harder to
-#. ### provide that information.
-#.
-#: ../svn/mergeinfo-cmd.c:93
-#, c-format
-msgid "    Eligible ranges: "
-msgstr "    合格范围: "
-
-#: ../svn/mergeinfo-cmd.c:106
-#, c-format
-msgid "(source no longer available in HEAD)\n"
-msgstr "(source 已经不在 HEAD 中)\n"
+msgid "Path '%s' is not a URL"
+msgstr "路径“%s”不是URL"
 
 #: ../svn/mkdir-cmd.c:88
 msgid "Try 'svn add' or 'svn add --non-recursive' instead?"
 msgstr "尝试用 “svn add”或 “svn add --non-recursive”代替？"
 
-#: ../svn/mkdir-cmd.c:94
+#: ../svn/mkdir-cmd.c:95
 msgid "Try 'svn mkdir --parents' instead?"
 msgstr "尝试“svn mkdir --parents”？"
 
@@ -8234,7 +8260,7 @@
 msgid "Replacing      %s\n"
 msgstr "替换           %s\n"
 
-#: ../svn/notify.c:374 ../svnsync/main.c:906
+#: ../svn/notify.c:374 ../svnsync/main.c:909
 #, c-format
 msgid "Transmitting file data "
 msgstr "传输文件数据"
@@ -8259,27 +8285,27 @@
 msgid "Path '%s' is no longer a member of a changelist.\n"
 msgstr "路径“%s”不再是修改列表的成员。\n"
 
-#: ../svn/notify.c:427
+#: ../svn/notify.c:421
 #, c-format
 msgid "--- Merging differences between repository URLs into '%s':\n"
 msgstr "--- 合并版本库 URL 之间的差异到 “%s”：\n"
 
-#: ../svn/notify.c:432
+#: ../svn/notify.c:426
 #, c-format
 msgid "--- Merging r%ld into '%s':\n"
 msgstr "--- 正在合并 r%ld 到 “%s”:\n"
 
-#: ../svn/notify.c:436
+#: ../svn/notify.c:430
 #, c-format
 msgid "--- Reverse-merging r%ld into '%s':\n"
 msgstr "--- 正在反向合并 r%ld 到 “%s”:\n"
 
-#: ../svn/notify.c:440
+#: ../svn/notify.c:434
 #, c-format
 msgid "--- Merging r%ld through r%ld into '%s':\n"
 msgstr "--- 正在合并 r%ld，经由 r%ld，到 “%s”:\n"
 
-#: ../svn/notify.c:446
+#: ../svn/notify.c:440
 #, c-format
 msgid "--- Reverse-merging r%ld through r%ld into '%s':\n"
 msgstr "--- 正在反向合并 r%ld，经由 r%ld，到 “%s”:\n"
@@ -8398,7 +8424,11 @@
 msgid "property '%s' set on '%s'\n"
 msgstr "设置属性 “%s” 于 “%s”\n"
 
-#: ../svn/resolved-cmd.c:74
+#: ../svn/resolve-cmd.c:74
+msgid "missing --accept option"
+msgstr "缺少选项 --accept"
+
+#: ../svn/resolve-cmd.c:77
 msgid "invalid 'accept' ARG"
 msgstr "无效的 “accept” 参数"
 
@@ -10089,57 +10119,51 @@
 msgid "Destination repository is already synchronizing from '%s'"
 msgstr "目标版本库已经与“%s”同步"
 
-#: ../svnsync/main.c:697 ../svnsync/main.c:700 ../svnsync/main.c:1605
-#: ../svnsync/main.c:1755
-#, c-format
-msgid "Path '%s' is not a URL"
-msgstr "路径“%s”不是URL"
-
-#: ../svnsync/main.c:1208
+#: ../svnsync/main.c:1211
 #, c-format
 msgid "Committed revision %ld.\n"
 msgstr "已提交版本 %ld。\n"
 
-#: ../svnsync/main.c:1249
+#: ../svnsync/main.c:1252
 msgid "Destination repository has not been initialized"
 msgstr "目标版本库没有初始化"
 
-#: ../svnsync/main.c:1262
+#: ../svnsync/main.c:1265
 #, c-format
 msgid "UUID of source repository (%s) does not match expected UUID (%s)"
 msgstr "源版本库的UUID(%s)与期望的UUID(%s)不匹配"
 
-#: ../svnsync/main.c:1413
+#: ../svnsync/main.c:1439
 #, c-format
 msgid "Commit created rev %ld but should have created %ld"
 msgstr "提交创建版本 %ld，应该创建版本 %ld"
 
-#: ../svnsync/main.c:1515
+#: ../svnsync/main.c:1545
 #, c-format
 msgid "Revision being currently copied (%ld), last merged revision (%ld), and destination HEAD (%ld) are inconsistent; have you committed to the destination without using svnsync?"
 msgstr "当前复制版本(%ld), 最后合并版本(%ld), 和目标 HEAD (%ld) 不一致；你是否使用非svnsync方法提交到目标版本库？"
 
-#: ../svnsync/main.c:1552
+#: ../svnsync/main.c:1582
 #, c-format
 msgid "Destination HEAD (%ld) is not the last merged revision (%ld); have you committed to the destination without using svnsync?"
 msgstr "目标 HEAD (%ld)不是最后合并版本(%ld)；你是否使用非 svnsync 方法提交到目标版本库？"
 
-#: ../svnsync/main.c:1648 ../svnsync/main.c:1653
+#: ../svnsync/main.c:1685 ../svnsync/main.c:1690
 #, c-format
 msgid "Cannot copy revprops for a revision (%ld) that has not been synchronized yet"
 msgstr "不能在尚未同步时复制版本(%ld)的 revprops"
 
-#: ../svnsync/main.c:1705
+#: ../svnsync/main.c:1742
 #, c-format
 msgid "'%s' is not a valid revision range"
 msgstr "“%s”不是有效的版本范围"
 
-#: ../svnsync/main.c:1719 ../svnsync/main.c:1739
+#: ../svnsync/main.c:1756 ../svnsync/main.c:1776
 #, c-format
 msgid "Invalid revision number (%ld)"
 msgstr "无效的版本号 (%ld)"
 
-#: ../svnsync/main.c:1779
+#: ../svnsync/main.c:1816
 msgid ""
 "general usage: svnsync SUBCOMMAND DEST_URL  [ARGS & OPTIONS ...]\n"
 "Type 'svnsync help <subcommand>' for help on a specific subcommand.\n"
@@ -10153,11 +10177,11 @@
 "\n"
 "可用的子命令: \n"
 
-#: ../svnsync/main.c:1941
+#: ../svnsync/main.c:1978
 msgid "Cannot use --username or --password with any of --source-username, --source-password, --sync-username, or --sync-password.\n"
 msgstr "不能将 --username 或 --password 与 --source-username, --source-password, --sync-username, 或 --sync-password 一起使用。\n"
 
-#: ../svnsync/main.c:2021
+#: ../svnsync/main.c:2058
 #, c-format
 msgid ""
 "Subcommand '%s' doesn't accept option '%s'\n"
@@ -10166,7 +10190,7 @@
 "子命令“%s”不接受选项“%s”\n"
 "使用“svnsync help %s”得到用法。\n"
 
-#: ../svnsync/main.c:2093
+#: ../svnsync/main.c:2130
 msgid "Try 'svnsync help' for more info"
 msgstr "请使用 “svnsync help” 以得到更多信息"
 
diff --git a/subversion/svn/main.c b/subversion/svn/main.c
index 495c77f..79eba4b 100644
--- a/subversion/svn/main.c
+++ b/subversion/svn/main.c
@@ -564,7 +564,9 @@
      "\n"
      "  2. Print the log messages for the PATHs (default: '.') under URL.\n"
      "     If specified, REV determines in which revision the URL is first\n"
-     "     looked up.  The default revision range is HEAD:1.\n"
+     "     looked up, and the default revision range is REV:1; otherwise,\n"
+     "     the URL is looked up in HEAD, and the default revision range is\n"
+     "     HEAD:1.\n"
      "\n"
      "  With -v, also print all affected paths with each log message.\n"
      "  With -q, don't print the log message body itself (note that this is\n"
@@ -605,7 +607,7 @@
      "     for each revision range provided.  If REV is not specified, HEAD\n"
      "     is assumed.  '-c M' is equivalent to '-r <M-1>:M', and '-c -M'\n"
      "     does the reverse: '-r M:<M-1>'.  If no revision ranges are\n"
-     "     specified, the default range of 0:HEAD is used.  Multiple '-c'\n"
+     "     specified, the default range of 0:REV is used.  Multiple '-c'\n"
      "     and/or '-r' instances may be specified, and mixing of forward\n"
      "     and reverse ranges is allowed.\n"
      "\n"
diff --git a/subversion/svn/merge-cmd.c b/subversion/svn/merge-cmd.c
index 6cc3057..31d464a 100644
--- a/subversion/svn/merge-cmd.c
+++ b/subversion/svn/merge-cmd.c
@@ -281,7 +281,7 @@
           ranges_to_merge = apr_array_make(pool, 1, sizeof(range));
           range->start.kind = svn_opt_revision_number;
           range->start.value.number = 1;
-          range->end.kind = svn_opt_revision_head;
+          range->end = peg_revision1;
           APR_ARRAY_PUSH(ranges_to_merge, svn_opt_revision_range_t *) = range;
         }
 
diff --git a/subversion/svn/notify.c b/subversion/svn/notify.c
index b7a54f0..bcbbd61 100644
--- a/subversion/svn/notify.c
+++ b/subversion/svn/notify.c
@@ -411,14 +411,8 @@
         goto print_error;
       break;
 
-    case svn_wc_notify_changelist_failed:
-      svn_handle_warning(stderr, n->err);
-      svn_error_clear(n->err);
-      break;
-
     case svn_wc_notify_changelist_moved:
       svn_handle_warning(stderr, n->err);
-      svn_error_clear(n->err);
       break;
 
     case svn_wc_notify_merge_begin:
@@ -451,6 +445,40 @@
         goto print_error;
       break;
 
+    case svn_wc_notify_foreign_merge_begin:
+      if (n->merge_range == NULL)
+        err = svn_cmdline_printf(pool,
+                                 _("--- Merging differences between "
+                                   "foreign repository URLs into '%s':\n"),
+                                 path_local);
+      else if (n->merge_range->start == n->merge_range->end - 1
+          || n->merge_range->start == n->merge_range->end)
+        err = svn_cmdline_printf(pool, 
+                                 _("--- Merging (from foreign repository) "
+                                   "r%ld into '%s':\n"),
+                                 n->merge_range->end, path_local);
+      else if (n->merge_range->start - 1 == n->merge_range->end)
+        err = svn_cmdline_printf(pool,
+                                 _("--- Reverse-merging (from foreign "
+                                   "repository) r%ld into '%s':\n"),
+                                 n->merge_range->start, path_local);
+      else if (n->merge_range->start < n->merge_range->end)
+        err = svn_cmdline_printf(pool,
+                                 _("--- Merging (from foreign repository) "
+                                   "r%ld through r%ld into '%s':\n"),
+                                 n->merge_range->start + 1,
+                                 n->merge_range->end, path_local);
+      else /* n->merge_range->start > n->merge_range->end - 1 */
+        err = svn_cmdline_printf(pool,
+                                 _("--- Reverse-merging (from foreign "
+                                   "repository) r%ld through r%ld into "
+                                   "'%s':\n"),
+                                 n->merge_range->start,
+                                 n->merge_range->end + 1, path_local);
+      if (err)
+        goto print_error;
+      break;
+
     default:
       break;
     }
diff --git a/subversion/svnserve/serve.c b/subversion/svnserve/serve.c
index cde8fa3..3c49170 100644
--- a/subversion/svnserve/serve.c
+++ b/subversion/svnserve/serve.c
@@ -650,7 +650,6 @@
   else if (rb.err)
     {
       /* Some failure during the reporting or editing operations. */
-      svn_error_clear(editor->abort_edit(edit_baton, pool));
       SVN_CMD_ERR(rb.err);
     }
   SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
diff --git a/subversion/svnsync/main.c b/subversion/svnsync/main.c
index ab2e985..62aed6b 100644
--- a/subversion/svnsync/main.c
+++ b/subversion/svnsync/main.c
@@ -626,7 +626,7 @@
 
   /* If we're doing a partial replay, we have to check first if the server 
      supports this. */
-  if (strcmp(root_url, baton->from_url) < 0)
+  if (svn_path_is_child(root_url, baton->from_url, pool))
     {
       svn_boolean_t server_supports_partial_replay;
       svn_error_t *err = svn_ra_has_capability(from_session,
@@ -636,9 +636,12 @@
       if (err && err->apr_err == SVN_ERR_UNKNOWN_CAPABILITY)
         {
           svn_error_clear(err);
-          return svn_error_create(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED, NULL, 
-                                  NULL);
+          server_supports_partial_replay = FALSE;
         }
+
+      if (!server_supports_partial_replay)
+        return svn_error_create(SVN_ERR_RA_PARTIAL_REPLAY_NOT_SUPPORTED, NULL,
+                                NULL);
     }
 
   SVN_ERR(svn_ra_change_rev_prop(to_session, 0, SVNSYNC_PROP_FROM_URL,
@@ -1271,6 +1274,7 @@
   svn_ra_session_t *from_session;
   svn_ra_session_t *to_session;
   subcommand_baton_t *sb;
+  svn_boolean_t has_commit_revprops_capability;
 } replay_baton_t;
 
 /* Return a replay baton allocated from POOL and populated with
@@ -1291,11 +1295,9 @@
 static svn_boolean_t 
 filter_exclude_date_author_sync(const char *key)
 {
-  if (strncmp(key, SVN_PROP_REVISION_AUTHOR, 
-              sizeof(SVN_PROP_REVISION_AUTHOR) - 1) == 0)
+  if (strcmp(key, SVN_PROP_REVISION_AUTHOR) == 0)
     return TRUE;
-  else if (strncmp(key, SVN_PROP_REVISION_DATE, 
-                   sizeof(SVN_PROP_REVISION_DATE) - 1) == 0)
+  else if (strcmp(key, SVN_PROP_REVISION_DATE) == 0)
     return TRUE;
   else if (strncmp(key, SVNSYNC_PROP_PREFIX,
                    sizeof(SVNSYNC_PROP_PREFIX) - 1) == 0)
@@ -1311,6 +1313,25 @@
   return ! filter_exclude_date_author_sync(key);
 }
 
+
+/* Only exclude svn:log .*/
+static svn_boolean_t
+filter_exclude_log(const char *key)
+{
+  if (strcmp(key, SVN_PROP_REVISION_LOG) == 0)
+    return TRUE;
+  else
+    return FALSE;
+}
+
+/* Only include svn:log. */
+static svn_boolean_t
+filter_include_log(const char *key)
+{
+  return ! filter_exclude_log(key);
+}
+
+
 /* Callback function for svn_ra_replay_range, invoked when starting to parse
  * a replay report.
  */
@@ -1350,9 +1371,14 @@
   /* The actual copy is just a replay hooked up to a commit.  Include
      all the revision properties from the source repositories, except
      'svn:author' and 'svn:date', those are not guaranteed to get
-     through the editor anyway. */
+     through the editor anyway.
+     If we're syncing to an non-commit-revprops capable server, filter
+     out all revprops except svn:log and add them later in
+     revplay_rev_finished. */
   filtered = filter_props(&filtered_count, rev_props,
-                          filter_exclude_date_author_sync,
+                          (rb->has_commit_revprops_capability
+                            ? filter_exclude_date_author_sync
+                            : filter_include_log),
                           pool);
 
   /* svn_ra_get_commit_editor3 requires the log message to be
@@ -1418,9 +1444,13 @@
 
 
   /* Ok, we're done with the data, now we just need to copy the remaining 
-     'svn:date' and 'svn:author' revprops and we're all set. */
-  filtered = filter_props(&filtered_count, rev_props, 
-                          filter_include_date_author_sync, 
+     'svn:date' and 'svn:author' revprops and we're all set.
+     If the server doesn't support revprops-in-a-commit, we still have to
+     set all revision properties except svn:log. */
+  filtered = filter_props(&filtered_count, rev_props,
+                          (rb->has_commit_revprops_capability
+                            ? filter_include_date_author_sync
+                            : filter_exclude_log),
                           subpool);
   SVN_ERR(write_revprops(&filtered_count, rb->to_session, revision, filtered, 
                          subpool));
@@ -1566,6 +1596,13 @@
      into the destination repository. */
   rb = make_replay_baton(from_session, to_session, baton, pool);
     
+  /* For compatibility with older svnserve versions, check first if we
+     support adding revprops to the commit. */
+  SVN_ERR(svn_ra_has_capability(rb->to_session, 
+                                &rb->has_commit_revprops_capability,
+                                SVN_RA_CAPABILITY_COMMIT_REVPROPS,
+                                pool));
+
   start_revision = atol(last_merged_rev->data) + 1;
   end_revision = from_latest;
   
diff --git a/subversion/tests/cmdline/README b/subversion/tests/cmdline/README
index a470be1..9137aa8 100644
--- a/subversion/tests/cmdline/README
+++ b/subversion/tests/cmdline/README
@@ -290,3 +290,24 @@
 the bottom of the file.
 
 
+Testing Compatability With Previous Release
+===========================================
+
+You can run the Python test suite against older installed versions of
+the Subversion servers.  This mail fragment introduces the ability:
+
+   Message-ID: <1ea387f60804091828q48c9d18ah7bf8d89ef7d39461@mail.gmail.com>
+   Date: Wed, 9 Apr 2008 18:28:40 -0700
+   From: "David Glasser" <glasser@davidglasser.net>
+   To: "Subversion Developers" <dev@subversion.tigris.org>
+   Subject:  backwards-compatibility testing!
+   
+   I've updated the expectations on trunk so that you can cleanly run the
+   test suite against 1.4.x svnserve or DAV.  You do this by adding
+   SERVER_MINOR_VERSION=4 with make check, or --server-minor-version 4 to
+   run_tests.py or a specific Python test.
+   
+   [...]
+
+We expect that post-1.5, this support will expand in the obvious ways
+(allowing "--server-minor-version 5" and SERVER_MINOR_VERSION=5).
\ No newline at end of file
diff --git a/subversion/tests/cmdline/changelist_tests.py b/subversion/tests/cmdline/changelist_tests.py
index 452e2c6..10c64d0 100755
--- a/subversion/tests/cmdline/changelist_tests.py
+++ b/subversion/tests/cmdline/changelist_tests.py
@@ -211,8 +211,8 @@
     return expected_skips
 
   # all dirs in the Greek tree
-  expected_skips_all = dict.fromkeys([
-    os.path.join(wc_dir),
+  expected_skips_all = dict([(x, None) for x in [
+        os.path.join(wc_dir),
     os.path.join(wc_dir, 'A'),
     os.path.join(wc_dir, 'A', 'B'),
     os.path.join(wc_dir, 'A', 'B', 'E'),
@@ -221,7 +221,7 @@
     os.path.join(wc_dir, 'A', 'D'),
     os.path.join(wc_dir, 'A', 'D', 'G'),
     os.path.join(wc_dir, 'A', 'D', 'H'),
-    ])
+    ]])
 
   expected_skips_wc_dir = { wc_dir : None }
 
diff --git a/subversion/tests/cmdline/commit_tests.py b/subversion/tests/cmdline/commit_tests.py
index 6e9ccd8..d5b9668 100755
--- a/subversion/tests/cmdline/commit_tests.py
+++ b/subversion/tests/cmdline/commit_tests.py
@@ -28,7 +28,8 @@
 XFail = svntest.testcase.XFail
 Item = svntest.wc.StateItem
 
-from svntest.main import server_has_revprop_commit
+from svntest.main import server_has_revprop_commit, \
+    server_gets_client_capabilities
 from svntest.actions import inject_conflict_into_wc
 
 ######################################################################
@@ -2549,7 +2550,8 @@
               versioned_log_message,
               changelist_near_conflict,
               commit_out_of_date_file,
-              start_commit_detect_capabilities,
+              SkipUnless(start_commit_detect_capabilities,
+                         server_gets_client_capabilities),
               commit_url,
              ]
 
diff --git a/subversion/tests/cmdline/depth_tests.py b/subversion/tests/cmdline/depth_tests.py
index 319542b..6d0f9b5 100755
--- a/subversion/tests/cmdline/depth_tests.py
+++ b/subversion/tests/cmdline/depth_tests.py
@@ -1428,6 +1428,511 @@
 
 #----------------------------------------------------------------------
 
+# Tests for deselection interface (a.k.a folding subtrees).
+# XFail until issue #2843 is resolved.
+#----------------------------------------------------------------------
+def depth_folding_clean_trees_1(sbox):
+  "gradually fold wc from depth=infinity to empty"
+
+  # Covers the following situations:
+  #
+  #  infinity->immediates (metadata only)
+  #  immediates->files (metadata only)
+  #  mixed(infinity+files)=>immediates
+  #  infinity=>empty
+  #  immediates=>empty
+  #  mixed(infinity+empty)=>immediates
+  #  mixed(infinity+empty/immediates)=>immediates
+  #  immediates=>files
+  #  files=>empty
+  #  mixed(infinity+empty)=>files
+
+  ign_a, ign_b, ign_c, wc_dir = set_up_depthy_working_copies(sbox,
+                                                             infinity=True)
+
+  A_path = os.path.join(wc_dir, 'A')
+  C_path = os.path.join(A_path, 'C')
+  B_path = os.path.join(A_path, 'B')
+  E_path = os.path.join(B_path, 'E')
+  F_path = os.path.join(B_path, 'F')
+  D_path = os.path.join(A_path, 'D')
+  H_path = os.path.join(A_path, 'H')
+
+  # Run 'svn up --set-depth=immediates' to directory A/B/E.
+  # This is an infinity=>immediates folding, changes on metadata only
+  expected_output = svntest.wc.State(wc_dir, {})
+  expected_status = svntest.actions.get_virginal_state('', 1)
+  expected_disk = svntest.main.greek_state.copy()
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', E_path)
+  verify_depth(None, "immediates", E_path)
+
+  # Run 'svn up --set-depth=files' to directory A/B/E.
+  # This is an immediates=>files folding, changes on metadata only
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'files', E_path)
+  verify_depth(None, "files", E_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A/B.
+  # This is an mixed(infinity+files)=>immediates folding
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/B/E/alpha'    : Item(status='D '),
+    'A/B/E/beta'     : Item(status='D '),
+    })
+  expected_status.remove('A/B/E/alpha', 'A/B/E/beta')
+  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', B_path)
+  verify_depth(None, "immediates", B_path)
+  verify_depth(None, "empty", E_path)
+  verify_depth(None, "empty", F_path)
+
+  # Run 'svn up --set-depth=empty' to directory A/D/H
+  # This is an infinity=>empty folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/H/chi'      : Item(status='D '),
+    'A/D/H/psi'      : Item(status='D '),
+    'A/D/H/omega'    : Item(status='D ')
+    })
+  expected_status.remove( 'A/D/H/chi', 'A/D/H/psi', 'A/D/H/omega')
+  expected_disk.remove( 'A/D/H/chi', 'A/D/H/psi', 'A/D/H/omega')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'empty', H_path)
+  verify_depth(None, "empty", H_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A/D
+  # This is an mixed(infinity+empty)=>immediates folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/G/pi'       : Item(status='D '),
+    'A/D/G/rho'      : Item(status='D '),
+    'A/D/G/tau'      : Item(status='D '),
+    })
+  expected_status.remove('A/D/G/pi', 'A/D/G/rho', 'A/D/G/tau')
+  expected_disk.remove('A/D/G/pi', 'A/D/G/rho', 'A/D/G/tau')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', D_path)
+  verify_depth(None, "immediates", D_path)
+  verify_depth(None, "empty", G_path)
+
+  # Run 'svn up --set-depth=empty' to directory A/D
+  # This is an immediates=>empty folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/G'          : Item(status='D '),
+    'A/D/H'          : Item(status='D '),
+    'A/D/gamma'      : Item(status='D ')
+    })
+  expected_status.remove('A/D/gamma', 'A/D/G', 'A/D/H')
+  expected_disk.remove('A/D/gamma', 'A/D/G', 'A/D/H')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'empty', D_path)
+  verify_depth(None, "empty", D_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A
+  # This is an mixed(infinity+empty/immediates)=>immediates folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/B/E'          : Item(status='D '),
+    'A/B/F'          : Item(status='D '),
+    'A/B/lambda'     : Item(status='D ')
+    })
+  expected_status.remove('A/B/lambda', 'A/B/E', 'A/B/F')
+  expected_disk.remove('A/B/lambda', 'A/B/E', 'A/B/F')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', A_path)
+  verify_depth(None, "immediates", A_path)
+  verify_depth(None, "empty", C_path)
+  verify_depth(None, "empty", B_path)
+
+  # Run 'svn up --set-depth=files' to directory A
+  # This is an immediates=>files folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/B'            : Item(status='D '),
+    'A/C'            : Item(status='D '),
+    'A/D'            : Item(status='D ')
+    })
+  expected_status.remove('A/B', 'A/C', 'A/D')
+  expected_disk.remove('A/B', 'A/C', 'A/D')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'files', A_path)
+  verify_depth(None, "files", A_path)
+
+  # Run 'svn up --set-depth=empty' to directory A
+  # This is an files=>empty folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'            : Item(status='D ')
+    })
+  expected_status.remove('A/mu')
+  expected_disk.remove('A/mu')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'empty', A_path)
+  verify_depth(None, "empty", A_path)
+
+  # Run 'svn up --set-depth=files' to wc
+  # This is an mixed(infinity+empty)=>files folding.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A'            : Item(status='D ')
+    })
+  expected_status.remove('A')
+  expected_disk.remove('A')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'files')
+  verify_depth(None, "files")
+
+
+#------------------------------------------------------------------------------
+def depth_folding_clean_trees_2(sbox):
+  "gradually fold wc, focusing on depth=immediates"
+
+  # Covers the following situations:
+  # 
+  #  infinity=>immediates
+  #  mixed(immediates+immediates)=>immediates
+  #  mixed(immediates+infinity)=>immediates
+  #  mixed(immediates+files)=>immediates
+  #  immediates=>empty(remove the target since the parent is at files/empty)
+
+  ign_a, wc_dir, ign_b, ign_c = set_up_depthy_working_copies(sbox, files=True)
+
+  A_path = os.path.join(wc_dir, 'A')
+  D_path = os.path.join(A_path, 'D')
+  H_path = os.path.join(D_path, 'H')
+  G_path = os.path.join(D_path, 'G')
+
+  # pull in directory A at immediates
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'up', '--depth', 'immediates', A_path)
+  # check to see if it's really at immediates
+  verify_depth(None, "immediates", A_path)
+  
+  # pull in directory D at infinity
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', D_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A/D.
+  # This is an infinity=>immediates folding
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/G/pi'       : Item(status='D '),
+    'A/D/G/rho'      : Item(status='D '),
+    'A/D/G/tau'      : Item(status='D '),
+    'A/D/H/chi'      : Item(status='D '),
+    'A/D/H/psi'      : Item(status='D '),
+    'A/D/H/omega'    : Item(status='D ')
+    })
+  expected_status = svntest.wc.State(wc_dir, {
+    ''               : Item(status='  ', wc_rev=1),
+    'iota'           : Item(status='  ', wc_rev=1),
+    'A'              : Item(status='  ', wc_rev=1),
+    'A/mu'           : Item(status='  ', wc_rev=1),
+    'A/B'            : Item(status='  ', wc_rev=1),
+    'A/C'            : Item(status='  ', wc_rev=1),
+    'A/D'            : Item(status='  ', wc_rev=1),
+    'A/D/gamma'      : Item(status='  ', wc_rev=1),
+    'A/D/G'          : Item(status='  ', wc_rev=1),
+    'A/D/H'          : Item(status='  ', wc_rev=1)
+    })
+  expected_disk = svntest.wc.State(wc_dir, {
+    'iota'        : Item(contents="This is the file 'iota'.\n"),
+    'A'           : Item(contents=None),
+    'A/mu'        : Item(contents="This is the file 'mu'.\n"),
+    'A/B'         : Item(contents=None),
+    'A/C'         : Item(contents=None),
+    'A/D'         : Item(contents=None),
+    'A/D/gamma'   : Item(contents="This is the file 'gamma'.\n"),
+    'A/D/G'       : Item(contents=None),
+    'A/D/H'       : Item(contents=None)
+    })
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', D_path)
+  verify_depth(None, "immediates", D_path)
+  verify_depth(None, "empty", G_path)
+  verify_depth(None, "empty", H_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A.
+  # This is an mixed(immediates+immediates)=>immediates folding
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/G'      : Item(status='D '),
+    'A/D/H'      : Item(status='D '),
+    'A/D/gamma'  : Item(status='D ')
+    })
+  expected_status.remove( 'A/D/G', 'A/D/H', 'A/D/gamma')
+  expected_disk.remove( 'A/D/G', 'A/D/H', 'A/D/gamma')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', A_path)
+  verify_depth(None, "immediates", A_path)
+  verify_depth(None, "empty", D_path)
+
+  # pull in directory D at infinity
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'up', D_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A.
+  # This is an mixed(immediates+infinity)=>immediates folding
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/gamma'      : Item(status='D '),
+    'A/D/G'          : Item(status='D '),
+    'A/D/G/pi'       : Item(status='D '),
+    'A/D/G/rho'      : Item(status='D '),
+    'A/D/G/tau'      : Item(status='D '),
+    'A/D/H'          : Item(status='D '),
+    'A/D/H/chi'      : Item(status='D '),
+    'A/D/H/psi'      : Item(status='D '),
+    'A/D/H/omega'    : Item(status='D ')
+    })
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', A_path)
+  verify_depth(None, "immediates", A_path)
+  verify_depth(None, "empty", D_path)
+
+  # pull in directory D at files
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'up', '--depth', 'files', D_path)
+
+  # Run 'svn up --set-depth=immediates' to directory A.
+  # This is an mixed(immediates+files)=>immediates folding
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/gamma'      : Item(status='D ')
+    })
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', A_path)
+  verify_depth(None, "immediates", A_path)
+  verify_depth(None, "empty", D_path)
+
+  # Run 'svn up --set-depth=empty' to directory A.
+  # This is an immediates=>empty folding, the directory A should be deleted
+  # too since the parent directory is at files/empty
+  expected_output = svntest.wc.State(wc_dir, {
+    'A'              : Item(status='D '),
+    'A/mu'           : Item(status='D '),
+    'A/D'            : Item(status='D '),
+    'A/C'            : Item(status='D '),
+    'A/B'            : Item(status='D ')
+    })
+  expected_status = svntest.wc.State(wc_dir, {
+    ''               : Item(status='  ', wc_rev=1),
+    'iota'           : Item(status='  ', wc_rev=1)
+    })
+  expected_disk = svntest.wc.State(wc_dir, {
+    'iota'        : Item(contents="This is the file 'iota'.\n")
+    })
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'empty', A_path)
+
+def depth_fold_expand_clean_trees(sbox):
+  "expand target while contracting subtree"
+  #  --set-depth=immediates/files to an empty target with infinity
+  #  sub-tree should both fold the subtree and expand the target
+  
+  wc_dir, ign_a, ign_b, ign_c = set_up_depthy_working_copies(sbox, empty=True)
+
+  A_path = os.path.join(wc_dir, 'A')
+  B_path = os.path.join(A_path, 'B')
+  C_path = os.path.join(A_path, 'C')
+  D_path = os.path.join(A_path, 'D')
+
+  # pull in directory A at empty
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'up', '--depth', 'empty', A_path)
+  verify_depth(None, "empty", A_path)
+
+  # pull in directory D at infinity
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'up', D_path)
+
+  # Make the other working copy.
+  other_wc = sbox.add_wc_path('other')
+  svntest.actions.duplicate_dir(wc_dir, other_wc)
+
+  # Run 'svn up --set-depth=immediates' to directory A. This both folds
+  # directory D to empty and expands directory A to immediates
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'           : Item(status='A '),
+    'A/B'            : Item(status='A '),
+    'A/C'            : Item(status='A '),
+    'A/D/gamma'      : Item(status='D '),
+    'A/D/G'          : Item(status='D '),
+    'A/D/G/pi'       : Item(status='D '),
+    'A/D/G/rho'      : Item(status='D '),
+    'A/D/G/tau'      : Item(status='D '),
+    'A/D/H'          : Item(status='D '),
+    'A/D/H/chi'      : Item(status='D '),
+    'A/D/H/psi'      : Item(status='D '),
+    'A/D/H/omega'    : Item(status='D ')
+    })
+  expected_status = svntest.wc.State(wc_dir, {
+    ''               : Item(status='  ', wc_rev=1),
+    'A'              : Item(status='  ', wc_rev=1),
+    'A/mu'           : Item(status='  ', wc_rev=1),
+    'A/B'            : Item(status='  ', wc_rev=1),
+    'A/C'            : Item(status='  ', wc_rev=1),
+    'A/D'            : Item(status='  ', wc_rev=1)
+    })
+  expected_disk = svntest.wc.State(wc_dir, {
+    'A'           : Item(contents=None),
+    'A/mu'        : Item(contents="This is the file 'mu'.\n"),
+    'A/B'         : Item(contents=None),
+    'A/C'         : Item(contents=None),
+    'A/D'         : Item(contents=None)
+    })
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'immediates', A_path)
+  verify_depth(None, "immediates", A_path)
+  verify_depth(None, "empty", B_path)
+  verify_depth(None, "empty", C_path)
+  verify_depth(None, "empty", D_path)
+
+  # Run 'svn up --set-depth=files' to directory A in other_wc. This both
+  # removes directory D and expands directory A to files
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'           : Item(status='A '),
+    'A/D'            : Item(status='D '),
+    'A/D/gamma'      : Item(status='D '),
+    'A/D/G'          : Item(status='D '),
+    'A/D/G/pi'       : Item(status='D '),
+    'A/D/G/rho'      : Item(status='D '),
+    'A/D/G/tau'      : Item(status='D '),
+    'A/D/H'          : Item(status='D '),
+    'A/D/H/chi'      : Item(status='D '),
+    'A/D/H/psi'      : Item(status='D '),
+    'A/D/H/omega'    : Item(status='D ')
+    })
+  expected_status = svntest.wc.State(wc_dir, {
+    ''               : Item(status='  ', wc_rev=1),
+    'A'              : Item(status='  ', wc_rev=1),
+    'A/mu'           : Item(status='  ', wc_rev=1),
+    })
+  expected_disk = svntest.wc.State(wc_dir, {
+    'A'           : Item(contents=None),
+    'A/mu'        : Item(contents="This is the file 'mu'.\n")
+    })
+  Other_A_path = os.path.join(other_wc, 'A')
+  svntest.actions.run_and_verify_update(other_wc,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None,
+                                        None, None, None, None,
+                                        '--set-depth', 'files', Other_A_path)
+  verify_depth(None, "files", Other_A_path)
+
+
+def pull_in_tree_with_depth_option(sbox):
+  """checkout and verify subtree with depth immediates"""
+
+  wc_empty,ign_a, ign_b, ign_c = set_up_depthy_working_copies(sbox,
+                                                              empty=True)
+  A_path = os.path.join(wc_empty, 'A')
+  expected_output = svntest.wc.State(wc_empty, {
+    'A'      : Item(status='A '),
+    'A/mu'   : Item(status='A '),
+    'A/B'    : Item(status='A '),
+    'A/C'    : Item(status='A '),
+    'A/D'    : Item(status='A ')
+    })
+  expected_disk = svntest.wc.State('', {
+    'A'      : Item(),
+    'A/mu'   : Item("This is the file 'mu'.\n"),
+    'A/B'    : Item(),
+    'A/C'    : Item(),
+    'A/D'    : Item(),
+    })
+  expected_status = svntest.wc.State(wc_empty, {
+    ''       : Item(status='  ', wc_rev=1),
+    'A'      : Item(status='  ', wc_rev=1),
+    'A/mu'   : Item(status='  ', wc_rev=1),
+    'A/B'    : Item(status='  ', wc_rev=1),
+    'A/C'    : Item(status='  ', wc_rev=1),
+    'A/D'    : Item(status='  ', wc_rev=1),
+    })
+  svntest.actions.run_and_verify_update(wc_empty,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None, None, None, None, False,
+                                        "--depth=immediates", A_path)
+
+  # Check that the A directory was pull ed in at depth=immediates.
+  verify_depth(None, "immediates", A_path)
+
+
+#----------------------------------------------------------------------
 # list all tests here, starting with None:
 test_list = [ None,
               depth_empty_checkout,
@@ -1455,6 +1960,10 @@
               upgrade_from_above,
               status_in_depthy_wc,
               depthy_update_above_dir_to_be_deleted,
+              XFail(depth_folding_clean_trees_1),
+              XFail(depth_folding_clean_trees_2),
+              XFail(depth_fold_expand_clean_trees),
+              pull_in_tree_with_depth_option,
             ]
 
 if __name__ == "__main__":
diff --git a/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout b/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
index 1033642..74d593a 100644
--- a/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
+++ b/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
@@ -7,7 +7,9 @@
 
   2. Print the log messages for the PATHs (default: '.') under URL.
      If specified, REV determines in which revision the URL is first
-     looked up.  The default revision range is HEAD:1.
+     looked up, and the default revision range is REV:1; otherwise,
+     the URL is looked up in HEAD, and the default revision range is
+     HEAD:1.
 
   With -v, also print all affected paths with each log message.
   With -q, don't print the log message body itself (note that this is
diff --git a/subversion/tests/cmdline/log_tests.py b/subversion/tests/cmdline/log_tests.py
index 7b0c1dc..ee8492f 100755
--- a/subversion/tests/cmdline/log_tests.py
+++ b/subversion/tests/cmdline/log_tests.py
@@ -262,7 +262,7 @@
 
   # Do some mergeing - r6
   os.chdir('trunk')
-  svntest.main.run_svn(None, 'merge', os.path.join('..', branch_a))
+  svntest.main.run_svn(None, 'merge', os.path.join('..', branch_a) + '@HEAD')
   svntest.main.run_svn(None, 'ci', '-m',
                        'Merged branches/a to trunk.',
                        '--username', svntest.main.wc_author2)
@@ -319,7 +319,7 @@
 
   # Merge branches/a to branches/b - r12
   os.chdir(branch_b)
-  svntest.main.run_svn(None, 'merge', os.path.join('..', 'a'))
+  svntest.main.run_svn(None, 'merge', os.path.join('..', 'a') + '@HEAD')
   svntest.main.run_svn(None, 'ci', '-m',
                        "Merged branches/a to branches/b.",
                        '--username', svntest.main.wc_author2)
@@ -333,7 +333,7 @@
 
   # More merging - r14
   os.chdir('trunk')
-  svntest.main.run_svn(None, 'merge', os.path.join('..', branch_b))
+  svntest.main.run_svn(None, 'merge', os.path.join('..', branch_b) + '@HEAD')
   svntest.main.run_svn(None, 'ci', '-m',
                        "Merged branches/b to trunk.",
                        '--username', svntest.main.wc_author2)
@@ -341,7 +341,8 @@
 
   # Even more merging - r15
   os.chdir(branch_c)
-  svntest.main.run_svn(None, 'merge', os.path.join('..', '..', 'trunk'))
+  svntest.main.run_svn(None, 'merge',
+                       os.path.join('..', '..', 'trunk') + '@HEAD')
   svntest.main.run_svn(None, 'ci', '-m',
                        "Bring branches/c up to date with trunk.",
                        '--username', svntest.main.wc_author2)
@@ -355,7 +356,7 @@
 
   # Merge branches/c to trunk, which produces a conflict - r17
   os.chdir('trunk')
-  svntest.main.run_svn(None, 'merge', os.path.join('..', branch_c))
+  svntest.main.run_svn(None, 'merge', os.path.join('..', branch_c) + '@HEAD')
   svntest.main.file_write(os.path.join('A', 'mu'),
                           "This is the file 'mu'.\n" +
                           "Don't forget to look at 'upsilon', as well.\n" +
diff --git a/subversion/tests/cmdline/merge_authz_tests.py b/subversion/tests/cmdline/merge_authz_tests.py
index 1b4d665..915cd8f 100755
--- a/subversion/tests/cmdline/merge_authz_tests.py
+++ b/subversion/tests/cmdline/merge_authz_tests.py
@@ -434,7 +434,9 @@
 
 # list all tests here, starting with None:
 test_list = [ None,
-              Skip(mergeinfo_and_skipped_paths, svntest.main.is_ra_type_file),
+              SkipUnless(Skip(mergeinfo_and_skipped_paths,
+                              svntest.main.is_ra_type_file),
+                         svntest.main.server_has_mergeinfo),
              ]
 
 if __name__ == '__main__':
diff --git a/subversion/tests/cmdline/merge_tests.py b/subversion/tests/cmdline/merge_tests.py
index 2b2b8cf..1a65c70 100755
--- a/subversion/tests/cmdline/merge_tests.py
+++ b/subversion/tests/cmdline/merge_tests.py
@@ -43,14 +43,14 @@
   shorten_by = len(svntest.main.work_dir) + len(os.sep)
   return path[shorten_by:]
 
-def expected_merge_output(rev_ranges, additional_lines=None):
+def expected_merge_output(rev_ranges, additional_lines=None, foreign=False):
   """Generate an (inefficient) regex representing the expected merge
   output from REV_RANGES (a list of 'range' lists of the form [start, end] or
   [single_rev] --> [single_rev - 1, single_rev]), and ADDITIONAL_LINES (a list
   of strings).  If REV_RANGES is None then only the standard notification for
   a 3-way merge is expected."""
   if rev_ranges is None:
-    lines = [svntest.main.merge_notify_line(None, None, False)]
+    lines = [svntest.main.merge_notify_line(None, None, False, foreign)]
   else:
    lines = []
    for rng in rev_ranges:
@@ -59,7 +59,8 @@
        end_rev = rng[1]
      else:
        end_rev = None
-     lines += [svntest.main.merge_notify_line(start_rev, end_rev, True)]
+     lines += [svntest.main.merge_notify_line(start_rev, end_rev,
+                                              True, foreign)]
   if isinstance(additional_lines, list):
     # Address "The Backslash Plague"
     #
@@ -1328,11 +1329,15 @@
                                        'merge', '-c', '2', 'mu')
 
   elif arg_flav == '*':
+    # Without a peg revision, the default merge range of BASE:1 (which
+    # is a no-op) will be chosen.  Let's do it both ways (no-op first,
+    # of course).
+    svntest.actions.run_and_verify_svn(None, None, [], 'merge', 'mu')
     svntest.actions.run_and_verify_svn(None,
                                        expected_merge_output([[2]],
                                                              'U    mu\n'),
                                        [],
-                                       'merge', 'mu')
+                                       'merge', 'mu@2')
 
   # sanity-check resulting file
   if (svntest.tree.get_text('mu') != orig_mu_text + added_mu_text):
@@ -4317,6 +4322,9 @@
   A_B_F_path = os.path.join(A_B_path, 'F')
   A_B_F_E_path = os.path.join(A_B_F_path, 'E')
   copy_of_B_path = os.path.join(A_path, 'copy-of-B')
+  copy_of_B_F_path = os.path.join(A_path, 'copy-of-B', 'F')
+  A_copy_of_B_F_E_alpha_path = os.path.join(A_path, 'copy-of-B', 'F',
+                                            'E', 'alpha')
 
   # Create a deeper directory structure.
   expected_status = create_deep_trees(wc_dir)
@@ -4448,6 +4456,61 @@
                                        None,
                                        None,
                                        None, 1)
+  os.chdir(saved_cwd)
+
+  # Test for part of Issue #2821, see
+  # http://subversion.tigris.org/issues/show_bug.cgi?id=2821#desc22
+  #
+  # Revert all local changes.
+  svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R', wc_dir)
+
+  # Make a text mod to A/copy-of-B/F/E/alpha
+  newer_content_for_alpha = "Conflicting content"
+  svntest.main.file_write(A_copy_of_B_F_E_alpha_path,
+                          newer_content_for_alpha)
+
+  # Re-merge r5 to A/copy-of-B/F, this *should* be a no-op as the mergeinfo
+  # on A/copy-of-B/F/E should prevent any attempt to merge r5 into that
+  # subtree.  The merge will leave a few local changes as mergeinfo is set
+  # on A/copy-of-B/F, the mergeinfo on A/copy-of-B/F/E elides to it, and
+  # the mergeinfo on A/copy-of-B/F/E1 picks up r5 from /A/B/F/E1.
+  short_copy_of_B_F_path = shorten_path_kludge(copy_of_B_F_path)
+  expected_output = wc.State(short_copy_of_B_F_path, {})
+  expected_status = wc.State(short_copy_of_B_F_path, {
+    ''         : Item(status=' M', wc_rev=8),
+    'E'        : Item(status=' M', wc_rev=8),
+    'E/alpha'  : Item(status='M ', wc_rev=8),
+    'E/beta'   : Item(status='  ', wc_rev=8),
+    'E1'       : Item(status=' M', wc_rev=8),
+    'E1/alpha' : Item(status='  ', wc_rev=8),
+    'E1/beta'  : Item(status='  ', wc_rev=8),
+    })
+  expected_disk = wc.State('', {
+    ''         : Item(props={SVN_PROP_MERGEINFO : '/A/B/F:5'}),
+    'E'        : Item(props={}),
+    'E/alpha'  : Item(newer_content_for_alpha),
+    'E/beta'   : Item("This is the file 'beta'.\n"),
+    'E1'       : Item(props={SVN_PROP_MERGEINFO :
+                               '/A/B/F/E:5\n/A/B/F/E1:5\n'}),
+    'E1/alpha' : Item(new_content_for_alpha1),
+    'E1/beta'  : Item("This is the file 'beta'.\n")
+    })
+  expected_skip = wc.State(short_copy_of_B_F_path, { })
+  saved_cwd = os.getcwd()
+
+  os.chdir(svntest.main.work_dir)
+  svntest.actions.run_and_verify_merge(short_copy_of_B_F_path, '4', '5',
+                                       sbox.repo_url + '/A/B/F',
+                                       expected_output,
+                                       expected_disk,
+                                       expected_status,
+                                       expected_skip,
+                                       None,
+                                       None,
+                                       None,
+                                       None,
+                                       None, 1)
+  os.chdir(saved_cwd)
 
 def tweak_src_then_merge_to_dest(sbox, src_path, dst_path,
                                  canon_src_path, contents, cur_rev):
@@ -6353,8 +6416,8 @@
                                        None, None, None, None,
                                        None, 1)
 
-def diff_repos_does_not_update_mergeinfo(sbox):
-  "don't set mergeinfo when merging from another repo"
+def foreign_repos_does_not_update_mergeinfo(sbox):
+  "set no mergeinfo when merging from foreign repos"
 
   # Test for issue #2788.
 
@@ -6381,7 +6444,7 @@
                                      expected_merge_output([[4]],
                                       'U    ' +
                                       os.path.join(short_G_COPY_path,
-                                                   "rho") + '\n'),
+                                                   "rho") + '\n', True),
                                      [], 'merge', '-c4',
                                      other_repo_url + '/A/D/G',
                                      short_G_COPY_path)
@@ -6397,7 +6460,7 @@
                                      expected_merge_output([[5]],
                                       'U    ' +
                                       os.path.join(short_E_COPY_path,
-                                                   "beta") +'\n'),
+                                                   "beta") +'\n', True),
                                      [], 'merge',
                                      other_repo_url + '/A/B/E@4',
                                      other_repo_url + '/A/B/E@5',
@@ -10769,107 +10832,490 @@
   svntest.actions.run_and_verify_svn("", None, expected_err,
                                      "merge", url, wc_dir)
 
+def reverse_merge_away_all_mergeinfo(sbox):
+  "merges that remove all mergeinfo work"
+
+  # 
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+  wc_disk, wc_status = set_up_branch(sbox)
+
+  # Some paths we'll care about
+  A_COPY_H_path = os.path.join(wc_dir, "A_COPY", "D", "H")
+
+  # Merge r4:8 from A/D/H into A_COPY/D/H.
+  short_H_COPY_path = shorten_path_kludge(A_COPY_H_path)
+  expected_output = wc.State(short_H_COPY_path, {
+    'omega' : Item(status='U '),
+    'psi'   : Item(status='U ')
+    })
+  expected_status = wc.State(short_H_COPY_path, {
+    ''      : Item(status=' M', wc_rev=2),
+    'psi'   : Item(status='M ', wc_rev=2),
+    'omega' : Item(status='M ', wc_rev=2),
+    'chi'   : Item(status='  ', wc_rev=2),
+    })
+  expected_disk = wc.State('', {
+    ''      : Item(props={SVN_PROP_MERGEINFO : '/A/D/H:3-6'}),
+    'psi'   : Item("New content"),
+    'omega' : Item("New content"),
+    'chi'   : Item("This is the file 'chi'.\n"),
+    })
+  expected_skip = wc.State(short_H_COPY_path, { })
+  saved_cwd = os.getcwd()
+  os.chdir(svntest.main.work_dir)
+  svntest.actions.run_and_verify_merge(short_H_COPY_path, '2', '6',
+                                       sbox.repo_url + '/A/D/H',
+                                       expected_output, expected_disk,
+                                       expected_status, expected_skip,
+                                       None, None, None, None, None, 1)
+  os.chdir(saved_cwd)
+
+  # Commit the merge as r7
+  expected_output = wc.State(wc_dir, {
+    'A_COPY/D/H'       : Item(verb='Sending'),
+    'A_COPY/D/H/omega' : Item(verb='Sending'),
+    'A_COPY/D/H/psi'   : Item(verb='Sending'),
+    })
+  wc_status.tweak('A_COPY/D/H', 'A_COPY/D/H/omega', 'A_COPY/D/H/psi',
+                  wc_rev=7)
+  svntest.actions.run_and_verify_commit(wc_dir,
+                                        expected_output,
+                                        wc_status,
+                                        None,
+                                        wc_dir)
+
+  # Now reverse merge r7 from itself, all mergeinfo should be removed.
+  expected_output = wc.State(short_H_COPY_path, {
+    ''      : Item(status=' U'),
+    'omega' : Item(status='U '),
+    'psi'   : Item(status='U ')
+    })
+  expected_status = wc.State(short_H_COPY_path, {
+    ''      : Item(status=' M', wc_rev=7),
+    'psi'   : Item(status='M ', wc_rev=7),
+    'omega' : Item(status='M ', wc_rev=7),
+    'chi'   : Item(status='  ', wc_rev=2),
+    })
+  expected_disk = wc.State('', {
+    'psi'   : Item("This is the file 'psi'.\n"),
+    'omega' : Item("This is the file 'omega'.\n"),
+    'chi'   : Item("This is the file 'chi'.\n"),
+    })
+  expected_skip = wc.State(short_H_COPY_path, { })
+  os.chdir(svntest.main.work_dir)
+  svntest.actions.run_and_verify_merge(short_H_COPY_path, '7', '6',
+                                       sbox.repo_url + '/A_COPY/D/H',
+                                       expected_output, expected_disk,
+                                       expected_status, expected_skip,
+                                       None, None, None, None, None, 1)
+  os.chdir(saved_cwd)
+
+
+# Another test for issue #3067: 'subtrees with intersecting mergeinfo, that don't
+# exist at the start of a merge range shouldn't break the merge'.  Specifically see
+# http://subversion.tigris.org/issues/show_bug.cgi?id=3067#desc5
+#
+# Set as XFail until that issue is resolved.
+def dont_merge_revs_into_subtree_that_predate_it(sbox):
+  "dont merge revs into a subtree that predate it"
+
+  # Create our good 'ole greek tree.
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Some paths we'll care about
+  psi_path     = os.path.join(wc_dir, "A", "D", "H", "psi")
+  nu_path      = os.path.join(wc_dir, "A", "D", "H", "nu")
+  H_COPY_path  = os.path.join(wc_dir, "H_COPY")
+  nu_COPY_path = os.path.join(wc_dir, "H_COPY", "nu")
+
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_disk = svntest.main.greek_state.copy()
+
+  # Make a text mod to 'A/D/H/psi' and commit it as r2
+  svntest.main.file_write(psi_path, "New content")
+  expected_output = wc.State(wc_dir, {'A/D/H/psi' : Item(verb='Sending')})
+  expected_status.tweak('A/D/H/psi', wc_rev=2)
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+  expected_disk.tweak('A/D/H/psi', contents="New content")
+
+  # Create 'A/D/H/nu' and commit it as r3.
+  svntest.main.file_write(nu_path, "This is the file 'nu'.\n")
+  svntest.actions.run_and_verify_svn(None, None, [], 'add', nu_path)
+  expected_output = wc.State(wc_dir, {'A/D/H/nu' : Item(verb='Adding')})
+  expected_status.add({'A/D/H/nu' : Item(status='  ', wc_rev=3)})
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+
+  # Copy 'A/D/H' to 'H_COPY' in r4.
+  svntest.actions.run_and_verify_svn(None,
+                                     ['\n', 'Committed revision 4.\n'],
+                                     [], 'copy',
+                                     sbox.repo_url + "/A/D/H",
+                                     sbox.repo_url + "/H_COPY",
+                                     "-m", "Copy A/D/H to H_COPY")
+  expected_status.add({
+    "H_COPY"       : Item(),
+    "H_COPY/chi"   : Item(),
+    "H_COPY/omega" : Item(),
+    "H_COPY/psi"   : Item(),
+    "H_COPY/nu"    : Item()})
+
+  # Update to pull the previous copy into the WC
+  svntest.main.run_svn(None, 'up', wc_dir)
+  expected_status.tweak(status='  ', wc_rev=4)
+
+  # Make a text mod to 'A/D/H/nu' and commit it as r5.
+  svntest.main.file_write(nu_path, "New content")
+  expected_output = wc.State(wc_dir, {'A/D/H/nu' : Item(verb='Sending')})
+  expected_status.tweak('A/D/H/nu', wc_rev=5)
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+
+  # Make another text mod to 'A/D/H/psi' that can be merged to 'H_COPY'
+  # during a cherry harvest and commit it as r6.
+  svntest.main.file_write(psi_path, "Even *newer* content")
+  expected_output = wc.State(wc_dir, {'A/D/H/psi' : Item(verb='Sending')})
+  expected_status.tweak('A/D/H/psi', wc_rev=6)
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+  expected_disk.tweak('A/D/H/psi', contents="Even *newer* content")
+
+  # Update WC so elision occurs smoothly.
+  svntest.main.run_svn(None, 'up', wc_dir)
+  expected_status.tweak(status='  ', wc_rev=6)
+
+  # Merge r5 from 'A/D/H/nu' to 'H_COPY/nu'.
+  saved_cwd = os.getcwd()
+  os.chdir(svntest.main.work_dir)
+  short_nu_COPY_path = shorten_path_kludge(nu_COPY_path)
+  svntest.actions.run_and_verify_svn(None,
+                                     expected_merge_output([[5]], 'U    ' +
+                                                           short_nu_COPY_path +
+                                                           '\n'),
+                                     [], 'merge', '-c5',
+                                     sbox.repo_url + '/A/D/H/nu',
+                                     short_nu_COPY_path)
+  os.chdir(saved_cwd)
+
+  # Cherry harvest all eligible revisions from 'A/D/H' to 'H_COPY'.
+  #
+  # This is where we see the problem described in
+  # http://subversion.tigris.org/issues/show_bug.cgi?id=3067#desc5. 
+  #
+  # Search for the comment entitled "The Merge Kluge" elsewhere in
+  # this file, to understand why we shorten and chdir() below.
+  #
+  # Use run_and_verify_svn() because run_and_verify_merge*() require
+  # explicit revision ranges.
+  short_H_COPY_path = shorten_path_kludge(H_COPY_path)
+
+  expected_skip = wc.State(short_H_COPY_path, { })
+  os.chdir(svntest.main.work_dir)
+  svntest.actions.run_and_verify_svn(
+    None,
+    expected_merge_output(
+      [[4,6]], 'U    ' + os.path.join(short_H_COPY_path, "psi") + '\n'),
+    [], 'merge', sbox.repo_url + '/A/D/H', short_H_COPY_path)
+  os.chdir(saved_cwd)
+
+  # Check the status after the merge.  The mergeinfo set on 'H_COPY/nu set
+  # by the first merge should elide.
+  expected_status.tweak('H_COPY', status=' M')
+  expected_status.tweak('H_COPY/nu', 'H_COPY/psi', status='M ')
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
+  expected_props = svntest.verify.UnorderedOutput(
+    ["Properties on '" + H_COPY_path + "':\n",
+     "  " + SVN_PROP_MERGEINFO + " : /A/D/H:4-6\n"])
+  svntest.actions.run_and_verify_svn(None,
+                                     expected_props, [],
+                                     'pl', '-vR', wc_dir)
+
+# Test for issue #3174: 'Merge algorithm chokes on subtrees needing
+# special attention that have been renamed'
+#
+# Set as XFail until that issue is resolved.
+def merge_chokes_on_renamed_subtrees(sbox):
+  "merge fails with renamed subtrees with mergeinfo"
+
+  # Create our good 'ole greek tree.
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Some paths we'll care about
+  psi_path            = os.path.join(wc_dir, "A", "D", "H", "psi")
+  psi_moved_path      = os.path.join(wc_dir, "A", "D", "H", "psi_moved")
+  psi_COPY_moved_path = os.path.join(wc_dir, "H_COPY", "psi_moved")
+  H_COPY_path    = os.path.join(wc_dir, "H_COPY")
+
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_disk = svntest.main.greek_state.copy()
+
+  # Make a text mod to 'A/D/H/psi' and commit it as r2
+  svntest.main.file_write(psi_path, "New content")
+  expected_output = wc.State(wc_dir, {'A/D/H/psi' : Item(verb='Sending')})
+  expected_status.tweak('A/D/H/psi', wc_rev=2)
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+  expected_disk.tweak('A/D/H/psi', contents="New content")
+
+  # Move 'A/D/H/psi' to 'A/D/H/psi_moved' and commit it as r3.
+  svntest.actions.run_and_verify_svn(None, None, [], 'move',
+                                     psi_path, psi_moved_path)
+  expected_output = wc.State(wc_dir, {
+    'A/D/H/psi'       : Item(verb='Deleting'),
+    'A/D/H/psi_moved' : Item(verb='Adding')
+    })
+  expected_status.add({'A/D/H/psi_moved' : Item(status='  ', wc_rev=3)})
+  expected_status.remove('A/D/H/psi')
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+
+  # Copy 'A/D/H' to 'H_COPY' in r4.
+  svntest.actions.run_and_verify_svn(None,
+                                     ['\n', 'Committed revision 4.\n'],
+                                     [], 'copy',
+                                     sbox.repo_url + "/A/D/H",
+                                     sbox.repo_url + "/H_COPY",
+                                     "-m", "Copy A/D/H to H_COPY")
+  expected_status.add({
+    "H_COPY"       : Item(),
+    "H_COPY/chi"   : Item(),
+    "H_COPY/omega" : Item(),
+    "H_COPY/psi_moved"   : Item()})
+
+  # Update to pull the previous copy into the WC
+  svntest.main.run_svn(None, 'up', wc_dir)
+  expected_status.tweak(status='  ', wc_rev=4)
+
+  # Make a text mod to 'A/D/H/psi_moved' and commit it as r5
+  svntest.main.file_write(psi_moved_path, "Even *Newer* content")
+  expected_output = wc.State(wc_dir,
+                             {'A/D/H/psi_moved' : Item(verb='Sending')})
+  expected_status.tweak('A/D/H/psi_moved', wc_rev=5)
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status, None, wc_dir)
+  expected_disk.remove('A/D/H/psi')
+  expected_disk.add({
+    'A/D/H/psi_moved' : Item("Even *Newer* content"),
+    })
+
+  # Update for a uniform working copy before merging.
+  svntest.main.run_svn(None, 'up', wc_dir)
+  expected_status.tweak(status='  ', wc_rev=4)
+
+  # Merge r5 from 'A/D/H/psi_moved' to 'H_COPY/psi_moved'.
+  #
+  # Search for the comment entitled "The Merge Kluge" elsewhere in
+  # this file, to understand why we shorten and chdir() below.
+  saved_cwd = os.getcwd()
+  os.chdir(svntest.main.work_dir)
+  short_psi_COPY_moved_path = shorten_path_kludge(psi_COPY_moved_path)
+  svntest.actions.run_and_verify_svn(
+    None,
+    expected_merge_output([[5]], 'U    ' + short_psi_COPY_moved_path + '\n'),
+    [], 'merge', '-c5',
+    sbox.repo_url + '/A/D/H/psi_moved', short_psi_COPY_moved_path)
+  os.chdir(saved_cwd)
+
+  # Merge r2 from 'A/D/H' to 'H_COPY'.  This should be a no-op as r2 is
+  # already a part of H_COPY's natural history and won't be repeated (and
+  # therefore we don't expect to see even a skipped notification for
+  # H_COPY/psi).
+  #
+  # Here is where issue #3174 appears, the merge fails with:
+  # svn: File not found: revision 5, path '/A_COPY/D/H'
+  short_H_COPY_path = shorten_path_kludge(H_COPY_path)
+  expected_output = wc.State(short_H_COPY_path, {})
+  expected_status = wc.State(short_H_COPY_path, {
+    ''          : Item(status=' M', wc_rev=5),
+    'psi_moved' : Item(status='MM', wc_rev=5),
+    'omega'     : Item(status='  ', wc_rev=5),
+    'chi'       : Item(status='  ', wc_rev=5),
+    })
+  # Note: Due to issue #3157 we do get some self-referential
+  # mergeinfo on H_COPY.
+  expected_disk = wc.State('', {
+    ''          : Item(props={SVN_PROP_MERGEINFO : '/A/D/H:2'}),
+    'psi_moved' : Item("Even *Newer* content",
+                       props={SVN_PROP_MERGEINFO : '/A/D/H/psi_moved:5'}),
+    'omega'     : Item("This is the file 'omega'.\n"),
+    'chi'       : Item("This is the file 'chi'.\n"),
+    })
+  expected_skip = wc.State(short_H_COPY_path, { })
+  os.chdir(svntest.main.work_dir)
+  svntest.actions.run_and_verify_merge(short_H_COPY_path, '1', '2',
+                                       sbox.repo_url + '/A_COPY/D/H',
+                                       expected_output, expected_disk,
+                                       expected_status, expected_skip,
+                                       None, None, None, None, None, 1)
+  os.chdir(saved_cwd)
+
 ########################################################################
 # Run the tests
 
 
 # list all tests here, starting with None:
 test_list = [ None,
-              textual_merges_galore,
-              add_with_history,
-              delete_file_and_dir,
-              simple_property_merges,
+              SkipUnless(textual_merges_galore,
+                         server_has_mergeinfo),
+              SkipUnless(add_with_history,
+                         server_has_mergeinfo),
+              SkipUnless(delete_file_and_dir,
+                         server_has_mergeinfo),
+              SkipUnless(simple_property_merges,
+                         server_has_mergeinfo),
               merge_with_implicit_target_using_r,
               merge_with_implicit_target_using_c,
               merge_with_implicit_target_and_revs,
-              merge_catches_nonexistent_target,
-              merge_tree_deleted_in_target,
+              SkipUnless(merge_catches_nonexistent_target,
+                         server_has_mergeinfo),
+              SkipUnless(merge_tree_deleted_in_target,
+                         server_has_mergeinfo),
               merge_similar_unrelated_trees,
               merge_with_prev,
-              merge_binary_file,
+              SkipUnless(merge_binary_file,
+                         server_has_mergeinfo),
               three_way_merge_add_of_existing_binary_file,
-              merge_one_file_using_r,
-              merge_one_file_using_c,
-              merge_one_file_using_implicit_revs,
-              merge_record_only,
-              merge_in_new_file_and_diff,
-              merge_skips_obstructions,
-              merge_into_missing,
-              dry_run_adds_file_with_prop,
+              SkipUnless(merge_one_file_using_r,
+                         server_has_mergeinfo),
+              SkipUnless(merge_one_file_using_c,
+                         server_has_mergeinfo),
+              SkipUnless(merge_one_file_using_implicit_revs,
+                         server_has_mergeinfo),
+              SkipUnless(merge_record_only,
+                         server_has_mergeinfo),
+              SkipUnless(merge_in_new_file_and_diff,
+                         server_has_mergeinfo),
+              SkipUnless(merge_skips_obstructions,
+                         server_has_mergeinfo),
+              SkipUnless(merge_into_missing,
+                         server_has_mergeinfo),
+              SkipUnless(dry_run_adds_file_with_prop,
+                         server_has_mergeinfo),
               merge_binary_with_common_ancestry,
-              merge_funny_chars_on_path,
+              SkipUnless(merge_funny_chars_on_path,
+                         server_has_mergeinfo),
               merge_keyword_expansions,
               merge_prop_change_to_deleted_target,
               merge_file_with_space_in_its_name,
               merge_dir_branches,
-              safe_property_merge,
-              property_merge_from_branch,
+              SkipUnless(safe_property_merge,
+                         server_has_mergeinfo),
+              SkipUnless(property_merge_from_branch,
+                         server_has_mergeinfo),
               property_merge_undo_redo,
-              cherry_pick_text_conflict,
+              SkipUnless(cherry_pick_text_conflict,
+                         server_has_mergeinfo),
               merge_file_replace,
-              merge_dir_replace,
+              SkipUnless(merge_dir_replace,
+                         server_has_mergeinfo),
               XFail(merge_dir_and_file_replace),
               merge_file_replace_to_mixed_rev_wc,
               merge_added_dir_to_deleted_in_target,
-              merge_ignore_whitespace,
-              merge_ignore_eolstyle,
-              merge_add_over_versioned_file_conflicts,
-              merge_conflict_markers_matching_eol,
-              merge_eolstyle_handling,
-              avoid_repeated_merge_using_inherited_merge_info,
-              avoid_repeated_merge_on_subtree_with_merge_info,
-              obey_reporter_api_semantics_while_doing_subtree_merges,
+              SkipUnless(merge_ignore_whitespace,
+                         server_has_mergeinfo),
+              SkipUnless(merge_ignore_eolstyle,
+                         server_has_mergeinfo),
+              SkipUnless(merge_add_over_versioned_file_conflicts,
+                         server_has_mergeinfo),
+              SkipUnless(merge_conflict_markers_matching_eol,
+                         server_has_mergeinfo),
+              SkipUnless(merge_eolstyle_handling,
+                         server_has_mergeinfo),
+              SkipUnless(avoid_repeated_merge_using_inherited_merge_info,
+                         server_has_mergeinfo),
+              SkipUnless(avoid_repeated_merge_on_subtree_with_merge_info,
+                         server_has_mergeinfo),
+              SkipUnless(obey_reporter_api_semantics_while_doing_subtree_merges,
+                         server_has_mergeinfo),
               SkipUnless(mergeinfo_inheritance,
                          server_has_mergeinfo),
-              mergeinfo_elision,
-              mergeinfo_inheritance_and_discontinuous_ranges,
+              SkipUnless(mergeinfo_elision,
+                         server_has_mergeinfo),
+              SkipUnless(mergeinfo_inheritance_and_discontinuous_ranges,
+                         server_has_mergeinfo),
               SkipUnless(merge_to_target_with_copied_children,
                          server_has_mergeinfo),
-              merge_to_switched_path,
+              SkipUnless(merge_to_switched_path,
+                         server_has_mergeinfo),
               SkipUnless(merge_to_path_with_switched_children,
                          server_has_mergeinfo),
               merge_with_implicit_target_file,
               SkipUnless(empty_mergeinfo,
                          server_has_mergeinfo),
-              prop_add_to_child_with_mergeinfo,
-              diff_repos_does_not_update_mergeinfo,
+              SkipUnless(prop_add_to_child_with_mergeinfo,
+                         server_has_mergeinfo),
+              foreign_repos_does_not_update_mergeinfo,
               XFail(avoid_reflected_revs),
-              update_loses_mergeinfo,
-              merge_loses_mergeinfo,
+              SkipUnless(update_loses_mergeinfo,
+                         server_has_mergeinfo),
+              SkipUnless(merge_loses_mergeinfo,
+                         server_has_mergeinfo),
               single_file_replace_style_merge_capability,
-              merge_to_out_of_date_target,
-              merge_with_depth_files,
-              merge_fails_if_subtree_is_deleted_on_src,
-              merge_away_subtrees_noninheritable_ranges,
-              merge_to_sparse_directories,
-              merge_old_and_new_revs_from_renamed_dir,
-              merge_with_child_having_different_rev_ranges_to_merge,
-              merge_old_and_new_revs_from_renamed_file,
-              merge_with_auto_rev_range_detection,
-              mergeinfo_recording_in_skipped_merge,
-              cherry_picking,
-              propchange_of_subdir_raises_conflict,
-              reverse_merge_prop_add_on_child,
+              SkipUnless(merge_to_out_of_date_target,
+                         server_has_mergeinfo),
+              SkipUnless(merge_with_depth_files,
+                         server_has_mergeinfo),
+              SkipUnless(merge_fails_if_subtree_is_deleted_on_src,
+                         server_has_mergeinfo),
+              SkipUnless(merge_away_subtrees_noninheritable_ranges,
+                         server_has_mergeinfo),
+              SkipUnless(merge_to_sparse_directories,
+                         server_has_mergeinfo),
+              SkipUnless(merge_old_and_new_revs_from_renamed_dir,
+                         server_has_mergeinfo),
+              SkipUnless(merge_with_child_having_different_rev_ranges_to_merge,
+                         server_has_mergeinfo),
+              SkipUnless(merge_old_and_new_revs_from_renamed_file,
+                         server_has_mergeinfo),
+              SkipUnless(merge_with_auto_rev_range_detection,
+                         server_has_mergeinfo),
+              SkipUnless(mergeinfo_recording_in_skipped_merge,
+                         server_has_mergeinfo),
+              SkipUnless(cherry_picking,
+                         server_has_mergeinfo),
+              SkipUnless(propchange_of_subdir_raises_conflict,
+                         server_has_mergeinfo),
+              SkipUnless(reverse_merge_prop_add_on_child,
+                         server_has_mergeinfo),
               XFail(merge_target_with_non_inheritable_mergeinfo),
               self_reverse_merge,
-              ignore_ancestry_and_mergeinfo,
-              merge_from_renamed_branch_fails_while_avoiding_repeat_merge,
-              merge_source_normalization_and_subtree_merges,
-              new_subtrees_should_not_break_merge,
-              basic_reintegrate,
+              SkipUnless(ignore_ancestry_and_mergeinfo,
+                         server_has_mergeinfo),
+              SkipUnless(merge_from_renamed_branch_fails_while_avoiding_repeat_merge,
+                         server_has_mergeinfo),
+              SkipUnless(merge_source_normalization_and_subtree_merges,
+                         server_has_mergeinfo),
+              SkipUnless(new_subtrees_should_not_break_merge,
+                         server_has_mergeinfo),
+              SkipUnless(basic_reintegrate,
+                         server_has_mergeinfo),
               XFail(reintegrate_with_rename),
               XFail(reintegrate_branch_never_merged_to),
               reintegrate_fail_on_modified_wc,
               reintegrate_fail_on_mixed_rev_wc,
               reintegrate_fail_on_switched_wc,
               reintegrate_fail_on_shallow_wc,
-              XFail(reintegrate_fail_on_stale_source),
-              dont_add_mergeinfo_from_own_history,
+              SkipUnless(XFail(reintegrate_fail_on_stale_source),
+                         server_has_mergeinfo),
+              SkipUnless(dont_add_mergeinfo_from_own_history,
+                         server_has_mergeinfo),
               merge_range_predates_history,
               foreign_repos,
               foreign_repos_2_url,
               XFail(merge_added_subtree),
-              merge_unknown_url,
+              SkipUnless(merge_unknown_url,
+                         server_has_mergeinfo),
+              SkipUnless(reverse_merge_away_all_mergeinfo,
+                         server_has_mergeinfo),
+              XFail(SkipUnless(dont_merge_revs_into_subtree_that_predate_it,
+                               server_has_mergeinfo)),
+              XFail(SkipUnless(merge_chokes_on_renamed_subtrees,
+                               server_has_mergeinfo)),
              ]
 
 if __name__ == '__main__':
diff --git a/subversion/tests/cmdline/mergeinfo_tests.py b/subversion/tests/cmdline/mergeinfo_tests.py
index 2bf2255..4a2584f 100755
--- a/subversion/tests/cmdline/mergeinfo_tests.py
+++ b/subversion/tests/cmdline/mergeinfo_tests.py
@@ -37,7 +37,7 @@
   if server_has_mergeinfo():
     return expected_err
   else:
-    return "Retrieval of mergeinfo unsupported by '.+'"
+    return ".*Retrieval of mergeinfo unsupported by '.+'"
 
 ######################################################################
 # Tests
@@ -110,7 +110,8 @@
                                      "ci", wc_dir, "-m", "log message")
 
   url = sbox.repo_url + "/iota"
-  expected_err = ".*File not found.*iota.*|.*iota.*path not found.*"
+  expected_err = adjust_error_for_server_version(".*File not found.*iota.*|"
+                                                 ".*iota.*path not found.*")
   svntest.actions.run_and_verify_svn("", None, expected_err,
                                      "mergeinfo", "--show-revs", "eligible", 
                                      url, wc_dir)
@@ -123,7 +124,7 @@
 test_list = [ None,
               no_mergeinfo,
               mergeinfo,
-              XFail(explicit_mergeinfo_source),
+              XFail(explicit_mergeinfo_source, server_has_mergeinfo),
               mergeinfo_on_unknown_url,
              ]
 
diff --git a/subversion/tests/cmdline/prop_tests.py b/subversion/tests/cmdline/prop_tests.py
index 06db47e..baa079f 100755
--- a/subversion/tests/cmdline/prop_tests.py
+++ b/subversion/tests/cmdline/prop_tests.py
@@ -385,7 +385,7 @@
   svntest.main.run_svn(None, 'propset', 'foo', 'eek', wc_dir)
 
   svntest.actions.run_and_verify_commit(wc_dir, None, None,
-                                        "out[- ]of[- ]date",
+                                        "[oO]ut[- ]of[- ]date",
                                         wc_dir)
 
 #----------------------------------------------------------------------
diff --git a/subversion/tests/cmdline/special_tests.py b/subversion/tests/cmdline/special_tests.py
index 1d3391b..a09eec0 100755
--- a/subversion/tests/cmdline/special_tests.py
+++ b/subversion/tests/cmdline/special_tests.py
@@ -22,6 +22,7 @@
 # Our testing module
 import svntest
 
+from svntest.main import server_has_mergeinfo
 
 # (abbreviation)
 Skip = svntest.testcase.Skip
@@ -639,7 +640,9 @@
               SkipUnless(copy_tree_with_symlink, svntest.main.is_posix_os),
               SkipUnless(replace_symlink_with_file, svntest.main.is_posix_os),
               SkipUnless(remove_symlink, svntest.main.is_posix_os),
-              SkipUnless(merge_symlink_into_file, svntest.main.is_posix_os),
+              SkipUnless(SkipUnless(merge_symlink_into_file,
+                                    svntest.main.is_posix_os),
+                         server_has_mergeinfo),
               SkipUnless(merge_file_into_symlink, svntest.main.is_posix_os),
               checkout_repo_with_symlinks,
               XFail(SkipUnless(diff_symlink_to_dir, svntest.main.is_posix_os)),
diff --git a/subversion/tests/cmdline/stat_tests.py b/subversion/tests/cmdline/stat_tests.py
index 5715cdb..8dd9fe5 100755
--- a/subversion/tests/cmdline/stat_tests.py
+++ b/subversion/tests/cmdline/stat_tests.py
@@ -933,13 +933,16 @@
                                      'merge',
                                      branch_url, '-r', '4:5', trunk_dir)
 
-  expected_output = svntest.verify.UnorderedOutput([
+  lines = [
     "?      " + os.path.join(wc_dir, "trunk", "file.merge-left.r4") + "\n",
     "?      " + os.path.join(wc_dir, "trunk", "file.merge-right.r5") + "\n",
     "?      " + os.path.join(wc_dir, "trunk", "file.working") + "\n",
-    " M     " + os.path.join(wc_dir, "trunk") + "\n",
     "C  +   " + os.path.join(wc_dir, "trunk", "file") + "\n",
-  ])
+  ]
+  if svntest.main.server_has_mergeinfo():
+    lines.append(" M     " + os.path.join(wc_dir, "trunk") + "\n")
+
+  expected_output = svntest.verify.UnorderedOutput(lines)
 
   svntest.actions.run_and_verify_svn(None, expected_output, [],
                                      'status', wc_dir)
diff --git a/subversion/tests/cmdline/svnadmin_tests.py b/subversion/tests/cmdline/svnadmin_tests.py
index 5a951f2..5a77b13 100755
--- a/subversion/tests/cmdline/svnadmin_tests.py
+++ b/subversion/tests/cmdline/svnadmin_tests.py
@@ -446,6 +446,16 @@
 
 #----------------------------------------------------------------------
 
+# Returns the filename of the rev or revprop file (according to KIND)
+# numbered REV in REPO_DIR, which must be in the first shard if we're
+# using a sharded repository.
+def fsfs_file(repo_dir, kind, rev):
+  if svntest.main.server_minor_version >= 5:
+    return os.path.join(repo_dir, 'db', kind, '0', rev)
+  else:
+    return os.path.join(repo_dir, 'db', kind, rev)
+
+
 def verify_incremental_fsfs(sbox):
   """svnadmin verify detects corruption dump can't"""
 
@@ -462,7 +472,7 @@
   # "dir 7-1.0.r1/1569" (increment offset) and updating the checksum for
   # this directory listing to "c9b5a2d26473a4e28088673dda9df804" so that
   # the listing itself is valid.
-  r2 = sbox.repo_dir + "/db/revs/0/2"
+  r2 = fsfs_file(sbox.repo_dir, 'revs', '2')
   fp = open(r2, 'wb')
   fp.write("""id: 0-2.0.r2/0
 type: dir
@@ -790,10 +800,12 @@
   svntest.main.file_append(os.path.join(sbox.wc_dir, 'iota'), 'newest line\n')
   svntest.main.run_svn(None, 'ci', sbox.wc_dir, '--quiet', '-m', 'log msg')
 
+  rev_3 = fsfs_file(sbox.repo_dir, 'revs', '3')
+  rev_was_3 = fsfs_file(sbox.repo_dir, 'revs', 'was_3')
+
   # Move aside the revs file for r3.
-  os.rename(os.path.join(sbox.repo_dir, 'db','revs','0', '3'),
-            os.path.join(sbox.repo_dir, 'db','revs','0', 'was_3'));
-  
+  os.rename(rev_3, rev_was_3)
+
   # Verify 'svnadmin recover' fails when youngest has a revprops
   # file but no revs file.
   exit_code, output, errput = svntest.main.run_svnadmin("recover",
@@ -805,12 +817,13 @@
     raise svntest.Failure
 
   # Restore the r3 revs file, thus repairing the repository.
-  os.rename(os.path.join(sbox.repo_dir, 'db','revs','0', 'was_3'),
-            os.path.join(sbox.repo_dir, 'db','revs','0', '3'));
-  
+  os.rename(rev_was_3, rev_3)
+
+  revprop_3 = fsfs_file(sbox.repo_dir, 'revprops', '3')
+  revprop_was_3 = fsfs_file(sbox.repo_dir, 'revprops', 'was_3')
+
   # Move aside the revprops file for r3.
-  os.rename(os.path.join(sbox.repo_dir, 'db','revprops','0', '3'),
-            os.path.join(sbox.repo_dir, 'db','revprops','0', 'was_3'));
+  os.rename(revprop_3, revprop_was_3)
 
   # Verify 'svnadmin recover' fails when youngest has a revs file
   # but no revprops file (issue #2992).
@@ -823,13 +836,11 @@
     raise svntest.Failure
 
   # Restore the r3 revprops file, thus repairing the repository.
-  os.rename(os.path.join(sbox.repo_dir, 'db','revprops','0', 'was_3'),
-            os.path.join(sbox.repo_dir, 'db','revprops','0', '3'));
+  os.rename(revprop_was_3, revprop_3)
 
   # Change revprops file to a directory for revision 3
-  os.rename(os.path.join(sbox.repo_dir, 'db','revprops','0', '3'),
-            os.path.join(sbox.repo_dir, 'db','revprops','0', 'was_3'));
-  os.mkdir(os.path.join(sbox.repo_dir, 'db','revprops','0','3'));
+  os.rename(revprop_3, revprop_was_3)
+  os.mkdir(revprop_3)
 
   # Verify 'svnadmin recover' fails when youngest has a revs file
   # but revprops file is not a file (another aspect of issue #2992).
diff --git a/subversion/tests/cmdline/svnsync_tests.py b/subversion/tests/cmdline/svnsync_tests.py
index 92b6ba3..a3f6366 100755
--- a/subversion/tests/cmdline/svnsync_tests.py
+++ b/subversion/tests/cmdline/svnsync_tests.py
@@ -24,9 +24,11 @@
 from svntest.verify import SVNUnexpectedStdout, SVNUnexpectedStderr
 from svntest.verify import SVNExpectedStderr
 from svntest.main import write_restrictive_svnserve_conf
+from svntest.main import server_has_partial_replay
 
 # (abbreviation)
 Skip = svntest.testcase.Skip
+SkipUnless = svntest.testcase.SkipUnless
 XFail = svntest.testcase.XFail
 Item = svntest.wc.StateItem
 
@@ -706,8 +708,10 @@
               url_encoding,
               no_author,
               copy_revprops,
-              only_trunk,
-              only_trunk_A_with_changes,
+              SkipUnless(only_trunk,
+                         server_has_partial_replay),
+              SkipUnless(only_trunk_A_with_changes,
+                         server_has_partial_replay),
               move_and_modify_in_the_same_revision,
              ]
 
diff --git a/subversion/tests/cmdline/svntest/main.py b/subversion/tests/cmdline/svntest/main.py
index 096f880..9533543 100644
--- a/subversion/tests/cmdline/svntest/main.py
+++ b/subversion/tests/cmdline/svntest/main.py
@@ -776,27 +776,34 @@
   os.environ['SVNTEST_EDITOR_FUNC'] = func
 
 
-def merge_notify_line(revstart=None, revend=None, same_URL=True):
+def merge_notify_line(revstart=None, revend=None, same_URL=True,
+                      foreign=False):
   """Return an expected output line that describes the beginning of a
   merge operation on revisions REVSTART through REVEND.  Omit both
   REVSTART and REVEND for the case where the left and right sides of
   the merge are from different URLs."""
+  from_foreign_phrase = foreign and "\(from foreign repository\) " or ""
   if not same_URL:
-    return "--- Merging differences between repository URLs into '.+':\n"
+    return "--- Merging differences between %srepository URLs into '.+':\n" \
+           % (foreign and "foreign " or "")
   if revend is None:
     if revstart is None:
       # The left and right sides of the merge are from different URLs.
-      return "--- Merging differences between repository URLs into '.+':\n"
+      return "--- Merging differences between %srepository URLs into '.+':\n" \
+             % (foreign and "foreign " or "")
     elif revstart < 0:
-      return "--- Reverse-merging r%ld into '.+':\n" % abs(revstart)
+      return "--- Reverse-merging %sr%ld into '.+':\n" \
+             % (from_foreign_phrase, abs(revstart))
     else:
-      return "--- Merging r%ld into '.+':\n" % revstart
+      return "--- Merging %sr%ld into '.+':\n" \
+             % (from_foreign_phrase, revstart)
   else:
     if revstart > revend:
-      return "--- Reverse-merging r%ld through r%ld into '.+':\n" % (revstart,
-                                                                     revend)
+      return "--- Reverse-merging %sr%ld through r%ld into '.+':\n" \
+             % (from_foreign_phrase, revstart, revend)
     else:
-      return "--- Merging r%ld through r%ld into '.+':\n" % (revstart, revend)
+      return "--- Merging %sr%ld through r%ld into '.+':\n" \
+             % (from_foreign_phrase, revstart, revend)
 
 
 ######################################################################
@@ -850,6 +857,14 @@
   _check_command_line_parsed()
   return server_minor_version >= 5
 
+def server_gets_client_capabilities():
+  _check_command_line_parsed()
+  return server_minor_version >= 5
+
+def server_has_partial_replay():
+  _check_command_line_parsed()
+  return server_minor_version >= 5
+
 
 ######################################################################
 # Sandbox handling
diff --git a/subversion/tests/cmdline/switch_tests.py b/subversion/tests/cmdline/switch_tests.py
index d514c1c..53df063 100755
--- a/subversion/tests/cmdline/switch_tests.py
+++ b/subversion/tests/cmdline/switch_tests.py
@@ -24,10 +24,11 @@
 
 # (abbreviation)
 Skip = svntest.testcase.Skip
+SkipUnless = svntest.testcase.SkipUnless
 XFail = svntest.testcase.XFail
 Item = svntest.wc.StateItem
 
-from svntest.main import SVN_PROP_MERGEINFO
+from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
 
 ### Bummer.  It would be really nice to have easy access to the URL
 ### member of our entries files so that switches could be testing by
@@ -2134,7 +2135,7 @@
               forced_switch,
               forced_switch_failures,
               switch_scheduled_add,
-              mergeinfo_switch_elision,
+              SkipUnless(mergeinfo_switch_elision, server_has_mergeinfo),
               switch_with_obstructing_local_adds,
               switch_with_depth,
               switch_to_dir_with_peg_rev,
diff --git a/subversion/tests/cmdline/update_tests.py b/subversion/tests/cmdline/update_tests.py
index a7a1c74..7a665a4 100755
--- a/subversion/tests/cmdline/update_tests.py
+++ b/subversion/tests/cmdline/update_tests.py
@@ -29,7 +29,8 @@
 XFail = svntest.testcase.XFail
 Item = svntest.wc.StateItem
 
-from svntest.main import SVN_PROP_MERGEINFO, server_sends_copyfrom_on_update
+from svntest.main import SVN_PROP_MERGEINFO, server_sends_copyfrom_on_update, \
+  server_has_mergeinfo
 
 ######################################################################
 # Tests
@@ -2938,10 +2939,9 @@
     # Construct a properly escaped regex when dealing with
     # '\' riddled paths on Windows.
     update_line = update_line.replace("\\", "\\\\")
+  notify_line = svntest.main.merge_notify_line(3, 5, True, False)
   svntest.actions.run_and_verify_svn(None,
-                                     '|'.join(
-                                        [svntest.main.merge_notify_line(3, 5),
-                                         update_line]),
+                                     '|'.join([notify_line, update_line]),
                                      [], 'merge', '-r2:5',
                                      sbox.repo_url + '/A/B/E/alpha',
                                      short_alpha_COPY_path)
@@ -3859,7 +3859,8 @@
               update_wc_with_replaced_file,
               update_with_obstructing_additions,
               update_conflicted,
-              mergeinfo_update_elision,
+              SkipUnless(mergeinfo_update_elision,
+                         server_has_mergeinfo),
               SkipUnless(update_handles_copyfrom,
                          server_sends_copyfrom_on_update),
               copyfrom_degrades_gracefully,
diff --git a/subversion/tests/libsvn_subr/path-test.c b/subversion/tests/libsvn_subr/path-test.c
index 4462775..9ee598f 100644
--- a/subversion/tests/libsvn_subr/path-test.c
+++ b/subversion/tests/libsvn_subr/path-test.c
@@ -933,6 +933,18 @@
     { "../foo",          "..",            FALSE},
     { SVN_EMPTY_PATH,    SVN_EMPTY_PATH,  TRUE},
     { "/",               "/",             TRUE},
+
+    { "http://test",    "http://test",     TRUE},
+    { "http://test",    "http://taste",    FALSE},
+    { "http://test",    "http://test/foo", TRUE},
+    { "http://test",    "file://test/foo", FALSE},
+    { "http://test",    "http://testF",    FALSE},
+/*
+    TODO: this testcase fails, showing that svn_path_is_ancestor
+    shouldn't be used on urls. This is related to issue #1711.
+
+    { "http://",        "http://test",     FALSE},
+*/
   };
 
   *msg = "test svn_path_is_ancestor";
@@ -1083,6 +1095,8 @@
     { "http://test",    "http://taste",    ""},
     { "http://test",    "http://test/foo", "http://test"},
     { "http://test",    "file://test/foo", ""},
+    { "http://test",    "http://testF",    ""},
+    { "http://",        "http://test",     ""},
   };
 
   *msg = "test svn_path_get_longest_ancestor";
diff --git a/tools/client-side/bash_completion b/tools/client-side/bash_completion
index 82100d8..7f4346e 100644
--- a/tools/client-side/bash_completion
+++ b/tools/client-side/bash_completion
@@ -109,8 +109,10 @@
 #     Argument completion outside a working copy results in an error message.
 #     Filenames with spaces are not completed properly.
 #     
-# - to do: other options? 
-#   obsolete options could be removed from auto-comp? (e.g. -N)
+# TODO 
+# - other options? 
+# - obsolete options could be removed from auto-comp? (e.g. -N)
+# - obsolete commands could be removed? (e.g. resolved)
 _svn()
 {
 	local cur cmds cmdOpts pOpts mOpts rOpts qOpts nOpts optsParam opt
@@ -124,7 +126,7 @@
               copy cp delete remove rm diff export help import info \
               list ls lock log merge mergeinfo mkdir move mv rename \
               propdel pdel propedit pedit propget pget \
-              proplist plist propset pset resolved revert \
+              proplist plist propset pset resolve resolved revert \
               status switch unlock update'
 
 	# help options have a strange command status...
@@ -172,6 +174,7 @@
 	#    hasRevPropOpt: is --revprop set
 	#    hasRevisionOpt: is --revision set
 	#    hasRelocateOpt: is --relocate set
+	#    acceptOpt: the value of --accept
 	# nargs: how many arguments were found
 	# stat: status of parsing at the 'current' word
 	#
@@ -181,6 +184,7 @@
 	local cmd= isPropCmd= isPsCmd= isHelpCmd= nExpectArgs= isCur= i=0
 	local prev= help= prop= val= isRevProp= last='none' nargs=0 stat=
 	local options= hasRevPropOpt= hasRevisionOpt= hasRelocateOpt=
+	local acceptOpt=
 
 	for opt in "${COMP_WORDS[@]}"
 	do
@@ -197,6 +201,10 @@
 
 	    # SKIP option arguments
 	    if [[ $prev == @($optsParam) ]] ; then
+
+		# record accept value
+		[[ $prev = '--accept' ]] && acceptOpt=$opt
+
 		prev=''
 		last='skip'
 		continue ;
@@ -352,11 +360,13 @@
 
 	    [[ $previous = '--accept' ]] && \
 	    {
-	        # the list is reduced for 'resolved'
-                if [[ $cmd = 'resolved' ]] ; then
-		    values='base mine theirs'
+	        # the list is different for 'resolve'
+                if [[ $cmd = 'resolve' ]] ; then
+		    # from svn help resolve
+		    values='base working mine-full theirs-full'
 		else # checkout merge switch update
-		    values='postpone base mine theirs edit launch'
+		    # not implemented yet: mine-conflict theirs-conflict
+		    values='postpone base mine-full theirs-full edit launch'
 		fi
 	    }
 
@@ -502,6 +512,14 @@
 	    [[ ${COMPREPLY} ]] && return 0
 	fi
 
+	# force mandatory --accept option for 'resolve' command
+	if [[ $cmd = 'resolve' && ! $acceptOpt ]]
+	then
+	    COMPREPLY=( $( compgen -W '--accept' -- $cur ) )
+	    # force option now! others will be available on later completions
+	    return 0
+	fi
+
 	# maximum number of additional arguments expected in various forms
 	case $cmd in
 	    merge)
@@ -571,7 +589,7 @@
 		    unlock) # unlock locked files
 			files=$($status $cs| _svn_grcut '@(??L*|?????[KOTB]*)')
 			;;
-		    resolved) # files in conflict
+		    resolve*) # files in conflict
 			files=$($status $cs| _svn_grcut '@(?C*|C*)')
 			;;
 		    praise|blame|ann*) # any svn file but added
@@ -649,7 +667,7 @@
 		;;
 	add)
 		cmdOpts="--auto-props --no-auto-props --force --targets \
-		         --no-ignore $nOpts $qOpts"
+		         --no-ignore --parents $nOpts $qOpts $pOpts"
 		;;
 	blame|annotate|ann|praise)
 		cmdOpts="$rOpts $pOpts -v --verbose --incremental --xml \
@@ -659,29 +677,31 @@
 		cmdOpts="$rOpts $pOpts"
 		;;
 	changelist|cl)
-		cmdOpts="--clear --targets"
+		cmdOpts="--targets $pOpts $qOpts --changelist \
+                         -R --recursive --depth --remove"
 		;;
 	checkout|co)
 		cmdOpts="$rOpts $qOpts $nOpts $pOpts --ignore-externals \
                          --force --accept"
 		;;
 	cleanup)
-		cmdOpts="--diff3-cmd"
+		cmdOpts="--diff3-cmd $pOpts"
 		;;
 	commit|ci)
 		cmdOpts="$mOpts $qOpts $nOpts --targets --editor-cmd $pOpts \
-		         --no-unlock --changelist --keep-changelist"
+		         --no-unlock --changelist --keep-changelists"
 		;;
 	copy|cp)
-		cmdOpts="$mOpts $rOpts $qOpts --editor-cmd $pOpts $gOpts"
+		cmdOpts="$mOpts $rOpts $qOpts --editor-cmd $pOpts --parents"
 		;;
 	delete|del|remove|rm)
-		cmdOpts="--force $mOpts $qOpts --targets --editor-cmd $pOpts"
+		cmdOpts="--force $mOpts $qOpts --targets --editor-cmd $pOpts \
+                         --keep-local"
 		;;
 	diff|di)
 		cmdOpts="$rOpts -x --extensions --diff-cmd --no-diff-deleted \
 		         $nOpts $pOpts --force --old --new --notice-ancestry \
-		         -c --change --summarize"
+		         -c --change --summarize --changelist --xml"
 		;;
 	export)
 		cmdOpts="$rOpts $qOpts $pOpts $nOpts --force --native-eol \
@@ -692,83 +712,93 @@
 		;;
 	import)
 		cmdOpts="--auto-props --no-auto-props $mOpts $qOpts $nOpts \
-		         --no-ignore --editor-cmd $pOpts"
+		         --no-ignore --editor-cmd $pOpts --force"
 		;; 
 	info)
-		cmdOpts="$pOpts $rOpts --targets -R --recursive \
+		cmdOpts="$pOpts $rOpts --targets -R --recursive --depth \
                          --incremental --xml --changelist"
 		;;
 	list|ls)
 		cmdOpts="$rOpts -v --verbose -R --recursive $pOpts \
-                         --incremental --xml"
+                         --incremental --xml --depth"
 		;;
 	lock)
-		cmdOpts="$mOpts --targets --force $pOpts"
+		cmdOpts="-m --message -F --file --encoding --force-log \
+                         --targets --force $pOpts"
 		;;
 	log)
 		cmdOpts="$rOpts -v --verbose --targets $pOpts --stop-on-copy \
-		         --incremental --xml $qOpts -l --limit --changelist \
-                         $gOpts"
+		         --incremental --xml $qOpts -l --limit -c --change \
+                         $gOpts --with-all-revprops --with-revprop"
 		;;
 	merge)
 		cmdOpts="$rOpts $nOpts $qOpts --force --dry-run --diff3-cmd \
 		         $pOpts --ignore-ancestry -c --change -x --extensions \
-                         --record-only --accept"
+                         --record-only --accept --reintegrate"
 		;;
 	mergeinfo)
-	        cmdOpts="$rOpts $pOpts"
+	        cmdOpts="$rOpts $pOpts --show-revs"
 		;;
 	mkdir)
-		cmdOpts="$mOpts $qOpts --editor-cmd $pOpts"
+		cmdOpts="$mOpts $qOpts --editor-cmd $pOpts --parents"
 		;;
 	move|mv|rename|ren)
 		cmdOpts="$mOpts $rOpts $qOpts --force --editor-cmd $pOpts \
-                         $gOpts"
+                         --parents"
 		;;
 	propdel|pdel|pd)
-		cmdOpts="$qOpts -R --recursive $rOpts $pOpts"
+		cmdOpts="$qOpts -R --recursive $rOpts $pOpts --changelist \
+                         --depth"
 		[[ $isRevProp || ! $prop ]] && cmdOpts="$cmdOpts --revprop"
 		;;
 	propedit|pedit|pe)
-		cmdOpts="--encoding --editor-cmd $pOpts --force"
+		cmdOpts="--editor-cmd $pOpts $mOpts --force"
 		[[ $isRevProp || ! $prop ]] && \
 		    cmdOpts="$cmdOpts --revprop $rOpts"
 		;;
 	propget|pget|pg)
-	        cmdOpts="-R --recursive $rOpts --strict $pOpts"
+	        cmdOpts="-R --recursive $rOpts --strict $pOpts --changelist \
+                         --depth --xml"
 		[[ $isRevProp || ! $prop ]] && cmdOpts="$cmdOpts --revprop"
 		;;
 	proplist|plist|pl)
 		cmdOpts="-v --verbose -R --recursive $rOpts --revprop $qOpts \
-		         $pOpts"
+		         $pOpts --changelist --depth --xml"
 		;;
 	propset|pset|ps)
 		cmdOpts="$qOpts --targets -R --recursive \
-		         --encoding $pOpts --force"
+		         --encoding $pOpts --force --changelist --depth"
 		[[ $isRevProp || ! $prop ]] && \
 		    cmdOpts="$cmdOpts --revprop $rOpts"
 		[[ $val ]] || cmdOpts="$cmdOpts -F --file"
 		;;
+        resolve)
+                cmdOpts="--targets -R --recursive $qOpts $pOpts --accept \
+                         --depth"
+                ;;
 	resolved)
-		cmdOpts="--targets -R --recursive $qOpts --accept"
+		cmdOpts="--targets -R --recursive $qOpts $pOpts --depth"
 		;;
 	revert)
-		cmdOpts="--targets -R --recursive $qOpts --changelist"
+		cmdOpts="--targets -R --recursive $qOpts --changelist \
+                         --depth $pOpts"
 		;;
 	status|stat|st)
 		cmdOpts="-u --show-updates -v --verbose $nOpts $qOpts $pOpts \
-		         --no-ignore --ignore-externals --incremental --xml"
+		         --no-ignore --ignore-externals --incremental --xml \
+                         --changelist"
 		;;
 	switch|sw)
 		cmdOpts="--relocate $rOpts $nOpts $qOpts $pOpts --diff3-cmd \
-                         --force --accept"
+                         --force --accept --ignore-externals --set-depth"
 		;;
 	unlock)
 		cmdOpts="--targets --force $pOpts"
 		;;
 	update|up)
 		cmdOpts="$rOpts $nOpts $qOpts $pOpts --diff3-cmd \
-                         --ignore-externals --force --accept"
+                         --ignore-externals --force --accept --changelist \
+                         --editor-cmd --set-depth"
 		;;
 	*)
 		;;
@@ -778,6 +808,12 @@
 	[[ "$cmd" != "--version" ]] && cmdOpts="$cmdOpts $helpOpts"
 	cmdOpts="$cmdOpts --config-dir"
 
+        # --accept (edit|launch) incompatible with --non-interactive
+	if [[ $acceptOpt == @(edit|launch) ]] ;
+	then
+	    cmdOpts=${cmdOpts/ --non-interactive / }
+	fi
+
 	# take out options already given
 	for opt in $options
 	do
@@ -791,7 +827,7 @@
 
 		cmdOpts=" $cmdOpts "
 		cmdOpts=${cmdOpts/ ${optBase} / }
-
+		
 		# take out alternatives and mutually exclusives
 		case $optBase in
 		-v)              cmdOpts=${cmdOpts/ --verbose / } ;;
diff --git a/tools/dist/construct-rolling-environment.sh b/tools/dist/construct-rolling-environment.sh
index 0a99fdd..6cb4018 100755
--- a/tools/dist/construct-rolling-environment.sh
+++ b/tools/dist/construct-rolling-environment.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 set -e
 
-AUTOCONF=autoconf-2.61
+AUTOCONF=autoconf-2.62
 LIBTOOL=libtool-1.5.26
 SWIG=swig-1.3.31
 
diff --git a/tools/dist/roll.sh b/tools/dist/roll.sh
index 7159de8..2b8bf22 100755
--- a/tools/dist/roll.sh
+++ b/tools/dist/roll.sh
@@ -8,7 +8,7 @@
 
 rs=http://svn.collab.net/repos/svn
 
-if [ -n "`svn diff $rs/branches/$BRANCH/CHANGES $rs/trunk/CHANGES`" ]; then
+if [ -n "`svn diff --summarize $rs/branches/$BRANCH/CHANGES $rs/trunk/CHANGES | grep ^M`" ]; then
   echo "CHANGES not synced between trunk and branch, aborting!" >&2
   exit 1
 fi
diff --git a/tools/server-side/svn_dav_log_parse.py b/tools/server-side/svn_dav_log_parse.py
index 8fb517e..2b2a3e3 100644
--- a/tools/server-side/svn_dav_log_parse.py
+++ b/tools/server-side/svn_dav_log_parse.py
@@ -48,14 +48,14 @@
     commit r<N>
     get-dir <PATH> r<N> text? props?
     get-file <PATH> r<N> text? props?
-    lock <PATH> steal?
+    lock (<PATH> ...) steal?
     rev-proplist r<N>
-    unlock <PATH> break?
+    unlock (<PATH> ...) break?
 
 Reports::
 
     get-file-revs <PATH> r<N>:<M> include-merged-revisions?
-    get-mergeinfo (<PATH> ...) <I>
+    get-mergeinfo (<PATH> ...) <I> include-descendants?
     log (<PATH> ...) r<N>:<M> limit=<N>? discover-changed-paths? strict? include-merged-revisions? revprops=all|(<REVPROP> ...)?
     replay <PATH> r<N>
 
@@ -65,7 +65,7 @@
     diff <FROM-PATH>@<N> <TO-PATH>@<M> depth=<D>? ignore-ancestry?
     diff <PATH> r<N>:<M> depth=<D>? ignore-ancestry?
     status <PATH> r<N> depth=<D>?
-    switch <FROM-PATH>@<N> <TO-PATH>@<M> depth=<D>?
+    switch <FROM-PATH> <TO-PATH>@<N> depth=<D>?
     update <PATH> r<N> depth=<D>? send-copyfrom-args?
 """
 
@@ -113,6 +113,11 @@
 class BadMergeinfoInheritanceError(Error):
     def __init__(self, value):
         Error.__init__(self, 'bad svn_mergeinfo_inheritance_t value ' + value)
+class MatchError(Error):
+    def __init__(self, pattern, line):
+        Error.__init__(self, '/%s/ does not match log line:\n%s'
+                             % (pattern, line))
+
 
 #
 # Helper functions
@@ -161,7 +166,7 @@
     pattern += ''.join([r'(\s+' + x + ')?' for x in optional])
     m = re.match(pattern, line)
     if m is None:
-        raise Error
+        raise MatchError(pattern, line)
     return m
 
 
@@ -214,8 +219,9 @@
         return line[m.end():]
 
     def _parse_lock(self, line):
-        m = _match(line, pPATH, ['steal'])
-        self.handle_lock(m.group(1), m.group(2) is not None)
+        m = _match(line, pPATHS, ['steal'])
+        paths = m.group(1).split()
+        self.handle_lock(paths, m.group(2) is not None)
         return line[m.end():]
 
     def _parse_change_rev_prop(self, line):
@@ -231,8 +237,9 @@
         return line[m.end():]
 
     def _parse_unlock(self, line):
-        m = _match(line, pPATH, ['break'])
-        self.handle_unlock(m.group(1), m.group(2) is not None)
+        m = _match(line, pPATHS, ['break'])
+        paths = m.group(1).split()
+        self.handle_unlock(paths, m.group(2) is not None)
         return line[m.end():]
 
     # reports
@@ -249,10 +256,13 @@
     def _parse_get_mergeinfo(self, line):
         # <I>
         pMERGEINFO_INHERITANCE = pWORD
-        m = _match(line, pPATHS, pMERGEINFO_INHERITANCE)
+        pINCLUDE_DESCENDANTS = pWORD
+        m = _match(line,
+                   pPATHS, pMERGEINFO_INHERITANCE, ['include-descendants'])
         paths = m.group(1).split()
         inheritance = _parse_mergeinfo_inheritance(m.group(2))
-        self.handle_get_mergeinfo(paths, inheritance)
+        include_descendants         = m.group(3) is not None
+        self.handle_get_mergeinfo(paths, inheritance, include_descendants)
         return line[m.end():]
 
     def _parse_log(self, line):
@@ -342,13 +352,12 @@
         return line[m.end():]
 
     def _parse_switch(self, line):
-        m = _match(line, pPATHREV, pPATHREV, [pDEPTH])
+        m = _match(line, pPATH, pPATHREV, [pDEPTH])
         from_path = m.group(1)
-        from_rev = int(m.group(2))
-        to_path = m.group(3)
-        to_rev = int(m.group(4))
-        depth = _parse_depth(m.group(6))
-        self.handle_switch(from_path, from_rev, to_path, to_rev, depth)
+        to_path = m.group(2)
+        to_rev = int(m.group(3))
+        depth = _parse_depth(m.group(5))
+        self.handle_switch(from_path, to_path, to_rev, depth)
         return line[m.end():]
 
     def _parse_update(self, line):
diff --git a/tools/server-side/test_svn_dav_log_parse.py b/tools/server-side/test_svn_dav_log_parse.py
index 0c97590..1017e26 100755
--- a/tools/server-side/test_svn_dav_log_parse.py
+++ b/tools/server-side/test_svn_dav_log_parse.py
@@ -14,6 +14,9 @@
 # history and logs, available at http://subversion.tigris.org/.
 # ====================================================================
 
+# Run this without arguments to run unit tests.
+# Run with a path to a davautocheck ops log to test that it can parse that.
+
 import os
 import sys
 import tempfile
@@ -76,11 +79,11 @@
 
     def test_lock(self):
         self.assertRaises(svn_dav_log_parse.Error, self.parse, 'lock')
-        self.parse('lock /foo')
-        self.assertEqual(self.result, ('/foo', False))
-        self.assertEqual(self.parse('lock /foo steal ...'), ' ...')
-        self.assertEqual(self.result, ('/foo', True))
-        self.assertEqual(self.parse('lock /foo stear'), ' stear')
+        self.parse('lock (/foo)')
+        self.assertEqual(self.result, (['/foo'], False))
+        self.assertEqual(self.parse('lock (/foo) steal ...'), ' ...')
+        self.assertEqual(self.result, (['/foo'], True))
+        self.assertEqual(self.parse('lock (/foo) stear'), ' stear')
 
     def test_change_rev_prop(self):
         self.assertRaises(svn_dav_log_parse.Error,
@@ -104,11 +107,11 @@
 
     def test_unlock(self):
         self.assertRaises(svn_dav_log_parse.Error, self.parse, 'unlock')
-        self.parse('unlock /foo')
-        self.assertEqual(self.result, ('/foo', False))
-        self.assertEqual(self.parse('unlock /foo break ...'), ' ...')
-        self.assertEqual(self.result, ('/foo', True))
-        self.assertEqual(self.parse('unlock /foo bear'), ' bear')
+        self.parse('unlock (/foo)')
+        self.assertEqual(self.result, (['/foo'], False))
+        self.assertEqual(self.parse('unlock (/foo) break ...'), ' ...')
+        self.assertEqual(self.result, (['/foo'], True))
+        self.assertEqual(self.parse('unlock (/foo) bear'), ' bear')
 
     def test_get_file_revs(self):
         self.assertRaises(svn_dav_log_parse.Error, self.parse, 'get-file-revs')
@@ -139,11 +142,13 @@
                           self.parse, 'get-mergeinfo (/foo) bork')
         self.assertEqual(self.parse('get-mergeinfo (/foo) explicit'), '')
         self.assertEqual(self.result, (['/foo'],
-                                       svn.core.svn_mergeinfo_explicit))
+                                       svn.core.svn_mergeinfo_explicit, False))
         self.assertEqual(self.parse('get-mergeinfo (/foo /bar) inherited ...'),
                          ' ...')
         self.assertEqual(self.result, (['/foo', '/bar'],
-                                       svn.core.svn_mergeinfo_inherited))
+                                       svn.core.svn_mergeinfo_inherited, False))
+        self.assertEqual(self.result, (['/foo', '/bar'],
+                                       svn.core.svn_mergeinfo_inherited, False))
 
     def test_log(self):
         self.assertRaises(svn_dav_log_parse.Error, self.parse, 'log')
@@ -236,12 +241,12 @@
         self.assertEqual(self.result, ('/foo', 9, svn.core.svn_depth_files))
 
     def test_switch(self):
-        self.assertEqual(self.parse('switch /foo@9 /bar@10 ...'), ' ...')
-        self.assertEqual(self.result, ('/foo', 9, '/bar', 10,
+        self.assertEqual(self.parse('switch /foo /bar@10 ...'), ' ...')
+        self.assertEqual(self.result, ('/foo', '/bar', 10,
                                        svn.core.svn_depth_unknown))
-        self.assertEqual(self.parse('switch /foo@9 /bar@10'
+        self.assertEqual(self.parse('switch /foo /bar@10'
                                     ' depth=files'), '')
-        self.assertEqual(self.result, ('/foo', 9, '/bar', 10,
+        self.assertEqual(self.result, ('/foo', '/bar', 10,
                                        svn.core.svn_depth_files))
 
     def test_update(self):
@@ -296,8 +301,8 @@
             if props:
                 self.action += ' props'
 
-        def handle_lock(self, path, steal):
-            self.action = 'lock ' + path
+        def handle_lock(self, paths, steal):
+            self.action = 'lock (%s)' % (' '.join(paths),)
             if steal:
                 self.action += ' steal'
 
@@ -307,8 +312,8 @@
         def handle_rev_proplist(self, revision):
             self.action = 'rev-proplist r%d' % (revision,)
 
-        def handle_unlock(self, path, break_lock):
-            self.action = 'unlock ' + path
+        def handle_unlock(self, paths, break_lock):
+            self.action = 'unlock (%s)' % (' '.join(paths),)
             if break_lock:
                 self.action += ' break'
 
@@ -319,10 +324,12 @@
             if include_merged_revisions:
                 self.action += ' include-merged-revisions'
 
-        def handle_get_mergeinfo(self, paths, inheritance):
+        def handle_get_mergeinfo(self, paths, inheritance, include_descendants):
             self.action = ('get-mergeinfo (%s) %s'
                            % (' '.join(paths),
                               svn.core.svn_inheritance_to_word(inheritance)))
+            if include_descendants:
+                self.action += ' include-descendants'
 
         def handle_log(self, paths, left, right, limit, discover_changed_paths,
                        strict, include_merged_revisions, revprops):
@@ -375,10 +382,9 @@
             self.action = 'status %s r%d' % (path, revision)
             self.maybe_depth(depth)
 
-        def handle_switch(self, from_path, from_rev,
-                          to_path, to_rev, depth):
-            self.action = ('switch %s@%d %s@%d'
-                           % (from_path, from_rev, to_path, to_rev))
+        def handle_switch(self, from_path, to_path, to_rev, depth):
+            self.action = ('switch %s %s@%d'
+                           % (from_path, to_path, to_rev))
             self.maybe_depth(depth)
 
         def handle_update(self, path, revision, depth, send_copyfrom_args):
@@ -402,9 +408,10 @@
             leading = ' '.join(words[:4])
             action = ' '.join(words[4:])
             # Parse the action and write the reconstructed action to
-            # the temporary file.
-            trailing = parser.parse(action)
-            fp.write(leading + ' ' + parser.action + trailing + '\n')
+            # the temporary file.  Ignore the returned trailing text,
+            # as we have none in the davautocheck ops log.
+            parser.parse(action)
+            fp.write(leading + ' ' + parser.action + '\n')
         fp.close()
         # Check differences between original and reconstructed files
         # (should be identical).
diff --git a/www/faq.html b/www/faq.html
index 686fa42..97fa2b4 100644
--- a/www/faq.html
+++ b/www/faq.html
@@ -3760,7 +3760,7 @@
 <p>The Neon library, used for communication between a Subversion server and
 client over HTTP, is usually built as a static library.  But it is
 subsequently linked into a different shared library.  This causes an error
-during the build process on 64-bit AMD systems similar to this:
+during the build process on 64-bit AMD systems similar to this:</p>
 
 <blockquote>
 <div><pre><code>
@@ -3773,7 +3773,7 @@
 </blockquote>
 
 <p>There was a
-<a href="http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=119669">
+<a href="http://subversion.tigris.org/servlets/ReadMsg?listName=dev&amp;msgNo=119669">
 thread</a> on the developers' list about this.</p>
 
 <p>The solution is to supply the "--enable-shared" option to Subversion's
diff --git a/www/svn_1.5_releasenotes.html b/www/svn_1.5_releasenotes.html
index dbb7ec2..73ca24d 100644
--- a/www/svn_1.5_releasenotes.html
+++ b/www/svn_1.5_releasenotes.html
@@ -89,6 +89,92 @@
 and run using 1.5 libraries.  However, a program written for 1.5
 cannot necessarily compile or run against older libraries.</p>
 
+<div class="h3" id="new-feature-compatibility-table"
+             title="new-feature-compatibility-table">
+<h3>New Feature Compatibility Table</h3>
+<table border="1">
+  <tr>
+    <th>New Feature</th>
+    <th>Minimum Client</th>
+    <th>Minimum Server</th>
+    <th>Minimum Repository</th>
+    <th>Notes</th></tr>
+  <tr>
+    <td><a href="#merge-tracking">Merge tracking</a></td>
+    <td>1.5</td>
+    <td>1.5</td>
+    <td>1.5</td>
+    <td></td></tr>
+  <tr>
+    <td><a href="#sparse-checkouts">Sparse checkouts</a></td>
+    <td>1.5</td>
+    <td>any</td>
+    <td>any</td>
+    <td></td></tr>
+  <tr>
+    <td><a href="#interactive-conflict-resolution">Interactive conflict resolution</a></td>
+    <td>1.5</td>
+    <td>any</td>
+    <td>any</td>
+    <td></td></tr>
+  <tr>
+    <td><a href="#changelists">Changelist support</a></td>
+    <td>1.5</td>
+    <td>any</td>
+    <td>any</td>
+    <td></td></tr>
+  <tr>
+    <td><a href="#externals">Relative URLs, peg revisions in <tt>svn:externals</tt></a></td>
+    <td>1.5</td>
+    <td>any</td>
+    <td>any</td>
+    <td></td></tr>
+  <tr>
+    <td><a href="#cyrus-sasl"> Cyrus SASL support for ra_svn and <tt>svnserve</tt></a></td>
+    <td>any<sup>*</sup>, 1.5</td>
+    <td>any<sup>*</sup>, 1.5</td>
+    <td>any</td>
+    <td><sup>*</sup>Limited, see <a href="#sasl-compatibility">SASL&nbsp;and&nbsp;<code>svn://</code>&nbsp;compatibility</a></td></tr>
+  <tr>
+    <td><a href="#fsfs-sharding"> Improved support for large deployments on FSFS, via sharding</a></td>
+    <td>any<sup>*</sup>, 1.5</td>
+    <td>1.5</td>
+    <td>1.5</td>
+    <td><sup>*</sup>1.5 required for <code>file://</code> compatibility</td></tr>
+  <tr>
+    <td><a href="#fsfs-isolate-immutable">Improved FSFS optimizability, via immutable file isolation</a></td>
+    <td>any<sup>*</sup>, 1.5</td>
+    <td>1.5</td>
+    <td>1.5</td>
+    <td><sup>*</sup>1.5 required for <code>file://</code> compatibility</td></tr>
+  <tr>
+    <td><a href="#webdav-proxy">WebDAV transparent write-through proxy</a></td>
+    <td>any</td>
+    <td>1.5<sup>*</sup></td>
+    <td>any</td>
+    <td><sup>*</sup>Apache 2.2 server also required</td></tr>
+  <tr>
+    <td><a href="#copy-move-improvements">Improvements to <tt>copy</tt> and <tt>move</tt></a></td>
+    <td>1.5</td>
+    <td>any<sup>*</sup>, 1.5</td>
+    <td>any</td>
+    <td><sup>*</sup>Limited, see <a href="#copy-move-improvements">Copy/move<tt>-</tt>related&nbsp;improvements</a></td></tr>
+  <tr>
+    <td><a href="#cancellation-improvements">Speed improvements, cancellation response improvements</a></td>
+    <td>1.5</td>
+    <td>any</td>
+    <td>any</td>
+    <td></td></tr>
+  <tr>
+    <td><a href="#dav-modules">Easier to try experimental <tt>ra_serf</tt> DAV access module</a></td>
+    <td>1.5</td>
+    <td>any</td>
+    <td>any</td>
+    <td></td></tr>
+</table>
+
+</div>  <!-- new-feature-compatibility-table -->
+
 <div class="h3" id="wc-and-repos-format-change"
              title="wc-and-repos-format-change">
 <h3>Working Copy and Repository Format Changes</h3>
@@ -197,6 +283,41 @@
 
 </div>  <!-- sasl-compatibility -->
 
+<div class="h3" id="revprops-compatibility" title="revprops-compatibility">
+<h3>Custom revprops may now need to be examined by <tt>pre-commit</tt>
+  hooks</h3>
+
+<p>Each revision in Subversion has a set of <q>revision properties</q>
+associated with it; in addition to the standard log message, author,
+and date, arbitrary user-defined properties can be set.  These
+properties are not themselves versioned, so there is no way to revert
+changes to them.  Because of this, you cannot modify revprops on a
+committed revision without setting up a <tt>pre-revprop-change</tt>
+hook on the server.  Before Subversion 1.5, only the three standard
+revprops could be set at commit time; administrators using hooks to
+control the contents of the three standard revprops needed to check
+during <tt>pre-commit</tt> and <tt>pre-revprop-change</tt>, but for
+custom revprops, only <tt>pre-revprop-change</tt> appeared
+relevant.</p>
+
+<p>Subversion 1.5 adds
+a <a href="#commit-revprops"><tt>--with-revprop</tt> option to <tt>svn
+commit</tt></a> which allows users to specify revprops for revisions
+as they commit them.  Thus, in Subversion 1.5, it is possible for
+revproperties to be set on revisions without
+any <tt>pre-revprop-change</tt>.  The <tt>pre-commit</tt> hook can
+examine the transaction's revision properties before it is committed
+(just like many servers already use <tt>pre-commit</tt> to check for
+properly formatted log messages, e.g.).</p>
+
+<p>This means that if you previously relied
+on <tt>pre-revprop-change</tt> to control the ability to write to
+revprops (as opposed to just keeping track of their history), you may
+want to add similar controls to <tt>pre-commit</tt>.</p>
+
+</div>  <!-- revprops-compatibility -->
+
+
 </div>  <!-- compatibility -->
 
 <div class="h2" id="new-features" title="new-features">
@@ -482,8 +603,6 @@
 network protocols, and 1.5+ clients send that flag based on the depth;
 this alleviates some of the extra network traffic penalty.)</p>
 
-</div>  <!-- sc-compat-dac -->
-
 </div>  <!-- sc-compat -->
 
 <div class="h4" id="sc-further-reading" title="sc-further-reading">
@@ -1101,12 +1220,11 @@
 
 </div>  <!-- cp-takes-base -->
 
-</div>  <!-- cp-mv-intermediate-dirs -->
 <div class="h4" id="cp-mv-intermediate-dirs" title="cp-mv-intermediate-dirs">
 <h4>Creation of intermediate directories with copy/move
     (<em>client and server</em>)</h4>
 
-<p>See the section on the new <a href="#>intermediate-directories</a>"
+<p>See the section on the new <a href="#intermediate-directories"
 >--parents option</a> for more about this.</p>
 
 </div>  <!-- cp-mv-intermediate-dirs -->
@@ -1256,6 +1374,56 @@
 
 </div>  <!-- svn-1.3-deprecation -->
 
+<div class="h2" id="deps" title="deps">
+<h2>Subversion Dependencies Distribution: Binary Compatibility Issues</h2>
+
+<div class="h3" id="deps-background" title="deps-background">
+<h3>Background</h3>
+
+<p>APR 0.9.x and 1.x are binary-incompatible.  This means if you are
+already using Subversion with APR 0.9.x, and then upgrade your libapr
+to 1.X <em>without rebuilding Subversion</em>, things will break.
+Things will also break if your Subversion server libraries are linked
+to one version of APR but your Apache HTTPD server is linked to a
+different version.</p>
+
+<p>For a long time, Subversion's main source distribution included APR
+0.9.x, which was the latest available at the time, along with a few
+other things (e.g., Neon, zlib) that weren't yet widespread on
+installation systems.</p>
+
+</div> <!-- deps-background -->
+
+<div class="h3" id="deps-now" title="deps-now">
+<h3>Subversion 1.5.0 Dependencies Distribution</h3>
+
+<p>Today, these dependencies are no longer exotic, so our source
+distribution contains just Subversion itself.  Those building
+Subversion are expected to have the necessary libraries already
+installed, or to be able to fetch them easily.  But for convenience,
+we still offer a "deps" distribution: it doesn't contain Subversion,
+it just has source code for those third-party libraries.</p>
+
+<p>Until Subversion 1.5.0, the deps distribution contained APR 0.9.x,
+but as of 1.5.0, we're finally upgrading it to APR 1.x.  This is
+because by now there are very few systems that will have binary
+compatibility issues, and of those, few are likely to build using the
+"deps" dist.</p>
+
+<p>If you already have a Subversion installation using APR 0.9.x, it's
+still possible to move to APR 1.x safely (although you are not
+required to, unless you use the deps dist).  Just be sure to recompile
+Subversion, and Apache httpd if necessary, after upgrading APR.</p>
+
+<p>Note that it's perfectly safe to use APR 1.x from the beginning.
+In fact, we recommend it.  If you're building Subversion for the first
+time, there's no compatibility issue to worry about, so just grab the
+latest version of APR (or use our deps dist).</p>
+
+</div> <!-- deps-now -->
+
+</div>  <!-- deps -->
+
 </div>  <!-- app -->
 </body>
 </html>
