You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2014/06/24 23:30:01 UTC

svn commit: r1605201 [1/5] - in /subversion/branches/svn-auth-x509: ./ build/generator/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subve...

Author: stsp
Date: Tue Jun 24 21:29:59 2014
New Revision: 1605201

URL: http://svn.apache.org/r1605201
Log:
On the svn-auth-x509-branch, merge outstanding changes from trunk.

Modified:
    subversion/branches/svn-auth-x509/   (props changed)
    subversion/branches/svn-auth-x509/CHANGES
    subversion/branches/svn-auth-x509/build/generator/gen_win_dependencies.py
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
    subversion/branches/svn-auth-x509/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
    subversion/branches/svn-auth-x509/subversion/bindings/swig/ruby/test/test_client.rb
    subversion/branches/svn-auth-x509/subversion/include/private/svn_string_private.h
    subversion/branches/svn-auth-x509/subversion/include/svn_client.h
    subversion/branches/svn-auth-x509/subversion/include/svn_diff.h
    subversion/branches/svn-auth-x509/subversion/include/svn_fs.h
    subversion/branches/svn-auth-x509/subversion/include/svn_path.h
    subversion/branches/svn-auth-x509/subversion/include/svn_types.h
    subversion/branches/svn-auth-x509/subversion/include/svn_wc.h
    subversion/branches/svn-auth-x509/subversion/libsvn_client/diff.c
    subversion/branches/svn-auth-x509/subversion/libsvn_diff/diff_file.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/cached_data.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/cached_data.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/dag.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/fs.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/hotcopy.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/id.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/id.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/index.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/index.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/low_level.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/low_level.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/pack.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/recovery.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/rev_file.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/rev_file.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/temp_serializer.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/transaction.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/transaction.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/tree.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/util.c
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/util.h
    subversion/branches/svn-auth-x509/subversion/libsvn_fs_fs/verify.c
    subversion/branches/svn-auth-x509/subversion/libsvn_repos/log.c
    subversion/branches/svn-auth-x509/subversion/libsvn_repos/repos.c
    subversion/branches/svn-auth-x509/subversion/libsvn_subr/checksum.c
    subversion/branches/svn-auth-x509/subversion/libsvn_subr/io.c
    subversion/branches/svn-auth-x509/subversion/libsvn_subr/string.c
    subversion/branches/svn-auth-x509/subversion/libsvn_subr/win32_crashrpt.c
    subversion/branches/svn-auth-x509/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/svn-auth-x509/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/svn-auth-x509/subversion/mod_dav_svn/repos.c
    subversion/branches/svn-auth-x509/subversion/svn/log-cmd.c
    subversion/branches/svn-auth-x509/subversion/svn/notify.c
    subversion/branches/svn-auth-x509/subversion/svn/svn.c
    subversion/branches/svn-auth-x509/subversion/svnadmin/svnadmin.c
    subversion/branches/svn-auth-x509/subversion/svnlook/svnlook.c
    subversion/branches/svn-auth-x509/subversion/svnserve/svnserve.c
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/commit_tests.py
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/depth_tests.py
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/diff_tests.py
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/svn-auth-x509/subversion/tests/cmdline/trans_tests.py
    subversion/branches/svn-auth-x509/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
    subversion/branches/svn-auth-x509/subversion/tests/libsvn_subr/dirent_uri-test.c
    subversion/branches/svn-auth-x509/tools/dev/unix-build/Makefile.svn
    subversion/branches/svn-auth-x509/tools/server-side/svn-rep-sharing-stats.c
    subversion/branches/svn-auth-x509/tools/server-side/svnfsfs/load-index-cmd.c

Propchange: subversion/branches/svn-auth-x509/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1603833-1605200

Modified: subversion/branches/svn-auth-x509/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/CHANGES?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/CHANGES (original)
+++ subversion/branches/svn-auth-x509/CHANGES Tue Jun 24 21:29:59 2014
@@ -391,7 +391,7 @@ http://svn.apache.org/repos/asf/subversi
     * javahl: new utility class SVNUtil (r1512354)
     * javahl: serialize init of native library (r1519803)
     * javahl: fix value truncation checks (r1519913)
-    * javahl: Add ISVNClient.info2 which exposes svn_client_info3 (r1527844)
+    * javahl: Add ISVNClient.info which exposes svn_client_info4 (r1603481)
     * javahl: include name of exception class in error messages (r1532117)
     * javahl: simplify JNI environment handling (r1533804)
     * javahl: Revsion.UNSPECIFIED added as alias to Revision.START (r1533928)

Modified: subversion/branches/svn-auth-x509/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/build/generator/gen_win_dependencies.py?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/build/generator/gen_win_dependencies.py (original)
+++ subversion/branches/svn-auth-x509/build/generator/gen_win_dependencies.py Tue Jun 24 21:29:59 2014
@@ -321,7 +321,7 @@ class GenDependenciesBase(gen_base.Gener
     elif os.path.isfile(os.path.join(inc_base, 'apr_version.h')):
       inc_path = inc_base
     else:
-      sys.stderr.write("ERROR: '%s' not found.\n" % version_file_path)
+      sys.stderr.write("ERROR: 'apr_version' not found.\n")
       sys.stderr.write("Use '--with-apr' option to configure APR location.\n")
       sys.exit(1)
 
@@ -429,12 +429,6 @@ class GenDependenciesBase(gen_base.Gener
       sys.exit(1)
 
     version_file_path = os.path.join(inc_path, 'apu_version.h')
-
-    if not os.path.exists(version_file_path):
-      sys.stderr.write("ERROR: '%s' not found.\n" % version_file_path);
-      sys.stderr.write("Use '--with-apr-util' option to configure APR-Util location.\n");
-      sys.exit(1)
-
     txt = open(version_file_path).read()
 
     vermatch = re.search(r'^\s*#define\s+APU_MAJOR_VERSION\s+(\d+)', txt, re.M)
@@ -564,7 +558,7 @@ class GenDependenciesBase(gen_base.Gener
                                                debug_lib_dir = debug_lib_dir,
                                                defines=['XML_STATIC'])
 
-  def _find_httpd(self, show_warning):
+  def _find_httpd(self, show_warnings):
     "Find Apache HTTPD and version"
 
     minimal_httpd_version = (2, 0, 0)
@@ -588,7 +582,7 @@ class GenDependenciesBase(gen_base.Gener
     elif os.path.isfile(os.path.join(inc_base, 'ap_release.h')):
       inc_path = inc_base
     else:
-      if show_warning:
+      if show_warnings:
         print('WARNING: \'ap_release.h\' not found')
         print("Use '--with-httpd' to configure openssl location.");
       return
@@ -612,7 +606,7 @@ class GenDependenciesBase(gen_base.Gener
     httpd_version = '%d.%d.%d' % version
 
     if version < minimal_httpd_version:
-      if show_warning:
+      if show_warnings:
         print("WARNING: httpd %s or higher is required "
                         "(%s found)\n" % (
                           '.'.join(str(v) for v in minimal_httpd_version),
@@ -649,7 +643,7 @@ class GenDependenciesBase(gen_base.Gener
       # Source location
       inc_path = os.path.join(lib_base, 'modules/dav/main')
     else:
-      if show_warning:
+      if show_warnings:
         print("WARNING: Can't find mod_dav.h in the httpd directory")
         return
 
@@ -666,7 +660,7 @@ class GenDependenciesBase(gen_base.Gener
       else:
         debug_lib_dir = None
     else:
-      if show_warning:
+      if show_warnings:
         print("WARNING: Can't find mod_dav.lib in the httpd directory")
         return
 
@@ -836,7 +830,7 @@ class GenDependenciesBase(gen_base.Gener
       else:
         bin_dir = os.path.join(self.openssl_path, 'bin')
     else:
-      if show_warning:
+      if show_warnings:
         print('WARNING: \'opensslv.h\' not found')
         print("Use '--with-openssl' to configure openssl location.");
       return
@@ -1045,7 +1039,7 @@ class GenDependenciesBase(gen_base.Gener
       return
 
     if version < minimal_jdk_version:
-      if show_warning:
+      if show_warnings:
         print('Found java jdk %s, but >= %s is required. '
               'javahl will not be built.\n' % \
               (versionstr, '.'.join(str(v) for v in minimal_jdk_version)))
@@ -1102,7 +1096,7 @@ class GenDependenciesBase(gen_base.Gener
 
     swig_ver = '%d.%d.%d' % (swig_version)
     if swig_version < minimal_swig_version:
-      if show_warning:
+      if show_warnings:
         print('Found swig %s, but >= %s is required. '
               'the swig bindings will not be built.\n' %
               (swig_version, '.'.join(str(v) for v in minimal_swig_version)))
@@ -1167,7 +1161,7 @@ class GenDependenciesBase(gen_base.Gener
 
     return serf_ver_maj, serf_ver_min, serf_ver_patch
 
-  def _find_serf(self, show_warning):
+  def _find_serf(self, show_warnings):
     "Check if serf and its dependencies are available"
 
     minimal_serf_version = (1, 3, 4)
@@ -1193,7 +1187,7 @@ class GenDependenciesBase(gen_base.Gener
       lib_dir = os.path.join(self.serf_path, 'lib')
       debug_lib_dir = None
     else:
-      if show_warning:
+      if show_warnings:
         print('WARNING: \'serf.h\' not found')
         print("Use '--with-serf' to configure serf location.");
       return
@@ -1202,7 +1196,7 @@ class GenDependenciesBase(gen_base.Gener
     serf_version = '.'.join(str(v) for v in version)
 
     if version < minimal_serf_version:
-      if show_warning:
+      if show_warnings:
         print('Found serf %s, but >= %s is required. '
               'ra_serf will not be built.\n' %
               (serf_version, '.'.join(str(v) for v in minimal_serf_version)))
@@ -1222,7 +1216,7 @@ class GenDependenciesBase(gen_base.Gener
                                                 debug_lib_dir=debug_lib_dir,
                                                 defines=defines)
 
-  def _find_sasl(self, show_warning):
+  def _find_sasl(self, show_warnings):
     "Check if sals is available"
 
     minimal_sasl_version = (2, 0, 0)
@@ -1235,7 +1229,7 @@ class GenDependenciesBase(gen_base.Gener
     version_file_path = os.path.join(inc_dir, 'sasl.h')
 
     if not os.path.isfile(version_file_path):
-      if show_warning:
+      if show_warnings:
         print('WARNING: \'%s\' not found' % (version_file_path,))
         print("Use '--with-sasl' to configure sasl location.");
       return
@@ -1255,7 +1249,7 @@ class GenDependenciesBase(gen_base.Gener
     sasl_version = '.'.join(str(v) for v in version)
 
     if version < minimal_sasl_version:
-      if show_warning:
+      if show_warnings:
         print('Found sasl %s, but >= %s is required. '
               'sals support will not be built.\n' %
               (sasl_version, '.'.join(str(v) for v in minimal_serf_version)))
@@ -1280,7 +1274,7 @@ class GenDependenciesBase(gen_base.Gener
                                                dll_name=dll_name,
                                                defines=['SVN_HAVE_SASL'])
 
-  def _find_libintl(self, show_warning):
+  def _find_libintl(self, show_warnings):
     "Find gettext support"
     minimal_libintl_version = (0, 14, 1)
 
@@ -1308,7 +1302,7 @@ class GenDependenciesBase(gen_base.Gener
       lib_name = 'intl.lib'
       dll_name = 'intl.dll'
     else:
-      if (show_warning):
+      if (show_warnings):
         print('WARNING: \'libintl.h\' not found')
         print("Use '--with-libintl' to configure libintl location.")
       return
@@ -1325,7 +1319,7 @@ class GenDependenciesBase(gen_base.Gener
     libintl_version = '.'.join(str(v) for v in version)
 
     if version < minimal_libintl_version:
-      if show_warning:
+      if show_warnings:
         print('Found libintl %s, but >= %s is required.\n' % \
               (libintl_version,
                '.'.join(str(v) for v in minimal_libintl_version)))

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.cpp?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.cpp Tue Jun 24 21:29:59 2014
@@ -510,7 +510,12 @@ void SVNClient::mkdir(Targets &targets, 
                                   ctx, subPool.getPool()), );
 }
 
-void SVNClient::cleanup(const char *path)
+void SVNClient::cleanup(const char *path,
+                        bool break_locks,
+                        bool fix_recorded_timestamps,
+                        bool clear_dav_cache,
+                        bool remove_unused_pristines,
+                        bool include_externals)
 {
     SVN::Pool subPool(pool);
     SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -521,7 +526,13 @@ void SVNClient::cleanup(const char *path
     if (ctx == NULL)
         return;
 
-    SVN_JNI_ERR(svn_client_cleanup(intPath.c_str(), ctx, subPool.getPool()),);
+    SVN_JNI_ERR(svn_client_cleanup2(intPath.c_str(),
+                                    break_locks,
+                                    fix_recorded_timestamps,
+                                    clear_dav_cache,
+                                    remove_unused_pristines,
+                                    include_externals,
+                                    ctx, subPool.getPool()),);
 }
 
 void SVNClient::resolve(const char *path, svn_depth_t depth,
@@ -1479,6 +1490,29 @@ SVNClient::patch(const char *patchPath, 
                                  ctx, subPool.getPool()), );
 }
 
+void SVNClient::vacuum(const char *path,
+                       bool remove_unversioned_items,
+                       bool remove_ignored_items,
+                       bool fix_recorded_timestamps,
+                       bool remove_unused_pristines,
+                       bool include_externals)
+{
+    SVN_JNI_NULL_PTR_EX(path, "path", );
+
+    SVN::Pool subPool(pool);
+    svn_client_ctx_t *ctx = context.getContext(NULL, subPool);
+    if (ctx == NULL)
+        return;
+
+    SVN_JNI_ERR(svn_client_vacuum(path,
+                                  remove_unversioned_items,
+                                  remove_ignored_items,
+                                  fix_recorded_timestamps,
+                                  remove_unused_pristines,
+                                  include_externals,
+                                  ctx, subPool.getPool()), );
+}
+
 jobject
 SVNClient::openRemoteSession(const char* path, int retryAttempts)
 {

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/SVNClient.h Tue Jun 24 21:29:59 2014
@@ -63,6 +63,10 @@ class SVNClient :public SVNBase
 {
  public:
   jobject openRemoteSession(const char* path, int);
+  void vacuum(const char *path,
+              bool remove_unversioned_items, bool remove_ignored_items,
+              bool fix_recorded_timestamps, bool remove_unused_pristines,
+              bool include_externals);
   void patch(const char *patchPath, const char *targetPath, bool dryRun,
              int stripCount, bool reverse, bool ignoreWhitespace,
              bool removeTempfiles, PatchCallback *callback);
@@ -131,7 +135,12 @@ class SVNClient :public SVNBase
                  svn_depth_t depth, const char *nativeEOL);
   void resolve(const char *path, svn_depth_t depth,
                svn_wc_conflict_choice_t choice);
-  void cleanup(const char *path);
+  void cleanup(const char *path,
+               bool break_locks,
+               bool fix_recorded_timestamps,
+               bool clear_dav_cache,
+               bool remove_unused_pristines,
+               bool include_externals);
   void mkdir(Targets &targets, CommitMessage *message, bool makeParents,
              PropertyTable &revprops, CommitCallback *callback);
   void move(Targets &srcPaths, const char *destPath,

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Tue Jun 24 21:29:59 2014
@@ -667,7 +667,10 @@ Java_org_apache_subversion_javahl_SVNCli
 
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_cleanup
-(JNIEnv *env, jobject jthis, jstring jpath)
+(JNIEnv *env, jobject jthis, jstring jpath,
+ jboolean jbreakLocks, jboolean jfixRecordedTimestamps,
+ jboolean jclearDavCache, jboolean jremoveUnusedPristines,
+ jboolean jincludeExternals)
 {
   JNIEntry(SVNClient, cleanup);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -680,7 +683,9 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
-  cl->cleanup(path);
+  cl->cleanup(path, jbreakLocks, jfixRecordedTimestamps,
+              jclearDavCache, jremoveUnusedPristines,
+              jincludeExternals);
 }
 
 JNIEXPORT void JNICALL
@@ -1947,6 +1952,28 @@ Java_org_apache_subversion_javahl_SVNCli
             jremoveTempfiles ? true : false, &callback);
 }
 
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_vacuum
+(JNIEnv *env, jobject jthis, jstring jpath,
+ jboolean jremoveUnversionedItems, jboolean jremoveIgnoredItems,
+ jboolean jfixRecordedTimestamps, jboolean jremoveUnusedPristines,
+ jboolean jincludeExternals)
+{
+  JNIEntry(SVNClient, patch);
+  SVNClient *cl = SVNClient::getCppObject(jthis);
+  if (cl == NULL)
+    {
+      JNIUtil::throwError("bad C++ this");
+      return;
+    }
+
+  JNIStringHolder path(jpath);
+  cl->vacuum(path,
+             jremoveUnversionedItems, jremoveIgnoredItems,
+             jfixRecordedTimestamps, jremoveUnusedPristines,
+             jincludeExternals);
+}
+
 JNIEXPORT jobject JNICALL
 Java_org_apache_subversion_javahl_SVNClient_nativeOpenRemoteSession
 (JNIEnv *env, jobject jthis, jstring jpath, jint jretryAttempts)

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Tue Jun 24 21:29:59 2014
@@ -446,6 +446,30 @@ public interface ISVNClient
      * Recursively cleans up a local directory, finishing any
      * incomplete operations, removing lockfiles, etc.
      * @param path a local directory.
+     * @param breakLocks ### FIXME: Missing docstring in svn_client.h
+     * @param clearDavCache ### FIXME: Missing docstring in svn_client.h
+     * @param removeUnusedPristines ### FIXME: Missing docstring in svn_client.h
+     * @param includeExternals Recurse into externals working copies
+     *        and clean them up, too.
+     * @throws ClientException
+     * @since 1.9
+     */
+    void cleanup(String path,
+                 boolean breakLocks,
+                 boolean fixRecordedTimestamps,
+                 boolean clearDavCache,
+                 boolean removeUnusedPristines,
+                 boolean includeExternals)
+        throws ClientException;
+
+    /**
+     * Recursively cleans up a local directory, finishing any
+     * incomplete operations, removing lockfiles, etc.
+     * <p>
+     * Behaves like the 1.9 version with <code>breakLocks</code> and
+     * <code>includeExternals</code> set to <code>false<code>, and the
+     * other flags to <code>true</code>.
+     * @param path a local directory.
      * @throws ClientException
      */
     void cleanup(String path) throws ClientException;
@@ -1446,28 +1470,10 @@ public interface ISVNClient
     /**
      * Retrieve information about repository or working copy items.
      * <p>
-     * Behaves like {@see ISVNClient#info} with
-     * <code>includeExternals</code> set to <code>fals</code>
-     * @since 1.9
-     */
-    void info2(String pathOrUrl,
-               Revision revision, Revision pegRevision, Depth depth,
-               boolean fetchExcluded, boolean fetchActualOnly,
-               Collection<String> changelists, InfoCallback callback)
-        throws ClientException;
-
-    /**
-     * Retrieve information about repository or working copy items.
-     * <p>
      * Behaves like the 1.9 version, with <code>fetchExcluded</code>
-     * set to <code>false</code> and <code>fetchActualOnly</code> set
-     * to <code>true</code>.
-     * @param pathOrUrl     the path or the url of the item
-     * @param revision      the revision of the item to return
-     * @param pegRevision   the revision to interpret pathOrUrl
-     * @param depth         the depth to recurse
-     * @param changelists   if non-null, filter paths using changelists
-     * @param callback      a callback to receive the infos retrieved
+     * set to <code>false</code>, <code>fetchActualOnly</code> set to
+     * <code>true</code> anf <code>includeExternals</code> set to
+     * <code>false</code>.
      */
     void info2(String pathOrUrl, Revision revision, Revision pegRevision,
                Depth depth, Collection<String> changelists,
@@ -1511,6 +1517,37 @@ public interface ISVNClient
             throws ClientException;
 
     /**
+     * Recursively vacuum a working copy, removing unnecessary data.
+     * <p>
+     * This method will report an error when
+     * <code>removeUnversionedItems</code> or
+     * <code>removeIgnoredItems</code> are set, and the working copy
+     * is already locked. This prevents accidental corruption of the
+     * working copy if this method is invoked while another client is
+     * performing some other operation on the working copy.
+     * @param path The path of the working copy directory.
+     * @param removeUnversionedItems Remove unversioned items from the
+     *        working copy after it has been successfully cleaned up.
+     * @param removeIgnoredItems Remove unversioned items that are
+     *        ignored by Subversion, after the working copy has been
+     *        successfully cleaned up.
+     * @param fixRecordedTimestamps Update timestamps recorded in the
+     *        working copy database to their actual on-disk values.
+     * @param removeUnusedPristines Remove pristine files that are not
+     *        referenced by the working copy.
+     * @param includeExternals Recurse into externals working copies
+     *        and vacuum them, too.
+     * @since 1.9
+     */
+    void vacuum(String path,
+                boolean removeUnversionedItems,
+                boolean removeIgnoredItems,
+                boolean fixRecordedTimestamps,
+                boolean removeUnusedPristines,
+                boolean includeExternals)
+            throws ClientException;
+
+    /**
      * Open a persistent session to a repository.
      * <p>
      * <b>Note:</b> The session object inherits the progress callback,

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java Tue Jun 24 21:29:59 2014
@@ -59,6 +59,7 @@ public interface ISVNConfig
     public static final String LOG_ENCODING              = "log-encoding";
     public static final String USE_COMMIT_TIMES          = "use-commit-times";
     public static final String ENABLE_AUTO_PROPS         = "enable-auto-props";
+    public static final String ENABLE_MAGIC_FILE         = "enable-magic-file";
     public static final String NO_UNLOCK                 = "no-unlock";
     public static final String MIMETYPES_FILE            = "mime-types-file";
     public static final String PRESERVED_CF_EXTS         = "preserved-conflict-file-exts";
@@ -73,6 +74,7 @@ public interface ISVNConfig
     public static final String SECTION_WORKING_COPY  = "working-copy";
     public static final String SQLITE_EXCLUSIVE          = "exclusive-locking";
     public static final String SQLITE_EXCLUSIVE_CLIENTS  = "exclusive-locking-clients";
+    public static final String SQLITE_BUSY_TIMEOUT       = "busy-timeout";
 
     /**
      * Returns a reference to the "servers" configuration category.
@@ -110,6 +112,8 @@ public interface ISVNConfig
     public static final String HTTP_BULK_UPDATES         = "http-bulk-updates";
     public static final String HTTP_MAX_CONNECTIONS      = "http-max-connections";
     public static final String HTTP_CHUNKED_REQUESTS     = "http-chunked-requests";
+    public static final String SERF_LOG_COMPONENTS       = "serf-log-components";
+    public static final String SERF_LOG_LEVEL            = "serf-log-level";
 
     /**
      * "true" value in configuration. One of the values returned by

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Tue Jun 24 21:29:59 2014
@@ -270,8 +270,18 @@ public class SVNClient implements ISVNCl
                              CommitMessageCallback handler, CommitCallback callback)
             throws ClientException;
 
-    public native void cleanup(String path)
-            throws ClientException;
+    public native void cleanup(String path,
+                               boolean breakLocks,
+                               boolean fixRecordedTimestamps,
+                               boolean clearDavCache,
+                               boolean removeUnusedPristines,
+                               boolean includeExternals)
+        throws ClientException;
+
+    public void cleanup(String path) throws ClientException
+    {
+        cleanup(path, false, true, true, true, false);
+    }
 
     public native void resolve(String path, Depth depth,
                                ConflictResult.Choice conflictResult)
@@ -754,17 +764,6 @@ public class SVNClient implements ISVNCl
 
     public void info2(String pathOrUrl, Revision revision,
                       Revision pegRevision, Depth depth,
-                      boolean fetchExcluded, boolean fetchActualOnly,
-                      Collection<String> changelists,
-                      InfoCallback callback)
-            throws ClientException
-    {
-        info(pathOrUrl, revision, pegRevision, depth,
-             fetchExcluded, fetchActualOnly, false, changelists, callback);
-    }
-
-    public void info2(String pathOrUrl, Revision revision,
-                      Revision pegRevision, Depth depth,
                       Collection<String> changelists,
                       InfoCallback callback)
             throws ClientException
@@ -779,6 +778,14 @@ public class SVNClient implements ISVNCl
                              PatchCallback callback)
             throws ClientException;
 
+    public native void vacuum(String wcPath,
+                              boolean removeUnversionedItems,
+                              boolean removeIgnoredItems,
+                              boolean fixRecordedTimestamps,
+                              boolean removeUnusedPristines,
+                              boolean includeExternals)
+            throws ClientException;
+
     public ISVNRemote openRemoteSession(String pathOrUrl)
             throws ClientException, SubversionException
     {

Modified: subversion/branches/svn-auth-x509/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Tue Jun 24 21:29:59 2014
@@ -2278,7 +2278,7 @@ public class BasicTests extends SVNTests
     }
 
     /**
-     * Test the basic SVNClient.info2 functionality.
+     * Test the basic SVNClient.info functionality.
      * @throws Throwable
      * @since 1.2
      */
@@ -4305,8 +4305,9 @@ public class BasicTests extends SVNTests
     {
        final List<Info> infos = new ArrayList<Info>();
 
-       client.info2(pathOrUrl, revision, pegRevision, depth, true, true,
-                     changelists, new InfoCallback () {
+       client.info(pathOrUrl, revision, pegRevision, depth,
+                   true, true, false,
+                   changelists, new InfoCallback () {
             public void singleInfo(Info info)
             { infos.add(info); }
         });

Modified: subversion/branches/svn-auth-x509/subversion/bindings/swig/ruby/test/test_client.rb
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/bindings/swig/ruby/test/test_client.rb?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/bindings/swig/ruby/test/test_client.rb (original)
+++ subversion/branches/svn-auth-x509/subversion/bindings/swig/ruby/test/test_client.rb Tue Jun 24 21:29:59 2014
@@ -179,7 +179,9 @@ class SvnClientTest < Test::Unit::TestCa
 
       infos = []
       ctx.set_notify_func do |notify|
-        infos << [notify.path, notify]
+        if notify.action != Svn::Wc::NOTIFY_COMMIT_FINALIZING
+          infos << [notify.path, notify]
+        end
       end
 
       assert_equal([false, false], dirs_path.collect {|path| path.exist?})
@@ -223,7 +225,9 @@ class SvnClientTest < Test::Unit::TestCa
 
       infos = []
       ctx.set_notify_func do |notify|
-        infos << [notify.path, notify]
+        if notify.action != Svn::Wc::NOTIFY_COMMIT_FINALIZING
+          infos << [notify.path, notify]
+        end
       end
 
       assert_equal([false, false], [dir_path.exist?, child_dir_path.exist?])
@@ -1228,10 +1232,12 @@ class SvnClientTest < Test::Unit::TestCa
       end
       ctx.ci(@wc_path)
 
-      assert_equal([full_path2.to_s].sort,
+      assert_equal([full_path2.to_s, '.'].sort,
                    infos.collect{|path, notify| path}.sort)
       path2_notify = infos.assoc(full_path2.to_s)[1]
       assert(path2_notify.commit_added?)
+      finalizing_notify = infos.assoc('.')[1]
+      assert(finalizing_notify.action == Svn::Wc::NOTIFY_COMMIT_FINALIZING)
       assert_equal(File.open(path1) {|f| f.read},
                    File.open(path2) {|f| f.read})
     end
@@ -1259,12 +1265,16 @@ class SvnClientTest < Test::Unit::TestCa
       end
       ctx.ci(@wc_path)
 
-      assert_equal([path1, path2].sort.collect{|p|File.expand_path(p)},
+      assert_equal([path1, path2].collect do |p|
+                     File.expand_path(p)
+                   end.push('.').sort,
                    infos.collect{|path, notify| path}.sort)
       path1_notify = infos.assoc(File.expand_path(path1))[1]
       assert(path1_notify.commit_deleted?)
       path2_notify = infos.assoc(File.expand_path(path2))[1]
       assert(path2_notify.commit_added?)
+      finalizing_notify = infos.assoc('.')[1]
+      assert(finalizing_notify.action == Svn::Wc::NOTIFY_COMMIT_FINALIZING)
       assert_equal(src, File.open(path2) {|f| f.read})
     end
   end
@@ -1303,7 +1313,9 @@ class SvnClientTest < Test::Unit::TestCa
       paths = notifies.collect do |notify|
         notify.path
       end
-      assert_equal([path1, path2, path2].sort.collect{|p|File.expand_path(p)},
+      assert_equal([path1, path2, path2].collect do |p|
+                     File.expand_path(p)
+                   end.push('.').sort,
                    paths.sort)
 
       deleted_paths = notifies.find_all do |notify|
@@ -1330,6 +1342,13 @@ class SvnClientTest < Test::Unit::TestCa
       assert_equal([path2].sort.collect{|p|File.expand_path(p)},
                    postfix_txdelta_paths.sort)
 
+      finalizing_paths = notifies.find_all do |notify|
+        notify.action == Svn::Wc::NOTIFY_COMMIT_FINALIZING
+      end.collect do |notify|
+        notify.path
+      end
+      assert_equal(['.'], finalizing_paths)
+
       assert_equal(src2, File.open(path2) {|f| f.read})
     end
   end

Modified: subversion/branches/svn-auth-x509/subversion/include/private/svn_string_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/private/svn_string_private.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/private/svn_string_private.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/private/svn_string_private.h Tue Jun 24 21:29:59 2014
@@ -139,6 +139,13 @@ svn_stringbuf__morph_into_string(svn_str
 unsigned long
 svn__strtoul(const char *buffer, const char **end);
 
+/** Like strtol but with a fixed base of 10 and without overflow checks.
+ * This allows the compiler to generate massively faster code.
+ * (E.g. Avoiding locale specific processing)
+ */
+long
+svn__strtol(const char *buffer, const char **end);
+
 /** Number of chars needed to represent signed (19 places + sign + NUL) or
  * unsigned (20 places + NUL) integers as strings.
  */

Modified: subversion/branches/svn-auth-x509/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/svn_client.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/svn_client.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/svn_client.h Tue Jun 24 21:29:59 2014
@@ -4130,9 +4130,23 @@ svn_client_vacuum(const char *dir_abspat
                   apr_pool_t *scratch_pool);
 
 
-/** Recursively cleanup a working copy directory @a dir, finishing any
+/** Recursively cleanup a working copy directory @a dir_abspath, finishing any
  * incomplete operations, removing lockfiles, etc.
  *
+ * If @a break_locks is @c TRUE, existing working copy locks at or below @a
+ * dir_abspath are broken, otherwise a normal write lock is obtained.
+ *
+ * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
+ * timestamps for unmodified files in the working copy, reducing comparision
+ * time on future checks.
+ *
+ * If @a clear_dav_cache is @c TRUE, the caching of DAV information for older
+ * mod_dav served repositories is cleared. This clearing invalidates some
+ * cached information used for pre-HTTPv2 repositories.
+ *
+ * If @a vacuum_pristines is @c TRUE, and @a dir_abspath points to the working
+ * copy root unreferenced files in the pristine store are removed.
+ *
  * If @a include_externals is @c TRUE, recurse into externals and clean
  * them up as well.
  *
@@ -4160,6 +4174,7 @@ svn_client_cleanup2(const char *dir_absp
  *
  * @deprecated Provided for limited backwards compatibility with the 1.8 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_cleanup(const char *dir,
                    svn_client_ctx_t *ctx,

Modified: subversion/branches/svn-auth-x509/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/svn_diff.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/svn_diff.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/svn_diff.h Tue Jun 24 21:29:59 2014
@@ -505,6 +505,7 @@ svn_diff_file_options_create(apr_pool_t 
  * - --ignore-all-space, -w
  * - --ignore-eol-style
  * - --show-c-function, -p @since New in 1.5.
+ * - --context, -U ARG @since New in 1.9.
  * - --unified, -u (for compatibility, does nothing).
  */
 svn_error_t *

Modified: subversion/branches/svn-auth-x509/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/svn_fs.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/svn_fs.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/svn_fs.h Tue Jun 24 21:29:59 2014
@@ -110,6 +110,12 @@ typedef struct svn_fs_t svn_fs_t;
  */
 #define SVN_FS_CONFIG_FSFS_CACHE_NS             "fsfs-cache-namespace"
 
+/** Enable / disable the FSFS format 7 "block read" feature.
+ *
+ * @since New in 1.9.
+ */
+#define SVN_FS_CONFIG_FSFS_BLOCK_READ           "fsfs-block-read"
+
 /* Note to maintainers: if you add further SVN_FS_CONFIG_FSFS_CACHE_* knobs,
    update fs_fs.c:verify_as_revision_before_current_plus_plus(). */
 
@@ -1003,6 +1009,8 @@ typedef struct svn_fs_txn_t svn_fs_txn_t
 /** Allow the client to specify the final svn:date of the revision by
  * setting or deleting the corresponding transaction property rather
  * than have it set automatically when the transaction is committed.
+ *
+ * @since New in 1.9.
  */
 #define SVN_FS_TXN_CLIENT_DATE                   0x00004
 
@@ -2561,6 +2569,8 @@ void svn_fs_lock_target_set_token(svn_fs
  *
  * If the callback returns an error no further callbacks will be made
  * and svn_fs_lock_many/svn_fs_unlock_many will return an error.
+ *
+ * @since New in 1.9.
  */
 typedef svn_error_t *(*svn_fs_lock_callback_t)(void *baton,
                                                const char *path,

Modified: subversion/branches/svn-auth-x509/subversion/include/svn_path.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/svn_path.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/svn_path.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/svn_path.h Tue Jun 24 21:29:59 2014
@@ -722,7 +722,7 @@ svn_path_resolve_repos_relative_url(cons
  * characters have been escaped using the form "\NNN" (where NNN is the
  * octal representation of the byte's ordinal value).
  *
- * @since New in 1.9. */
+ * @since New in 1.8. */
 const char *
 svn_path_illegal_path_escape(const char *path, apr_pool_t *pool);
 

Modified: subversion/branches/svn-auth-x509/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/svn_types.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/svn_types.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/svn_types.h Tue Jun 24 21:29:59 2014
@@ -149,10 +149,16 @@ typedef int svn_boolean_t;
 
 
 
-/** Declaration of the null pointer constant type. */
+/** Declaration of the null pointer constant type.
+ *
+ * @since New in 1.9.
+ */
 struct svn_null_pointer_constant_stdarg_sentinel_t;
 
-/** Null pointer constant used as a sentinel in variable argument lists. */
+/** Null pointer constant used as a sentinel in variable argument lists.
+ *
+ * @since New in 1.9.
+ */
 #define SVN_VA_NULL ((struct svn_null_pointer_constant_stdarg_sentinel_t*)0)
 /* See? (char*)NULL -- They have the same length, but the cast looks ugly. */
 

Modified: subversion/branches/svn-auth-x509/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/include/svn_wc.h?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/include/svn_wc.h (original)
+++ subversion/branches/svn-auth-x509/subversion/include/svn_wc.h Tue Jun 24 21:29:59 2014
@@ -7362,8 +7362,13 @@ svn_wc_get_pristine_copy_path(const char
  * files will be updated, which will improve performance of future is-modified
  * checks.
  *
+ * If @a clear_dav_cache is @c TRUE, the caching of DAV information for older
+ * mod_dav served repositories is cleared. This clearing invalidates some
+ * cached information used for pre-HTTPv2 repositories.
+ *
  * If @a vacuum_pristines is TRUE, try to remove unreferenced pristines from
- * the working copy.
+ * the working copy. (Will not remove anything unless the obtained lock applies
+ * to the entire working copy)
  *
  * If @a cancel_func is non-NULL, invoke it with @a cancel_baton at various
  * points during the operation.  If it returns an error (typically

Modified: subversion/branches/svn-auth-x509/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/libsvn_client/diff.c?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/svn-auth-x509/subversion/libsvn_client/diff.c Tue Jun 24 21:29:59 2014
@@ -1926,6 +1926,13 @@ diff_repos_wc(const char **root_relpath,
       SVN_ERR(svn_wc_get_actual_target2(&anchor, &target, ctx->wc_ctx, path2,
                                         scratch_pool, scratch_pool));
 
+      /* Handle the ugly case where target is ".." */
+      if (*target && !svn_path_is_single_path_component(target))
+        {
+          anchor = svn_dirent_join(anchor, target, scratch_pool);
+          target = "";
+        }
+
       if (root_relpath)
         *root_relpath = apr_pstrdup(result_pool, target);
       if (root_is_dir)

Modified: subversion/branches/svn-auth-x509/subversion/libsvn_diff/diff_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/svn-auth-x509/subversion/libsvn_diff/diff_file.c?rev=1605201&r1=1605200&r2=1605201&view=diff
==============================================================================
--- subversion/branches/svn-auth-x509/subversion/libsvn_diff/diff_file.c (original)
+++ subversion/branches/svn-auth-x509/subversion/libsvn_diff/diff_file.c Tue Jun 24 21:29:59 2014
@@ -1198,6 +1198,7 @@ static const apr_getopt_option_t diff_op
   /* ### For compatibility; we don't support the argument to -u, because
    * ### we don't have optional argument support. */
   { "unified", 'u', 0, NULL },
+  { "context", 'U', 1, NULL },
   { NULL, 0, 0, NULL }
 };
 
@@ -1297,6 +1298,9 @@ svn_diff_file_options_parse(svn_diff_fil
         case 'p':
           options->show_c_function = TRUE;
           break;
+        case 'U':
+          SVN_ERR(svn_cstring_atoi(&options->context_size, opt_arg));
+          break;
         default:
           break;
         }