You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/09/06 21:13:44 UTC

svn commit: r993127 [1/11] - in /subversion/branches/performance: ./ build/ build/generator/ notes/ notes/tree-conflicts/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/src/org...

Author: hwright
Date: Mon Sep  6 19:13:39 2010
New Revision: 993127

URL: http://svn.apache.org/viewvc?rev=993127&view=rev
Log:
On the performance branch:
Merge up to trunk@970000.

Added:
    subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.cpp
      - copied unchanged from r970000, subversion/trunk/subversion/bindings/javahl/native/SVNRepos.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/SVNRepos.h
      - copied unchanged from r970000, subversion/trunk/subversion/bindings/javahl/native/SVNRepos.h
    subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
      - copied unchanged from r970000, subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
      - copied unchanged from r970000, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
      - copied unchanged from r970000, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
    subversion/branches/performance/subversion/svnrdump/   (props changed)
      - copied from r970000, subversion/trunk/subversion/svnrdump/
    subversion/branches/performance/subversion/svnrdump/dump_editor.c
      - copied unchanged from r970000, subversion/trunk/subversion/svnrdump/dump_editor.c
    subversion/branches/performance/subversion/svnrdump/dump_editor.h
      - copied unchanged from r970000, subversion/trunk/subversion/svnrdump/dump_editor.h
    subversion/branches/performance/subversion/svnrdump/svnrdump.1
      - copied unchanged from r970000, subversion/trunk/subversion/svnrdump/svnrdump.1
    subversion/branches/performance/subversion/svnrdump/svnrdump.c
      - copied unchanged from r970000, subversion/trunk/subversion/svnrdump/svnrdump.c
    subversion/branches/performance/subversion/tests/cmdline/input_validation_tests.py
      - copied unchanged from r970000, subversion/trunk/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnrdump_tests.py
      - copied unchanged from r970000, subversion/trunk/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/performance/subversion/tests/libsvn_wc/create_wc_for_upgrade.sh
      - copied unchanged from r970000, subversion/trunk/subversion/tests/libsvn_wc/create_wc_for_upgrade.sh
    subversion/branches/performance/tools/dev/unix-build/README
      - copied unchanged from r970000, subversion/trunk/tools/dev/unix-build/README
Removed:
    subversion/branches/performance/subversion/bindings/javahl/native/SVNAdmin.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/SVNAdmin.h
    subversion/branches/performance/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java
Modified:
    subversion/branches/performance/   (props changed)
    subversion/branches/performance/COMMITTERS
    subversion/branches/performance/Makefile.in
    subversion/branches/performance/build.conf
    subversion/branches/performance/build/generator/gen_win.py
    subversion/branches/performance/build/run_tests.py
    subversion/branches/performance/configure.ac
    subversion/branches/performance/gen-make.py
    subversion/branches/performance/notes/dump-load-format.txt
    subversion/branches/performance/notes/tree-conflicts/all-add-vs-add-tree-conflicts.txt
    subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.h
    subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.h
    subversion/branches/performance/subversion/bindings/javahl/native/LogMessageCallback.cpp
    subversion/branches/performance/subversion/bindings/javahl/native/MessageReceiver.cpp
    subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ChangePath.java
    subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java
    subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
    subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
    subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
    subversion/branches/performance/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
    subversion/branches/performance/subversion/bindings/swig/ruby/test/test_client.rb
    subversion/branches/performance/subversion/include/private/svn_file_handle_cache.h   (props changed)
    subversion/branches/performance/subversion/include/private/svn_opt_private.h
    subversion/branches/performance/subversion/include/private/svn_temp_serializer.h   (props changed)
    subversion/branches/performance/subversion/include/private/svn_wc_private.h
    subversion/branches/performance/subversion/include/svn_client.h
    subversion/branches/performance/subversion/include/svn_diff.h
    subversion/branches/performance/subversion/include/svn_error.h
    subversion/branches/performance/subversion/include/svn_error_codes.h
    subversion/branches/performance/subversion/include/svn_io.h
    subversion/branches/performance/subversion/include/svn_props.h
    subversion/branches/performance/subversion/include/svn_ra.h
    subversion/branches/performance/subversion/include/svn_repos.h
    subversion/branches/performance/subversion/include/svn_wc.h
    subversion/branches/performance/subversion/libsvn_client/add.c
    subversion/branches/performance/subversion/libsvn_client/changelist.c
    subversion/branches/performance/subversion/libsvn_client/cleanup.c
    subversion/branches/performance/subversion/libsvn_client/client.h
    subversion/branches/performance/subversion/libsvn_client/cmdline.c
    subversion/branches/performance/subversion/libsvn_client/commit.c
    subversion/branches/performance/subversion/libsvn_client/commit_util.c
    subversion/branches/performance/subversion/libsvn_client/copy.c
    subversion/branches/performance/subversion/libsvn_client/delete.c
    subversion/branches/performance/subversion/libsvn_client/deprecated.c
    subversion/branches/performance/subversion/libsvn_client/diff.c
    subversion/branches/performance/subversion/libsvn_client/export.c
    subversion/branches/performance/subversion/libsvn_client/externals.c
    subversion/branches/performance/subversion/libsvn_client/merge.c
    subversion/branches/performance/subversion/libsvn_client/patch.c
    subversion/branches/performance/subversion/libsvn_client/prop_commands.c
    subversion/branches/performance/subversion/libsvn_client/repos_diff.c
    subversion/branches/performance/subversion/libsvn_client/revert.c
    subversion/branches/performance/subversion/libsvn_client/switch.c
    subversion/branches/performance/subversion/libsvn_client/update.c
    subversion/branches/performance/subversion/libsvn_diff/parse-diff.c
    subversion/branches/performance/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/performance/subversion/libsvn_fs_fs/structure
    subversion/branches/performance/subversion/libsvn_fs_fs/temp_serializer.c   (props changed)
    subversion/branches/performance/subversion/libsvn_fs_fs/temp_serializer.h   (props changed)
    subversion/branches/performance/subversion/libsvn_fs_util/caching.c   (props changed)
    subversion/branches/performance/subversion/libsvn_ra/compat.c
    subversion/branches/performance/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/performance/subversion/libsvn_ra_neon/commit.c
    subversion/branches/performance/subversion/libsvn_ra_serf/auth.c
    subversion/branches/performance/subversion/libsvn_ra_serf/commit.c
    subversion/branches/performance/subversion/libsvn_ra_serf/win32_auth_sspi.c
    subversion/branches/performance/subversion/libsvn_ra_svn/client.c
    subversion/branches/performance/subversion/libsvn_repos/dump.c
    subversion/branches/performance/subversion/libsvn_repos/repos.c
    subversion/branches/performance/subversion/libsvn_subr/config_win.c
    subversion/branches/performance/subversion/libsvn_subr/deprecated.c
    subversion/branches/performance/subversion/libsvn_subr/io.c
    subversion/branches/performance/subversion/libsvn_subr/opt.c
    subversion/branches/performance/subversion/libsvn_subr/sqlite.c
    subversion/branches/performance/subversion/libsvn_subr/stream.c
    subversion/branches/performance/subversion/libsvn_subr/subst.c
    subversion/branches/performance/subversion/libsvn_subr/svn_file_handle_cache.c   (props changed)
    subversion/branches/performance/subversion/libsvn_subr/svn_temp_serializer.c   (props changed)
    subversion/branches/performance/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/performance/subversion/libsvn_wc/adm_files.c
    subversion/branches/performance/subversion/libsvn_wc/adm_files.h
    subversion/branches/performance/subversion/libsvn_wc/adm_ops.c
    subversion/branches/performance/subversion/libsvn_wc/copy.c
    subversion/branches/performance/subversion/libsvn_wc/deprecated.c
    subversion/branches/performance/subversion/libsvn_wc/lock.c
    subversion/branches/performance/subversion/libsvn_wc/log.c
    subversion/branches/performance/subversion/libsvn_wc/log.h
    subversion/branches/performance/subversion/libsvn_wc/merge.c
    subversion/branches/performance/subversion/libsvn_wc/props.c
    subversion/branches/performance/subversion/libsvn_wc/questions.c
    subversion/branches/performance/subversion/libsvn_wc/status.c
    subversion/branches/performance/subversion/libsvn_wc/translate.c
    subversion/branches/performance/subversion/libsvn_wc/translate.h
    subversion/branches/performance/subversion/libsvn_wc/update_editor.c
    subversion/branches/performance/subversion/libsvn_wc/upgrade.c
    subversion/branches/performance/subversion/libsvn_wc/wc-metadata.sql
    subversion/branches/performance/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/performance/subversion/libsvn_wc/wc_db.c
    subversion/branches/performance/subversion/libsvn_wc/wc_db.h
    subversion/branches/performance/subversion/libsvn_wc/wc_db_pdh.c
    subversion/branches/performance/subversion/libsvn_wc/wc_db_private.h
    subversion/branches/performance/subversion/libsvn_wc/workqueue.c
    subversion/branches/performance/subversion/libsvn_wc/workqueue.h
    subversion/branches/performance/subversion/mod_dav_svn/repos.c
    subversion/branches/performance/subversion/po/fr.po
    subversion/branches/performance/subversion/svn/add-cmd.c
    subversion/branches/performance/subversion/svn/changelist-cmd.c
    subversion/branches/performance/subversion/svn/checkout-cmd.c
    subversion/branches/performance/subversion/svn/cl.h
    subversion/branches/performance/subversion/svn/cleanup-cmd.c
    subversion/branches/performance/subversion/svn/commit-cmd.c
    subversion/branches/performance/subversion/svn/copy-cmd.c
    subversion/branches/performance/subversion/svn/delete-cmd.c
    subversion/branches/performance/subversion/svn/export-cmd.c
    subversion/branches/performance/subversion/svn/import-cmd.c
    subversion/branches/performance/subversion/svn/info-cmd.c
    subversion/branches/performance/subversion/svn/lock-cmd.c
    subversion/branches/performance/subversion/svn/log-cmd.c
    subversion/branches/performance/subversion/svn/main.c
    subversion/branches/performance/subversion/svn/merge-cmd.c
    subversion/branches/performance/subversion/svn/mkdir-cmd.c
    subversion/branches/performance/subversion/svn/move-cmd.c
    subversion/branches/performance/subversion/svn/notify.c
    subversion/branches/performance/subversion/svn/patch-cmd.c
    subversion/branches/performance/subversion/svn/propdel-cmd.c
    subversion/branches/performance/subversion/svn/propedit-cmd.c
    subversion/branches/performance/subversion/svn/propset-cmd.c
    subversion/branches/performance/subversion/svn/resolve-cmd.c
    subversion/branches/performance/subversion/svn/resolved-cmd.c
    subversion/branches/performance/subversion/svn/revert-cmd.c
    subversion/branches/performance/subversion/svn/status-cmd.c
    subversion/branches/performance/subversion/svn/switch-cmd.c
    subversion/branches/performance/subversion/svn/unlock-cmd.c
    subversion/branches/performance/subversion/svn/update-cmd.c
    subversion/branches/performance/subversion/svn/upgrade-cmd.c
    subversion/branches/performance/subversion/svn/util.c
    subversion/branches/performance/subversion/tests/cmdline/basic_tests.py
    subversion/branches/performance/subversion/tests/cmdline/checkout_tests.py
    subversion/branches/performance/subversion/tests/cmdline/commit_tests.py
    subversion/branches/performance/subversion/tests/cmdline/copy_tests.py
    subversion/branches/performance/subversion/tests/cmdline/entries-dump.c
    subversion/branches/performance/subversion/tests/cmdline/export_tests.py
    subversion/branches/performance/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    subversion/branches/performance/subversion/tests/cmdline/lock_tests.py
    subversion/branches/performance/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/performance/subversion/tests/cmdline/merge_tests.py
    subversion/branches/performance/subversion/tests/cmdline/schedule_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests.py
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/copy-and-modify.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/copy-bad-line-endings.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/copy-bad-line-endings.expected.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/copy-from-previous-version-and-modify.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/copy-from-previous-version.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/copy-parent-modify-prop.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/delete-svn-props.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/descend_into_replace.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/descend_into_replace.expected.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/dir_prop_change.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/file-dir-file.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/modified-in-place.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/no-author.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/repo_with_copy_of_root_dir.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/revprops.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/svnsync-move-and-modify.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/tag-empty-trunk.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-dir.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file2.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/tag-with-modified-file.dump
    subversion/branches/performance/subversion/tests/cmdline/svnsync_tests_data/url-encoding-bug.dump
    subversion/branches/performance/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/performance/subversion/tests/cmdline/svntest/factory.py
    subversion/branches/performance/subversion/tests/cmdline/svntest/main.py
    subversion/branches/performance/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/performance/subversion/tests/cmdline/switch_tests.py
    subversion/branches/performance/subversion/tests/cmdline/trans_tests.py
    subversion/branches/performance/subversion/tests/cmdline/update_tests.py
    subversion/branches/performance/subversion/tests/libsvn_diff/parse-diff-test.c
    subversion/branches/performance/subversion/tests/libsvn_wc/db-test.c
    subversion/branches/performance/subversion/tests/libsvn_wc/entries-compat.c
    subversion/branches/performance/subversion/tests/libsvn_wc/pristine-store-test.c
    subversion/branches/performance/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd
    subversion/branches/performance/tools/buildbot/slaves/win32-SharpSvn/svntest-build-bindings.cmd
    subversion/branches/performance/tools/client-side/svn-viewspec.py
    subversion/branches/performance/tools/dev/unix-build/Makefile.svn
    subversion/branches/performance/win-tests.py

Propchange: subversion/branches/performance/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Sep  6 19:13:39 2010
@@ -17,6 +17,7 @@ autogen-standalone.mk
 autom4te.cache
 gen-make.opts
 tests.log
+fails.log
 db4-win32
 db
 *.o

Propchange: subversion/branches/performance/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep  6 19:13:39 2010
@@ -34,3 +34,4 @@
 /subversion/branches/tc_url_rev:874351-874483
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
+/subversion/trunk:962911-970000

Modified: subversion/branches/performance/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/performance/COMMITTERS?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/COMMITTERS [UTF-8] (original)
+++ subversion/branches/performance/COMMITTERS [UTF-8] Mon Sep  6 19:13:39 2010
@@ -1,4 +1,4 @@
-The following people have commit access to the Subversion sources.
+The following people have commit access to the Subversion sources.
 Note that this is not a full list of Subversion's authors, however --
 for that, you'd need to look over the log messages to see all the
 patch contributors.
@@ -29,7 +29,7 @@ Blanket commit access:
            jaa   Jani Averbach <ja...@iki.fi>
     julianfoad   Julian Foad <ju...@wandisco.com>
   jszakmeister   John Szakmeister <jo...@szakmeister.net>
-           ehu   Erik Hülsmann <e....@gmx.net>
+           ehu   Erik Hülsmann <er...@wandisco.com>
         breser   Ben Reser <be...@reser.org>
           maxb   Max Bowsher <ma...@ukf.net>
        dberlin   Daniel Berlin <db...@dberlin.org>
@@ -143,6 +143,7 @@ Commit access for specific areas:
            esr   Eric S. Raymond <es...@thyrsus.com>           (svncutter)
      gmcdonald   Gavin McDonald <ga...@16degrees.com.au>     (build/hudson,
                                                               tools/buildbot)
+      artagnon   Ramkumar Ramachandra <ar...@gmail.com>   (svnrdump)
 
   Translation of message files:
 
@@ -178,6 +179,7 @@ giorgio_valoti   Giorgio Valoti <giorgio
        cacknin   Charles Acknin <ch...@gmail.com>    (svnpatch-diff 
                                                               br.)
         holden   Holden Karau <ho...@pigscanfly.ca>         (scheme-bindings br.)
+       stefan2   Stefan Fuhrmann <st...@alice-dsl.de> (performance br.)
 
   Subprojects that are complete, abandoned or have moved elsewhere:
 

Modified: subversion/branches/performance/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/performance/Makefile.in?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/Makefile.in (original)
+++ subversion/branches/performance/Makefile.in Mon Sep  6 19:13:39 2010
@@ -168,6 +168,8 @@ SVN_ZLIB_INCLUDES = @SVN_ZLIB_INCLUDES@
 
 MKDIR = @MKDIR@
 
+DOXYGEN = @DOXYGEN@
+
 # The EXTRA_ parameters can be used to pass extra flags at 'make' time.
 CFLAGS = @CFLAGS@ $(EXTRA_CFLAGS)
 CXXFLAGS = @CXXFLAGS@ $(EXTRA_CXXFLAGS)
@@ -534,7 +536,7 @@ check-clean:
 	       subversion/tests/libsvn_wc/fake-wc              \
 	       subversion/tests/libsvn_client/test-patch*      \
 	       subversion/tests/svnserveautocheck.pid          \
-	       tests.log
+	       tests.log fails.log
 
 mkdir-init:
 	@list='$(BUILD_DIRS) $(SCHEMA_DIR) doc';         \
@@ -599,7 +601,7 @@ doc: doc-api doc-javahl
 doc-api: mkdir-init
 	( cd $(top_srcdir) && \
 	  sed "s,\(OUTPUT_DIRECTORY *= *\),\1$(abs_builddir)/," \
-	  doc/doxygen.conf | doxygen - )
+	  doc/doxygen.conf | $(DOXYGEN) - )
 
 # Generate API documentation for the JavaHL package.
 doc-javahl:

Modified: subversion/branches/performance/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build.conf?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/build.conf (original)
+++ subversion/branches/performance/build.conf Mon Sep  6 19:13:39 2010
@@ -54,7 +54,7 @@ private-built-includes =
         subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeResources.h
         subversion/bindings/javahl/include/org_apache_subversion_javahl_Path.h
         subversion/bindings/javahl/include/org_apache_subversion_javahl_Revision.h
-        subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNAdmin.h
+        subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h
         subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h
         subversion/bindings/javahl/include/org_apache_subversion_javahl_Version.h
         subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h
@@ -167,6 +167,14 @@ libs = libsvn_wc libsvn_subr apriconv ap
 install = bin
 manpages = subversion/svnversion/svnversion.1
 
+[svnrdump]
+description = Subversion remote repository dumper
+type = exe
+path = subversion/svnrdump
+libs = libsvn_client libsvn_ra libsvn_delta libsvn_subr apr
+install = bin
+manpages = subversion/svnrdump/svnrdump.1
+
 # Support for GNOME Keyring
 [libsvn_auth_gnome_keyring]
 description = Subversion GNOME Keyring Library
@@ -1066,7 +1074,7 @@ libs = libsvn_fs_base libsvn_fs_fs
 [__ALL__]
 type = project
 path = build/win32
-libs = svn svnserve svnadmin svnlook svnversion svndumpfilter
+libs = svn svnserve svnadmin svnlook svnversion svnrdump svndumpfilter
        mod_authz_svn mod_dav_svn svnsync
 
 [__ALL_TESTS__]

Modified: subversion/branches/performance/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/generator/gen_win.py?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/build/generator/gen_win.py (original)
+++ subversion/branches/performance/build/generator/gen_win.py Mon Sep  6 19:13:39 2010
@@ -34,6 +34,7 @@ import fnmatch
 import re
 import subprocess
 import glob
+import string
 import generator.swig.header_wrappers
 import generator.swig.checkout_swig_header
 import generator.swig.external_runtime
@@ -79,6 +80,7 @@ class GeneratorBase(gen_base.GeneratorBa
     self.libintl_path = None
     self.zlib_path = 'zlib'
     self.openssl_path = None
+    self.jdk_path = None
     self.junit_path = None
     self.swig_path = None
     self.vs_version = '2002'
@@ -126,6 +128,8 @@ class GeneratorBase(gen_base.GeneratorBa
       elif opt == '--with-libintl':
         self.libintl_path = val
         self.enable_nls = 1
+      elif opt == '--with-jdk':
+        self.jdk_path = val
       elif opt == '--with-junit':
         self.junit_path = val
       elif opt == '--with-zlib':
@@ -833,6 +837,11 @@ class WinGeneratorBase(GeneratorBase):
     if isinstance(target, gen_base.TargetSWIG):
       fakedefines.append("SWIG_GLOBAL")
 
+    # Expect rb_errinfo() to be avilable in Ruby 1.9+,
+    # rather than ruby_errinfo.
+    if (self.ruby_major_version > 1 or self.ruby_minor_version > 8):
+      fakedefines.extend(["HAVE_RB_ERRINFO"])
+
     if cfg == 'Debug':
       fakedefines.extend(["_DEBUG","SVN_DEBUG"])
     elif cfg == 'Release':
@@ -1207,19 +1216,31 @@ class WinGeneratorBase(GeneratorBase):
     "Find the right Ruby library name to link swig bindings with"
     self.ruby_includes = []
     self.ruby_libdir = None
+    self.ruby_version = None
+    self.ruby_major_version = None
+    self.ruby_minor_version = None
     proc = os.popen('ruby -rrbconfig -e ' + escape_shell_arg(
+                    "puts Config::CONFIG['ruby_version'];"
                     "puts Config::CONFIG['LIBRUBY'];"
                     "puts Config::CONFIG['archdir'];"
                     "puts Config::CONFIG['libdir'];"), 'r')
     try:
-      libruby = proc.readline()[:-1]
-      if libruby:
-        msg = 'Found installed ruby.'
-        self.ruby_lib = libruby
-        self.ruby_includes.append(proc.readline()[:-1])
-        self.ruby_libdir = proc.readline()[:-1]
+      rubyver = proc.readline()[:-1]
+      if rubyver:
+        self.ruby_version = rubyver
+        self.ruby_major_version = string.atoi(self.ruby_version[0])
+        self.ruby_minor_version = string.atoi(self.ruby_version[2])
+        libruby = proc.readline()[:-1]
+        if libruby:
+          msg = 'Found installed ruby %s' % rubyver
+          self.ruby_lib = libruby
+          self.ruby_includes.append(proc.readline()[:-1])
+          self.ruby_libdir = proc.readline()[:-1]
       else:
-        msg = 'Could not detect Ruby version.'
+        msg = 'Could not detect Ruby version, assuming 1.8.'
+        self.ruby_version = "1.8"
+        self.ruby_major_version = 1
+        self.ruby_minor_version = 8
         self.ruby_lib = 'msvcrt-ruby18.lib'
       print('%s\n  Ruby bindings will be linked with %s\n'
              % (msg, self.ruby_lib))
@@ -1242,39 +1263,41 @@ class WinGeneratorBase(GeneratorBase):
       pass
 
   def _find_jdk(self):
-    self.jdk_path = None
-    jdk_ver = None
-    try:
+    if not self.jdk_path:
+      jdk_ver = None
       try:
-        # Python >=3.0
-        import winreg
-      except ImportError:
-        # Python <3.0
-        import _winreg as winreg
-      key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
+        try:
+          # Python >=3.0
+          import winreg
+        except ImportError:
+          # Python <3.0
+          import _winreg as winreg
+        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
                            r"SOFTWARE\JavaSoft\Java Development Kit")
-      # Find the newest JDK version.
-      num_values = winreg.QueryInfoKey(key)[1]
-      for i in range(num_values):
-        (name, value, key_type) = winreg.EnumValue(key, i)
-        if name == "CurrentVersion":
-          jdk_ver = value
-          break
-
-      # Find the JDK path.
-      if jdk_ver is not None:
-        key = winreg.OpenKey(key, jdk_ver)
+        # Find the newest JDK version.
         num_values = winreg.QueryInfoKey(key)[1]
         for i in range(num_values):
           (name, value, key_type) = winreg.EnumValue(key, i)
-          if name == "JavaHome":
-            self.jdk_path = value
+          if name == "CurrentVersion":
+            jdk_ver = value
             break
-      winreg.CloseKey(key)
-    except (ImportError, EnvironmentError):
-      pass
-    if self.jdk_path:
-      print("Found JDK version %s in %s\n" % (jdk_ver, self.jdk_path))
+
+        # Find the JDK path.
+        if jdk_ver is not None:
+          key = winreg.OpenKey(key, jdk_ver)
+          num_values = winreg.QueryInfoKey(key)[1]
+          for i in range(num_values):
+            (name, value, key_type) = winreg.EnumValue(key, i)
+            if name == "JavaHome":
+              self.jdk_path = value
+              break
+        winreg.CloseKey(key)
+      except (ImportError, EnvironmentError):
+        pass
+      if self.jdk_path:
+        print("Found JDK version %s in %s\n" % (jdk_ver, self.jdk_path))
+    else:
+      print("Using JDK in %s\n" % (self.jdk_path))
 
   def _find_swig(self):
     # Require 1.3.24. If not found, assume 1.3.25.

Modified: subversion/branches/performance/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/build/run_tests.py?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/build/run_tests.py (original)
+++ subversion/branches/performance/build/run_tests.py Mon Sep  6 19:13:39 2010
@@ -44,7 +44,7 @@ separated list of test numbers; the defa
 # A few useful constants
 LINE_LENGTH = 40
 
-import os, sys, subprocess
+import os, re, subprocess, sys
 from datetime import datetime
 
 import getopt
@@ -70,7 +70,7 @@ class TestHarness:
   '''Test harness for Subversion tests.
   '''
 
-  def __init__(self, abs_srcdir, abs_builddir, logfile,
+  def __init__(self, abs_srcdir, abs_builddir, logfile, faillogfile,
                base_url=None, fs_type=None, http_library=None,
                server_minor_version=None, verbose=None,
                cleanup=None, enable_sasl=None, parallel=None, config_file=None,
@@ -91,6 +91,7 @@ class TestHarness:
     self.srcdir = abs_srcdir
     self.builddir = abs_builddir
     self.logfile = logfile
+    self.faillogfile = faillogfile
     self.base_url = base_url
     self.fs_type = fs_type
     self.http_library = http_library
@@ -200,6 +201,27 @@ class TestHarness:
       print('  %d test%s FAILED'
             % (len(failed_list), 's'*min(len(failed_list) - 1, 1)))
 
+    # Copy the truly interesting verbose logs to a separate file, for easier
+    # viewing.
+    if xpassed or failed_list:
+      faillog = open(self.faillogfile, 'wb')
+      last_start_lineno = None
+      last_start_re = re.compile('^(FAIL|SKIP|XFAIL|PASS|START|CLEANUP|END):')
+      for lineno, line in enumerate(log_lines):
+        # Iterate the lines.  If it ends a test we're interested in, dump that
+        # test to FAILLOG.  If it starts a test (at all), remember the line
+        # number (in case we need it later).
+        if line in xpassed or line in failed_list:
+          faillog.write('[[[\n')
+          faillog.writelines(log_lines[last_start_lineno : lineno+1])
+          faillog.write(']]]\n\n')
+        if last_start_re.match(line):
+          last_start_lineno = lineno + 1
+      faillog.close()
+    elif os.path.exists(self.faillogfile):
+      print("WARNING: no failures, but '%s' exists from a previous run."
+            % self.faillogfile)
+
     self._close_log()
     return failed
 
@@ -380,10 +402,12 @@ def main():
 
   if log_to_stdout:
     logfile = None
+    faillogfile = None
   else:
     logfile = os.path.abspath('tests.log')
+    faillogfile = os.path.abspath('fails.log')
 
-  th = TestHarness(args[0], args[1], logfile,
+  th = TestHarness(args[0], args[1], logfile, faillogfile,
                    base_url, fs_type, http_library, server_minor_version,
                    verbose, cleanup, enable_sasl, parallel, config_file,
                    fsfs_sharding, fsfs_packing)

Modified: subversion/branches/performance/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/performance/configure.ac?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/configure.ac (original)
+++ subversion/branches/performance/configure.ac Mon Sep  6 19:13:39 2010
@@ -332,6 +332,21 @@ else
     AC_SUBST(TRANG)
 fi
 
+dnl Check for doxygen
+doxygen=yes
+AC_ARG_WITH(doxygen,
+AC_HELP_STRING([--with-doxygen=PATH],
+               [Specify the command to run doxygen]),
+[
+    doxygen="$withval"
+])
+if test "$doxygen" = "yes"; then
+    AC_PATH_PROG(DOXYGEN, doxygen, none)
+else
+    DOXYGEN="$doxygen"
+    AC_SUBST(DOXYGEN)
+fi
+
 
 dnl Check for libraries --------------------
 

Modified: subversion/branches/performance/gen-make.py
URL: http://svn.apache.org/viewvc/subversion/branches/performance/gen-make.py?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/gen-make.py (original)
+++ subversion/branches/performance/gen-make.py Mon Sep  6 19:13:39 2010
@@ -167,6 +167,9 @@ def _usage_exit():
   print("           tell neon to look for ZLib headers and")
   print("           libs in DIR")
   print("")
+  print("  --with-jdk=DIR")
+  print("           look for the java development kit here")
+  print("")
   print("  --with-junit=DIR")
   print("           look for the junit jar here")
   print("           junit is for testing the java bindings")
@@ -241,6 +244,7 @@ if __name__ == '__main__':
                             'with-libintl=',
                             'with-openssl=',
                             'with-zlib=',
+                            'with-jdk=',
                             'with-junit=',
                             'with-swig=',
                             'with-sqlite=',

Modified: subversion/branches/performance/notes/dump-load-format.txt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/notes/dump-load-format.txt?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/notes/dump-load-format.txt (original)
+++ subversion/branches/performance/notes/dump-load-format.txt Mon Sep  6 19:13:39 2010
@@ -23,6 +23,8 @@ following:
 [Text-delta-base-sha1: blob]
 [Text-copy-source-sha1: blob]
 [Text-content-sha1: blob]
+[Prop-content-md5: (<property name>) blob]
+[Prop-content-sha1: (<property name>) blob]
 
     The default value for the boolean headers is "false".  If the value is
     set to "true", then the text and property contents will be treated
@@ -51,6 +53,9 @@ currently used by the loader.  They are 
 Subversion so that future loaders can optionally choose which checksum to
 use for checking for corruption.
 
+Prop-content-md5 and Prop-content-sha1 are written by 1.7-and-later versions,
+and can optionally be used to verify property content upon loading.
+
 ===== SVN DUMPFILE VERSION 2 FORMAT =====
 
 (generated by SVN versions 0.18.0-present, by default)

Modified: subversion/branches/performance/notes/tree-conflicts/all-add-vs-add-tree-conflicts.txt
URL: http://svn.apache.org/viewvc/subversion/branches/performance/notes/tree-conflicts/all-add-vs-add-tree-conflicts.txt?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/notes/tree-conflicts/all-add-vs-add-tree-conflicts.txt (original)
+++ subversion/branches/performance/notes/tree-conflicts/all-add-vs-add-tree-conflicts.txt Mon Sep  6 19:13:39 2010
@@ -1,6 +1,6 @@
 This file describes handling of all add-vs.-add tree conflict situations
-on 2010-jul-01. Maybe someone will update it and put another date here some
-day, maybe not.
+on 2010-jul-20 (previously 2010-jul-01, r959735). Maybe someone will update it
+and put another date here some day, maybe not.
 
 Add-vs.-add tree conflicts handling introduces a new meaning for
 svn_wc__db_status_not_present. Apart from the usual "node deleted and
@@ -23,34 +23,32 @@ all add-vs.-add   | incoming ADD of a   
 tree conflict     | file    | symlink | dir (2) | file    | symlink | dir (2) |
 situations        |co up sw |co up sw |co up sw |co up sw |co up sw |co up sw |
 ------------------+---------+---------+---------+---------+---------+---------+
-locally      file |?C*?C*?C*|?C*?C*?C*|:( :( :( |?C*?C*?C*|?C*?C*?C*|:( :( :( |
-UNVER-    symlink |?C*?C*?C*|?C*?C*?C*|:( :( :( |?C*?C*?C*|?C*?C*?C*|:( :( :( |
-SIONED        dir |?C*?C*?C*|?C*?C*?C*|:( :( :( |?C*?C*?C*|?C*?C*?C*|:( :( :( |
+locally      file |?C*?C*?C*|?C*?C*?C*|?C+?C+?C+|?C*?C*?C*|?C*?C*?C*|?C+?C+?C+|
+UNVER-    symlink |?C*?C*?C*|?C*?C*?C*|?C+?C+?C+|?C*?C*?C*|?C*?C*?C*|?C+?C+?C+|
+SIONED        dir |?C*?C*?C*|?C*?C*?C*|?C+?C+?C+|?C*?C*?C*|?C*?C*?C*|?C+?C+?C+|
 ------------------+---------+---------+---------+---------+---------+---------+
 locally      file |Ex Ex RC*|RC*RC*RC*|:( :( :( |Ex RC*RC*|RC*RC*RC*|:( :( :( |
 ADDED     symlink |RC*RC*RC*|Ex Ex RC*|:( :( :( |RC*RC*RC*|Ex RC*RC*|:( :( :( |
-          (3) dir |:( :( :( |:( :( :( |Ex Ex Ex |:( :( :( |:( :( :( |Ex Ex Ex |
+          (2) dir |:( :( :( |:( :( :( |Ex Ex Ex |:( :( :( |:( :( :( |Ex Ex Ex |
 ------------------+---------+---------+---------+---------+---------+---------+
 DIFFERENT    file |RC*RC*RC*|RC*RC*RC*|:( :( :( |RC*RC*RC*|RC*RC*RC*|:( :( :( |
 COPY      symlink |RC*RC*RC*|RC*RC*RC*|:( :( :( |RC*RC*RC*|RC*RC*RC*|:( :( :( |
-of a      (3) dir |:( :( :( |:( :( :( |AC AC AC |:( :( :( |:( :( :( |AC AC AC |
+of a      (2) dir |:( :( :( |:( :( :( |AC AC AC |:( :( :( |:( :( :( |AC AC AC |
 ------------------+---------+---------+---------+---------+---------+---------+
 IDENTICAL    file |                             |RC*Ex*RC*|         |         |
 COPY of   symlink |         (see above)         |         |RC*Ex*RC*|         |
-a (1)     (3) dir |                             |         |         |AC AC AC |
+a (1)     (2) dir |                             |         |         |AC AC AC |
 
            
-"*" The cases most recently changed are marked with a * on their right.
+"*" The cases changed in r959735 marked with a * on their right.
+"+" The cases most recently changed are marked with a + on their right.
 
 (1) Where both local and incoming are copies and both copies are from the
 exact same copyfrom URL@REV, the node kinds must also match. The colums
 against incoming simple-add are identical to "different copy" and omitted.
 
-(2) Since this patch only modifies add_file() and close_file() for starters,
-these columns are not affected by this patch.
-
-(3) Since we can only deal with replace-by-different-kind properly after we
-moved to single-db, these rows are not affected by this patch.
+(2) Since we can only deal with replace-by-different-kind properly after we
+moved to single-db, some of these rows/columns are still ':(' or 'AC'.
 
 
 In the table above, each cell shows three letter pairs for,
@@ -91,7 +89,7 @@ The letter pairs are:
 So "Ex Ex RC*" would mean:
  "During checkout and update, the local add is merged with the incoming add.
   During switch, an easily resolvable tree conflict is flagged.
-  This patch only changes the 'switch' behavior."
+  r959735 only changes the 'switch' behavior."
 
 A note on checkout: It *is* possible to checkout a URL onto a working copy of
 the same URL, which can have local adds scheduled. Then, checkout presumably

Modified: subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.cpp Mon Sep  6 19:13:39 2010
@@ -349,6 +349,62 @@ CreateJ::Lock(const svn_lock_t *lock)
 }
 
 jobject
+CreateJ::ChangedPath(const char *path, svn_log_changed_path2_t *log_item)
+{
+  JNIEnv *env = JNIUtil::getEnv();
+
+  // Create a local frame for our references
+  env->PushLocalFrame(LOCAL_FRAME_SIZE);
+  if (JNIUtil::isJavaExceptionThrown())
+    return NULL;
+
+  jclass clazzCP = env->FindClass(JAVA_PACKAGE"/ChangePath");
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN(SVN_NO_ERROR);
+
+  static jmethodID midCP = 0;
+  if (midCP == 0)
+    {
+      midCP = env->GetMethodID(clazzCP,
+                               "<init>",
+                               "(Ljava/lang/String;JLjava/lang/String;"
+                               "L"JAVA_PACKAGE"/ChangePath$Action;"
+                               "L"JAVA_PACKAGE"/NodeKind;"
+                               "L"JAVA_PACKAGE"/Tristate;"
+                               "L"JAVA_PACKAGE"/Tristate;)V");
+      if (JNIUtil::isJavaExceptionThrown())
+        POP_AND_RETURN(SVN_NO_ERROR);
+    }
+
+  jstring jpath = JNIUtil::makeJString(path);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN_NULL;
+
+  jstring jcopyFromPath = JNIUtil::makeJString(log_item->copyfrom_path);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN_NULL;
+
+  jobject jaction = EnumMapper::mapChangePathAction(log_item->action);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN_NULL;
+
+  jobject jnodeKind = EnumMapper::mapNodeKind(log_item->node_kind);
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN_NULL;
+
+  jlong jcopyFromRev = log_item->copyfrom_rev;
+
+  jobject jcp = env->NewObject(clazzCP, midCP, jpath, jcopyFromRev,
+                      jcopyFromPath, jaction, jnodeKind,
+                      EnumMapper::mapTristate(log_item->text_modified),
+                      EnumMapper::mapTristate(log_item->props_modified));
+  if (JNIUtil::isJavaExceptionThrown())
+    POP_AND_RETURN_NULL;
+
+  return env->PopLocalFrame(jcp);
+}
+
+jobject
 CreateJ::Status(svn_wc_context_t *wc_ctx, const char *local_abspath,
                 const svn_client_status_t *status, apr_pool_t *pool)
 {

Modified: subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.h (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/CreateJ.h Mon Sep  6 19:13:39 2010
@@ -52,6 +52,9 @@ class CreateJ
   Lock(const svn_lock_t *lock);
 
   static jobject
+  ChangedPath(const char *path, svn_log_changed_path2_t *log_item);
+
+  static jobject
   Status(svn_wc_context_t *wc_ctx, const char *local_abspath,
          const svn_client_status_t *status, apr_pool_t *pool);
 

Modified: subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.cpp Mon Sep  6 19:13:39 2010
@@ -58,6 +58,23 @@ jint EnumMapper::mapCommitMessageStateFl
   return jstateFlags;
 }
 
+jobject EnumMapper::mapChangePathAction(const char action)
+{
+  switch (action)
+    {
+      case 'A':
+        return mapEnum(JAVA_PACKAGE"/ChangePath$Action", 0);
+      case 'D':
+        return mapEnum(JAVA_PACKAGE"/ChangePath$Action", 1);
+      case 'R':
+        return mapEnum(JAVA_PACKAGE"/ChangePath$Action", 2);
+      case 'M':
+        return mapEnum(JAVA_PACKAGE"/ChangePath$Action", 3);
+      default:
+        return NULL;
+    }
+}
+
 /**
  * Map a C notify state constant to the Java constant.
  */

Modified: subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/EnumMapper.h Mon Sep  6 19:13:39 2010
@@ -51,6 +51,7 @@ class EnumMapper
 
   /* Converting from C enum's */
   static jint mapCommitMessageStateFlags(apr_byte_t flags);
+  static jobject mapChangePathAction(const char action);
   static jobject mapNotifyState(svn_wc_notify_state_t state);
   static jobject mapNotifyAction(svn_wc_notify_action_t action);
   static jobject mapReposNotifyNodeAction(svn_node_action action);

Modified: subversion/branches/performance/subversion/bindings/javahl/native/LogMessageCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/LogMessageCallback.cpp?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/LogMessageCallback.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/LogMessageCallback.cpp Mon Sep  6 19:13:39 2010
@@ -91,23 +91,6 @@ LogMessageCallback::singleMessage(svn_lo
         POP_AND_RETURN(SVN_NO_ERROR);
     }
 
-  jclass clazzCP = env->FindClass(JAVA_PACKAGE"/ChangePath");
-  if (JNIUtil::isJavaExceptionThrown())
-    POP_AND_RETURN(SVN_NO_ERROR);
-
-  static jmethodID midCP = 0;
-  if (midCP == 0)
-    {
-      midCP = env->GetMethodID(clazzCP,
-                               "<init>",
-                               "(Ljava/lang/String;JLjava/lang/String;C"
-                               "L"JAVA_PACKAGE"/NodeKind;"
-                               "L"JAVA_PACKAGE"/Tristate;"
-                               "L"JAVA_PACKAGE"/Tristate;)V");
-      if (JNIUtil::isJavaExceptionThrown())
-        POP_AND_RETURN(SVN_NO_ERROR);
-    }
-
   jobject jChangedPaths = NULL;
   if (log_entry->changed_paths)
     {
@@ -122,33 +105,9 @@ LogMessageCallback::singleMessage(svn_lo
           svn_log_changed_path2_t *log_item =
                     (svn_log_changed_path2_t *) svn__apr_hash_index_val(hi);
 
-          jstring jpath = JNIUtil::makeJString(path);
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN(SVN_NO_ERROR);
-
-          jstring jcopyFromPath = JNIUtil::makeJString(log_item->copyfrom_path);
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN(SVN_NO_ERROR);
-
-          jobject jnodeKind = EnumMapper::mapNodeKind(log_item->node_kind);
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN(SVN_NO_ERROR);
-
-          jlong jcopyFromRev = log_item->copyfrom_rev;
-          jchar jaction = log_item->action;
-
-          jobject cp = env->NewObject(clazzCP, midCP, jpath, jcopyFromRev,
-                              jcopyFromPath, jaction, jnodeKind,
-                              EnumMapper::mapTristate(log_item->text_modified),
-                              EnumMapper::mapTristate(log_item->props_modified));
-          if (JNIUtil::isJavaExceptionThrown())
-            POP_AND_RETURN(SVN_NO_ERROR);
+          jobject cp = CreateJ::ChangedPath(path, log_item);
 
           jcps.push_back(cp);
-
-          env->DeleteLocalRef(jnodeKind);
-          env->DeleteLocalRef(jpath);
-          env->DeleteLocalRef(jcopyFromPath);
         }
 
       jChangedPaths = CreateJ::Set(jcps);

Modified: subversion/branches/performance/subversion/bindings/javahl/native/MessageReceiver.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/native/MessageReceiver.cpp?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/native/MessageReceiver.cpp (original)
+++ subversion/branches/performance/subversion/bindings/javahl/native/MessageReceiver.cpp Mon Sep  6 19:13:39 2010
@@ -58,7 +58,7 @@ void MessageReceiver::receiveMessage(con
   static jmethodID mid = 0;
   if (mid == 0)
     {
-      jclass clazz = env->FindClass(JAVA_PACKAGE"/SVNAdmin$MessageReceiver");
+      jclass clazz = env->FindClass(JAVA_PACKAGE"/ISVNAdmin$MessageReceiver");
       if (JNIUtil::isJavaExceptionThrown())
         return;
 

Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ChangePath.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ChangePath.java?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ChangePath.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/apache/subversion/javahl/ChangePath.java Mon Sep  6 19:13:39 2010
@@ -43,7 +43,7 @@ public class ChangePath implements java.
      * @param nodeKind          the kind of the changed path
      */
     public ChangePath(String path, long copySrcRevision, String copySrcPath,
-               char action, NodeKind nodeKind, Tristate textMods,
+               Action action, NodeKind nodeKind, Tristate textMods,
                Tristate propMods)
     {
         this.path = path;
@@ -65,7 +65,7 @@ public class ChangePath implements java.
     private String copySrcPath;
 
     /** 'A'dd, 'D'elete, 'R'eplace, 'M'odify */
-    private char action;
+    private Action action;
 
     /** The kind of the changed path. */
     private NodeKind nodeKind;
@@ -107,7 +107,7 @@ public class ChangePath implements java.
      * Retrieve action performed
      * @return  action performed
      */
-    public char getAction()
+    public Action getAction()
     {
         return action;
     }
@@ -138,4 +138,22 @@ public class ChangePath implements java.
     {
         return propMods;
     }
+
+    /**
+     * Actions which may have occurred to this path.
+     */
+    public enum Action
+    {
+        /** Path was added. */
+        add,
+
+        /** Path was deleted. */
+        delete,
+
+        /** Path was replaced. */
+        replace,
+
+        /** Path was modified. */
+        modify;
+    }
 }

Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java Mon Sep  6 19:13:39 2010
@@ -58,7 +58,12 @@ public class ChangePath implements java.
     public ChangePath(org.apache.subversion.javahl.ChangePath aChangePath)
     {
         this(aChangePath.getPath(), aChangePath.getCopySrcRevision(),
-             aChangePath.getCopySrcPath(), aChangePath.getAction(),
+             aChangePath.getCopySrcPath(),
+              ((aChangePath.getAction() == org.apache.subversion.javahl.ChangePath.Action.add) ? 'A' :
+              ((aChangePath.getAction() == org.apache.subversion.javahl.ChangePath.Action.delete) ? 'D' :
+              ((aChangePath.getAction() == org.apache.subversion.javahl.ChangePath.Action.replace) ? 'R' :
+              ((aChangePath.getAction() == org.apache.subversion.javahl.ChangePath.Action.modify) ? 'M' :
+                ' ')))),
              NodeKind.fromApache(aChangePath.getNodeKind()));
     }
 

Modified: subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java Mon Sep  6 19:13:39 2010
@@ -35,14 +35,14 @@ import java.io.IOException;
  */
 public class SVNAdmin
 {
-    private org.apache.subversion.javahl.SVNAdmin aSVNAdmin;
+    private org.apache.subversion.javahl.SVNRepos aSVNAdmin;
 
     /**
      * Standard empty contructor, builds just the native peer.
      */
     public SVNAdmin()
     {
-        aSVNAdmin = new org.apache.subversion.javahl.SVNAdmin();
+        aSVNAdmin = new org.apache.subversion.javahl.SVNRepos();
         cppAddr = aSVNAdmin.getCppAddr();
     }
 
@@ -244,7 +244,7 @@ public class SVNAdmin
      * interface to receive the messages
      */
     public static interface MessageReceiver
-        extends org.apache.subversion.javahl.SVNAdmin.MessageReceiver
+        extends org.apache.subversion.javahl.ISVNRepos.MessageReceiver
     {
     }
 

Modified: subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Mon Sep  6 19:13:39 2010
@@ -2079,7 +2079,8 @@ public class BasicTests extends SVNTests
         assertEquals("wrong copy source rev", -1,
                       changedApath.getCopySrcRevision());
         assertNull("wrong copy source path", changedApath.getCopySrcPath());
-        assertEquals("wrong action", 'A', changedApath.getAction());
+        assertEquals("wrong action", ChangePath.Action.add,
+                     changedApath.getAction());
         assertEquals("wrong time with getTimeMicros()",
                      lm[0].getTimeMicros()/1000,
                      lm[0].getDate().getTime());
@@ -2855,7 +2856,10 @@ public class BasicTests extends SVNTests
         String aPath = fileToSVNPath(new File(thisTest.getWCPath() + "/A"),
                                      false);
 
-        expectedDiffOutput = NL + "Property changes on: A" + NL +
+        expectedDiffOutput = "Index: A" + NL + sepLine +
+            "--- A\t(revision 1)" + NL +
+            "+++ A\t(working copy)" + NL +
+            NL + "Property changes on: A" + NL +
             underSepLine +
             "Added: testprop" + NL +
             "## -0,0 +1 ##" + NL +
@@ -2871,7 +2875,10 @@ public class BasicTests extends SVNTests
                                  expectedDiffOutput, diffOutput);
 
         // Test diff where relativeToDir and path are the same.
-        expectedDiffOutput = NL + "Property changes on: ." + NL +
+        expectedDiffOutput = "Index: ." + NL + sepLine +
+            "--- .\t(revision 1)" + NL +
+            "+++ .\t(working copy)" + NL +
+            NL + "Property changes on: ." + NL +
             underSepLine +
             "Added: testprop" + NL +
             "## -0,0 +1 ##" + NL +
@@ -3244,6 +3251,11 @@ public class BasicTests extends SVNTests
      * @throws IOException
      * @throws SubversionException
      */
+    /*
+      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
+
     public void testObstructionTolerance()
             throws SubversionException, IOException
     {
@@ -3400,7 +3412,7 @@ public class BasicTests extends SVNTests
                                    backupTest.getWc().getItemContent("A/D/H/omega"));
 
         backupTest.checkStatus();
-    }
+    }*/
 
     /**
      * Test basic blame functionality.  This test marginally tests blame

Modified: subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Mon Sep  6 19:13:39 2010
@@ -47,7 +47,7 @@ class SVNTests extends TestCase
      * our admin object, mostly used for creating,dumping and loading
      * repositories
      */
-    protected ISVNAdmin admin;
+    protected ISVNRepos admin;
 
     /**
      * the subversion client, what we want to test.
@@ -201,11 +201,11 @@ class SVNTests extends TestCase
         if (this.fsType == null)
         {
             this.fsType =
-                System.getProperty("test.fstype", ISVNAdmin.FSFS).toLowerCase();
-            if (!(ISVNAdmin.FSFS.equals(this.fsType) ||
-                  ISVNAdmin.BDB.equals(this.fsType)))
+                System.getProperty("test.fstype", ISVNRepos.FSFS).toLowerCase();
+            if (!(ISVNRepos.FSFS.equals(this.fsType) ||
+                  ISVNRepos.BDB.equals(this.fsType)))
             {
-                this.fsType = ISVNAdmin.FSFS;
+                this.fsType = ISVNRepos.FSFS;
             }
         }
 
@@ -226,7 +226,7 @@ class SVNTests extends TestCase
         createDirectories();
 
         // create and configure the needed subversion objects
-        admin = new SVNAdmin();
+        admin = new SVNRepos();
         initClient();
 
         // build and dump the sample repository

Modified: subversion/branches/performance/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/performance/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java Mon Sep  6 19:13:39 2010
@@ -2738,7 +2738,10 @@ public class BasicTests extends SVNTests
         String aPath = fileToSVNPath(new File(thisTest.getWCPath() + "/A"),
                                      false);
 
-        expectedDiffOutput = NL + "Property changes on: A" + NL +
+        expectedDiffOutput = "Index: A" + NL + sepLine +
+            "--- A\t(revision 1)" + NL +
+            "+++ A\t(working copy)" + NL +
+            NL + "Property changes on: A" + NL +
             underSepLine +
             "Added: testprop" + NL +
             "## -0,0 +1 ##" + NL +
@@ -2753,7 +2756,10 @@ public class BasicTests extends SVNTests
                                  expectedDiffOutput, diffOutput);
 
         // Test diff where relativeToDir and path are the same.
-        expectedDiffOutput = NL + "Property changes on: ." + NL +
+        expectedDiffOutput = "Index: ." + NL + sepLine +
+            "--- .\t(revision 1)" + NL +
+            "+++ .\t(working copy)" + NL +
+            NL + "Property changes on: ." + NL +
             underSepLine +
             "Added: testprop" + NL +
             "## -0,0 +1 ##" + NL +
@@ -3114,6 +3120,10 @@ public class BasicTests extends SVNTests
      * @throws IOException
      * @throws SubversionException
      */
+    /*
+      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
     public void testObstructionTolerance()
             throws SubversionException, IOException
     {
@@ -3262,7 +3272,7 @@ public class BasicTests extends SVNTests
                                    backupTest.getWc().getItemContent("A/D/H/omega"));
 
         backupTest.checkStatus();
-    }
+    }*/
 
     /**
      * Test basic blame functionality.  This test marginally tests blame

Modified: subversion/branches/performance/subversion/bindings/swig/ruby/test/test_client.rb
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/bindings/swig/ruby/test/test_client.rb?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/bindings/swig/ruby/test/test_client.rb (original)
+++ subversion/branches/performance/subversion/bindings/swig/ruby/test/test_client.rb Mon Sep  6 19:13:39 2010
@@ -1079,6 +1079,12 @@ class SvnClientTest < Test::Unit::TestCa
     end
   end
 
+=begin
+  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)
+
   def test_cleanup
     log = "sample log"
     file = "sample.txt"
@@ -1124,6 +1130,7 @@ class SvnClientTest < Test::Unit::TestCa
       end
     end
   end
+=end
 
   def test_relocate
     log = "sample log"

Propchange: subversion/branches/performance/subversion/include/private/svn_file_handle_cache.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep  6 19:13:39 2010
@@ -0,0 +1 @@
+/subversion/trunk/subversion/include/private/svn_file_handle_cache.h:962911-970000

Modified: subversion/branches/performance/subversion/include/private/svn_opt_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_opt_private.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_opt_private.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_opt_private.h Mon Sep  6 19:13:39 2010
@@ -66,7 +66,6 @@ svn_opt__split_arg_at_peg_revision(const
 /* Attempt to transform URL_IN, which is a URL-like user input, into a
  * valid URL:
  *   - escape IRI characters and some other non-URI characters
- *   - check that only valid URI characters remain
  *   - check that no back-path ("..") components are present
  *   - canonicalize the separator ("/") characters
  * URL_IN is in UTF-8 encoding and has no peg revision specifier.

Propchange: subversion/branches/performance/subversion/include/private/svn_temp_serializer.h
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep  6 19:13:39 2010
@@ -0,0 +1 @@
+/subversion/trunk/subversion/include/private/svn_temp_serializer.h:962911-970000

Modified: subversion/branches/performance/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/private/svn_wc_private.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/performance/subversion/include/private/svn_wc_private.h Mon Sep  6 19:13:39 2010
@@ -626,25 +626,26 @@ svn_wc__node_get_info_bits(apr_time_t *t
 
 
 /**
- * Recursively acquire write locks for @a local_abspath if
- * @a anchor_abspath is NULL.  If @a anchor_abspath is not NULL then
- * recursively acquire write locks for the anchor of @a local_abspath
- * and return the anchor path in @a *anchor_abspath.  Use @a wc_ctx
- * for working copy access.
+ * Acquire a recursive write lock for @a local_abspath or if @a lock_anchor
+ * is true, determine if @a local_abspath has an anchor that should be locked
+ * instead. Store the obtained lock in @a wc_ctx.
+ *
+ * If @a lock_root_abspath is not NULL, store the root of the lock in
+ * @a *lock_root_abspath. If @a lock_root_abspath is NULL, then @a
+ * local_abspath must be a versioned directory and @a lock_anchor must be
+ * FALSE.
  *
  * Returns @c SVN_ERR_WC_LOCKED if an existing lock is encountered, in
  * which case any locks acquired will have been released.
  *
- * If @a *anchor_abspath is not NULL it will be set even when
- * SVN_ERR_WC_LOCKED is returned.
- *
- * ### @a anchor_abspath should be removed when we move to centralised
- * ### metadata as it will be unnecessary.
+ * If @a lock_anchor is TRUE and @a lock_root_abspath is not NULL, @a
+ * lock_root_abspath will be set even when SVN_ERR_WC_LOCKED is returned.
  */
 svn_error_t *
-svn_wc__acquire_write_lock(const char **anchor_abspath,
+svn_wc__acquire_write_lock(const char **lock_root_abspath,
                            svn_wc_context_t *wc_ctx,
                            const char *local_abspath,
+                           svn_boolean_t lock_anchor,
                            apr_pool_t *result_pool,
                            apr_pool_t *scratch_pool);
 
@@ -653,6 +654,9 @@ svn_wc__acquire_write_lock(const char **
  * Recursively release write locks for @a local_abspath, using @a wc_ctx
  * for working copy access.  Only locks held by @a wc_ctx are released.
  * Locks are not removed if work queue items are present.
+ *
+ * If @a local_abspath is not the root of an owned SVN_ERR_WC_NOT_LOCKED
+ * is returned.
  */
 svn_error_t *
 svn_wc__release_write_lock(svn_wc_context_t *wc_ctx,
@@ -668,6 +672,10 @@ typedef svn_error_t *(*svn_wc__with_writ
 /** Call function @a func while holding a write lock on
  * @a local_abspath. The @a baton, and @a result_pool and
  * @a scratch_pool, is passed @a func.
+ *
+ * If @a lock_anchor is TRUE, determine if @a local_abspath has an anchor
+ * that should be locked instead.
+ *
  * Use @a wc_ctx for working copy access.
  * The lock is guaranteed to be released after @a func returns.
  */
@@ -676,6 +684,7 @@ svn_wc__call_with_write_lock(svn_wc__wit
                              void *baton,
                              svn_wc_context_t *wc_ctx,
                              const char *local_abspath,
+                             svn_boolean_t lock_anchor,
                              apr_pool_t *result_pool,
                              apr_pool_t *scratch_pool);
 

Modified: subversion/branches/performance/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_client.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_client.h (original)
+++ subversion/branches/performance/subversion/include/svn_client.h Mon Sep  6 19:13:39 2010
@@ -947,6 +947,17 @@ typedef struct svn_client_ctx_t
    * @since New in 1.7.  */
   svn_wc_context_t *wc_ctx;
 
+  /** A commit callback to call when a commit succeeds.
+   * @note There is no @a commit_callback member; this is named
+   * @a commit_callback2 to reflect its type.
+   * 
+   * @since New in 1.7.
+   */
+  svn_commit_callback2_t commit_callback2;
+
+  /** Callback baton for #commit_callback2. */
+  void *commit_baton;
+
 } svn_client_ctx_t;
 
 /** Initialize a client context.
@@ -1450,8 +1461,7 @@ svn_client_add(const char *path,
  *
  * If @a paths contains URLs, use the authentication baton in @a ctx
  * and @a message to immediately attempt to commit the creation of the
- * directories in @a paths in the repository.  If the commit succeeds,
- * allocate (in @a pool) and populate @a *commit_info_p.
+ * directories in @a paths in the repository.
  *
  * Else, create the directories on disk, and attempt to schedule them
  * for addition (using svn_client_add(), whose docstring you should
@@ -1475,8 +1485,27 @@ svn_client_add(const char *path,
  * @a ctx->notify_baton2 and the path of the new directory.  Note that this is
  * only called for items added to the working copy.
  *
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_mkdir4(const apr_array_header_t *paths,
+                  svn_boolean_t make_parents,
+                  const apr_hash_t *revprop_table,
+                  svn_client_ctx_t *ctx,
+                  apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_mkdir4(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.4 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_mkdir3(svn_commit_info_t **commit_info_p,
                   const apr_array_header_t *paths,
@@ -1526,9 +1555,7 @@ svn_client_mkdir(svn_client_commit_info_
  * If the paths in @a paths are URLs, use the authentication baton in
  * @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to
  * immediately attempt to commit a deletion of the URLs from the
- * repository.  If the commit succeeds, allocate (in @a pool) and
- * populate @a *commit_info_p.  Every path must belong to the same
- * repository.
+ * repository.  Every path must belong to the same repository.
  *
  * Else, schedule the working copy paths in @a paths for removal from
  * the repository.  Each path's parent must be under revision control.
@@ -1561,8 +1588,28 @@ svn_client_mkdir(svn_client_commit_info_
  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the deleted
  * item.
  *
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_delete4(const apr_array_header_t *paths,
+                   svn_boolean_t force,
+                   svn_boolean_t keep_local,
+                   const apr_hash_t *revprop_table,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_delete4(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_delete3(svn_commit_info_t **commit_info_p,
                    const apr_array_header_t *paths,
@@ -1612,8 +1659,7 @@ svn_client_delete(svn_client_commit_info
 /** Import file or directory @a path into repository directory @a url at
  * head, authenticating with the authentication baton cached in @a ctx,
  * and using @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to get a log message
- * for the (implied) commit.  Set @a *commit_info_p to the results of the
- * commit, allocated in @a pool.  If some components of @a url do not exist
+ * for the (implied) commit.  If some components of @a url do not exist
  * then create parent directories as necessary.
  *
  * This function reads an unversioned tree from disk and skips any ".svn"
@@ -1665,8 +1711,30 @@ svn_client_delete(svn_client_commit_info
  * If @a ignore_unknown_node_types is @c FALSE, ignore files of which the
  * node type is unknown, such as device files and pipes.
  *
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_import4(const char *path,
+                   const char *url,
+                   svn_depth_t depth,
+                   svn_boolean_t no_ignore,
+                   svn_boolean_t ignore_unknown_node_types,
+                   const apr_hash_t *revprop_table,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_import4(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_import3(svn_commit_info_t **commit_info_p,
                    const char *path,
@@ -1767,12 +1835,34 @@ svn_client_import(svn_client_commit_info
  *
  * Use @a pool for any temporary allocations.
  *
- * If no error is returned and @a (*commit_info_p)->revision is set to
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_commit5(const apr_array_header_t *targets,
+                   svn_depth_t depth,
+                   svn_boolean_t keep_locks,
+                   svn_boolean_t keep_changelists,
+                   const apr_array_header_t *changelists,
+                   const apr_hash_t *revprop_table,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_commit5(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
+ * Also, if no error is returned and @a (*commit_info_p)->revision is set to
  * #SVN_INVALID_REVNUM, then the commit was a no-op; nothing needed to
  * be committed.
  *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_commit4(svn_commit_info_t **commit_info_p,
                    const apr_array_header_t *targets,
@@ -2207,9 +2297,6 @@ svn_client_status(svn_revnum_t *result_r
  * If @a revprops is NULL, retrieve all revprops; else, retrieve only the
  * revprops named in the array (i.e. retrieve none if the array is empty).
  *
- * If @a start->kind or @a end->kind is #svn_opt_revision_unspecified,
- * return the error #SVN_ERR_CLIENT_BAD_REVISION.
- *
  * Use @a pool for any temporary allocation.
  *
  * @par Important:
@@ -3528,10 +3615,7 @@ typedef struct svn_client_copy_source_t
  *
  * If @a dst_path is a URL, use the authentication baton
  * in @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to immediately
- * attempt to commit the copy action in the repository.  If the commit
- * succeeds, allocate (in @a pool) and populate @a *commit_info_p.  If
- * @a dst_path is not a URL, and the copy succeeds, set @a
- * *commit_info_p to @c NULL.
+ * attempt to commit the copy action in the repository.
  *
  * If @a dst_path is not a URL, then this is just a variant of
  * svn_client_add(), where the @a sources are scheduled for addition
@@ -3558,8 +3642,30 @@ typedef struct svn_client_copy_source_t
  * for each item added at the new location, passing the new, relative path of
  * the added item.
  *
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_copy6(const apr_array_header_t *sources,
+                 const char *dst_path,
+                 svn_boolean_t copy_as_child,
+                 svn_boolean_t make_parents,
+                 svn_boolean_t ignore_externals,
+                 const apr_hash_t *revprop_table,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_copy6(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
  * @since New in 1.6.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_copy5(svn_commit_info_t **commit_info_p,
                  const apr_array_header_t *sources,
@@ -3667,8 +3773,7 @@ svn_client_copy(svn_client_commit_info_t
  *   - The authentication baton in @a ctx and @a ctx->log_msg_func/@a
  *     ctx->log_msg_baton are used to commit the move.
  *
- *   - The move operation will be immediately committed.  If the
- *     commit succeeds, allocate (in @a pool) and populate @a *commit_info_p.
+ *   - The move operation will be immediately committed.
  *
  * If @a src_paths are working copy paths:
  *
@@ -3687,8 +3792,6 @@ svn_client_copy(svn_client_commit_info_t
  *     items and @a force is not set, the move will fail. If @a force is set
  *     such items will be removed.
  *
- *   - If the move succeeds, set @a *commit_info_p to @c NULL.
- *
  * The parent of @a dst_path must already exist.
  *
  * If @a src_paths has only one item, attempt to move it to @a dst_path.  If
@@ -3726,8 +3829,30 @@ svn_client_copy(svn_client_commit_info_t
  *
  * ### Is this really true?  What about svn_wc_notify_commit_replaced()? ###
  *
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_move6(const apr_array_header_t *src_paths,
+                 const char *dst_path,
+                 svn_boolean_t force,
+                 svn_boolean_t move_as_child,
+                 svn_boolean_t make_parents,
+                 const apr_hash_t *revprop_table,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_move6(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_move5(svn_commit_info_t **commit_info_p,
                  const apr_array_header_t *src_paths,
@@ -3846,8 +3971,7 @@ svn_client_move(svn_client_commit_info_t
  * supported on URLs.  The authentication baton in @a ctx and @a
  * ctx->log_msg_func3/@a ctx->log_msg_baton3 will be used to
  * immediately attempt to commit the property change in the
- * repository.  If the commit succeeds, allocate (in @a pool) and
- * populate @a *commit_info_p.
+ * repository.
  *
  * If @a propname is an svn-controlled property (i.e. prefixed with
  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
@@ -3875,10 +3999,34 @@ svn_client_move(svn_client_commit_info_t
  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
  * ctx->cancel_baton at various places during the operation.
  *
+ * If @a ctx->commit_callback2 is non-NULL, then for each successful commit,
+ * call @a ctx->commit_callback2 with @a ctx->commit_baton and a
+ * #svn_commit_info_t for the commit.
+ *
  * Use @a pool for all memory allocation.
  *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_client_propset4(const char *propname,
+                    const svn_string_t *propval,
+                    const char *target,
+                    svn_depth_t depth,
+                    svn_boolean_t skip_checks,
+                    svn_revnum_t base_revision_for_url,
+                    const apr_array_header_t *changelists,
+                    const apr_hash_t *revprop_table,
+                    svn_client_ctx_t *ctx,
+                    apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_propset4(), but returns the @a commit_info_p directly,
+ * rather than through @a ctx->commit_callback2.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_propset3(svn_commit_info_t **commit_info_p,
                     const char *propname,
@@ -3891,7 +4039,6 @@ svn_client_propset3(svn_commit_info_t **
                     const apr_hash_t *revprop_table,
                     svn_client_ctx_t *ctx,
                     apr_pool_t *pool);
-
 /**
  * Like svn_client_propset3(), but with @a base_revision_for_url
  * always #SVN_INVALID_REVNUM; @a commit_info_p always @c NULL; @a

Modified: subversion/branches/performance/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_diff.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_diff.h (original)
+++ subversion/branches/performance/subversion/include/svn_diff.h Mon Sep  6 19:13:39 2010
@@ -777,6 +777,7 @@ svn_diff_mem_string_output_merge(svn_str
  */
 typedef enum svn_diff_operation_kind_e
 {
+  svn_diff_op_unchanged,
   svn_diff_op_added,
   svn_diff_op_deleted,
   svn_diff_op_copied,
@@ -933,6 +934,22 @@ svn_linenum_t
 svn_diff_hunk_get_trailing_context(const svn_hunk_t *hunk);
 
 /**
+ * Data type to manage parsing of properties in patches.
+ * 
+ * @since New in 1.7. */
+typedef struct svn_prop_patch_t {
+  const char *name;
+
+  /** Represents the operation performed on the property */
+  svn_diff_operation_kind_t operation;
+
+  /**
+   * An array containing an svn_hunk_t object for each hunk parsed from the
+   * patch associated with our property name */
+  apr_array_header_t *hunks;
+} svn_prop_patch_t;
+
+/**
  * Data type to manage parsing of patches.
  *
  * @since New in 1.7. */
@@ -956,9 +973,9 @@ typedef struct svn_patch_t {
   apr_array_header_t *hunks;
 
   /**
-   * A hash table containing an array of svn_hunk_t object for each property
-   * parsed from the patch. The property names act as keys.  */
-  apr_hash_t *property_hunks;
+   * A hash table keyed by property names containing svn_patch_property_t
+   * object for each property parsed from the patch. */
+  apr_hash_t *prop_patches;
 
   /**
    * Represents the operation performed on the file. */

Modified: subversion/branches/performance/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_error.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_error.h (original)
+++ subversion/branches/performance/subversion/include/svn_error.h Mon Sep  6 19:13:39 2010
@@ -444,6 +444,9 @@ svn_error_t *svn_error_purge_tracing(svn
     }                                                           \
   } while (0)
 
+/** Report a "Not implemented" malfunction.  Internal use only. */
+#define SVN__NOT_IMPLEMENTED() \
+  return svn_error__malfunction(TRUE, __FILE__, __LINE__, "Not implemented.")
 
 /** A helper function for the macros that report malfunctions. Handle a
  * malfunction by calling the current "malfunction handler" which may have

Modified: subversion/branches/performance/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_error_codes.h?rev=993127&r1=993126&r2=993127&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/performance/subversion/include/svn_error_codes.h Mon Sep  6 19:13:39 2010
@@ -289,13 +289,8 @@ SVN_ERROR_START
              "Unrecognized stream data")
 
   /** @since New in 1.7. */
-  SVN_ERRDEF(SVN_ERR_STREAM_RESET_NOT_SUPPORTED,
-             SVN_ERR_STREAM_CATEGORY_START + 3,
-             "Stream doesn't support resetting")
-
-  /** @since New in 1.7. */
   SVN_ERRDEF(SVN_ERR_STREAM_SEEK_NOT_SUPPORTED,
-             SVN_ERR_STREAM_CATEGORY_START + 4,
+             SVN_ERR_STREAM_CATEGORY_START + 3,
              "Stream doesn't support seeking")
 
   /* node errors */
@@ -1313,6 +1308,17 @@ SVN_ERROR_START
              SVN_ERR_MISC_CATEGORY_START + 32,
              "Unsupported schema found in SQLite db")
 
+/** @since New in 1.7. */
+  SVN_ERRDEF(SVN_ERR_SQLITE_BUSY,
+             SVN_ERR_MISC_CATEGORY_START + 33,
+             "The SQLite db is busy")
+
+/** @since New in 1.7. */
+  SVN_ERRDEF(SVN_ERR_SQLITE_RESETTING_FOR_ROLLBACK,
+             SVN_ERR_MISC_CATEGORY_START + 34,
+             "SQLite busy at transaction rollback; "
+             "resetting all busy SQLite statements to allow rollback")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,