You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2018/11/07 12:30:11 UTC

svn commit: r1846002 [4/44] - in /subversion/branches/ra-git: ./ build/ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ build/generator/util/ build/win32/ contrib/client-side/ contrib/client-side/svn_load_dirs/ contri...

Modified: subversion/branches/ra-git/notes/obliterate/obliterate-functional-spec.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/obliterate/obliterate-functional-spec.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/obliterate/obliterate-functional-spec.txt (original)
+++ subversion/branches/ra-git/notes/obliterate/obliterate-functional-spec.txt Wed Nov  7 12:30:06 2018
@@ -1021,7 +1021,7 @@ VII. Appendix
 
     1. Link to external documentation
 
-    [1] Issue 516: http://subversion.tigris.org/issues/show_bug.cgi?id=516
+    [1] Issue 516: https://issues.apache.org/jira/browse/SVN-516
     [2] Karl Fogel's proposal to use the replay API and filters:
         http://svn.haxx.se/dev/archive-2008-04/0687.shtml
     [3] Bob Jenkins's thread about "Auditability": keep log of what has been

Modified: subversion/branches/ra-git/notes/ssh-tricks
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/ssh-tricks?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/ssh-tricks (original)
+++ subversion/branches/ra-git/notes/ssh-tricks Wed Nov  7 12:30:06 2018
@@ -15,7 +15,7 @@ not work with password authentication.
 the client's key-pair is used only for access to svnserve; if you want
 to retain general shell access to the host, create a second, dedicated
 key-pair for Subversion access and (assuming a Unix client) set the
-environment variable SVN_SSH to "ssh -i /path/to/private/key/file".
+environment variable SVN_SSH to "ssh -i /path/to/private/key/file --".
 
 The basic idea
 --------------

Modified: subversion/branches/ra-git/notes/svndiff
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/svndiff?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/svndiff (original)
+++ subversion/branches/ra-git/notes/svndiff Wed Nov  7 12:30:06 2018
@@ -1,4 +1,4 @@
-This file describes the svndiff version 0 and 1 format used by the
+This file describes the svndiff version 0, 1 and 2 formats used by the
 Subversion code.  Its design borrows many ideas from the vdelta and
 vcdiff encoding formats from AT&T Research Labs, but it is much
 simpler and thus a little less compact.
@@ -33,13 +33,14 @@ A window is the concatenation of the fol
 	[original length of the new data section in bytes (version 1)]
 	The window's new data section
 
-In svndiff version 1, the instructions and new data
-sections may be compressed by zlib.  In svndiff1, in order to determine the
-original size, an integer is appended to the beginning of each of the
-sections.  If the original size matches the encoded size (minus the
+In svndiff version 1 and 2, the instructions and new data sections may
+be compressed.  Version 1 uses zlib for compression.  Version 2 uses LZ4
+for compression.  In order to determine the original size in these
+compressed formats, an integer is appended to the beginning of each of
+the sections.  If the original size matches the encoded size (minus the
 length of the original size integer) from the header, the data is not
 compressed.  If the original size is different than the encoded size
-from the header, the remaining data in the section is compressed with zlib.
+from the header, the remaining data in the section is compressed.
 
 Integers (including the offset and all of the lengths) are encoded using a
 variable-length format.  The high bit of each byte is used as a

Modified: subversion/branches/ra-git/notes/tree-conflicts/design-overview.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/tree-conflicts/design-overview.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/tree-conflicts/design-overview.txt (original)
+++ subversion/branches/ra-git/notes/tree-conflicts/design-overview.txt Wed Nov  7 12:30:06 2018
@@ -246,10 +246,10 @@ Status: incomplete
 
   * Mark as resolved, by command: the basic "svn resolved PARENT" works to some
     extent, but needs attention.
-    Issue #3145 <http://subversion.tigris.org/issues/show_bug.cgi?id=3145>
+    Issue #3145 <https://issues.apache.org/jira/browse/SVN-3145>
 
   * Mark as resolved, interactively: not started.
-    Issue #3144 <http://subversion.tigris.org/issues/show_bug.cgi?id=3144>
+    Issue #3144 <https://issues.apache.org/jira/browse/SVN-3144>
 
 To do:
 

Modified: subversion/branches/ra-git/notes/tree-conflicts/detection.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/tree-conflicts/detection.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/tree-conflicts/detection.txt (original)
+++ subversion/branches/ra-git/notes/tree-conflicts/detection.txt Wed Nov  7 12:30:06 2018
@@ -8,7 +8,7 @@ in use-cases.txt, for both files and dir
 
 Issue reference:
 
-  http://subversion.tigris.org/issues/show_bug.cgi?id=2282
+  https://issues.apache.org/jira/browse/SVN-2282
 
 ==========
 USE CASE 1

Modified: subversion/branches/ra-git/notes/tree-conflicts/use-cases.txt
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/notes/tree-conflicts/use-cases.txt?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/notes/tree-conflicts/use-cases.txt (original)
+++ subversion/branches/ra-git/notes/tree-conflicts/use-cases.txt Wed Nov  7 12:30:06 2018
@@ -3,8 +3,8 @@
               TREE CONFLICTS USE CASES AND DESIRED BEHAVIOURS
 
 
-Issue reference:  http://subversion.tigris.org/issues/show_bug.cgi?id=2282
-                  http://subversion.tigris.org/issues/show_bug.cgi?id=3630
+Issue reference:  https://issues.apache.org/jira/browse/SVN-2282
+                  https://issues.apache.org/jira/browse/SVN-3630
 
 These use cases are based on a scenario paper "SVN move/rename
 problems & suggested improvements" submitted by a corporate Subversion

Modified: subversion/branches/ra-git/subversion/bindings/javahl/README
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/README?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/README (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/README Wed Nov  7 12:30:06 2018
@@ -5,7 +5,7 @@ JavaHL provides a (mostly native, using
 a high level Java API for Subversion, which was originally targeted for
 implementors of GUI clients and IDE plug-ins for Subversion.  JavaHL
 currently provides a minimal-but-complete set of APIs which expose the
-core Subversion C API to Java.  It requires a JRE 1.6+ (runtime).
+core Subversion C API to Java.  It requires a JRE 1.8+ (runtime).
 
 It is currently quite mature, and can be considered for production use.
 
@@ -14,7 +14,7 @@ Build system
 ------------
 
 JavaHL should compile and run under Linux, Win32, and Mac OS X with
-JDK 1.6+ and a C++ compiler with a complete implementation of
+JDK 1.8+ and a C++ compiler with a complete implementation of
 C++98 (for example, GCC 3.2 and older cannot compile JavaHL 1.9+).
 
 Its build will produce both a native library (libsvnjavahl-1.so on Unix

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/Array.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/Array.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/Array.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/Array.cpp Wed Nov  7 12:30:06 2018
@@ -55,6 +55,8 @@ Array::init(jobjectArray jobjects)
   if (jobjects != NULL)
     {
       JNIEnv *env = JNIUtil::getEnv();
+      if (JNIUtil::isExceptionThrown())
+        return;
       jint arraySize = env->GetArrayLength(jobjects);
       if (JNIUtil::isExceptionThrown())
         return;

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/Array.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/Array.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/Array.h (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/Array.h Wed Nov  7 12:30:06 2018
@@ -45,6 +45,10 @@ class Array
   Array(jobject jobjectsCollection);
   virtual ~Array();
   const std::vector<jobject> &vector(void) const;
+  bool isNull() const
+  {
+    return !m_objectArray;
+  }
 };
 
 #endif // ARRAY_H

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/CreateJ.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/CreateJ.cpp Wed Nov  7 12:30:06 2018
@@ -1420,6 +1420,8 @@ jobject CreateJ::Mergeinfo(svn_mergeinfo
         RevisionRangeList(static_cast<svn_rangelist_t*>(val)).toList();
 
       env->CallVoidMethod(jmergeinfo, addRevisions, jpath, jranges);
+      if (JNIUtil::isJavaExceptionThrown())
+        return NULL;
 
       env->DeleteLocalRef(jranges);
       env->DeleteLocalRef(jpath);

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/Iterator.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/Iterator.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/Iterator.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/Iterator.cpp Wed Nov  7 12:30:06 2018
@@ -35,6 +35,8 @@ jobject init_iterator(jobject jiterable,
     return NULL;
 
   JNIEnv* env = JNIUtil::getEnv();
+  if (JNIUtil::isJavaExceptionThrown())
+    return NULL;
 
   static jmethodID iterator_mid = 0;
   if (0 == iterator_mid)
@@ -99,6 +101,8 @@ jobject Iterator::next() const
     return NULL;
 
   JNIEnv* env = JNIUtil::getEnv();
+  if (JNIUtil::isJavaExceptionThrown())
+    return NULL;
 
   static jmethodID next_mid = 0;
   if (0 == next_mid)

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/JNIUtil.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/JNIUtil.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/JNIUtil.cpp Wed Nov  7 12:30:06 2018
@@ -578,16 +578,17 @@ jthrowable JNIUtil::wrappedCreateClientE
   if (JNIUtil::isJavaExceptionThrown())
     return NULL;
 
-  const char *source = NULL;
+  std::string source;
 #ifdef SVN_DEBUG
 #ifndef SVN_ERR__TRACING
   if (err->file)
     {
-      std::ostringstream buf;
-      buf << err->file;
+      source = err->file;
       if (err->line > 0)
-        buf << ':' << err->line;
-      source = buf.str().c_str();
+        {
+          source += ':';
+          source += err->line;
+        }
     }
 #endif
 #endif
@@ -615,7 +616,7 @@ jthrowable JNIUtil::wrappedCreateClientE
       JNICriticalSection cs(*g_logMutex);
       g_logStream << "Subversion JavaHL exception thrown, message:<";
       g_logStream << msg << ">";
-      if (source)
+      if (!source.empty())
         g_logStream << " source:<" << source << ">";
       if (err->apr_err != -1)
         g_logStream << " apr-err:<" << err->apr_err << ">";
@@ -624,7 +625,7 @@ jthrowable JNIUtil::wrappedCreateClientE
   if (isJavaExceptionThrown())
     POP_AND_RETURN_NULL;
 
-  jstring jsource = makeJString(source);
+  jstring jsource = (source.empty() ? NULL : makeJString(source.c_str()));
   if (isJavaExceptionThrown())
     POP_AND_RETURN_NULL;
 

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.cpp Wed Nov  7 12:30:06 2018
@@ -54,13 +54,15 @@ ListCallback::callback(void *baton,
                        const svn_dirent_t *dirent,
                        const svn_lock_t *lock,
                        const char *abs_path,
-                       const char * /* external_parent_url */,
-                       const char * /* external_target */,
+                       const char *external_parent_url,
+                       const char *external_target,
                        apr_pool_t *scratch_pool)
 {
   if (baton)
     return static_cast<ListCallback *>(baton)->doList(
-            path, dirent, lock, abs_path, scratch_pool);
+            path, dirent, lock, abs_path,
+            external_parent_url, external_target,
+            scratch_pool);
 
   return SVN_NO_ERROR;
 }
@@ -73,6 +75,8 @@ ListCallback::doList(const char *path,
                      const svn_dirent_t *dirent,
                      const svn_lock_t *lock,
                      const char *abs_path,
+                     const char *external_parent_url,
+                     const char *external_target,
                      apr_pool_t *pool)
 {
   JNIEnv *env = JNIUtil::getEnv();
@@ -87,13 +91,17 @@ ListCallback::doList(const char *path,
   static jmethodID mid = 0;
   if (mid == 0)
     {
-      jclass clazz = env->FindClass(JAVAHL_CLASS("/callback/ListCallback"));
+      jclass clazz = env->FindClass(JAVAHL_CLASS("/callback/ListItemCallback"));
       if (JNIUtil::isJavaExceptionThrown())
         POP_AND_RETURN(SVN_NO_ERROR);
 
       mid = env->GetMethodID(clazz, "doEntry",
-                             "(" JAVAHL_ARG("/types/DirEntry;")
-                             JAVAHL_ARG("/types/Lock;") ")V");
+                             "("
+                             JAVAHL_ARG("/types/DirEntry;")
+                             JAVAHL_ARG("/types/Lock;")
+                             "Ljava/lang/String;"
+                             "Ljava/lang/String;"
+                             ")V");
       if (JNIUtil::isJavaExceptionThrown() || mid == 0)
         POP_AND_RETURN(SVN_NO_ERROR);
     }
@@ -111,8 +119,16 @@ ListCallback::doList(const char *path,
         POP_AND_RETURN(SVN_NO_ERROR);
     }
 
+  jstring jexternalParentURL = JNIUtil::makeJString(external_parent_url);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN(SVN_NO_ERROR);
+
+  jstring jexternalTarget = JNIUtil::makeJString(external_target);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN(SVN_NO_ERROR);
+
   // call the Java method
-  env->CallVoidMethod(m_callback, mid, jdirentry, jlock);
+  env->CallVoidMethod(m_callback, mid, jdirentry, jlock, jexternalParentURL, jexternalTarget);
 
   POP_AND_RETURN_EXCEPTION_AS_SVNERROR();
 }

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.h (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/ListCallback.h Wed Nov  7 12:30:06 2018
@@ -54,6 +54,8 @@ protected:
                       const svn_dirent_t *dirent,
                       const svn_lock_t *lock,
                       const char *abs_path,
+                      const char *external_parent_url,
+                      const char *external_target,
                       apr_pool_t *pool);
 
 private:

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/OperationContext.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/OperationContext.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/OperationContext.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/OperationContext.cpp Wed Nov  7 12:30:06 2018
@@ -643,6 +643,8 @@ OperationContext::closeTunnel(void *tunn
     return;
 
   JNIEnv *env = JNIUtil::getEnv();
+  if (JNIUtil::isJavaExceptionThrown())
+    return;
 
   static jmethodID mid = 0;
   if (0 == mid)

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/Prompter.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/Prompter.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/Prompter.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/Prompter.cpp Wed Nov  7 12:30:06 2018
@@ -342,8 +342,7 @@ svn_error_t *Prompter::dispatch_ssl_serv
   svn_auth_cred_ssl_server_trust_t *cred =
     static_cast<svn_auth_cred_ssl_server_trust_t*>(apr_pcalloc(pool, sizeof(*cred)));
   cred->may_save = save;
-  if (save)
-    cred->accepted_failures = failures;
+  cred->accepted_failures = failures;
   *cred_p = cred;
 
   return SVN_NO_ERROR;

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/RemoteSession.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/RemoteSession.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/RemoteSession.cpp Wed Nov  7 12:30:06 2018
@@ -214,8 +214,9 @@ RemoteSession::RemoteSession(int retryAt
           cycle_detected = true;
           break;
         }
-      /* ### Shouldn't url be updated for the next attempt?
-         ### There is no real cycle if we just do the same thing twice? */
+
+      url = corrected_url;
+      corrected_url = NULL;
     }
 
   if (cycle_detected)
@@ -645,6 +646,8 @@ build_string_array(const Iterator& iter,
     {
       const char* element;
       jstring jitem = (jstring)iter.next();
+      if (JNIUtil::isExceptionThrown())
+        return NULL;
       if (contains_relpaths)
         {
           Relpath item(jitem, pool);
@@ -958,7 +961,10 @@ long_iterable_to_revnum_array(jobject jl
   Iterator iter(jlong_iterable);
   while (iter.hasNext())
     {
-      const jlong entry = env->CallLongMethod(iter.next(), mid);
+      jobject next = iter.next();
+      if (JNIUtil::isExceptionThrown())
+        return NULL;
+      const jlong entry = env->CallLongMethod(next, mid);
       if (JNIUtil::isExceptionThrown())
         return NULL;
       APR_ARRAY_PUSH(array, svn_revnum_t) = svn_revnum_t(entry);
@@ -970,6 +976,8 @@ jobject
 location_hash_to_map(apr_hash_t* locations, apr_pool_t* scratch_pool)
 {
   JNIEnv* env = JNIUtil::getEnv();
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
 
   jclass long_cls = env->FindClass("java/lang/Long");
   if (JNIUtil::isExceptionThrown())

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/RevisionRangeList.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/RevisionRangeList.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/RevisionRangeList.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/RevisionRangeList.cpp Wed Nov  7 12:30:06 2018
@@ -42,7 +42,10 @@ RevisionRangeList::RevisionRangeList(job
   m_rangelist = apr_array_make(pool.getPool(), 0, sizeof(svn_merge_range_t*));
   while (iter.hasNext())
     {
-      svn_merge_range_t* range = RevisionRange(iter.next()).toMergeRange(pool);
+      jobject next = iter.next();
+      if (JNIUtil::isExceptionThrown())
+        return;
+      svn_merge_range_t* range = RevisionRange(next).toMergeRange(pool);
       if (JNIUtil::isExceptionThrown())
         return;
       APR_ARRAY_PUSH(m_rangelist, svn_merge_range_t*) = range;

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.cpp Wed Nov  7 12:30:06 2018
@@ -167,8 +167,9 @@ const char *SVNClient::getLastPath()
  * List directory entries of a URL.
  */
 void SVNClient::list(const char *url, Revision &revision,
-                     Revision &pegRevision, svn_depth_t depth,
-                     int direntFields, bool fetchLocks,
+                     Revision &pegRevision, StringArray &patterns,
+                     svn_depth_t depth, int direntFields,
+                     bool fetchLocks, bool includeExternals,
                      ListCallback *callback)
 {
     SVN::Pool subPool(pool);
@@ -181,13 +182,14 @@ void SVNClient::list(const char *url, Re
     Path urlPath(url, subPool);
     SVN_JNI_ERR(urlPath.error_occurred(), );
 
-    SVN_JNI_ERR(svn_client_list3(urlPath.c_str(),
+    SVN_JNI_ERR(svn_client_list4(urlPath.c_str(),
                                  pegRevision.revision(),
                                  revision.revision(),
+                                 patterns.array(subPool),
                                  depth,
                                  direntFields,
                                  fetchLocks,
-                                 FALSE, // include_externals
+                                 includeExternals,
                                  ListCallback::callback,
                                  callback,
                                  ctx, subPool.getPool()), );
@@ -265,7 +267,8 @@ rev_range_vector_to_apr_array(std::vecto
 void SVNClient::logMessages(const char *path, Revision &pegRevision,
                             std::vector<RevisionRange> &logRanges,
                             bool stopOnCopy, bool discoverPaths,
-                            bool includeMergedRevisions, StringArray &revProps,
+                            bool includeMergedRevisions,
+                            StringArray &revProps, bool allRevProps,
                             int limit, LogMessageCallback *callback)
 {
     SVN::Pool subPool(pool);
@@ -285,10 +288,13 @@ void SVNClient::logMessages(const char *
     if (JNIUtil::isExceptionThrown())
         return;
 
+    const apr_array_header_t *revprops = NULL;
+    if (!allRevProps)
+      revprops = revProps.array(subPool);
+
     SVN_JNI_ERR(svn_client_log5(targets, pegRevision.revision(), ranges,
                                 limit, discoverPaths, stopOnCopy,
-                                includeMergedRevisions,
-                                revProps.array(subPool),
+                                includeMergedRevisions, revprops,
                                 LogMessageCallback::callback, callback, ctx,
                                 subPool.getPool()), );
 }
@@ -1049,7 +1055,8 @@ void SVNClient::diff(const char *target1
                                    options.useGitDiffFormat(),
                                    SVN_APR_LOCALE_CHARSET,
                                    outputStream.getStream(subPool),
-                                   NULL /* error file */,
+                                   // Discard stderr; TODO: Update JavaHL API
+                                   svn_stream_empty(subPool.getPool()),
                                    changelists.array(subPool),
                                    ctx,
                                    subPool.getPool()),
@@ -1078,7 +1085,8 @@ void SVNClient::diff(const char *target1
                                options.useGitDiffFormat(),
                                SVN_APR_LOCALE_CHARSET,
                                outputStream.getStream(subPool),
-                               NULL /* error stream */,
+                               // Discard stderr; TODO: Update JavaHL API
+                               svn_stream_empty(subPool.getPool()),
                                changelists.array(subPool),
                                ctx,
                                subPool.getPool()),

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/SVNClient.h Wed Nov  7 12:30:06 2018
@@ -172,7 +172,7 @@ class SVNClient :public SVNBase
   void logMessages(const char *path, Revision &pegRevision,
                    std::vector<RevisionRange> &ranges, bool stopOnCopy,
                    bool discoverPaths, bool includeMergedRevisions,
-                   StringArray &revProps,
+                   StringArray &revProps, bool allRevProps,
                    int limit, LogMessageCallback *callback);
   jobject getVersionExtended(bool verbose);
   jstring getAdminDirectoryName();
@@ -189,7 +189,8 @@ class SVNClient :public SVNBase
               bool depthAsSticky, StringArray &changelists,
               StatusCallback *callback);
   void list(const char *url, Revision &revision, Revision &pegRevision,
-            svn_depth_t depth, int direntFields, bool fetchLocks,
+            StringArray &patterns, svn_depth_t depth, int direntFields,
+            bool fetchLocks, bool includeExternals,
             ListCallback *callback);
   jbyteArray revProperty(const char *path, const char *name, Revision &rev);
   void setRevProperty(const char *path, const char *name,

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.cpp Wed Nov  7 12:30:06 2018
@@ -247,6 +247,7 @@ void SVNRepos::dump(File &path, OutputSt
                                     ? ReposNotifyCallback::notify
                                     : NULL,
                                  notifyCallback,
+                                 NULL, NULL,
                                  checkCancel, this, requestPool.getPool()), );
 }
 
@@ -331,6 +332,7 @@ void SVNRepos::load(File &path,
                     bool usePostCommitHook,
                     bool validateProps,
                     bool ignoreDates,
+                    bool normalizeProps,
                     const char *relativePath,
                     ReposNotifyCallback *notifyCallback)
 {
@@ -367,10 +369,10 @@ void SVNRepos::load(File &path,
                               path.getInternalStyle(requestPool), NULL,
                               requestPool.getPool(), requestPool.getPool()), );
 
-  SVN_JNI_ERR(svn_repos_load_fs5(repos, dataIn.getStream(requestPool),
+  SVN_JNI_ERR(svn_repos_load_fs6(repos, dataIn.getStream(requestPool),
                                  lower, upper, uuid_action, relativePath,
                                  usePreCommitHook, usePostCommitHook,
-                                 validateProps, ignoreDates,
+                                 validateProps, ignoreDates, normalizeProps,
                                  notifyCallback != NULL
                                     ? ReposNotifyCallback::notify
                                     : NULL,

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.h (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/SVNRepos.h Wed Nov  7 12:30:06 2018
@@ -61,7 +61,7 @@ class SVNRepos : public SVNBase
             Revision &revsionStart, Revision &revisionEnd,
             bool ignoreUUID, bool forceUUID,
             bool usePreCommitHook, bool usePostCommitHook,
-            bool validateProps, bool ignoreDates,
+            bool validateProps, bool ignoreDates, bool normalizeProps,
             const char *relativePath, ReposNotifyCallback *notifyCallback);
   void listUnusedDBLogs(File &path,
                         MessageReceiver &messageReceiver);

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.cpp Wed Nov  7 12:30:06 2018
@@ -38,6 +38,9 @@ StringArray::~StringArray()
 
 const apr_array_header_t *StringArray::array(const SVN::Pool &pool)
 {
+  if (isNull())
+    return NULL;
+
   apr_array_header_t *strings
     = apr_array_make(pool.getPool(), static_cast<int>(m_strings.size()),
                      sizeof(char *));
@@ -77,11 +80,13 @@ StringArray::init(void)
 StringArray::StringArray(jobjectArray jstrings)
     : Array(jstrings), m_strings()
 {
-  init();
+  if (!isNull())
+    init();
 }
 
 StringArray::StringArray(jobject jstringCollection)
     : Array(jstringCollection), m_strings()
 {
-  init();
+  if (!isNull())
+    init();
 }

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.h (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/StringArray.h Wed Nov  7 12:30:06 2018
@@ -47,6 +47,10 @@ class StringArray : Array
   ~StringArray();
   const apr_array_header_t *array(const SVN::Pool &pool);
   const std::vector<std::string> &vector(void) const;
+  bool isNull() const
+  {
+    return Array::isNull();
+  }
 };
 
 #endif // STRINGARRAY_H

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp Wed Nov  7 12:30:06 2018
@@ -173,7 +173,10 @@ public:
     {
       Iterator iter(get_iterator());
       while (iter.has_next())
-        function(T(m_env, NativeT(iter.next())));
+        {
+          ::Java::LocalFrame frame(m_env);
+          function(T(m_env, NativeT(iter.next())));
+        }
       return function;
     }
 };

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Wed Nov  7 12:30:06 2018
@@ -156,8 +156,8 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_list
 (JNIEnv *env, jobject jthis, jstring jurl, jobject jrevision,
- jobject jpegRevision, jobject jdepth, jint jdirentFields,
- jboolean jfetchLocks, jobject jcallback)
+ jobject jpegRevision, jobject jpatterns, jobject jdepth, jint jdirentFields,
+ jboolean jfetchLocks, jboolean jincludeExternals, jobject jcallback)
 {
   JNIEntry(SVNClient, list);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -176,9 +176,16 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
+  StringArray patterns(jpatterns);
+  if (JNIUtil::isExceptionThrown())
+    return;
+
   ListCallback callback(jcallback);
-  cl->list(url, revision, pegRevision, EnumMapper::toDepth(jdepth),
-           static_cast<int>(jdirentFields), jfetchLocks ? true : false,
+  cl->list(url, revision, pegRevision, patterns,
+           EnumMapper::toDepth(jdepth),
+           static_cast<int>(jdirentFields),
+           jfetchLocks ? true : false,
+           jincludeExternals ? true : false,
            &callback);
 }
 
@@ -313,8 +320,9 @@ JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_logMessages
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
  jobject jranges, jboolean jstopOnCopy, jboolean jdisoverPaths,
- jboolean jincludeMergedRevisions, jobject jrevProps, jlong jlimit,
- jobject jlogMessageCallback)
+ jboolean jincludeMergedRevisions,
+ jobject jrevProps, jboolean jallRevProps,
+ jlong jlimit, jobject jlogMessageCallback)
 {
   JNIEntry(SVNClient, logMessages);
 
@@ -366,7 +374,8 @@ Java_org_apache_subversion_javahl_SVNCli
   cl->logMessages(path, pegRevision, revisionRanges,
                   jstopOnCopy ? true: false, jdisoverPaths ? true : false,
                   jincludeMergedRevisions ? true : false,
-                  revProps, int(jlimit), &callback);
+                  revProps, jallRevProps ? true : false,
+                  int(jlimit), &callback);
 }
 
 JNIEXPORT jlong JNICALL

Modified: subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp Wed Nov  7 12:30:06 2018
@@ -247,7 +247,7 @@ Java_org_apache_subversion_javahl_SVNRep
     jobject jrevisionStart, jobject jrevisionEnd,
     jboolean jignoreUUID, jboolean jforceUUID,
     jboolean jusePreCommitHook, jboolean jusePostCommitHook,
-    jboolean jvalidateProps, jboolean jignoreDates,
+    jboolean jvalidateProps, jboolean jignoreDates, jboolean jnormalizeProps,
     jstring jrelativePath, jobject jnotifyCallback)
 {
   JNIEntry(SVNRepos, load);
@@ -287,6 +287,7 @@ Java_org_apache_subversion_javahl_SVNRep
            jusePostCommitHook ? true : false,
            jvalidateProps ? true : false,
            jignoreDates ? true : false,
+           jnormalizeProps ? true : false,
            relativePath,
            (jnotifyCallback != NULL ? &notifyCallback : NULL));
 }

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java Wed Nov  7 12:30:06 2018
@@ -23,6 +23,8 @@
 
 package org.apache.subversion.javahl;
 
+import java.lang.annotation.*;
+
 /**
  * The constants in this interface describe the changes to an item to
  * be committed.
@@ -32,36 +34,43 @@ public interface CommitItemStateFlags
     /**
      * the item has been added
      */
+    @Native
     public static final int Add=1;
 
     /**
      * the item has been deleted
      */
+    @Native
     public static final int Delete=2;
 
     /**
      * the item has text modifications
      */
+    @Native
     public static final int TextMods=4;
 
     /**
      * the item has property modifications
      */
+    @Native
     public static final int PropMods=8;
 
     /**
      * the item has been copied
      */
+    @Native
     public static final int IsCopy=16;
 
     /**
      * the item has a lock token
      */
+    @Native
     public static final int LockToken = 32;
 
     /**
      * the item was moved to this location
      * @since 1.8
      */
+    @Native
     public static int MovedHere = 64;
 }

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Wed Nov  7 12:30:06 2018
@@ -123,12 +123,30 @@ public interface ISVNClient
      * @param url             the url to list
      * @param revision        the revision to list
      * @param pegRevision     the revision to interpret url
+     * @param patterns        optional glob patterns to filter the result
      * @param depth           the depth to recurse into subdirectories
      * @param direntFields    the fields to retrieve
      * @param fetchLocks      whether to fetch lock information
+     * @param includeExternals whether to list external items
      * @param callback        the callback to receive the directory entries
+     * @since 1.10
      */
     void list(String url, Revision revision, Revision pegRevision,
+              List<String> patterns, Depth depth, int direntFields,
+              boolean fetchLocks, boolean includeExternals,
+              ListItemCallback callback)
+            throws ClientException;
+
+    /**
+     * Lists the directory entries of a url on the server.
+     * <p>
+     * Behaves like the 1.10 version with
+     *     <code>patterns = null</code> and
+     *     <code>includeExternals = false</code>
+     * @deprecated
+     */
+    @Deprecated
+    void list(String url, Revision revision, Revision pegRevision,
               Depth depth, int direntFields, boolean fetchLocks,
               ListCallback callback)
             throws ClientException;
@@ -180,6 +198,21 @@ public interface ISVNClient
 
     /**
      * Retrieve the log messages for an item.
+     * <p>
+     * Behaves like the 1.10 version with <code>allRevProps = false</code>
+     * @deprecated
+     */
+    @Deprecated
+    void logMessages(String path, Revision pegRevision,
+                     List<RevisionRange> ranges, boolean stopOnCopy,
+                     boolean discoverPath, boolean includeMergedRevisions,
+                     Set<String> revProps, long limit,
+                     LogMessageCallback callback)
+            throws ClientException;
+
+
+    /**
+     * Retrieve the log messages for an item.
      * @param path          path or url to get the log message for.
      * @param pegRevision   revision to interpret path
      * @param ranges        an array of revision ranges to show
@@ -189,15 +222,19 @@ public interface ISVNClient
      * @param includeMergedRevisions include log messages for revisions which
      *                               were merged.
      * @param revProps      the revprops to retrieve
+     * @param allRevProps   if <code>true</code>, ignore the
+     *                      <code>revProps</code> parameter and retrieve all
+     *                      revision properties
      * @param limit         limit the number of log messages (if 0 or less no
      *                      limit)
      * @param callback      the object to receive the log messages
+     * @since 1.10
      */
     void logMessages(String path, Revision pegRevision,
                      List<RevisionRange> ranges, boolean stopOnCopy,
                      boolean discoverPath, boolean includeMergedRevisions,
-                     Set<String> revProps, long limit,
-                     LogMessageCallback callback)
+                     Set<String> revProps, boolean allRevProps,
+                     long limit, LogMessageCallback callback)
             throws ClientException;
 
     /**

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java Wed Nov  7 12:30:06 2018
@@ -151,6 +151,39 @@ public interface ISVNRepos {
      * load the data of a dump into a repository
      * @param path              the path to the repository
      * @param dataInput         the data input source
+     * @param start             the first revision to load
+     * @param end               the last revision to load
+     * @param ignoreUUID        ignore any UUID found in the input stream
+     * @param forceUUID         set the repository UUID to any found in the
+     *                          stream
+     * @param usePreCommitHook  use the pre-commit hook when processing commits
+     * @param usePostCommitHook use the post-commit hook when processing commits
+     * @param validateProps     validate "svn:" revision and node properties
+     * @param ignoreDates       ignore revision datestamps in the dump stream
+     * @param normalizeProps    attempt to normalize invalid Subversion
+     *                          revision and node properties
+     * @param relativePath      the directory in the repository, where the data
+     *                          in put optional.
+     * @param callback          the target for processing messages
+     * @throws ClientException  throw in case of problem
+     * @since 1.10
+     */
+    public abstract void load(File path, InputStream dataInput,
+                              Revision start, Revision end,
+                              boolean ignoreUUID, boolean forceUUID,
+                              boolean usePreCommitHook,
+                              boolean usePostCommitHook,
+                              boolean validateProps,
+                              boolean ignoreDates,
+                              boolean normalizeProps,
+                              String relativePath,
+                              ReposNotifyCallback callback)
+        throws ClientException;
+
+    /**
+     * load the data of a dump into a repository
+     * @param path              the path to the repository
+     * @param dataInput         the data input source
          * @param start             the first revision to load
          * @param end               the last revision to load
      * @param ignoreUUID        ignore any UUID found in the input stream

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java Wed Nov  7 12:30:06 2018
@@ -141,12 +141,15 @@ public class NativeResources
      */
     private static final void init()
     {
+        final int SVN_VER_MAJOR = 1;
+        final int SVN_VER_MINOR = 12;
         initNativeLibrary();
         version = new Version();
-        if (!version.isAtLeast(1, 10, 0))
+        if (!version.isAtLeast(SVN_VER_MAJOR, SVN_VER_MINOR, 0))
         {
             throw new LinkageError("Native library version must be at least " +
-                                   "1.10.0, but is only " + version);
+                                   SVN_VER_MAJOR + "." + SVN_VER_MINOR + ".0," +
+                                   "but is only " + version);
         }
 
         runtimeVersion = new RuntimeVersion();

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Wed Nov  7 12:30:06 2018
@@ -141,11 +141,39 @@ public class SVNClient implements ISVNCl
                ignoreExternals, false, changelists, callback);
     }
 
-    public native void list(String url, Revision revision,
-                            Revision pegRevision, Depth depth, int direntFields,
-                            boolean fetchLocks, ListCallback callback)
+    public native void list(String url, Revision revision, Revision pegRevision,
+                            List<String> patterns, Depth depth, int direntFields,
+                            boolean fetchLocks, boolean includeExternals,
+                            ListItemCallback callback)
             throws ClientException;
 
+    private final class ListCallbackWrapper implements ListItemCallback
+    {
+        private final ListCallback wrappedCallback;
+
+        ListCallbackWrapper(ListCallback wrappedCallback)
+        {
+            this.wrappedCallback = wrappedCallback;
+        }
+
+        public void doEntry(DirEntry dirent, Lock lock,
+                            String externalParentURL,
+                            String externalTarget)
+        {
+            wrappedCallback.doEntry(dirent, lock);
+        }
+    };
+
+    @Deprecated
+    public void list(String url, Revision revision,
+                     Revision pegRevision, Depth depth, int direntFields,
+                     boolean fetchLocks, ListCallback callback)
+            throws ClientException
+    {
+        list(url, revision, pegRevision, null, depth, direntFields,
+             fetchLocks, false, new ListCallbackWrapper(callback));
+    }
+
     public native void username(String username);
 
     public native void password(String password);
@@ -157,12 +185,24 @@ public class SVNClient implements ISVNCl
 
     public native void setTunnelAgent(TunnelAgent tunnelAgent);
 
+    @Deprecated
+    public void logMessages(String path, Revision pegRevision,
+                            List<RevisionRange> ranges, boolean stopOnCopy,
+                            boolean discoverPath, boolean includeMergedRevisions,
+                            Set<String> revProps, long limit,
+                            LogMessageCallback callback)
+            throws ClientException
+    {
+        logMessages(path, pegRevision, ranges, stopOnCopy, discoverPath,
+                    includeMergedRevisions, revProps, false, limit, callback);
+    }
+
     public native void logMessages(String path, Revision pegRevision,
                                    List<RevisionRange> revisionRanges,
                                    boolean stopOnCopy, boolean discoverPath,
                                    boolean includeMergedRevisions,
-                                   Set<String> revProps, long limit,
-                                   LogMessageCallback callback)
+                                   Set<String> revProps, boolean allRevProps,
+                                   long limit, LogMessageCallback callback)
             throws ClientException;
 
     public native long checkout(String moduleName, String destPath,

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java Wed Nov  7 12:30:06 2018
@@ -160,6 +160,17 @@ public class SVNRepos implements ISVNRep
             throws ClientException;
 
     public void load(File path, InputStream dataInput,
+                     boolean ignoreUUID, boolean forceUUID,
+                     boolean usePreCommitHook, boolean usePostCommitHook,
+                     String relativePath, ReposNotifyCallback callback)
+        throws ClientException
+    {
+        load(path, dataInput, Revision.START, Revision.HEAD,
+             ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
+             false, false, false, relativePath, callback);
+    }
+
+    public void load(File path, InputStream dataInput,
                      Revision start, Revision end,
                      boolean ignoreUUID, boolean forceUUID,
                      boolean usePreCommitHook, boolean usePostCommitHook,
@@ -168,18 +179,20 @@ public class SVNRepos implements ISVNRep
     {
         load(path, dataInput, start, end,
              ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
-             false, false, relativePath, callback);
+             false, false, false, relativePath, callback);
     }
 
     public void load(File path, InputStream dataInput,
+                     Revision start, Revision end,
                      boolean ignoreUUID, boolean forceUUID,
                      boolean usePreCommitHook, boolean usePostCommitHook,
+                     boolean validateProps, boolean ignoreDates,
                      String relativePath, ReposNotifyCallback callback)
-            throws ClientException
+        throws ClientException
     {
-        load(path, dataInput, Revision.START, Revision.HEAD,
+        load(path, dataInput, start, end,
              ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
-             false, false, relativePath, callback);
+             validateProps, ignoreDates, false, relativePath, callback);
     }
 
     public native void load(File path, InputStream dataInput,
@@ -187,6 +200,7 @@ public class SVNRepos implements ISVNRep
                             boolean ignoreUUID, boolean forceUUID,
                             boolean usePreCommitHook, boolean usePostCommitHook,
                             boolean validateProps, boolean ignoreDates,
+                            boolean normalizeProps,
                             String relativePath, ReposNotifyCallback callback)
             throws ClientException;
 

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java Wed Nov  7 12:30:06 2018
@@ -23,6 +23,8 @@
 
 package org.apache.subversion.javahl.callback;
 
+import java.lang.annotation.*;
+
 /**
  * <p>The interface for requesting authentication credentials from the
  * user.  Should the javahl bindings need the matching information,
@@ -40,16 +42,19 @@ public interface UserPasswordCallback
     /**
      * Reject the connection to the server.
      */
+    @Native
     public static final int Reject = 0;
 
     /**
      * Accept the connection to the server <i>once</i>.
      */
+    @Native
     public static final int AcceptTemporary = 1;
 
     /**
      * Accept the connection to the server <i>forever</i>.
      */
+    @Native
     public static final int AcceptPermanently = 2;
 
     /**

Modified: subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java Wed Nov  7 12:30:06 2018
@@ -23,6 +23,7 @@
 
 package org.apache.subversion.javahl.types;
 
+import java.lang.annotation.*;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
@@ -179,6 +180,7 @@ public class Revision implements java.io
     /**
      * Marker revision number for no real revision
      */
+    @Native
     public static final int SVN_INVALID_REVNUM = -1;
 
     /**

Modified: subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Wed Nov  7 12:30:06 2018
@@ -3930,7 +3930,7 @@ public class BasicTests extends SVNTests
     /*
       This is currently commented out, because we don't have an XFail method
       for JavaHL.  The resolution is pending the result of issue #3680:
-      http://subversion.tigris.org/issues/show_bug.cgi?id=3680
+      https://issues.apache.org/jira/browse/SVN-3680
 
     public void testObstructionTolerance()
             throws SubversionException, IOException
@@ -4193,10 +4193,11 @@ public class BasicTests extends SVNTests
         Set<String> revProps = new HashSet<String>(2);
         revProps.add("kfogel");
         revProps.add("cmpilato");
+        // Testing variant with allRevProps = false
         client.logMessages(thisTest.getWCPath(), Revision.getInstance(2),
                 toRevisionRange(Revision.getInstance(2),
                                 Revision.getInstance(2)),
-                false, false, false, revProps, 0,
+                false, false, false, revProps, false, 0,
                 new LogMessageCallback () {
                     public void singleMessage(Set<ChangePath> changedPaths,
                                               long revision,
@@ -4671,13 +4672,10 @@ public class BasicTests extends SVNTests
         }
 
         MyLogMessageCallback callback = new MyLogMessageCallback();
-        Set<String> revProps = new HashSet<String>();
-        revProps.add("svn:log");
-        revProps.add("svn:date");
-        revProps.add("svn:author");
+        // Testing variant with allRevProps = true
         client.logMessages(path, pegRevision, revisionRanges, stopOnCopy,
-                           discoverPath, includeMergedRevisions, revProps,
-                           limit, callback);
+                           discoverPath, includeMergedRevisions, null,
+                           true, limit, callback);
         return callback.getMessages();
     }
 

Modified: subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java Wed Nov  7 12:30:06 2018
@@ -241,10 +241,11 @@ public class ExceptionTests extends SVNT
         {
             List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
             ranges.add(new RevisionRange(null, null));
+            // Testing variant with allRevProps = false
             client.logMessages(thisTest.getWorkingCopy() + "/iota",
                                Revision.getInstance(1), ranges,
                                false, false, false,
-                               null, 2,
+                               null, false, 2,
                                new LogMessageCallback()
                                {
                                     public void singleMessage(

Modified: subversion/branches/ra-git/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/ra-git/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java Wed Nov  7 12:30:06 2018
@@ -3066,7 +3066,7 @@ public class BasicTests extends SVNTests
     /*
       This is currently commented out, because we don't have an XFail method
       for JavaHL.  The resolution is pending the result of issue #3680:
-      http://subversion.tigris.org/issues/show_bug.cgi?id=3680
+      https://issues.apache.org/jira/browse/SVN-3680
     public void testObstructionTolerance()
             throws SubversionException, IOException
     {

Modified: subversion/branches/ra-git/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/include/svn_types.swg?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/include/svn_types.swg Wed Nov  7 12:30:06 2018
@@ -44,6 +44,7 @@
    Known instances of "type **" which are *not* OUTPUT parameters are:
    - svn_stream_checksummed(..., const unsigned char **read_digest,
                                  const unsigned char **write_digest, ...)
+   - svn_*_change_rev_prop2(..., const svn_string_t *const *old_value_p, ...)
 */
 %typemap(in, numinputs=0) SWIGTYPE ** ($*1_ltype temp) "$1 = &temp;";
 
@@ -1107,7 +1108,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
 #ifdef SWIGRUBY
 %typemap(argout) unsigned char digest[ANY] {
   char *digest_string = (char *)svn_md5_digest_to_cstring($1, _global_pool);
-  %append_output(rb_str_new2(digest_string));
+  %append_output(rb_str_new2(digest_string ? digest_string : ""));
 }
 #endif
 

Modified: subversion/branches/ra-git/subversion/bindings/swig/perl/native/Core.pm
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/perl/native/Core.pm?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/perl/native/Core.pm (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/perl/native/Core.pm Wed Nov  7 12:30:06 2018
@@ -613,7 +613,7 @@ The second is if you have $SVN::Error::h
 calls you want to croak on when there is an error, but you don't want to write
 an explicit error handler. For example:
 
-my $result_rev=SVN::Error::croak_on_error($ctx-E<gt>checkout($url,$path,'HEAD',1));
+my $rev = SVN::Error::croak_on_error($ctx-E<gt>checkout($url,$path,'HEAD',1));
 
 If there is no error then croak_on_error will return the arguments passed to it
 unchanged.

Modified: subversion/branches/ra-git/subversion/bindings/swig/perl/native/Makefile.PL.in
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/perl/native/Makefile.PL.in?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/perl/native/Makefile.PL.in (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/perl/native/Makefile.PL.in Wed Nov  7 12:30:06 2018
@@ -90,6 +90,9 @@ my %config = (
                   (map {"-L$_"} @ldpaths),
                   @ldmodules, '-lsvn_swig_perl-1',
                   `$swig -perl -ldflags`)],
+    LDFLAGS => join(' ', (map {"-L$_"} @ldpaths), '@LDFLAGS@ @SWIG_PL_LINK@'),
+    LDDLFLAGS => join(' ', (map {"-L$_"} @ldpaths),
+                      '@LDFLAGS@ @SWIG_PL_LINK@', $Config{lddlflags}),
     test => { TESTS => "$swig_srcdir/perl/native/t/*.t" }
 );
 

Modified: subversion/branches/ra-git/subversion/bindings/swig/perl/native/t/3client.t
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/perl/native/t/3client.t?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/perl/native/t/3client.t (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/perl/native/t/3client.t Wed Nov  7 12:30:06 2018
@@ -1091,8 +1091,8 @@ isa_ok($dirents->{'dir1'},'_p_svn_dirent
 is($dirents->{'dir1'}->kind(),$SVN::Core::node_dir,
    'kind() returns a dir node');
 # TEST
-is($dirents->{'dir1'}->size(),0,
-   'size() returns 0 for a directory');
+is($dirents->{'dir1'}->size(), -1,
+   'size() returns -1 for a directory');
 # TEST
 is($dirents->{'dir1'}->has_props(),1,
    'has_props() returns true');

Modified: subversion/branches/ra-git/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Wed Nov  7 12:30:06 2018
@@ -2578,8 +2578,7 @@ svn_swig_py_make_stream(PyObject *py_io,
   svn_stream_t *stream;
 
   stream = svn_stream_create(py_io, pool);
-  svn_stream_set_read2(stream, NULL /* only full read support */,
-                       read_handler_pyio);
+  svn_stream_set_read2(stream, read_handler_pyio, NULL);
   svn_stream_set_write(stream, write_handler_pyio);
   svn_stream_set_close(stream, close_handler_pyio);
   apr_pool_cleanup_register(pool, py_io, svn_swig_py_stream_destroy,

Modified: subversion/branches/ra-git/subversion/bindings/swig/python/svn/fs.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/python/svn/fs.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/python/svn/fs.py (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/python/svn/fs.py Wed Nov  7 12:30:06 2018
@@ -34,12 +34,15 @@ del _unprefix_names
 # Names that are not to be exported
 import sys as _sys, os as _os, tempfile as _tempfile, subprocess as _subprocess
 try:
-  # Python >=3.0
-  import builtins
-except ImportError:
   # Python <3.0
+  # Check for Python <3.0 first to prevent the presence of the python2-future
+  # package from incorrectly importing Python 3 behavior when it isn't intended.
   import __builtin__ as builtins
+except ImportError:
+  # Python >=3.0
+  import builtins
 import svn.core as _svncore
+import svn.diff as _svndiff
 
 
 def entries(root, path, pool=None):
@@ -56,6 +59,7 @@ class FileDiff:
 
     self.tempfile1 = None
     self.tempfile2 = None
+    self.difftemp  = None
 
     self.root1 = root1
     self.path1 = path1
@@ -76,7 +80,7 @@ class FileDiff:
     return 0
 
   def _dump_contents(self, file, root, path, pool=None):
-    fp = builtins.open(file, 'w+') # avoid namespace clash with
+    fp = builtins.open(file, 'wb') # avoid namespace clash with
                                    # trimmed-down svn_fs_open()
     if path is not None:
       stream = file_contents(root, path, pool)
@@ -108,27 +112,49 @@ class FileDiff:
   def get_pipe(self):
     self.get_files()
 
-    # use an array for the command to avoid the shell and potential
-    # security exposures
-    cmd = ["diff"] \
-          + self.diffoptions \
-          + [self.tempfile1, self.tempfile2]
-
-    # open the pipe, and return the file object for reading from the child.
-    p = _subprocess.Popen(cmd, stdout=_subprocess.PIPE, bufsize=-1,
-                          close_fds=_sys.platform != "win32")
-    return p.stdout
+    # If diffoptions were provided, then the diff command needs to be
+    # called in preference to using the internal Subversion diff.
+    if self.diffoptions is not None:
+      # use an array for the command to avoid the shell and potential
+      # security exposures
+      cmd = ["diff"] \
+            + self.diffoptions \
+            + [self.tempfile1, self.tempfile2]
+
+      # open the pipe, and return the file object for reading from the child.
+      p = _subprocess.Popen(cmd, stdout=_subprocess.PIPE, bufsize=-1,
+                            close_fds=_sys.platform != "win32")
+      return p.stdout
+
+    else:
+      if self.difftemp is None:
+        self.difftemp = _tempfile.mktemp()
+
+        with builtins.open(self.difftemp, "wb") as fp:
+          diffopt = _svndiff.file_options_create()
+          diffobj = _svndiff.file_diff_2(self.tempfile1,
+                                         self.tempfile2,
+                                         diffopt)
+
+          _svndiff.file_output_unified4(fp,
+                                        diffobj,
+                                        self.tempfile1,
+                                        self.tempfile2,
+                                        None, None,
+                                        "utf8",
+                                        None,
+                                        diffopt.show_c_function,
+                                        diffopt.context_size,
+                                        None, None)
+
+      return builtins.open(self.difftemp, "rb")
 
   def __del__(self):
     # it seems that sometimes the files are deleted, so just ignore any
     # failures trying to remove them
-    if self.tempfile1 is not None:
-      try:
-        _os.remove(self.tempfile1)
-      except OSError:
-        pass
-    if self.tempfile2 is not None:
-      try:
-        _os.remove(self.tempfile2)
-      except OSError:
-        pass
+    for tmpfile in [self.tempfile1, self.tempfile2, self.difftemp]:
+      if tmpfile is not None:
+        try:
+          _os.remove(tmpfile)
+        except OSError:
+          pass

Modified: subversion/branches/ra-git/subversion/bindings/swig/python/tests/run_all.py
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/python/tests/run_all.py?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/python/tests/run_all.py (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/python/tests/run_all.py Wed Nov  7 12:30:06 2018
@@ -19,7 +19,7 @@
 #
 #
 import unittest, setup_path
-import mergeinfo, core, client, delta, checksum, pool, ra, wc, repository, \
+import mergeinfo, core, client, delta, checksum, pool, fs, ra, wc, repository, \
        auth, trac.versioncontrol.tests
 from svn.core import svn_cache_config_get, svn_cache_config_set
 
@@ -37,6 +37,7 @@ def suite():
   s.addTest(client.suite())
   s.addTest(delta.suite())
   s.addTest(pool.suite())
+  s.addTest(fs.suite())
   s.addTest(ra.suite())
   s.addTest(wc.suite())
   s.addTest(repository.suite())

Modified: subversion/branches/ra-git/subversion/bindings/swig/ruby/svn/util.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/ruby/svn/util.rb?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/ruby/svn/util.rb (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/ruby/svn/util.rb Wed Nov  7 12:30:06 2018
@@ -36,8 +36,13 @@ module Svn
   module Util #:nodoc:
     module_function
     def to_ruby_class_name(name)
+      # Convert to CamelCase with 'X' for a leading/double/trailing underscore.
       name.to_s.split("_").collect do |x|
-        "#{x[0,1].upcase}#{x[1..-1].downcase}"
+        if x.empty?
+          "X"
+        else
+          x.capitalize
+        end
       end.join("")
     end
 
@@ -70,6 +75,8 @@ module Svn
           target_name = $POSTMATCH
         when /^SWIG_SVN_/
           target_name = $POSTMATCH
+        when /^Svn_(?:#{target_mod.name.split("::").last.downcase}_)?_(.+)_t$/
+          # ignore private types
         when /^Svn_(?:#{target_mod.name.split("::").last.downcase}_)?(.+)_t$/
           target_name = to_ruby_class_name($1)
         when /^Svn_(?:#{target_mod.name.split("::").last.downcase}_)?/

Modified: subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_client.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_client.rb?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_client.rb (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_client.rb Wed Nov  7 12:30:06 2018
@@ -1087,7 +1087,7 @@ class SvnClientTest < Test::Unit::TestCa
   We haven't yet figured out what to expect in the case of an obstruction,
   but it is no longer an error.  Commenting out this test until that
   decision is made (see issue #3680:
-  http://subversion.tigris.org/issues/show_bug.cgi?id=3680)
+  https://issues.apache.org/jira/browse/SVN-3680)
 
   def test_cleanup
     log = "sample log"

Modified: subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_core.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_core.rb?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_core.rb (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_core.rb Wed Nov  7 12:30:06 2018
@@ -472,19 +472,9 @@ EOS
     latest.close
 
     expected = <<-EOD
-<<<<<<< #{modified.path}
-a
- b
-
-||||||| #{original.path}
-a
- b
-c
-=======
 
   b
-c
->>>>>>> #{latest.path}
+
 d
  e
 EOD

Modified: subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_fs.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_fs.rb?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_fs.rb (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_fs.rb Wed Nov  7 12:30:06 2018
@@ -358,7 +358,7 @@ class SvnFsTest < Test::Unit::TestCase
     src = "a\nb\nc\nd\ne\n"
     modified = "A\nb\nc\nd\nE\n"
     result = "a\n\n\n\ne\n"
-    expected = "<<<<<<< .mine\nA\nb\nc\nd\n||||||| .r1\na\nb\nc\nd\n=======\na\n\n\n\n>>>>>>> .r2\nE\n"
+    expected = "A\n\n\n\nE\n"
     path_in_repos = "/#{file}"
     path = File.join(@wc_path, file)
 
@@ -378,10 +378,6 @@ class SvnFsTest < Test::Unit::TestCase
       ctx.up(@wc_path)
       assert_equal(expected, File.open(path){|f| f.read})
 
-      ctx.resolve(:path=>@wc_path,
-                  :conflict_choice=>Svn::Wc::CONFLICT_CHOOSE_THEIRS_CONFLICT)
-      expected = "a\n\n\n\nE\n"
-
       rev2 = ctx.ci(@wc_path).revision
       if use_deprecated_api
         stream = @fs.root(rev2).file_delta_stream(@fs.root(rev1),

Modified: subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_util.rb
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_util.rb?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_util.rb (original)
+++ subversion/branches/ra-git/subversion/bindings/swig/ruby/test/test_util.rb Wed Nov  7 12:30:06 2018
@@ -33,5 +33,6 @@ class SvnUtilTest < Test::Unit::TestCase
     assert_equal("Abc", Svn::Util.to_ruby_class_name("abc"))
     assert_equal("AbcDef", Svn::Util.to_ruby_class_name("abc_def"))
     assert_equal("AbcDef", Svn::Util.to_ruby_class_name("ABC_DEF"))
+    assert_equal("XFoo", Svn::Util.to_ruby_class_name("_foo"))
   end
 end

Modified: subversion/branches/ra-git/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_client_private.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_client_private.h Wed Nov  7 12:30:06 2018
@@ -341,6 +341,77 @@ svn_client__mergeinfo_log(svn_boolean_t
                           apr_pool_t *result_pool,
                           apr_pool_t *scratch_pool);
 
+/** Return a diff processor that will print a Subversion-style
+ * (not git-style) diff.
+ *
+ * @a anchor is optional (may be null), and is the 'anchor' path to prefix
+ * to the diff-processor paths before displaying.
+ *
+ * @a orig_path_1 and @a orig_path_2 are the two main root paths to be
+ * diffed; each may be a URL, a local WC path or a local unversioned path.
+ *
+ * Other arguments are as for svn_client_diff7() etc.
+ */
+svn_error_t *
+svn_client__get_diff_writer_svn(
+                svn_diff_tree_processor_t **diff_processor,
+                const char *anchor,
+                const char *orig_path_1,
+                const char *orig_path_2,
+                const apr_array_header_t *options,
+                const char *relative_to_dir,
+                svn_boolean_t no_diff_added,
+                svn_boolean_t no_diff_deleted,
+                svn_boolean_t show_copies_as_adds,
+                svn_boolean_t ignore_content_type,
+                svn_boolean_t ignore_properties,
+                svn_boolean_t properties_only,
+                svn_boolean_t pretty_print_mergeinfo,
+                const char *header_encoding,
+                svn_stream_t *outstream,
+                svn_stream_t *errstream,
+                svn_client_ctx_t *ctx,
+                apr_pool_t *pool);
+
+/** Output the subtree of @a shelf_version rooted at @a shelf_relpath
+ * as a diff to @a diff_processor.
+ *
+ * ### depth and ignore_ancestry are currently ignored.
+ *
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client__shelf_diff(svn_client__shelf_version_t *shelf_version,
+                       const char *shelf_relpath,
+                       svn_depth_t depth,
+                       svn_boolean_t ignore_ancestry,
+                       const svn_diff_tree_processor_t *diff_processor,
+                       apr_pool_t *scratch_pool);
+
+/*** Editor for diff summary ***/
+
+/* Set *DIFF_PROCESSOR to a diff processor that will report a diff summary
+   to SUMMARIZE_FUNC.
+
+   P_ROOT_RELPATH will return a pointer to a string that must be set,
+   before the processor is called, to a prefix that will be found on
+   every DIFF_PROCESSOR relpath, that will be removed before passing
+   the path to SUMMARIZE_FUNC.
+
+   ORIGINAL_TARGET is not used.
+
+   SUMMARIZE_FUNC is called with SUMMARIZE_BATON as parameter by the
+   created callbacks for each changed item.
+*/
+svn_error_t *
+svn_client__get_diff_summarize_callbacks(
+                        svn_diff_tree_processor_t **diff_processor,
+                        svn_client_diff_summarize_func_t summarize_func,
+                        void *summarize_baton,
+                        apr_pool_t *result_pool,
+                        apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_cmdline_private.h Wed Nov  7 12:30:06 2018
@@ -63,6 +63,7 @@ svn_cmdline__print_xml_prop(svn_stringbu
  * Expects a @c svn_cmdline_prompt_baton2_t to be passed as @a baton.
  *
  * @since New in 1.6.
+ * @deprecated Only used by old libgome-keyring implementation.
  */
 svn_error_t *
 svn_cmdline__auth_gnome_keyring_unlock_prompt(char **keyring_password,
@@ -268,6 +269,15 @@ svn_cmdline__disable_cancellation_handle
 void
 svn_cmdline__cancellation_exit(void);
 
+/** Reads a string from stdin until a newline or EOF is found
+ *
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_cmdline__stdin_readline(const char **result,
+                            apr_pool_t *result_pool,
+                            apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/ra-git/subversion/include/private/svn_dep_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_dep_compat.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_dep_compat.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_dep_compat.h Wed Nov  7 12:30:06 2018
@@ -115,6 +115,28 @@ extern "C" {
 #endif
 
 /**
+ * APR 1 has volatile qualifier bugs in some atomic prototypes that
+ * are fixed in APR 2:
+ *   https://issues.apache.org/bugzilla/show_bug.cgi?id=50731
+ * Subversion code should put the volatile qualifier in the correct
+ * place when declaring variables which means that casting at the call
+ * site is necessary when using APR 1.  No casts should be used with
+ * APR 2 as this allows the compiler to check that the variable has
+ * the correct volatile qualifier.
+ */
+#if APR_VERSION_AT_LEAST(2,0,0)
+#define svn_atomic_casptr(mem, with, cmp) \
+  apr_atomic_casptr((mem), (with), (cmp))
+#define svn_atomic_xchgptr(mem, val) \
+  apr_atomic_xchgptr((mem), (val))
+#else
+#define svn_atomic_casptr(mem, with, cmp) \
+  apr_atomic_casptr((void volatile **)(mem), (with), (cmp))
+#define svn_atomic_xchgptr(mem, val) \
+  apr_atomic_xchgptr((void volatile **)(mem), (val))
+#endif
+
+/**
  * Check at compile time if the Serf version is at least a certain
  * level.
  * @param major The major version component of the version checked

Modified: subversion/branches/ra-git/subversion/include/private/svn_diff_tree.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_diff_tree.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_diff_tree.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_diff_tree.h Wed Nov  7 12:30:06 2018
@@ -321,7 +321,6 @@ svn_diff__tree_processor_create(void *ba
  */ /* Used by libsvn clients repository diff */
 const svn_diff_tree_processor_t *
 svn_diff__tree_processor_reverse_create(const svn_diff_tree_processor_t * processor,
-                                        const char *prefix_relpath,
                                         apr_pool_t *result_pool);
 
 /**

Modified: subversion/branches/ra-git/subversion/include/private/svn_element.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_element.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_element.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_element.h Wed Nov  7 12:30:06 2018
@@ -348,7 +348,7 @@ svn_element__content_t *
 svn_element__tree_get(const svn_element__tree_t *tree,
                       int eid);
 
-svn_error_t *
+void
 svn_element__tree_set(svn_element__tree_t *tree,
                       int eid,
                       const svn_element__content_t *element);

Modified: subversion/branches/ra-git/subversion/include/private/svn_fs_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_fs_private.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_fs_private.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_fs_private.h Wed Nov  7 12:30:06 2018
@@ -183,7 +183,7 @@ svn_fs__editor_commit(svn_revnum_t *revi
  *
  * If there is no mergeinfo, set @a *mergeinfo to NULL.
  *
- * See svn_fs_get_mergeinfo2() but for the meanings of @a inherit and
+ * See svn_fs_get_mergeinfo3() but for the meanings of @a inherit and
  * @a adjust_inheritable_mergeinfo and other details.
  */
 svn_error_t *

Modified: subversion/branches/ra-git/subversion/include/private/svn_io_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_io_private.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_io_private.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_io_private.h Wed Nov  7 12:30:06 2018
@@ -127,6 +127,13 @@ svn_stream__install_get_info(apr_finfo_t
                              apr_int32_t wanted,
                              apr_pool_t *scratch_pool);
 
+/* Internal version of svn_stream_from_aprfile2() supporting the
+   additional TRUNCATE_ON_SEEK argument. */
+svn_stream_t *
+svn_stream__from_aprfile(apr_file_t *file,
+                         svn_boolean_t disown,
+                         svn_boolean_t truncate_on_seek,
+                         apr_pool_t *pool);
 
 #if defined(WIN32)
 

Modified: subversion/branches/ra-git/subversion/include/private/svn_log.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_log.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_log.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_log.h Wed Nov  7 12:30:06 2018
@@ -93,7 +93,7 @@ svn_log__get_file(const char *path, svn_
 const char *
 svn_log__get_dir(const char *path, svn_revnum_t rev,
                  svn_boolean_t want_contents, svn_boolean_t want_props,
-                 apr_uint64_t dirent_fields,
+                 apr_uint32_t dirent_fields,
                  apr_pool_t *pool);
 
 /**
@@ -262,7 +262,7 @@ svn_log__get_inherited_props(const char
 const char *
 svn_log__list(const char *path, svn_revnum_t revision,
               apr_array_header_t *patterns, svn_depth_t depth,
-              apr_uint64_t dirent_fields, apr_pool_t *pool);
+              apr_uint32_t dirent_fields, apr_pool_t *pool);
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/ra-git/subversion/include/private/svn_mergeinfo_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/ra-git/subversion/include/private/svn_mergeinfo_private.h?rev=1846002&r1=1846001&r2=1846002&view=diff
==============================================================================
--- subversion/branches/ra-git/subversion/include/private/svn_mergeinfo_private.h (original)
+++ subversion/branches/ra-git/subversion/include/private/svn_mergeinfo_private.h Wed Nov  7 12:30:06 2018
@@ -52,18 +52,21 @@ svn_rangelist__set_inheritance(svn_range
  * Unlike svn_mergeinfo_parse(), this does not sort the ranges into order
  * or combine adjacent and overlapping ranges.
  *
- * The compaction can be done with svn_rangelist__combine_adjacent_ranges().
+ * The compaction can be done with svn_rangelist__canonicalize().
  */
 svn_error_t *
 svn_rangelist__parse(svn_rangelist_t **rangelist,
                      const char *str,
                      apr_pool_t *result_pool);
 
-/* In-place combines adjacent ranges in a rangelist.
-   SCRATCH_POOL is just used for providing error messages. */
-svn_error_t *
-svn_rangelist__combine_adjacent_ranges(svn_rangelist_t *rangelist,
-                                       apr_pool_t *scratch_pool);
+/* Return TRUE, if all ranges in RANGELIST are in ascending order and do
+* not overlap and are not adjacent.
+*
+* If this returns FALSE, you probaly want to call
+* svn_rangelist__canonicalize().
+*/
+svn_boolean_t
+svn_rangelist__is_canonical(const svn_rangelist_t *rangelist);
 
 /** Canonicalize the @a rangelist: sort the ranges, and combine adjacent or
  * overlapping ranges into single ranges where possible.