subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject svn commit: r1657122 [1/2] - in /subversion/branches/reuse-ra-session: ./ build/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subversion/i...
Date Wed, 04 Feb 2015 11:23:30 GMT
Author: brane
Date: Wed Feb  4 11:23:29 2015
New Revision: 1657122

URL: http://svn.apache.org/r1657122
Log:
On the reuse-ra-session branch: Sync with trunk up to r1657111.

Modified:
    subversion/branches/reuse-ra-session/   (props changed)
    subversion/branches/reuse-ra-session/build/run_tests.py
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/RemoteSession.cpp
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
    subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
    subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_private.h
    subversion/branches/reuse-ra-session/subversion/include/svn_client.h
    subversion/branches/reuse-ra-session/subversion/include/svn_fs.h
    subversion/branches/reuse-ra-session/subversion/include/svn_ra.h
    subversion/branches/reuse-ra-session/subversion/include/svn_wc.h
    subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c
    subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c
    subversion/branches/reuse-ra-session/subversion/libsvn_client/revert.c
    subversion/branches/reuse-ra-session/subversion/libsvn_ra/ra_loader.c
    subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/get_lock.c
    subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/lock.c
    subversion/branches/reuse-ra-session/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.h
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/deprecated.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/revert.c
    subversion/branches/reuse-ra-session/subversion/svn/revert-cmd.c
    subversion/branches/reuse-ra-session/subversion/svn/svn.c
    subversion/branches/reuse-ra-session/subversion/svnserve/serve.c
    subversion/branches/reuse-ra-session/subversion/svnsync/sync.c
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.dump
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.expected.dump
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_client/mtcc-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_ra/ra-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_subr/   (props changed)
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/utils.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_wc/utils.h
    subversion/branches/reuse-ra-session/subversion/tests/svn_test.h
    subversion/branches/reuse-ra-session/subversion/tests/svn_test_fs.c
    subversion/branches/reuse-ra-session/subversion/tests/svn_test_fs.h
    subversion/branches/reuse-ra-session/subversion/tests/svn_test_main.c
    subversion/branches/reuse-ra-session/tools/dev/   (props changed)

Propchange: subversion/branches/reuse-ra-session/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  4 11:23:29 2015
@@ -86,4 +86,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1501802-1656689
+/subversion/trunk:1501802-1657111

Modified: subversion/branches/reuse-ra-session/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/build/run_tests.py?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/build/run_tests.py (original)
+++ subversion/branches/reuse-ra-session/build/run_tests.py Wed Feb  4 11:23:29 2015
@@ -385,6 +385,22 @@ class TestHarness:
     if self.config_file is not None:
       cmdline.append('--config-file=' + self.config_file)
 
+    if self.base_url is not None:
+      subdir = 'subversion/tests/cmdline/svn-test-work'
+
+      cmdline.append('--repos-url=%s' % self.base_url +
+                        '/svn-test-work/repositories')
+      cmdline.append('--repos-dir=%s'
+                     % os.path.abspath(
+                         os.path.join(self.builddir, subdir, 'repositories')))
+
+      # Enable access for http
+      if self.base_url.startswith('http'):
+        open(os.path.join(self.builddir, subdir, 'authz'), 'w').write(
+                '[/]\n' +
+                '* = rw\n')
+
+    # ### Support --repos-template
     if self.verbose is not None:
       cmdline.append('--verbose')
     if self.cleanup is not None:

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/RemoteSession.cpp?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/RemoteSession.cpp (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/RemoteSession.cpp Wed Feb  4 11:23:29 2015
@@ -1174,7 +1174,9 @@ public:
         static_cast<FileRevisionHandler*>(baton);
       SVN_ERR_ASSERT(self->m_jcallback != NULL);
       self->call(path, revision, revision_props,
-                result_of_merge, prop_diffs, scratch_pool);
+                result_of_merge, prop_diffs,
+                (delta_handler != NULL),
+                scratch_pool);
       SVN_ERR(JNIUtil::checkJavaException(SVN_ERR_BASE));
       return SVN_NO_ERROR;
     }
@@ -1199,6 +1201,7 @@ private:
            apr_hash_t* revision_props,
            svn_boolean_t result_of_merge,
            apr_array_header_t* prop_diffs,
+           svn_boolean_t has_text_delta,
            apr_pool_t* scratch_pool)
     {
       JNIEnv* env = JNIUtil::getEnv();
@@ -1211,7 +1214,7 @@ private:
         {
           mid = env->GetMethodID(cls, "<init>",
                                  "(Ljava/lang/String;JZ"
-                                 "Ljava/util/Map;Ljava/util/Map;)V");
+                                 "Ljava/util/Map;Ljava/util/Map;Z)V");
           if (JNIUtil::isJavaExceptionThrown())
             return;
         }
@@ -1229,7 +1232,8 @@ private:
       env->CallVoidMethod(m_jcallback, m_call_mid,
                           env->NewObject(cls, mid, jpath, jlong(revision),
                                          jboolean(result_of_merge),
-                                         jrevprops, jpropdelta));
+                                         jrevprops, jpropdelta,
+                                         jboolean(has_text_delta)));
       if (JNIUtil::isJavaExceptionThrown())
         return;
       env->DeleteLocalRef(jpath);

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.cpp?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.cpp Wed Feb  4 11:23:29 2015
@@ -339,7 +339,8 @@ void SVNClient::remove(Targets &targets,
 
 void SVNClient::revert(StringArray &paths, svn_depth_t depth,
                        StringArray &changelists,
-                       bool clear_changelists)
+                       bool clear_changelists,
+                       bool metadata_only)
 {
     SVN::Pool subPool(pool);
 
@@ -352,6 +353,7 @@ void SVNClient::revert(StringArray &path
     SVN_JNI_ERR(svn_client_revert3(targets.array(subPool), depth,
                                    changelists.array(subPool),
                                    clear_changelists,
+                                   metadata_only,
                                    ctx, subPool.getPool()), );
 }
 

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/SVNClient.h Wed Feb  4 11:23:29 2015
@@ -161,7 +161,7 @@ class SVNClient :public SVNBase
   void add(const char *path, svn_depth_t depth, bool force,
            bool no_ignore, bool no_autoprops, bool add_parents);
   void revert(StringArray &paths, svn_depth_t depth, StringArray &changelists,
-              bool clear_changelists);
+              bool clear_changelists, bool metadata_only);
   void remove(Targets &targets, CommitMessage *message, bool force,
               bool keep_local, PropertyTable &revprops,
               CommitCallback *callback);

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Wed Feb  4 11:23:29 2015
@@ -439,7 +439,7 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_revert
 (JNIEnv *env, jobject jthis, jobject jpaths, jobject jdepth,
- jobject jchangelists, jboolean jclear_changelists)
+ jobject jchangelists, jboolean jclear_changelists, jboolean jmetadata_only)
 {
   JNIEntry(SVNClient, revert);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -459,7 +459,7 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   cl->revert(paths, EnumMapper::toDepth(jdepth),
-             changelists, bool(jclear_changelists));
+             changelists, bool(jclear_changelists), bool(jmetadata_only));
 }
 
 JNIEXPORT void JNICALL

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Wed Feb  4 11:23:29 2015
@@ -261,12 +261,15 @@ public interface ISVNClient
      * @param changelists changelists to filter by
      * @param clearChangelists If set, will clear changelist association
      *                         from the reverted paths.
+     * @param metadataOnly Revert just the metadata (including conflict data)
+     *                     and not the working files/dirs
      * @throws ClientException
      * @since 1.9
      */
     void revert(Set<String> paths, Depth depth,
                 Collection<String> changelists,
-                boolean clearChangelists)
+                boolean clearChangelists,
+                boolean metadataOnly)
             throws ClientException;
 
     /**

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java Wed Feb  4 11:23:29 2015
@@ -599,13 +599,15 @@ public interface ISVNRemote
         private FileRevision(String path, long revision,
                              boolean resultOfMerge,
                              Map<String, byte[]> revisionProperties,
-                             Map<String, byte[]> propertiesDelta)
+                             Map<String, byte[]> propertiesDelta,
+                             boolean textDelta)
         {
             this.path = path;
             this.revision = revision;
             this.resultOfMerge = resultOfMerge;
             this.revisionProperties = revisionProperties;
             this.propertiesDelta = propertiesDelta;
+            this.textDelta = textDelta;
         }
 
         /**
@@ -643,11 +645,17 @@ public interface ISVNRemote
             return propertiesDelta;
         }
 
+        /**
+         * @return A flag indicating that this revision has a text delta.
+         */
+        public boolean hasTextDelta() { return textDelta; }
+
         private String path;
         private long revision;
         private boolean resultOfMerge;
         private Map<String, byte[]> revisionProperties;
         private Map<String, byte[]> propertiesDelta;
+        private boolean textDelta;
     }
 
     /**

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Wed Feb  4 11:23:29 2015
@@ -194,21 +194,22 @@ public class SVNClient implements ISVNCl
 
     public native void revert(Set<String> paths, Depth depth,
                               Collection<String> changelists,
-                              boolean clearChangelists)
+                              boolean clearChangelists,
+                              boolean metadataOnly)
             throws ClientException;
 
     public void revert(Set<String> paths, Depth depth,
                        Collection<String> changelists)
             throws ClientException
     {
-        revert(paths, depth, changelists, false);
+        revert(paths, depth, changelists, false, false);
     }
 
     public void revert(String path, Depth depth,
                        Collection<String> changelists)
             throws ClientException
     {
-        revert(Collections.singleton(path), depth, changelists, false);
+        revert(Collections.singleton(path), depth, changelists, false, false);
     }
 
     public native void add(String path, Depth depth, boolean force,

Modified: subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java Wed Feb  4 11:23:29 2015
@@ -1398,6 +1398,7 @@ public class SVNRemoteTests extends SVNT
         ISVNRemote.FileRevision rev = result.get(0);
         assertEquals("/iota", rev.getPath());
         assertFalse(rev.isResultOfMerge());
+        assertTrue(rev.hasTextDelta());
     }
 
     // This test is a result of a threading bug that was identified in

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_private.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_private.h Wed Feb  4 11:23:29 2015
@@ -39,6 +39,32 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+/**
+ * Open a new ra session @a *new_session to the same repository as an existing
+ * ra session @a old_session, copying the callbacks, auth baton, etc. from the
+ * old session. This essentially limits the lifetime of the new, duplicated
+ * session to the lifetime of the old session. If the new session should
+ * outlive the new session, creating a new session using svn_ra_open4() is
+ * recommended.
+ *
+ * If @a session_url is not NULL, parent the new session at session_url. Note
+ * that @a session_url MUST BE in the same repository as @a old_session or an
+ * error will be returned. When @a session_url NULL the same session root
+ * will be used.
+ *
+ * Allocate @a new_session in @a result_pool. Perform temporary allocations
+ * in @a scratch_pool.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_ra__dup_session(svn_ra_session_t **new_session,
+                    svn_ra_session_t *old_session,
+                    const char *session_url,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
 /**
  * Close the conneection managed by @a session and destroy the
  * session. When this function returns, the @a session pointer
@@ -49,7 +75,6 @@ extern "C" {
 void
 svn_ra__close(svn_ra_session_t *session);
 
-
 /* Equivalent to svn_ra__assert_capable_server()
    for SVN_RA_CAPABILITY_MERGEINFO. */
 svn_error_t *

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_client.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_client.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_client.h Wed Feb  4 11:23:29 2015
@@ -4289,6 +4289,10 @@ svn_client_relocate(const char *dir,
  * If @a clear_changelists is TRUE, then changelist information for the
  * paths is cleared while reverting.
  *
+ * If @a metadata_only is TRUE, the files and directories aren't changed
+ * by the operation. If there are conflict marker files attached to the
+ * targets these are removed.
+ *
  * If @a ctx->notify_func2 is non-NULL, then for each item reverted,
  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of
  * the reverted item.
@@ -4304,11 +4308,12 @@ svn_client_revert3(const apr_array_heade
                    svn_depth_t depth,
                    const apr_array_header_t *changelists,
                    svn_boolean_t clear_changelists,
+                   svn_boolean_t metadata_only,
                    svn_client_ctx_t *ctx,
                    apr_pool_t *pool);
 
 /** Similar to svn_client_revert2, but with @a clear_changelists set to
- * FALSE.
+ * FALSE and @a metadata_only set to FALSE.
  *
  * @since New in 1.5.
  * @deprecated Provided for backwards compatibility with the 1.8 API.

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_fs.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_fs.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_fs.h Wed Feb  4 11:23:29 2015
@@ -2807,7 +2807,7 @@ svn_fs_unlock(svn_fs_t *fs,
 /** If @a path is locked in @a fs, set @a *lock to an svn_lock_t which
  *  represents the lock, allocated in @a pool.
  *
- * If @a path is not locked, set @a *lock to NULL.
+ * If @a path is not locked or does not exist in HEAD, set @a *lock to NULL.
  */
 svn_error_t *
 svn_fs_get_lock(svn_lock_t **lock,

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_ra.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_ra.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_ra.h Wed Feb  4 11:23:29 2015
@@ -785,32 +785,6 @@ svn_ra_open(svn_ra_session_t **session_p
             apr_hash_t *config,
             apr_pool_t *pool);
 
-/**
- * Open a new ra session @a *new_session to the same repository as an existing
- * ra session @a old_session, copying the callbacks, auth baton, etc. from the
- * old session. This essentially limits the lifetime of the new, duplicated
- * session to the lifetime of the old session. If the new session should
- * outlive the new session, creating a new session using svn_ra_open4() is
- * recommended.
- *
- * If @a session_url is not NULL, parent the new session at session_url. Note
- * that @a session_url MUST BE in the same repository as @a old_session or an
- * error will be returned. When @a session_url NULL the same session root
- * will be used.
- *
- * Allocate @a new_session in @a result_pool. Perform temporary allocations
- * in @a scratch_pool.
- *
- * @since New in 1.9.
- */
-svn_error_t *
-svn_ra_dup_session(svn_ra_session_t **new_session,
-                   svn_ra_session_t *old_session,
-                   const char *session_url,
-                   apr_pool_t *result_pool,
-                   apr_pool_t *scratch_pool);
-
-
 /** Change the root URL of an open @a ra_session to point to a new path in the
  * same repository.  @a url is the new root URL.  Use @a pool for
  * temporary allocations.
@@ -1932,8 +1906,12 @@ svn_ra_unlock(svn_ra_session_t *session,
 
 /**
  * If @a path is locked, set @a *lock to an svn_lock_t which
- * represents the lock, allocated in @a pool.  If @a path is not
- * locked, set @a *lock to NULL.
+ * represents the lock, allocated in @a pool.
+ *
+ * If @a path is not locked or does not exist in HEAD, set @a *lock to NULL.
+ *
+ * @note Before 1.9, this function could return SVN_ERR_FS_NOT_FOUND
+ * when @a path didn't exist in HEAD on specific ra layers.
  *
  * @since New in 1.2.
  */

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_wc.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_wc.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_wc.h Wed Feb  4 11:23:29 2015
@@ -7539,6 +7539,10 @@ svn_wc_relocate(const char *path,
  * If @a clear_changelists is TRUE, then changelist information for the
  * paths is cleared.
  *
+ * If @a metadata_only is TRUE, the working copy files are untouched, but
+ * if there are conflict marker files attached to these files these
+ * markers are removed.
+ *
  * If @a cancel_func is non-NULL, call it with @a cancel_baton at
  * various points during the reversion process.  If it returns an
  * error (typically #SVN_ERR_CANCELLED), return that error
@@ -7564,6 +7568,7 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
                svn_boolean_t use_commit_times,
                const apr_array_header_t *changelist_filter,
                svn_boolean_t clear_changelists,
+               svn_boolean_t metadata_only,
                svn_cancel_func_t cancel_func,
                void *cancel_baton,
                svn_wc_notify_func2_t notify_func,
@@ -7571,7 +7576,7 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
                apr_pool_t *scratch_pool);
 
 /** Similar to svn_wc_revert5() but with @a clear_changelists always set to
- * FALSE.
+ * FALSE and @a metadata_only set to FALSE.
  *
  * @since New in 1.7.
  * @deprecated Provided for backward compatibility with the 1.8 API.

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c Wed Feb  4 11:23:29 2015
@@ -2821,6 +2821,7 @@ svn_client_revert2(const apr_array_heade
                                             depth,
                                             changelists,
                                             FALSE /* clear_changelists */,
+                                            FALSE /* metadata_only */,
                                             ctx,
                                             pool));
 }

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c Wed Feb  4 11:23:29 2015
@@ -52,6 +52,7 @@
 #include "private/svn_diff_private.h"
 #include "private/svn_subr_private.h"
 #include "private/svn_io_private.h"
+#include "private/svn_ra_private.h"
 
 #include "svn_private_config.h"
 
@@ -1805,8 +1806,8 @@ diff_repos_repos(const char **root_relpa
   /* Now, we open an extra RA session to the correct anchor
      location for URL1.  This is used during the editor calls to fetch file
      contents.  */
-  SVN_ERR(svn_ra_dup_session(&extra_ra_session, ra_session, anchor1,
-                             scratch_pool, scratch_pool));
+  SVN_ERR(svn_ra__dup_session(&extra_ra_session, ra_session, anchor1,
+                              scratch_pool, scratch_pool));
 
   if (ddi)
     {

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/revert.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/revert.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/revert.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/revert.c Wed Feb  4 11:23:29 2015
@@ -50,6 +50,7 @@ struct revert_with_write_lock_baton {
   svn_boolean_t use_commit_times;
   const apr_array_header_t *changelists;
   svn_boolean_t clear_changelists;
+  svn_boolean_t metadata_only;
   svn_client_ctx_t *ctx;
 };
 
@@ -85,6 +86,7 @@ revert(void *baton, apr_pool_t *result_p
                        b->use_commit_times,
                        b->changelists,
                        b->clear_changelists,
+                       b->metadata_only,
                        b->ctx->cancel_func, b->ctx->cancel_baton,
                        b->ctx->notify_func2, b->ctx->notify_baton2,
                        scratch_pool);
@@ -98,11 +100,18 @@ revert(void *baton, apr_pool_t *result_p
           || err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
         {
           if (b->ctx->notify_func2)
-            b->ctx->notify_func2(
-               b->ctx->notify_baton2,
-               svn_wc_create_notify(b->local_abspath, svn_wc_notify_skip,
-                                    scratch_pool),
-               scratch_pool);
+            {
+              svn_wc_notify_t *notify;
+
+              notify = svn_wc_create_notify(b->local_abspath,
+                                            svn_wc_notify_skip,
+                                            scratch_pool);
+
+              notify->err = err;
+
+              b->ctx->notify_func2(b->ctx->notify_baton2,
+                                   notify, scratch_pool);
+            }
           svn_error_clear(err);
         }
       else
@@ -118,10 +127,11 @@ svn_client_revert3(const apr_array_heade
                    svn_depth_t depth,
                    const apr_array_header_t *changelists,
                    svn_boolean_t clear_changelists,
+                   svn_boolean_t metadata_only,
                    svn_client_ctx_t *ctx,
                    apr_pool_t *pool)
 {
-  apr_pool_t *subpool;
+  apr_pool_t *iterpool;
   svn_error_t *err = SVN_NO_ERROR;
   int i;
   svn_config_t *cfg;
@@ -148,7 +158,7 @@ svn_client_revert3(const apr_array_heade
                               SVN_CONFIG_OPTION_USE_COMMIT_TIMES,
                               FALSE));
 
-  subpool = svn_pool_create(pool);
+  iterpool = svn_pool_create(pool);
 
   for (i = 0; i < paths->nelts; i++)
     {
@@ -156,14 +166,14 @@ svn_client_revert3(const apr_array_heade
       const char *local_abspath, *lock_target;
       svn_boolean_t wc_root;
 
-      svn_pool_clear(subpool);
+      svn_pool_clear(iterpool);
 
       /* See if we've been asked to cancel this operation. */
       if ((ctx->cancel_func)
           && ((err = ctx->cancel_func(ctx->cancel_baton))))
         goto errorful;
 
-      err = svn_dirent_get_absolute(&local_abspath, path, pool);
+      err = svn_dirent_get_absolute(&local_abspath, path, iterpool);
       if (err)
         goto errorful;
 
@@ -172,15 +182,17 @@ svn_client_revert3(const apr_array_heade
       baton.use_commit_times = use_commit_times;
       baton.changelists = changelists;
       baton.clear_changelists = clear_changelists;
+      baton.metadata_only = metadata_only;
       baton.ctx = ctx;
 
-      err = svn_wc__is_wcroot(&wc_root, ctx->wc_ctx, local_abspath, pool);
+      err = svn_wc__is_wcroot(&wc_root, ctx->wc_ctx, local_abspath, iterpool);
       if (err)
         goto errorful;
       lock_target = wc_root ? local_abspath
                             : svn_dirent_dirname(local_abspath, pool);
       err = svn_wc__call_with_write_lock(revert, &baton, ctx->wc_ctx,
-                                         lock_target, FALSE, pool, pool);
+                                         lock_target, FALSE,
+                                         iterpool, iterpool);
       if (err)
         goto errorful;
     }
@@ -196,10 +208,10 @@ svn_client_revert3(const apr_array_heade
     if (paths->nelts == 1)
       sleep_path = APR_ARRAY_IDX(paths, 0, const char *);
 
-    svn_io_sleep_for_timestamps(sleep_path, subpool);
+    svn_io_sleep_for_timestamps(sleep_path, iterpool);
   }
 
-  svn_pool_destroy(subpool);
+  svn_pool_destroy(iterpool);
 
   return svn_error_trace(err);
 }

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_ra/ra_loader.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_ra/ra_loader.c Wed Feb  4 11:23:29 2015
@@ -541,11 +541,11 @@ svn_error_t *svn_ra_open4(svn_ra_session
 }
 
 svn_error_t *
-svn_ra_dup_session(svn_ra_session_t **new_session,
-                   svn_ra_session_t *old_session,
-                   const char *session_url,
-                   apr_pool_t *result_pool,
-                   apr_pool_t *scratch_pool)
+svn_ra__dup_session(svn_ra_session_t **new_session,
+                    svn_ra_session_t *old_session,
+                    const char *session_url,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool)
 {
   svn_ra_session_t *session;
 
@@ -1020,8 +1020,8 @@ svn_error_t *svn_ra_stat(svn_ra_session_
               svn_uri_split(&parent_url, &base_name, session_url,
                             scratch_pool);
 
-              SVN_ERR(svn_ra_dup_session(&parent_session, session, parent_url,
-                                         scratch_pool, scratch_pool));
+              SVN_ERR(svn_ra__dup_session(&parent_session, session, parent_url,
+                                          scratch_pool, scratch_pool));
 
               /* Get all parent's entries, no props. */
               SVN_ERR(svn_ra_get_dir2(parent_session, &parent_ents, NULL,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/get_lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/get_lock.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/get_lock.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/get_lock.c Wed Feb  4 11:23:29 2015
@@ -321,8 +321,8 @@ svn_ra_serf__get_lock(svn_ra_session_t *
     return svn_error_trace(
              svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, err,
                               _("Server does not support locking features")));
-  else if (err)
-    return svn_error_trace(err);
+  else if (svn_error_find_cause(err, SVN_ERR_FS_NOT_FOUND))
+    svn_error_clear(err); /* Behave like the other RA layers */
   else if (handler->sline.code != 207)
     return svn_error_trace(svn_ra_serf__unexpected_status(handler));
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/lock.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/lock.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_ra_serf/lock.c Wed Feb  4 11:23:29 2015
@@ -336,7 +336,7 @@ run_locks(svn_ra_serf__session_t *sess,
                 {
                   svn_lock_t *report_lock = NULL;
 
-                  if (locking)
+                  if (locking && ctx->lock->token)
                     report_lock = ctx->lock;
 
                   cb_err = lock_func(lock_baton, ctx->path, locking,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_repos/rev_hunt.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_repos/rev_hunt.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_repos/rev_hunt.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_repos/rev_hunt.c Wed Feb  4 11:23:29 2015
@@ -1386,7 +1386,7 @@ send_path_revision(struct path_revision
   /* Compute and send delta if client asked for it.
      Note that this was initialized to NULL, so if !contents_changed,
      no deltas will be computed. */
-  if (delta_handler)
+  if (delta_handler && delta_handler != svn_delta_noop_window_handler)
     {
       /* Get the content delta. */
       SVN_ERR(svn_fs_get_file_delta_stream(&delta_stream,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf.c Wed Feb  4 11:23:29 2015
@@ -59,6 +59,12 @@ static const char *SVN_APR_UTF8_CHARSET
 static svn_mutex__t *xlate_handle_mutex = NULL;
 static svn_boolean_t assume_native_charset_is_utf8 = FALSE;
 
+#if defined(WIN32)
+typedef svn_subr__win32_xlate_t xlate_handle_t;
+#else
+typedef apr_xlate_t xlate_handle_t;
+#endif
+
 /* The xlate handle cache is a global hash table with linked lists of xlate
  * handles.  In multi-threaded environments, a thread "borrows" an xlate
  * handle from the cache during a translation and puts it back afterwards.
@@ -69,7 +75,7 @@ static svn_boolean_t assume_native_chars
  * is the number of simultanous handles in use for that key. */
 
 typedef struct xlate_handle_node_t {
-  apr_xlate_t *handle;
+  xlate_handle_t *handle;
   /* FALSE if the handle is not valid, since its pool is being
      destroyed. */
   svn_boolean_t valid;
@@ -205,7 +211,7 @@ xlate_alloc_handle(xlate_handle_node_t *
                    apr_pool_t *pool)
 {
   apr_status_t apr_err;
-  apr_xlate_t *handle;
+  xlate_handle_t *handle;
   const char *name;
 
   /* The error handling doesn't support the following cases, since we don't
@@ -217,7 +223,7 @@ xlate_alloc_handle(xlate_handle_node_t *
 
   /* Try to create a handle. */
 #if defined(WIN32)
-  apr_err = svn_subr__win32_xlate_open((win32_xlate_t **)&handle, topage,
+  apr_err = svn_subr__win32_xlate_open(&handle, topage,
                                        frompage, pool);
   name = "win32-xlate: ";
 #else
@@ -486,9 +492,8 @@ convert_to_stringbuf(xlate_handle_node_t
 #ifdef WIN32
   apr_status_t apr_err;
 
-  apr_err = svn_subr__win32_xlate_to_stringbuf((win32_xlate_t *) node->handle,
-                                               src_data, src_length,
-                                               dest, pool);
+  apr_err = svn_subr__win32_xlate_to_stringbuf(node->handle, src_data,
+                                               src_length, dest, pool);
 #else
   apr_size_t buflen = src_length * 2;
   apr_status_t apr_err;

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.c Wed Feb  4 11:23:29 2015
@@ -77,11 +77,11 @@ initialize_com(void *baton, apr_pool_t*
   return SVN_NO_ERROR;
 }
 
-typedef struct win32_xlate_t
+struct svn_subr__win32_xlate_t
 {
   UINT from_page_id;
   UINT to_page_id;
-} win32_xlate_t;
+};
 
 static apr_status_t
 get_page_id_from_name(UINT *page_id_p, const char *page_name, apr_pool_t *pool)
@@ -166,12 +166,12 @@ get_page_id_from_name(UINT *page_id_p, c
 }
 
 apr_status_t
-svn_subr__win32_xlate_open(win32_xlate_t **xlate_p, const char *topage,
+svn_subr__win32_xlate_open(svn_subr__win32_xlate_t **xlate_p, const char *topage,
                            const char *frompage, apr_pool_t *pool)
 {
   UINT from_page_id, to_page_id;
   apr_status_t apr_err = APR_SUCCESS;
-  win32_xlate_t *xlate;
+  svn_subr__win32_xlate_t *xlate;
 
   apr_err = get_page_id_from_name(&to_page_id, topage, pool);
   if (apr_err == APR_SUCCESS)
@@ -190,7 +190,7 @@ svn_subr__win32_xlate_open(win32_xlate_t
 }
 
 apr_status_t
-svn_subr__win32_xlate_to_stringbuf(win32_xlate_t *handle,
+svn_subr__win32_xlate_to_stringbuf(svn_subr__win32_xlate_t *handle,
                                    const char *src_data,
                                    apr_size_t src_length,
                                    svn_stringbuf_t **dest,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.h?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.h (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_subr/win32_xlate.h Wed Feb  4 11:23:29 2015
@@ -27,25 +27,27 @@
 #ifdef WIN32
 
 /* Opaque translation buffer. */
-typedef struct win32_xlate_t win32_xlate_t;
+typedef struct svn_subr__win32_xlate_t svn_subr__win32_xlate_t;
 
 /* Set *XLATE_P to a handle node for converting from FROMPAGE to TOPAGE.
    Returns APR_EINVAL or APR_ENOTIMPL, if a conversion isn't supported.
    If fail for any other reason, return the error.
 
    Allocate *RET in POOL. */
-apr_status_t svn_subr__win32_xlate_open(win32_xlate_t **xlate_p,
-                                        const char *topage,
-                                        const char *frompage,
-                                        apr_pool_t *pool);
+apr_status_t
+svn_subr__win32_xlate_open(svn_subr__win32_xlate_t **xlate_p,
+                           const char *topage,
+                           const char *frompage,
+                           apr_pool_t *pool);
 
 /* Convert SRC_LENGTH bytes of SRC_DATA in NODE->handle, store the result
    in *DEST, which is allocated in POOL. */
-apr_status_t svn_subr__win32_xlate_to_stringbuf(win32_xlate_t *handle,
-                                                const char *src_data,
-                                                apr_size_t src_length,
-                                                svn_stringbuf_t **dest,
-                                                apr_pool_t *pool);
+apr_status_t
+svn_subr__win32_xlate_to_stringbuf(svn_subr__win32_xlate_t *handle,
+                                   const char *src_data,
+                                   apr_size_t src_length,
+                                   svn_stringbuf_t **dest,
+                                   apr_pool_t *pool);
 
 #endif /* WIN32 */
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_wc/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_wc/deprecated.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_wc/deprecated.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_wc/deprecated.c Wed Feb  4 11:23:29 2015
@@ -1076,7 +1076,8 @@ svn_wc_revert4(svn_wc_context_t *wc_ctx,
                                         depth,
                                         use_commit_times,
                                         changelist_filter,
-                                        FALSE /* clear_changelists*/,
+                                        FALSE /* clear_changelists */,
+                                        FALSE /* metadata_only */,
                                         cancel_func, cancel_baton,
                                         notify_func, notify_baton,
                                         scratch_pool));

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_wc/revert.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_wc/revert.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_wc/revert.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_wc/revert.c Wed Feb  4 11:23:29 2015
@@ -246,6 +246,22 @@ revert_restore_handle_copied_dirs(svn_bo
   return SVN_NO_ERROR;
 }
 
+/* Forward definition */
+static svn_error_t *
+revert_wc_data(svn_boolean_t *run_wq,
+               svn_boolean_t *notify_required,
+               svn_wc__db_t *db,
+               const char *local_abspath,
+               svn_wc__db_status_t status,
+               svn_node_kind_t kind,
+               svn_node_kind_t reverted_kind,
+               svn_filesize_t recorded_size,
+               apr_time_t recorded_time,
+               svn_boolean_t copied_here,
+               svn_boolean_t use_commit_times,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
+               apr_pool_t *scratch_pool);
 
 /* Make the working tree under LOCAL_ABSPATH to depth DEPTH match the
    versioned tree.  This function is called after svn_wc__db_op_revert
@@ -254,56 +270,63 @@ revert_restore_handle_copied_dirs(svn_bo
 
    REVERT_ROOT is true for explicit revert targets and FALSE for targets
    reached via recursion.
+
+   Sets *RUN_WQ to TRUE when the caller should (eventually) run the workqueue.
+   (The function sets it to FALSE when it has run the WQ itself)
+
+   If INFO is NULL, LOCAL_ABSPATH doesn't exist in DB. Otherwise INFO
+   specifies the state of LOCAL_ABSPATH in DB.
  */
 static svn_error_t *
-revert_restore(svn_wc__db_t *db,
+revert_restore(svn_boolean_t *run_wq,
+               svn_wc__db_t *db,
                const char *local_abspath,
                svn_depth_t depth,
+               svn_boolean_t metadata_only,
                svn_boolean_t use_commit_times,
                svn_boolean_t revert_root,
+               const struct svn_wc__db_info_t *info,
                svn_cancel_func_t cancel_func,
                void *cancel_baton,
                svn_wc_notify_func2_t notify_func,
                void *notify_baton,
                apr_pool_t *scratch_pool)
 {
-  svn_error_t *err;
   svn_wc__db_status_t status;
   svn_node_kind_t kind;
-  svn_node_kind_t on_disk;
   svn_boolean_t notify_required;
   const apr_array_header_t *conflict_files;
   svn_filesize_t recorded_size;
   apr_time_t recorded_time;
-  apr_finfo_t finfo;
-#ifdef HAVE_SYMLINK
-  svn_boolean_t special;
-#endif
   svn_boolean_t copied_here;
   svn_node_kind_t reverted_kind;
-  svn_boolean_t is_wcroot;
-
   if (cancel_func)
     SVN_ERR(cancel_func(cancel_baton));
 
-  SVN_ERR(svn_wc__db_is_wcroot(&is_wcroot, db, local_abspath, scratch_pool));
-  if (is_wcroot && !revert_root)
+  if (!revert_root)
     {
-      /* Issue #4162: Obstructing working copy. We can't access the working
-         copy data from the parent working copy for this node by just using
-         local_abspath */
+      svn_boolean_t is_wcroot;
 
-      if (notify_func)
+      SVN_ERR(svn_wc__db_is_wcroot(&is_wcroot, db, local_abspath, scratch_pool));
+      if (is_wcroot)
         {
-          svn_wc_notify_t *notify = svn_wc_create_notify(
+          /* Issue #4162: Obstructing working copy. We can't access the working
+             copy data from the parent working copy for this node by just using
+             local_abspath */
+
+          if (notify_func)
+            {
+              svn_wc_notify_t *notify =
+                        svn_wc_create_notify(
                                         local_abspath,
                                         svn_wc_notify_update_skip_obstruction,
                                         scratch_pool);
 
-          notify_func(notify_baton, notify, scratch_pool);
-        }
+              notify_func(notify_baton, notify, scratch_pool);
+            }
 
-      return SVN_NO_ERROR; /* We don't revert obstructing working copies */
+          return SVN_NO_ERROR; /* We don't revert obstructing working copies */
+        }
     }
 
   SVN_ERR(svn_wc__db_revert_list_read(&notify_required,
@@ -312,17 +335,15 @@ revert_restore(svn_wc__db_t *db,
                                       db, local_abspath,
                                       scratch_pool, scratch_pool));
 
-  err = svn_wc__db_read_info(&status, &kind,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             &recorded_size, &recorded_time, NULL,
-                             NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                             db, local_abspath, scratch_pool, scratch_pool);
-
-  if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+  if (info)
+    {
+      status = info->status;
+      kind = info->kind;
+      recorded_size = info->recorded_size;
+      recorded_time = info->recorded_time;
+    }
+  else
     {
-      svn_error_clear(err);
-
       if (!copied_here)
         {
           if (notify_func && notify_required)
@@ -349,9 +370,116 @@ revert_restore(svn_wc__db_t *db,
           recorded_time = 0;
         }
     }
-  else if (err)
-    return svn_error_trace(err);
 
+  if (!metadata_only)
+    {
+      SVN_ERR(revert_wc_data(run_wq,
+                             &notify_required,
+                             db, local_abspath, status, kind,
+                             reverted_kind, recorded_size, recorded_time,
+                             copied_here, use_commit_times,
+                             cancel_func, cancel_baton, scratch_pool));
+    }
+
+  /* We delete these marker files even though they are not strictly metadata.
+     But for users that use revert as an API with metadata_only, these are. */
+  if (conflict_files)
+    {
+      int i;
+      for (i = 0; i < conflict_files->nelts; i++)
+        {
+          SVN_ERR(remove_conflict_file(&notify_required,
+                                       APR_ARRAY_IDX(conflict_files, i,
+                                                     const char *),
+                                       local_abspath, scratch_pool));
+        }
+    }
+
+  if (notify_func && notify_required)
+    notify_func(notify_baton,
+                svn_wc_create_notify(local_abspath, svn_wc_notify_revert,
+                                     scratch_pool),
+                scratch_pool);
+
+  if (depth == svn_depth_infinity && kind == svn_node_dir)
+    {
+      apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+      apr_hash_t *children, *conflicts;
+      apr_hash_index_t *hi;
+
+      SVN_ERR(revert_restore_handle_copied_dirs(NULL, db, local_abspath, FALSE,
+                                                cancel_func, cancel_baton,
+                                                iterpool));
+
+      SVN_ERR(svn_wc__db_read_children_info(&children, &conflicts,
+                                            db, local_abspath, FALSE,
+                                            scratch_pool, iterpool));
+
+      for (hi = apr_hash_first(scratch_pool, children);
+           hi;
+           hi = apr_hash_next(hi))
+        {
+          const char *child_name = apr_hash_this_key(hi);
+          const char *child_abspath;
+
+          svn_pool_clear(iterpool);
+
+          child_abspath = svn_dirent_join(local_abspath, child_name, iterpool);
+
+          SVN_ERR(revert_restore(run_wq,
+                                 db, child_abspath, depth, metadata_only,
+                                 use_commit_times, FALSE /* revert root */,
+                                 apr_hash_this_val(hi),
+                                 cancel_func, cancel_baton,
+                                 notify_func, notify_baton,
+                                 iterpool));
+        }
+
+      /* Run the queue per directory */
+      if (*run_wq)
+        {
+          SVN_ERR(svn_wc__wq_run(db, local_abspath, cancel_func, cancel_baton,
+                                 iterpool));
+          *run_wq = FALSE;
+        }
+
+      svn_pool_destroy(iterpool);
+    }
+
+  if (notify_func && (revert_root || kind == svn_node_dir))
+    SVN_ERR(svn_wc__db_revert_list_notify(notify_func, notify_baton,
+                                          db, local_abspath, scratch_pool));
+
+  return SVN_NO_ERROR;
+}
+
+/* Perform the in-working copy revert of LOCAL_ABSPATH, to what is stored in DB */
+static svn_error_t *
+revert_wc_data(svn_boolean_t *run_wq,
+               svn_boolean_t *notify_required,
+               svn_wc__db_t *db,
+               const char *local_abspath,
+               svn_wc__db_status_t status,
+               svn_node_kind_t kind,
+               svn_node_kind_t reverted_kind,
+               svn_filesize_t recorded_size,
+               apr_time_t recorded_time,
+               svn_boolean_t copied_here,
+               svn_boolean_t use_commit_times,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
+               apr_pool_t *scratch_pool)
+{
+  svn_error_t *err;
+  apr_finfo_t finfo;
+  svn_node_kind_t on_disk;
+#ifdef HAVE_SYMLINK
+  svn_boolean_t special;
+#endif
+
+  /* Would be nice to use svn_io_dirent2_t here, but the performance
+     improvement that provides doesn't work, because we need the read
+     only and executable bits later on, in the most likely code path */
   err = svn_io_stat(&finfo, local_abspath,
                     APR_FINFO_TYPE | APR_FINFO_LINK
                     | APR_FINFO_SIZE | APR_FINFO_MTIME
@@ -477,14 +605,14 @@ revert_restore(svn_wc__db_t *db,
                   modified = FALSE;
                 }
               else
+                /* Side effect: fixes recorded timestamps */
                 SVN_ERR(svn_wc__internal_file_modified_p(&modified,
                                                          db, local_abspath,
                                                          TRUE, scratch_pool));
 
               if (modified)
                 {
-                  SVN_ERR(svn_io_remove_file2(local_abspath, FALSE,
-                                              scratch_pool));
+                  /* Install will replace the file */
                   on_disk = svn_node_none;
                 }
               else
@@ -504,14 +632,14 @@ revert_restore(svn_wc__db_t *db,
                           SVN_ERR(svn_io_set_file_read_only(local_abspath,
                                                             FALSE,
                                                             scratch_pool));
-                          notify_required = TRUE;
+                          *notify_required = TRUE;
                         }
                       else if (!needs_lock_prop && read_only)
                         {
                           SVN_ERR(svn_io_set_file_read_write(local_abspath,
                                                              FALSE,
                                                              scratch_pool));
-                          notify_required = TRUE;
+                          *notify_required = TRUE;
                         }
                     }
 
@@ -532,14 +660,14 @@ revert_restore(svn_wc__db_t *db,
                           SVN_ERR(svn_io_set_file_executable(local_abspath,
                                                              TRUE, FALSE,
                                                              scratch_pool));
-                          notify_required = TRUE;
+                          *notify_required = TRUE;
                         }
                       else if (!executable_prop && executable)
                         {
                           SVN_ERR(svn_io_set_file_executable(local_abspath,
                                                              FALSE, FALSE,
                                                              scratch_pool));
-                          notify_required = TRUE;
+                          *notify_required = TRUE;
                         }
                     }
 #endif
@@ -563,74 +691,16 @@ revert_restore(svn_wc__db_t *db,
         {
           svn_skel_t *work_item;
 
-          /* ### Get the checksum from read_info above and pass in here? */
           SVN_ERR(svn_wc__wq_build_file_install(&work_item, db, local_abspath,
                                                 NULL, use_commit_times, TRUE,
                                                 scratch_pool, scratch_pool));
           SVN_ERR(svn_wc__db_wq_add(db, local_abspath, work_item,
                                     scratch_pool));
-          SVN_ERR(svn_wc__wq_run(db, local_abspath, cancel_func, cancel_baton,
-                                 scratch_pool));
-        }
-      notify_required = TRUE;
-    }
-
-  if (conflict_files)
-    {
-      int i;
-      for (i = 0; i < conflict_files->nelts; i++)
-        {
-          SVN_ERR(remove_conflict_file(&notify_required,
-                                       APR_ARRAY_IDX(conflict_files, i,
-                                                     const char *),
-                                       local_abspath, scratch_pool));
+          *run_wq = TRUE;
         }
+      *notify_required = TRUE;
     }
 
-  if (notify_func && notify_required)
-    notify_func(notify_baton,
-                svn_wc_create_notify(local_abspath, svn_wc_notify_revert,
-                                     scratch_pool),
-                scratch_pool);
-
-  if (depth == svn_depth_infinity && kind == svn_node_dir)
-    {
-      apr_pool_t *iterpool = svn_pool_create(scratch_pool);
-      const apr_array_header_t *children;
-      int i;
-
-      SVN_ERR(revert_restore_handle_copied_dirs(NULL, db, local_abspath, FALSE,
-                                                cancel_func, cancel_baton,
-                                                iterpool));
-
-      SVN_ERR(svn_wc__db_read_children_of_working_node(&children, db,
-                                                       local_abspath,
-                                                       scratch_pool,
-                                                       iterpool));
-      for (i = 0; i < children->nelts; ++i)
-        {
-          const char *child_abspath;
-
-          svn_pool_clear(iterpool);
-
-          child_abspath = svn_dirent_join(local_abspath,
-                                          APR_ARRAY_IDX(children, i,
-                                                        const char *),
-                                          iterpool);
-
-          SVN_ERR(revert_restore(db, child_abspath, depth,
-                                 use_commit_times, FALSE /* revert root */,
-                                 cancel_func, cancel_baton,
-                                 notify_func, notify_baton,
-                                 iterpool));
-        }
-
-      svn_pool_destroy(iterpool);
-    }
-
-  if (notify_func)
-    SVN_ERR(svn_wc__db_revert_list_notify(notify_func, notify_baton,
-                                          db, local_abspath, scratch_pool));
   return SVN_NO_ERROR;
 }
 
@@ -641,6 +711,7 @@ revert(svn_wc__db_t *db,
        svn_depth_t depth,
        svn_boolean_t use_commit_times,
        svn_boolean_t clear_changelists,
+       svn_boolean_t metadata_only,
        svn_cancel_func_t cancel_func,
        void *cancel_baton,
        svn_wc_notify_func2_t notify_func,
@@ -648,6 +719,8 @@ revert(svn_wc__db_t *db,
        apr_pool_t *scratch_pool)
 {
   svn_error_t *err;
+  const struct svn_wc__db_info_t *info = NULL;
+  svn_boolean_t run_queue = FALSE;
 
   SVN_ERR_ASSERT(depth == svn_depth_empty || depth == svn_depth_infinity);
 
@@ -667,15 +740,37 @@ revert(svn_wc__db_t *db,
     SVN_ERR(svn_wc__write_check(db, dir_abspath, scratch_pool));
   }
 
-  err = svn_wc__db_op_revert(db, local_abspath, depth, clear_changelists,
-                             scratch_pool, scratch_pool);
+  err = svn_error_trace(
+        svn_wc__db_op_revert(db, local_abspath, depth, clear_changelists,
+                             scratch_pool, scratch_pool));
 
   if (!err)
-    err = revert_restore(db, local_abspath, depth,
-                         use_commit_times, TRUE /* revert root */,
-                         cancel_func, cancel_baton,
-                         notify_func, notify_baton,
-                         scratch_pool);
+    {
+      err = svn_error_trace(
+              svn_wc__db_read_single_info(&info, db, local_abspath, FALSE,
+                                          scratch_pool, scratch_pool));
+
+      if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+        {
+          svn_error_clear(err);
+          err = NULL;
+          info = NULL;
+        }
+    }
+
+  if (!err)
+    err = svn_error_trace(
+              revert_restore(&run_queue, db, local_abspath, depth, metadata_only,
+                             use_commit_times, TRUE /* revert root */,
+                             info, cancel_func, cancel_baton,
+                             notify_func, notify_baton,
+                             scratch_pool));
+
+  if (run_queue)
+    err = svn_error_compose_create(err,
+                                   svn_wc__wq_run(db, local_abspath,
+                                                  cancel_func, cancel_baton,
+                                                  scratch_pool));
 
   err = svn_error_compose_create(err,
                                  svn_wc__db_revert_list_done(db,
@@ -695,6 +790,7 @@ revert_changelist(svn_wc__db_t *db,
                   svn_boolean_t use_commit_times,
                   apr_hash_t *changelist_hash,
                   svn_boolean_t clear_changelists,
+                  svn_boolean_t metadata_only,
                   svn_cancel_func_t cancel_func,
                   void *cancel_baton,
                   svn_wc_notify_func2_t notify_func,
@@ -713,6 +809,7 @@ revert_changelist(svn_wc__db_t *db,
                                         scratch_pool))
     SVN_ERR(revert(db, local_abspath,
                    svn_depth_empty, use_commit_times, clear_changelists,
+                   metadata_only,
                    cancel_func, cancel_baton,
                    notify_func, notify_baton,
                    scratch_pool));
@@ -747,7 +844,7 @@ revert_changelist(svn_wc__db_t *db,
 
       SVN_ERR(revert_changelist(db, child_abspath, depth,
                                 use_commit_times, changelist_hash,
-                                clear_changelists,
+                                clear_changelists, metadata_only,
                                 cancel_func, cancel_baton,
                                 notify_func, notify_baton,
                                 iterpool));
@@ -773,6 +870,7 @@ revert_partial(svn_wc__db_t *db,
                svn_depth_t depth,
                svn_boolean_t use_commit_times,
                svn_boolean_t clear_changelists,
+               svn_boolean_t metadata_only,
                svn_cancel_func_t cancel_func,
                void *cancel_baton,
                svn_wc_notify_func2_t notify_func,
@@ -793,7 +891,7 @@ revert_partial(svn_wc__db_t *db,
   /* Revert the root node itself (depth=empty), then move on to the
      children.  */
   SVN_ERR(revert(db, local_abspath, svn_depth_empty,
-                 use_commit_times, clear_changelists,
+                 use_commit_times, clear_changelists, metadata_only,
                  cancel_func, cancel_baton,
                  notify_func, notify_baton, iterpool));
 
@@ -828,6 +926,7 @@ revert_partial(svn_wc__db_t *db,
       /* Revert just this node (depth=empty).  */
       SVN_ERR(revert(db, child_abspath,
                      svn_depth_empty, use_commit_times, clear_changelists,
+                     metadata_only,
                      cancel_func, cancel_baton,
                      notify_func, notify_baton,
                      iterpool));
@@ -846,6 +945,7 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
                svn_boolean_t use_commit_times,
                const apr_array_header_t *changelist_filter,
                svn_boolean_t clear_changelists,
+               svn_boolean_t metadata_only,
                svn_cancel_func_t cancel_func,
                void *cancel_baton,
                svn_wc_notify_func2_t notify_func,
@@ -862,6 +962,7 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
                                                depth, use_commit_times,
                                                changelist_hash,
                                                clear_changelists,
+                                               metadata_only,
                                                cancel_func, cancel_baton,
                                                notify_func, notify_baton,
                                                scratch_pool));
@@ -870,6 +971,7 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
   if (depth == svn_depth_empty || depth == svn_depth_infinity)
     return svn_error_trace(revert(wc_ctx->db, local_abspath,
                                   depth, use_commit_times, clear_changelists,
+                                  metadata_only,
                                   cancel_func, cancel_baton,
                                   notify_func, notify_baton,
                                   scratch_pool));
@@ -883,7 +985,7 @@ svn_wc_revert5(svn_wc_context_t *wc_ctx,
   if (depth == svn_depth_files || depth == svn_depth_immediates)
     return svn_error_trace(revert_partial(wc_ctx->db, local_abspath,
                                           depth, use_commit_times,
-                                          clear_changelists,
+                                          clear_changelists, metadata_only,
                                           cancel_func, cancel_baton,
                                           notify_func, notify_baton,
                                           scratch_pool));

Modified: subversion/branches/reuse-ra-session/subversion/svn/revert-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/svn/revert-cmd.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/svn/revert-cmd.c (original)
+++ subversion/branches/reuse-ra-session/subversion/svn/revert-cmd.c Wed Feb  4 11:23:29 2015
@@ -70,6 +70,7 @@ svn_cl__revert(apr_getopt_t *os,
   err = svn_client_revert3(targets, opt_state->depth,
                            opt_state->changelists,
                            FALSE /* clear_changelists */,
+                           FALSE /* metadata_only */,
                            ctx, scratch_pool);
   if (err
       && (err->apr_err == SVN_ERR_WC_INVALID_OPERATION_DEPTH)

Modified: subversion/branches/reuse-ra-session/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/svn/svn.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/svn/svn.c (original)
+++ subversion/branches/reuse-ra-session/subversion/svn/svn.c Wed Feb  4 11:23:29 2015
@@ -1300,7 +1300,9 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "\n"
      "  1. Removes versioned props in working copy.\n"
      "  2. Removes unversioned remote prop on repos revision.\n"
-     "     TARGET only determines which repository to access.\n"),
+     "     TARGET only determines which repository to access.\n"
+     "\n"
+     "  See 'svn help propset' for descriptions of the svn:* special properties.\n"),
     {'q', 'R', opt_depth, 'r', opt_revprop, opt_changelist} },
 
   { "propedit", svn_cl__propedit, {"pedit", "pe"}, N_
@@ -1312,7 +1314,7 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "  2. Edits unversioned remote prop on repos revision.\n"
      "     TARGET only determines which repository to access.\n"
      "\n"
-     "  See 'svn help propset' for more on setting properties.\n"),
+     "  See 'svn help propset' for descriptions of the svn:* special properties.\n"),
     {'r', opt_revprop, SVN_CL__LOG_MSG_OPTIONS, opt_force} },
 
   { "propget", svn_cl__propget, {"pget", "pg"}, N_
@@ -1333,7 +1335,9 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "  By default, an extra newline is printed after the property value so that\n"
      "  the output looks pretty.  With a single TARGET, depth 'empty' and without\n"
      "  --show-inherited-props, you can use the --strict option to disable this\n"
-     "  (useful when redirecting a binary property value to a file, for example).\n"),
+     "  (useful when redirecting a binary property value to a file, for example).\n"
+     "\n"
+     "  See 'svn help propset' for descriptions of the svn:* special properties.\n"),
     {'v', 'R', opt_depth, 'r', opt_revprop, opt_strict, opt_xml,
      opt_changelist, opt_show_inherited_props },
     {{'v', N_("print path, name and value on separate lines")},
@@ -1350,7 +1354,9 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "     TARGET only determines which repository to access.\n"
      "\n"
      "  With --verbose, the property values are printed as well, like 'svn propget\n"
-     "  --verbose'.  With --quiet, the paths are not printed.\n"),
+     "  --verbose'.  With --quiet, the paths are not printed.\n"
+     "\n"
+     "  See 'svn help propset' for descriptions of the svn:* special properties.\n"),
     {'v', 'R', opt_depth, 'r', 'q', opt_revprop, opt_xml, opt_changelist,
      opt_show_inherited_props },
     {{'v', N_("print path, name and value on separate lines")},

Modified: subversion/branches/reuse-ra-session/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/svnserve/serve.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/svnserve/serve.c (original)
+++ subversion/branches/reuse-ra-session/subversion/svnserve/serve.c Wed Feb  4 11:23:29 2015
@@ -1725,6 +1725,11 @@ static svn_error_t *get_dir(svn_ra_svn_c
                           &ab, root, full_path,
                           pool));
 
+  /* Fetch the directories' entries before starting the response, to allow
+     proper error handling in cases like when FULL_PATH doesn't exist */
+  if (want_contents)
+      SVN_CMD_ERR(svn_fs_dir_entries(&entries, root, full_path, pool));
+
   /* Begin response ... */
   SVN_ERR(svn_ra_svn__write_tuple(conn, pool, "w(r(!", "success", rev));
   SVN_ERR(svn_ra_svn__write_proplist(conn, pool, props));
@@ -1736,8 +1741,6 @@ static svn_error_t *get_dir(svn_ra_svn_c
       /* Use epoch for a placeholder for a missing date.  */
       const char *missing_date = svn_time_to_cstring(0, pool);
 
-      SVN_CMD_ERR(svn_fs_dir_entries(&entries, root, full_path, pool));
-
       /* Transform the hash table's FS entries into dirents.  This probably
        * belongs in libsvn_repos. */
       subpool = svn_pool_create(pool);

Modified: subversion/branches/reuse-ra-session/subversion/svnsync/sync.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/svnsync/sync.c?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/svnsync/sync.c (original)
+++ subversion/branches/reuse-ra-session/subversion/svnsync/sync.c Wed Feb  4 11:23:29 2015
@@ -158,6 +158,12 @@ remove_r0_mergeinfo(const svn_string_t *
           svn_stringbuf_appendbytes(new_str, line, colon + 1 - line);
           svn_stringbuf_appendcstr(new_str, rangelist);
         }
+      else
+        {
+          if (new_str->len)
+            svn_stringbuf_appendbyte(new_str, '\n');
+          svn_stringbuf_appendcstr(new_str, line);
+        }
     }
 
   if (strcmp((*str)->data, new_str->data) != 0)

Modified: subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.dump
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.dump?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.dump (original)
+++ subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.dump Wed Feb  4 11:23:29 2015
@@ -64,10 +64,10 @@ PROPS-END
 Node-path: foo.txt
 Node-kind: file
 Node-action: add
-Prop-content-length: 86
-Text-content-length: 0
 Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
 Text-content-sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709
+Prop-content-length: 86
+Text-content-length: 0
 Content-length: 86
 
 K 13
@@ -83,3 +83,54 @@ V 51
 PROPS-END
 
 
+Revision-number: 3
+Prop-content-length: 97
+Content-length: 97
+
+K 10
+svn:author
+V 2
+pm
+K 8
+svn:date
+V 27
+2015-02-03T18:38:47.017031Z
+K 7
+svn:log
+V 1
+m
+PROPS-END
+
+Node-path: zag
+Node-kind: dir
+Node-action: add
+Prop-content-length: 76
+Content-length: 76
+
+K 13
+svn:mergeinfo
+V 45
+/a:1,4
+/b:0,4
+/c:2-3
+/d:0-3
+/e:2,5-6
+/f:0,5-6
+PROPS-END
+
+
+Node-path: zig
+Node-kind: dir
+Node-action: add
+Prop-content-length: 55
+Content-length: 55
+
+K 13
+svn:mergeinfo
+V 20
+/a:1
+/b:2-3
+/c:4,7-8
+PROPS-END
+
+

Modified: subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.expected.dump
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.expected.dump?rev=1657122&r1=1657121&r2=1657122&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.expected.dump (original)
+++ subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnsync_tests_data/mergeinfo-contains-r0.expected.dump Wed Feb  4 11:23:29 2015
@@ -64,10 +64,10 @@ PROPS-END
 Node-path: foo.txt
 Node-kind: file
 Node-action: add
-Prop-content-length: 75
-Text-content-length: 0
 Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
 Text-content-sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709
+Prop-content-length: 75
+Text-content-length: 0
 Content-length: 75
 
 K 13
@@ -83,3 +83,54 @@ V 40
 PROPS-END
 
 
+Revision-number: 3
+Prop-content-length: 97
+Content-length: 97
+
+K 10
+svn:author
+V 2
+pm
+K 8
+svn:date
+V 27
+2015-02-03T18:38:47.017031Z
+K 7
+svn:log
+V 1
+m
+PROPS-END
+
+Node-path: zag
+Node-kind: dir
+Node-action: add
+Prop-content-length: 76
+Content-length: 76
+
+K 13
+svn:mergeinfo
+V 41
+/a:1,4
+/b:4
+/c:2-3
+/d:1-3
+/e:2,5-6
+/f:5-6
+PROPS-END
+
+
+Node-path: zig
+Node-kind: dir
+Node-action: add
+Prop-content-length: 55
+Content-length: 55
+
+K 13
+svn:mergeinfo
+V 20
+/a:1
+/b:2-3
+/c:4,7-8
+PROPS-END
+
+



Mime
View raw message