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/28 19:35:26 UTC

svn commit: r1002283 [1/10] - in /subversion/branches/javahl-ra: ./ build/ notes/ notes/http-and-webdav/ notes/wc-ng/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/src/org/tig...

Author: hwright
Date: Tue Sep 28 17:35:22 2010
New Revision: 1002283

URL: http://svn.apache.org/viewvc?rev=1002283&view=rev
Log:
On the javahl-ra branch:
Bring up-to-date with trunk.

Added:
    subversion/branches/javahl-ra/notes/wc-ng/nodes
      - copied unchanged from r1002279, subversion/trunk/notes/wc-ng/nodes
    subversion/branches/javahl-ra/subversion/libsvn_ra/debug_reporter.c
      - copied unchanged from r1002279, subversion/trunk/subversion/libsvn_ra/debug_reporter.c
    subversion/branches/javahl-ra/subversion/libsvn_ra/debug_reporter.h
      - copied unchanged from r1002279, subversion/trunk/subversion/libsvn_ra/debug_reporter.h
    subversion/branches/javahl-ra/subversion/tests/cmdline/atomic-ra-revprop-change.c
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/atomic-ra-revprop-change.c
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/copy-bad-line-endings.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/copy-bad-line-endings.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/copy-bad-line-endings.expected.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/copy-bad-line-endings.expected.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/copy-from-previous-version-and-modify.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/copy-from-previous-version-and-modify.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/copy-parent-modify-prop.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/copy-parent-modify-prop.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/descend-into-replace.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/descend-into-replace.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/descend-into-replace.expected.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/descend-into-replace.expected.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/dir-prop-change.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/dir-prop-change.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/modified-in-place.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/modified-in-place.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/move-and-modify.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/move-and-modify.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/no-author.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/no-author.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/repo-with-copy-of-root-dir.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/repo-with-copy-of-root-dir.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/revprops.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/revprops.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/tag-empty-trunk.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/tag-empty-trunk.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/tag-trunk-with-file.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/tag-trunk-with-file.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/tag-trunk-with-file2.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/tag-trunk-with-file2.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/trunk-A-changes.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/trunk-A-changes.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/trunk-A-changes.expected.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/trunk-A-changes.expected.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/trunk-only.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/trunk-only.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/trunk-only.expected.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/trunk-only.expected.dump
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests_data/url-encoding-bug.dump
      - copied unchanged from r1002279, subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/url-encoding-bug.dump
Modified:
    subversion/branches/javahl-ra/   (props changed)
    subversion/branches/javahl-ra/CHANGES
    subversion/branches/javahl-ra/build.conf
    subversion/branches/javahl-ra/build/transform_libtool_scripts.sh
    subversion/branches/javahl-ra/configure.ac
    subversion/branches/javahl-ra/notes/http-and-webdav/webdav-protocol
    subversion/branches/javahl-ra/notes/subversion-design.html
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/BlameCallback.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/ClientContext.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.h
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/LogMessageCallback.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/ProplistCallback.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/ReposNotifyCallback.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.h
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
    subversion/branches/javahl-ra/subversion/include/mod_dav_svn.h
    subversion/branches/javahl-ra/subversion/include/private/svn_dav_protocol.h
    subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h
    subversion/branches/javahl-ra/subversion/include/svn_client.h
    subversion/branches/javahl-ra/subversion/include/svn_dav.h
    subversion/branches/javahl-ra/subversion/include/svn_error.h
    subversion/branches/javahl-ra/subversion/include/svn_error_codes.h
    subversion/branches/javahl-ra/subversion/include/svn_fs.h
    subversion/branches/javahl-ra/subversion/include/svn_io.h
    subversion/branches/javahl-ra/subversion/include/svn_ra.h
    subversion/branches/javahl-ra/subversion/include/svn_ra_svn.h
    subversion/branches/javahl-ra/subversion/include/svn_repos.h
    subversion/branches/javahl-ra/subversion/include/svn_wc.h
    subversion/branches/javahl-ra/subversion/libsvn_auth_kwallet/kwallet.cpp
    subversion/branches/javahl-ra/subversion/libsvn_client/checkout.c
    subversion/branches/javahl-ra/subversion/libsvn_client/cleanup.c
    subversion/branches/javahl-ra/subversion/libsvn_client/client.h
    subversion/branches/javahl-ra/subversion/libsvn_client/copy.c
    subversion/branches/javahl-ra/subversion/libsvn_client/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_client/externals.c
    subversion/branches/javahl-ra/subversion/libsvn_client/list.c
    subversion/branches/javahl-ra/subversion/libsvn_client/patch.c
    subversion/branches/javahl-ra/subversion/libsvn_client/prop_commands.c
    subversion/branches/javahl-ra/subversion/libsvn_client/relocate.c
    subversion/branches/javahl-ra/subversion/libsvn_client/switch.c
    subversion/branches/javahl-ra/subversion/libsvn_client/update.c
    subversion/branches/javahl-ra/subversion/libsvn_diff/parse-diff.c
    subversion/branches/javahl-ra/subversion/libsvn_fs/access.c
    subversion/branches/javahl-ra/subversion/libsvn_fs_base/revs-txns.c
    subversion/branches/javahl-ra/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/javahl-ra/subversion/libsvn_ra/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_ra/ra_loader.c
    subversion/branches/javahl-ra/subversion/libsvn_ra/ra_loader.h
    subversion/branches/javahl-ra/subversion/libsvn_ra/wrapper_template.h
    subversion/branches/javahl-ra/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_neon/commit.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_neon/fetch.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_neon/options.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_neon/props.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_neon/ra_neon.h
    subversion/branches/javahl-ra/subversion/libsvn_ra_neon/util.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_serf/commit.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_serf/options.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/javahl-ra/subversion/libsvn_ra_serf/replay.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_serf/util.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_svn/client.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_svn/editorp.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_svn/marshal.c
    subversion/branches/javahl-ra/subversion/libsvn_ra_svn/protocol
    subversion/branches/javahl-ra/subversion/libsvn_ra_svn/ra_svn.h
    subversion/branches/javahl-ra/subversion/libsvn_repos/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_repos/fs-wrap.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/error.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/sqlite.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/svn_string.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/adm_ops.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/copy.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/entries.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/relocate.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/update_editor.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/upgrade.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/wc-metadata.sql
    subversion/branches/javahl-ra/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db.h
    subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/authz.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/javahl-ra/subversion/mod_dav_svn/deadprops.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/repos.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/util.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/version.c
    subversion/branches/javahl-ra/subversion/po/fr.po
    subversion/branches/javahl-ra/subversion/svn/cl.h
    subversion/branches/javahl-ra/subversion/svn/commit-cmd.c
    subversion/branches/javahl-ra/subversion/svn/main.c
    subversion/branches/javahl-ra/subversion/svn/move-cmd.c
    subversion/branches/javahl-ra/subversion/svn/patch-cmd.c
    subversion/branches/javahl-ra/subversion/svn/switch-cmd.c
    subversion/branches/javahl-ra/subversion/svn/upgrade-cmd.c
    subversion/branches/javahl-ra/subversion/svnrdump/dump_editor.c
    subversion/branches/javahl-ra/subversion/svnrdump/dump_editor.h
    subversion/branches/javahl-ra/subversion/svnrdump/load_editor.c
    subversion/branches/javahl-ra/subversion/svnrdump/load_editor.h
    subversion/branches/javahl-ra/subversion/svnrdump/svnrdump.c
    subversion/branches/javahl-ra/subversion/svnserve/cyrus_auth.c
    subversion/branches/javahl-ra/subversion/svnserve/serve.c
    subversion/branches/javahl-ra/subversion/svnsync/main.c
    subversion/branches/javahl-ra/subversion/tests/cmdline/   (props changed)
    subversion/branches/javahl-ra/subversion/tests/cmdline/authz_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/copy_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/input_validation_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/patch_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/prop_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/resolve_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/resolved_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svntest/main.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svntest/verify.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svntest/wc.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/switch_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/update_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/javahl-ra/subversion/tests/libsvn_client/client-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_subr/cache-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_subr/target-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_wc/db-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_wc/entries-compat.c
    subversion/branches/javahl-ra/tools/client-side/svnmucc/svnmucc-test.py
    subversion/branches/javahl-ra/tools/client-side/svnmucc/svnmucc.c
    subversion/branches/javahl-ra/tools/dev/wc-format.py

Propchange: subversion/branches/javahl-ra/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 28 17:35:22 2010
@@ -1,4 +1,5 @@
 /subversion/branches/1.5.x-r30215:870312
+/subversion/branches/atomic-revprop:965046-1000689
 /subversion/branches/bdb-reverse-deltas:872050-872529
 /subversion/branches/diff-callbacks3:870059-870761
 /subversion/branches/dont-save-plaintext-passwords-by-default:870728-871118
@@ -37,4 +38,4 @@
 /subversion/branches/tc_url_rev:874351-874483
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:991978-997214
+/subversion/trunk:991978-1002279

Modified: subversion/branches/javahl-ra/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/CHANGES?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/CHANGES (original)
+++ subversion/branches/javahl-ra/CHANGES Tue Sep 28 17:35:22 2010
@@ -1,3 +1,29 @@
+Version 1.6.13
+(?? Sep 2010, from /branches/1.6.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.6.13
+
+  User-visible changes:
+   * don't drop properties during foreign-repo merges (issue #3623)
+   * improve auto-props failure error message (r961970)
+   * improve error message for 403 status with ra_neon (r876615)
+   * don't allow 'merge --reintegrate' for 2-url merges (r959004)
+   * improve handling of missing fsfs.conf in with hotcopy (r980811, -1449)
+   * escape unsafe characters in a URL during export (issue #3683)
+   * don't leak stale locks in FSFS (r959760)
+   * better detect broken working copies during update over neon (r979045)
+   * make rev files read-only (r981921)
+   * properly canonicalize a URL (r984928, -31)
+   * fix wc corruption with 'commit --depth=empty" (issue #3700)
+   * permissions fixes when doing reintegrate merges (related to issue #3242)
+   * fix 2-url reverse-merge mergeinfo (issue #3648)
+
+  Developer-visible changes:
+   * make ruby bindings compatible with Ruby 1.9 (r957507)
+   * use the repos verify API in JavaHL (r948916)
+   * teach ra_serf to parse md5 checksums with update editors (r979429)
+   * let ra_serf work with current serf releases (r879757, r880320, r943796)
+
+
 Version 1.6.12
 (21 Jun 2010, from /branches/1.6.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.6.12

Modified: subversion/branches/javahl-ra/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/build.conf?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/build.conf (original)
+++ subversion/branches/javahl-ra/build.conf Tue Sep 28 17:35:22 2010
@@ -989,6 +989,15 @@ install = test
 libs = libsvn_wc libsvn_subr apriconv apr
 testing = skip
 
+[atomic-ra-revprop-change]
+type = exe
+path = subversion/tests/cmdline
+sources = atomic-ra-revprop-change.c
+install = test
+libs = libsvn_ra libsvn_subr apriconv apr
+testing = skip
+
+
 
 # ----------------------------------------------------------------------------
 #
@@ -1090,7 +1099,7 @@ libs = __ALL__
        diff-diff3-test
        ra-local-test
        svndiff-test vdelta-test
-       entries-dump
+       entries-dump atomic-ra-revprop-change
        diff-test diff3-test diff4-test
        client-test
        tree-conflict-data-test db-test pristine-store-test entries-compat-test

Modified: subversion/branches/javahl-ra/build/transform_libtool_scripts.sh
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/build/transform_libtool_scripts.sh?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/build/transform_libtool_scripts.sh (original)
+++ subversion/branches/javahl-ra/build/transform_libtool_scripts.sh Tue Sep 28 17:35:22 2010
@@ -57,17 +57,20 @@ svnserve="$delta $fs $ra_svn $repos $sub
 svnsync="$auth_gnome_keyring $auth_kwallet $delta $ra $subr"
 svnversion="$subr $wc"
 entries_dump="$subr $wc"
+atomic_ra_revprop_change="$subr $ra"
 
 # Variable 'executables' containing names of variables corresponding to executables
-executables="svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion entries_dump"
+executables="svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion entries_dump atomic_ra_revprop_change"
 
 for executable in $executables; do
   # Set variables containing paths of executables
-  if [ "$executable" != entries_dump ]; then
-    eval "${executable}_path=subversion/$executable/$executable"
-  else
+  eval "${executable}_path=subversion/$executable/$executable"
+  if [ "$executable" = entries_dump ]; then
     eval "${executable}_path=subversion/tests/cmdline/entries-dump"
   fi
+  if [ "$executable" = atomic_ra_revprop_change ]; then
+    eval "${executable}_path=subversion/tests/cmdline/atomic-ra-revprop-change"
+  fi
   # Delete duplicates in dependencies of executables
   executable_dependencies="$(echo -n $(for x in $(eval echo "\$$executable"); do echo $x; done | sort -u))"
   eval "$executable=\$executable_dependencies"

Modified: subversion/branches/javahl-ra/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/configure.ac?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/configure.ac (original)
+++ subversion/branches/javahl-ra/configure.ac Tue Sep 28 17:35:22 2010
@@ -702,7 +702,7 @@ dnl Build and install rules ------------
 INSTALL_STATIC_RULES="install-bin install-docs"
 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
-BUILD_RULES="fsmod-lib ramod-lib lib bin test $BUILD_APACHE_RULE"
+BUILD_RULES="fsmod-lib ramod-lib lib bin test $BUILD_APACHE_RULE tools"
 
 if test "$svn_lib_berkeley_db" = "yes"; then
   BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"

Modified: subversion/branches/javahl-ra/notes/http-and-webdav/webdav-protocol
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/notes/http-and-webdav/webdav-protocol?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/notes/http-and-webdav/webdav-protocol (original)
+++ subversion/branches/javahl-ra/notes/http-and-webdav/webdav-protocol Tue Sep 28 17:35:22 2010
@@ -177,6 +177,42 @@ Response:
   
   ...svn-svndiff stream that can be passed to svn_txdelta_parse_svndiff...
 
+PROPPATCH
+=========
+
+We extend PROPPATCH as follows.  To pass OLD_VALUE_P (as in
+svn_ra_change_rev_prop2()), any propchange which is accompanied by a non-NULL
+OLD_VALUE_P goes within the <D:set><D:prop> tag (and never within the
+<D:remove><D:prop> tag --- even if it is a propdel).  Consequently, in
+mod_dav_svn it would land in db_store() and not db_remove().
+
+The property tag (in the C: or S: namespace) always contains the propval in its
+cdata (potentially base64-encoded).  The extension is as follows:
+
+* The property tag grows a V:absent attribute, to represent that the property
+  is being removed (i.e., a propdel routed to <D:set><D:prop>).
+
+* A <V:old-value> tag may be nested within the property tag.  The nested tag
+  supports the same V:absent and V:encoding attributed as the parent (property)
+  tag.
+
+* To preserve SVN_ERR_FS_PROP_BASEVALUE_MISMATCH (which is part of
+  the API promise), the <D:status>HTTP/1.1 500 (status)</D:status>
+  part of the "207 Multi-Status" response is used.  We transmit in
+  it a "412 Precondition Failed" response, which ra_neon and ra_serf
+  then special-case to interpret SVN_ERR_FS_PROP_BASEVALUE_MISMATCH.
+
+  Someday we will marshal complete svn_error_t chains over the wire
+  in ra_dav, just like ra_svn does (see svn_ra_svn__handle_failure_status()),
+  or at least will preserve the outer apr_err code in more cases.  In the 
+  meantime, using 412 allows us to preserve the SVN_ERR_FS_PROP_BASEVALUE_MISMATCH
+  error code, which is required for implementing svn_ra_change_rev_prop2().
+
+Historical note: we route propdels via <D:set>/db_store() because the mod_dav
+API for db_remove() was insufficient.  See this thread:
+http://mid.gmane.org/4C531CFB.2010202@collab.net
+
+
 Custom REPORTs
 ==============
 

Modified: subversion/branches/javahl-ra/notes/subversion-design.html
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/notes/subversion-design.html?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/notes/subversion-design.html (original)
+++ subversion/branches/javahl-ra/notes/subversion-design.html Tue Sep 28 17:35:22 2010
@@ -2255,7 +2255,7 @@ write/Makefile:6
 
     <p>For a detailed description of exactly how Greg Stein
       <em class="email">gstein@lyra.org</em> is mapping the WebDAV DeltaV spec to
-      Subversion, see his paper: <a href="http://svn.apache.org/repos/asf/subversion/trunk/www/webdav-usage.html">http://svn.apache.org/repos/asf/subversion/trunk/www/webdav-usage.html</a>
+      Subversion, see his paper: <a href="http://svn.apache.org/repos/asf/subversion/trunk/notes/http-and-webdav/webdav-usage.html">http://svn.apache.org/repos/asf/subversion/trunk/notes/http-and-webdav/webdav-usage.html</a>
     </p>
 
     <p>For more information on WebDAV and the DeltaV extensions, see

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/BlameCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/BlameCallback.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/BlameCallback.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/BlameCallback.cpp Tue Sep 28 17:35:22 2010
@@ -106,14 +106,14 @@ BlameCallback::singleLine(svn_revnum_t s
     }
 
   // convert the parameters to their Java relatives
-  jobject jrevProps = CreateJ::PropertyMap(revProps, pool);
+  jobject jrevProps = CreateJ::PropertyMap(revProps);
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN(SVN_NO_ERROR);
 
   jobject jmergedRevProps = NULL;
   if (mergedRevProps != NULL)
     {
-      jmergedRevProps = CreateJ::PropertyMap(mergedRevProps, pool);
+      jmergedRevProps = CreateJ::PropertyMap(mergedRevProps);
       if (JNIUtil::isJavaExceptionThrown())
         POP_AND_RETURN(SVN_NO_ERROR);
     }

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/ClientContext.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/ClientContext.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/ClientContext.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/ClientContext.cpp Tue Sep 28 17:35:22 2010
@@ -285,7 +285,7 @@ ClientContext::notify(void *baton,
       env->DeleteLocalRef(clazz);
     }
 
-  jobject jInfo = CreateJ::ClientNotifyInformation(notify, pool);
+  jobject jInfo = CreateJ::ClientNotifyInformation(notify);
   if (JNIUtil::isJavaExceptionThrown())
     return;
 

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.cpp Tue Sep 28 17:35:22 2010
@@ -737,8 +737,7 @@ CreateJ::Status(svn_wc_context_t *wc_ctx
 }
 
 jobject
-CreateJ::ClientNotifyInformation(const svn_wc_notify_t *wcNotify,
-                                 apr_pool_t *pool)
+CreateJ::ClientNotifyInformation(const svn_wc_notify_t *wcNotify)
 {
   JNIEnv *env = JNIUtil::getEnv();
 
@@ -828,7 +827,7 @@ CreateJ::ClientNotifyInformation(const s
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN_NULL;
 
-  jobject jrevProps = CreateJ::PropertyMap(wcNotify->rev_props, pool);
+  jobject jrevProps = CreateJ::PropertyMap(wcNotify->rev_props);
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN_NULL;
 
@@ -857,8 +856,7 @@ CreateJ::ClientNotifyInformation(const s
 }
 
 jobject
-CreateJ::ReposNotifyInformation(const svn_repos_notify_t *reposNotify,
-                                apr_pool_t *pool)
+CreateJ::ReposNotifyInformation(const svn_repos_notify_t *reposNotify)
 {
   JNIEnv *env = JNIUtil::getEnv();
 
@@ -1098,7 +1096,7 @@ CreateJ::StringSet(apr_array_header_t *s
   return CreateJ::Set(jstrs);
 }
 
-jobject CreateJ::PropertyMap(apr_hash_t *prop_hash, apr_pool_t *pool)
+jobject CreateJ::PropertyMap(apr_hash_t *prop_hash)
 {
   JNIEnv *env = JNIUtil::getEnv();
 
@@ -1138,7 +1136,8 @@ jobject CreateJ::PropertyMap(apr_hash_t 
 
   apr_hash_index_t *hi;
   int i = 0;
-  for (hi = apr_hash_first(pool, prop_hash); hi; hi = apr_hash_next(hi), ++i)
+  for (hi = apr_hash_first(apr_hash_pool_get(prop_hash), prop_hash);
+       hi; hi = apr_hash_next(hi), ++i)
     {
       const char *key;
       svn_string_t *val;

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.h (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/CreateJ.h Tue Sep 28 17:35:22 2010
@@ -62,10 +62,10 @@ class CreateJ
          const svn_client_status_t *status, apr_pool_t *pool);
 
   static jobject
-  ClientNotifyInformation(const svn_wc_notify_t *notify, apr_pool_t *pool);
+  ClientNotifyInformation(const svn_wc_notify_t *notify);
 
   static jobject
-  ReposNotifyInformation(const svn_repos_notify_t *notify, apr_pool_t *pool);
+  ReposNotifyInformation(const svn_repos_notify_t *notify);
 
   static jobject
   CommitItem(svn_client_commit_item3_t *item);
@@ -80,7 +80,7 @@ class CreateJ
   StringSet(apr_array_header_t *strings);
 
   static jobject
-  PropertyMap(apr_hash_t *prop_hash, apr_pool_t *pool);
+  PropertyMap(apr_hash_t *prop_hash);
 
   /* This creates a set of Objects.  It derefs the members of the vector
    * after putting them in the set, so they caller doesn't need to. */

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/LogMessageCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/LogMessageCallback.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/LogMessageCallback.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/LogMessageCallback.cpp Tue Sep 28 17:35:22 2010
@@ -115,7 +115,7 @@ LogMessageCallback::singleMessage(svn_lo
 
   jobject jrevprops = NULL;
   if (log_entry->revprops != NULL && apr_hash_count(log_entry->revprops) > 0)
-    jrevprops = CreateJ::PropertyMap(log_entry->revprops, pool);
+    jrevprops = CreateJ::PropertyMap(log_entry->revprops);
 
   env->CallVoidMethod(m_callback,
                       sm_mid,

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/ProplistCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/ProplistCallback.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/ProplistCallback.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/ProplistCallback.cpp Tue Sep 28 17:35:22 2010
@@ -96,7 +96,7 @@ svn_error_t *ProplistCallback::singlePat
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN(SVN_NO_ERROR);
 
-  jobject jmap = CreateJ::PropertyMap(prop_hash, pool);
+  jobject jmap = CreateJ::PropertyMap(prop_hash);
   if (JNIUtil::isJavaExceptionThrown())
     POP_AND_RETURN(SVN_NO_ERROR);
 

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/ReposNotifyCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/ReposNotifyCallback.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/ReposNotifyCallback.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/ReposNotifyCallback.cpp Tue Sep 28 17:35:22 2010
@@ -81,7 +81,7 @@ ReposNotifyCallback::onNotify(const svn_
       env->DeleteLocalRef(clazz);
     }
 
-  jobject jInfo = CreateJ::ReposNotifyInformation(wcNotify, pool);
+  jobject jInfo = CreateJ::ReposNotifyInformation(wcNotify);
   if (JNIUtil::isJavaExceptionThrown())
     return;
 

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.cpp Tue Sep 28 17:35:22 2010
@@ -33,6 +33,7 @@
 #include "Pool.h"
 #include "Targets.h"
 #include "Revision.h"
+#include "OutputStream.h"
 #include "RevisionRange.h"
 #include "BlameCallback.h"
 #include "ProplistCallback.h"
@@ -427,7 +428,7 @@ void SVNClient::move(Targets &srcPaths, 
         return;
 
     SVN_JNI_ERR(svn_client_move6((apr_array_header_t *) srcs,
-                                 destinationPath.c_str(), force, moveAsChild,
+                                 destinationPath.c_str(), moveAsChild,
                                  makeParents, revprops.hash(requestPool),
                                  CommitCallback::callback, callback, ctx,
                                  requestPool.pool()), );
@@ -1093,43 +1094,9 @@ SVNClient::diffSummarize(const char *tar
                                                requestPool.pool()), );
 }
 
-jbyteArray SVNClient::fileContent(const char *path, Revision &revision,
-                                  Revision &pegRevision)
-{
-    SVN::Pool requestPool;
-    SVN_JNI_NULL_PTR_EX(path, "path", NULL);
-    Path intPath(path);
-    SVN_JNI_ERR(intPath.error_occured(), NULL);
-
-    size_t size = 0;
-    svn_stream_t *read_stream = createReadStream(requestPool.pool(),
-                                                 intPath.c_str(), revision,
-                                                 pegRevision, size);
-    if (read_stream == NULL)
-        return NULL;
-
-    JNIEnv *env = JNIUtil::getEnv();
-    // size will be set to the number of bytes available.
-    jbyteArray jcontent = env->NewByteArray(size);
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    jbyte *jbytes = env->GetByteArrayElements(jcontent, NULL);
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    svn_error_t *err = svn_stream_read(read_stream, (char *) jbytes, &size);
-    env->ReleaseByteArrayElements(jcontent, jbytes, 0);
-    SVN_JNI_ERR(err, NULL);
-    if (JNIUtil::isJavaExceptionThrown())
-        return NULL;
-
-    return jcontent;
-}
-
 void SVNClient::streamFileContent(const char *path, Revision &revision,
-                                  Revision &pegRevision, jobject outputStream,
-                                  size_t bufSize)
+                                  Revision &pegRevision,
+                                  OutputStream &outputStream)
 {
     SVN::Pool requestPool;
     SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -1137,101 +1104,14 @@ void SVNClient::streamFileContent(const 
     SVN_JNI_ERR(intPath.error_occured(), );
 
     JNIEnv *env = JNIUtil::getEnv();
-    jclass outputStreamClass = env->FindClass("java/io/OutputStream");
-    if (outputStreamClass == NULL)
-        return;
-
-    jmethodID writeMethod = env->GetMethodID(outputStreamClass, "write",
-                                             "([BII)V");
-    if (writeMethod == NULL)
-        return;
-
-    // Create the buffer.
-    jbyteArray buffer = env->NewByteArray(bufSize);
-    if (JNIUtil::isJavaExceptionThrown())
-        return;
-
-    jbyte *bufData = env->GetByteArrayElements(buffer, NULL);
-    if (JNIUtil::isJavaExceptionThrown())
-        return;
-
-    size_t contentSize = 0;
-    svn_stream_t *read_stream = createReadStream(requestPool.pool(), path,
-                                                 revision, pegRevision,
-                                                 contentSize);
-    if (read_stream == NULL)
+    svn_client_ctx_t *ctx = context.getContext(NULL);
+    if (ctx == NULL)
         return;
 
-    while (contentSize > 0)
-    {
-        size_t readSize = bufSize > contentSize ? contentSize : bufSize;
-        svn_error_t *err;
-
-        err = svn_stream_read(read_stream, (char *)bufData, &readSize);
-        if (err != NULL)
-        {
-            env->ReleaseByteArrayElements(buffer, bufData, 0);
-            svn_stream_close(read_stream);
-            SVN_JNI_ERR(err, );
-        }
-
-        env->ReleaseByteArrayElements(buffer, bufData, JNI_COMMIT);
-        env->CallVoidMethod(outputStream, writeMethod, buffer, 0, readSize);
-        if (JNIUtil::isJavaExceptionThrown())
-        {
-            env->ReleaseByteArrayElements(buffer, bufData, 0);
-            svn_stream_close(read_stream);
-            return;
-        }
-        contentSize -= readSize;
-    }
-
-    env->ReleaseByteArrayElements(buffer, bufData, 0);
-    return;
-}
-
-svn_stream_t *SVNClient::createReadStream(apr_pool_t *pool, const char *path,
-                                          Revision &revision,
-                                          Revision &pegRevision, size_t &size)
-{
-    svn_stream_t *read_stream = NULL;
-
-    if (revision.revision()->kind == svn_opt_revision_working)
-    {
-        // We want the working copy. Going back to the server returns
-        // base instead (which is not what we want).
-        apr_file_t *file = NULL;
-        apr_finfo_t finfo;
-        apr_status_t apr_err = apr_stat(&finfo, path, APR_FINFO_MIN, pool);
-        if (apr_err)
-        {
-            JNIUtil::handleAPRError(apr_err, _("open file"));
-            return NULL;
-        }
-        apr_err = apr_file_open(&file, path, APR_READ, 0, pool);
-        if (apr_err)
-        {
-            JNIUtil::handleAPRError(apr_err, _("open file"));
-            return NULL;
-        }
-        read_stream = svn_stream_from_aprfile2(file, TRUE, pool);
-        size = finfo.size;
-    }
-    else
-    {
-        svn_client_ctx_t *ctx = context.getContext(NULL);
-        if (ctx == NULL)
-            return NULL;
-
-        svn_stringbuf_t *buf = svn_stringbuf_create("", pool);
-        read_stream = svn_stream_from_stringbuf(buf, pool);
-        SVN_JNI_ERR(svn_client_cat2(read_stream, path, pegRevision.revision(),
-                                    revision.revision(), ctx, pool),
-                    NULL);
-        size = buf->len;
-    }
-
-    return read_stream;
+    SVN_JNI_ERR(svn_client_cat2(outputStream.getStream(requestPool),
+                                path, pegRevision.revision(),
+                                revision.revision(), ctx, requestPool.pool()),
+                );
 }
 
 jbyteArray SVNClient::revProperty(const char *path,
@@ -1528,7 +1408,7 @@ jobject SVNClient::revProperties(const c
                                         &set_rev, ctx, requestPool.pool()),
                 NULL);
 
-    return CreateJ::PropertyMap(props, requestPool.pool());
+    return CreateJ::PropertyMap(props);
 }
 
 struct info_baton
@@ -1580,10 +1460,11 @@ SVNClient::patch(const char *patchPath, 
     Path checkedTargetPath(targetPath);
     SVN_JNI_ERR(checkedTargetPath.error_occured(), );
 
+    // Should parameterize the following, instead of defaulting to FALSE
     SVN_JNI_ERR(svn_client_patch(checkedPatchPath.c_str(),
                                  checkedTargetPath.c_str(),
-                                 dryRun, stripCount, reverse, ignoreWhitespace,
-                                 removeTempfiles,
+                                 dryRun, stripCount, FALSE, reverse,
+                                 ignoreWhitespace, removeTempfiles,
                                  PatchCallback::callback, callback,
                                  ctx, requestPool.pool(),
                                  requestPool.pool()), );

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNClient.h Tue Sep 28 17:35:22 2010
@@ -47,6 +47,7 @@ class InfoCallback;
 class CommitCallback;
 class ListCallback;
 class StatusCallback;
+class OutputStream;
 class PatchCallback;
 class ChangelistCallback;
 class CommitMessage;
@@ -75,11 +76,8 @@ class SVNClient :public SVNBase
              BlameCallback *callback);
   void relocate(const char *from, const char *to, const char *path,
                 bool recurse);
-  jbyteArray fileContent(const char *path, Revision &revision,
-                         Revision &pegRevision);
   void streamFileContent(const char *path, Revision &revision,
-                         Revision &pegRevision, jobject outputStream,
-                         size_t bufSize);
+                         Revision &pegRevision, OutputStream &outputStream);
   void propertySet(const char *path, const char *name, const char *value,
                    svn_depth_t depth, StringArray &changelists, bool force,
                    RevpropTable &revprops, CommitCallback *callback);
@@ -199,9 +197,6 @@ class SVNClient :public SVNBase
   SVNClient(jobject jthis_in);
   virtual ~SVNClient();
  private:
-  svn_stream_t *createReadStream(apr_pool_t *pool, const char *path,
-                                 Revision &revision, Revision &pegRevision,
-                                 size_t &size);
   /**
    * Shared implementation for diff() APIs. When pegRevision is
    * provided, revision1 and revision2 equate to startRevision and

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp Tue Sep 28 17:35:22 2010
@@ -32,6 +32,7 @@
 #include "SVNClient.h"
 #include "Revision.h"
 #include "RevisionRange.h"
+#include "OutputStream.h"
 #include "EnumMapper.h"
 #include "CommitMessage.h"
 #include "Prompter.h"
@@ -1309,37 +1310,10 @@ Java_org_apache_subversion_javahl_SVNCli
                     jignoreAncestry ? true : false, receiver);
 }
 
-JNIEXPORT jbyteArray JNICALL
-Java_org_apache_subversion_javahl_SVNClient_fileContent
-(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision)
-{
-  JNIEntry(SVNClient, fileContent);
-  SVNClient *cl = SVNClient::getCppObject(jthis);
-  if (cl == NULL)
-    {
-      JNIUtil::throwError(_("bad C++ this"));
-      return NULL;
-    }
-  JNIStringHolder path(jpath);
-  if (JNIUtil::isExceptionThrown())
-    return NULL;
-
-  Revision revision(jrevision);
-  if (JNIUtil::isExceptionThrown())
-    return NULL;
-
-  Revision pegRevision(jpegRevision);
-  if (JNIUtil::isExceptionThrown())
-    return NULL;
-
-  return cl->fileContent(path, revision, pegRevision);
-}
-
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_streamFileContent
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision, jint bufSize, jobject jstream)
+ jobject jpegRevision, jobject jstream)
 {
   JNIEntry(SVNClient, streamFileContent);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1360,7 +1334,11 @@ Java_org_apache_subversion_javahl_SVNCli
   if (JNIUtil::isExceptionThrown())
     return;
 
-  cl->streamFileContent(path, revision, pegRevision, jstream, bufSize);
+  OutputStream dataOut(jstream);
+  if (JNIUtil::isExceptionThrown())
+    return;
+
+  cl->streamFileContent(path, revision, pegRevision, dataOut);
 }
 
 JNIEXPORT jstring JNICALL

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Tue Sep 28 17:35:22 2010
@@ -790,7 +790,7 @@ public interface ISVNClient
      * @since 1.0
      */
     void streamFileContent(String path, Revision revision, Revision pegRevision,
-                           int bufferSize, OutputStream stream)
+                           OutputStream stream)
         throws ClientException;
 
     /**

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Tue Sep 28 17:35:22 2010
@@ -26,6 +26,7 @@ package org.apache.subversion.javahl;
 import org.apache.subversion.javahl.callback.*;
 
 import java.io.OutputStream;
+import java.io.ByteArrayOutputStream;
 
 import java.util.Collection;
 import java.util.Set;
@@ -473,15 +474,21 @@ public class SVNClient implements ISVNCl
     /**
      * @since 1.2
      */
-    public native byte[] fileContent(String path, Revision revision,
-                                     Revision pegRevision)
-            throws ClientException;
+    public byte[] fileContent(String path, Revision revision,
+                              Revision pegRevision)
+            throws ClientException
+    {
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+        streamFileContent(path, revision, pegRevision, stream);
+        return stream.toByteArray();
+    }
 
     /**
      * @since 1.0
      */
     public native void streamFileContent(String path, Revision revision,
-                                         Revision pegRevision, int bufferSize,
+                                         Revision pegRevision,
                                          OutputStream stream)
             throws ClientException;
 

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Tue Sep 28 17:35:22 2010
@@ -2105,7 +2105,7 @@ public class SVNClient implements SVNCli
             aSVNClient.streamFileContent(path,
                           revision == null ? null : revision.toApache(),
                           pegRevision == null ? null : pegRevision.toApache(),
-                          bufferSize, stream);
+                          stream);
         }
         catch (org.apache.subversion.javahl.ClientException ex)
         {

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Tue Sep 28 17:35:22 2010
@@ -1827,7 +1827,7 @@ public class BasicTests extends SVNTests
         // get the content from the repository
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         client.streamFileContent(thisTest.getWCPath() + "/A/mu", null, null,
-                                 100, baos);
+                                 baos);
 
         byte[] content = baos.toByteArray();
         byte[] testContent = thisTest.getWc().getItemContent("A/mu").getBytes();
@@ -3118,10 +3118,9 @@ public class BasicTests extends SVNTests
                 tcTest.getWc().getItemContent("A/B/E/alpha"));
         tcTest.getWc().setItemWorkingCopyRevision("A/B/F/alpha", 2);
         // we expect the tree conflict to turn the existing item into
-        // a scheduled-add with history.  We expect the modifications in
-        // the local file to have been copied to the new file.
+        // a scheduled-add with history.
         tcTest.getWc().setItemTextStatus("A/B/E/alpha", Status.Kind.added);
-        tcTest.getWc().setItemTextStatus("A/B/F/alpha", Status.Kind.modified);
+        tcTest.getWc().setItemTextStatus("A/B/F/alpha", Status.Kind.normal);
 
         // check the status of the working copy of the tc test
         tcTest.checkStatus();

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java Tue Sep 28 17:35:22 2010
@@ -3010,10 +3010,9 @@ public class BasicTests extends SVNTests
                 tcTest.getWc().getItemContent("A/B/E/alpha"));
         tcTest.getWc().setItemWorkingCopyRevision("A/B/F/alpha", 2);
         // we expect the tree conflict to turn the existing item into
-        // a scheduled-add with history.  We expect the modifications in
-        // the local file to have been copied to the new file.
+        // a scheduled-add with history.
         tcTest.getWc().setItemTextStatus("A/B/E/alpha", StatusKind.added);
-        tcTest.getWc().setItemTextStatus("A/B/F/alpha", StatusKind.modified);
+        tcTest.getWc().setItemTextStatus("A/B/F/alpha", StatusKind.normal);
 
         // check the status of the working copy of the tc test
         tcTest.checkStatus();

Modified: subversion/branches/javahl-ra/subversion/include/mod_dav_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/mod_dav_svn.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/mod_dav_svn.h (original)
+++ subversion/branches/javahl-ra/subversion/include/mod_dav_svn.h Tue Sep 28 17:35:22 2010
@@ -48,8 +48,10 @@ extern "C" {
 
    Three special substrings of the uri are returned for convenience:
 
-   * REPOS_NAME:      The single path component that is the directory
-                      which contains the repository.
+   * REPOS_BASENAME:  The single path component that is the directory
+                      which contains the repository.  (Don't confuse
+                      this with the "repository name" as optionally
+                      defined via the SVNReposName directive!)
 
    * RELATIVE_PATH:   The remaining imaginary path components.
 
@@ -68,7 +70,7 @@ extern "C" {
    ROOT_PATH of '/svn/repos'.  But either way, we would get back:
 
      * CLEANED_URI:    /svn/repos/proj1/!svn/blah/13/A/B/alpha
-     * REPOS_NAME:     proj1
+     * REPOS_BASENAME: proj1
      * RELATIVE_PATH:  /!svn/blah/13/A/B/alpha
      * REPOS_PATH:     A/B/alpha
      * TRAILING_SLASH: FALSE
@@ -78,7 +80,7 @@ AP_MODULE_DECLARE(dav_error *) dav_svn_s
                                                  const char *root_path,
                                                  const char **cleaned_uri,
                                                  int *trailing_slash,
-                                                 const char **repos_name,
+                                                 const char **repos_basename,
                                                  const char **relative_path,
                                                  const char **repos_path);
 

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_dav_protocol.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_dav_protocol.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_dav_protocol.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_dav_protocol.h Tue Sep 28 17:35:22 2010
@@ -46,6 +46,17 @@ extern "C" {
 #define SVN_DAV__INCLUDE_DESCENDANTS "include-descendants"
 #define SVN_DAV__VERSION_NAME "version-name"
 
+/** Names of XML elements attributes and tags for svn_ra_change_rev_prop2()'s
+    extension of PROPPATCH.  */
+#define SVN_DAV__OLD_VALUE "old-value"
+#define SVN_DAV__OLD_VALUE__ABSENT "absent"
+
+/** Helper typedef for svn_ra_change_rev_prop2() implementation. */
+typedef struct svn_dav__two_props_t {
+  const svn_string_t *const *old_value_p;
+  const svn_string_t *new_value;
+} svn_dav__two_props_t;
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h Tue Sep 28 17:35:22 2010
@@ -165,7 +165,7 @@ svn_sqlite__prepare(svn_sqlite__stmt_t *
 svn_error_t *
 svn_sqlite__bindf(svn_sqlite__stmt_t *stmt, const char *fmt, ...);
 
-/* Error-handling wrapper around sqlite3_bind_int64. */
+/* Error-handling wrapper around sqlite3_bind_int. */
 svn_error_t *
 svn_sqlite__bind_int(svn_sqlite__stmt_t *stmt, int slot, int val);
 

Modified: subversion/branches/javahl-ra/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_client.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_client.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_client.h Tue Sep 28 17:35:22 2010
@@ -53,18 +53,6 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-/**
-   ### @todo  Multiple Targets
-    - Up for debate:  an update on multiple targets is *not* atomic.
-    Right now, svn_client_update only takes one path.  What's
-    debatable is whether this should ever change.  On the one hand,
-    it's kind of losing to have the client application loop over
-    targets and call svn_client_update() on each one;  each call to
-    update initializes a whole new repository session (network
-    overhead, etc.)  On the other hand, it's a very simple
-    implementation, and allows for the possibility that different
-    targets may come from different repositories.  */
-
 
 /**
  * Get libsvn_client version information.
@@ -328,6 +316,22 @@ svn_client_get_ssl_client_cert_pw_prompt
 /** @} */
 
 /**
+ * Revisions and Peg Revisions
+ *
+ * @defgroup clnt_revisions Revisions and Peg Revisions
+ *
+ * A brief word on operative and peg revisions.
+ *
+ * If the kind of the peg revision is #svn_opt_revision_unspecified, then it
+ * defaults to #svn_opt_revision_head for URLs and #svn_opt_revision_working
+ * for local paths.
+ *
+ * For deeper insight, please see the
+ * <a href="http://svnbook.red-bean.com/nightly/en/svn.advanced.pegrevs.html">
+ * Peg and Operative Revisions</a> section of the Subversion Book.
+ */
+
+/**
  * Commit operations
  *
  * @defgroup clnt_commit Client commit subsystem
@@ -893,7 +897,7 @@ typedef struct svn_client_ctx_t
   void *cancel_baton;
 
   /** notification function, defaulting to a function that forwards
-   * to notify_func().
+   * to notify_func().  If @a NULL, it will not be invoked.
    * @since New in 1.2. */
   svn_wc_notify_func2_t notify_func2;
 
@@ -1040,56 +1044,47 @@ svn_client_args_to_target_array(apr_arra
 
 
 /**
- * Checkout a working copy of @a URL at @a revision, looked up at @a
- * peg_revision, using @a path as the root directory of the newly
- * checked out working copy, and authenticating with the
- * authentication baton cached in @a ctx.  If @a result_rev is not @c
- * NULL, set @a *result_rev to the value of the revision actually
- * checked out from the repository.
+ * Checkout a working copy from a repository.
  *
- * If @a peg_revision->kind is #svn_opt_revision_unspecified, then it
- * defaults to #svn_opt_revision_head.
- *
- * @a revision must be of kind #svn_opt_revision_number,
- * #svn_opt_revision_head, or #svn_opt_revision_date.  If
- * @a revision does not meet these requirements, return the error
- * #SVN_ERR_CLIENT_BAD_REVISION.
- *
- * If @a depth is #svn_depth_infinity, check out fully recursively.
- * Else if it is #svn_depth_immediates, check out @a URL and its
- * immediate entries (subdirectories will be present, but will be at
- * depth #svn_depth_empty themselves); else #svn_depth_files,
- * check out @a URL and its file entries, but no subdirectories; else
- * if #svn_depth_empty, check out @a URL as an empty directory at
- * that depth, with no entries present.
- *
- * If @a depth is #svn_depth_unknown, then behave as if for
- * #svn_depth_infinity, except in the case of resuming a previous
- * checkout of @a path (i.e., updating), in which case use the depth
- * of the existing working copy.
- *
- * If @a ignore_externals is set, don't process externals definitions
- * as part of this operation.
- *
- * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
- * @a ctx->notify_baton2 as the checkout progresses.
- *
- * If @a allow_unver_obstructions is TRUE then the checkout tolerates
- * existing unversioned items that obstruct added paths from @a URL.  Only
- * obstructions of the same type (file or dir) as the added item are
- * tolerated.  The text of obstructing files is left as-is, effectively
- * treating it as a user modification after the checkout.  Working
- * properties of obstructing items are set equal to the base properties.
- * If @a allow_unver_obstructions is FALSE then the checkout will abort
- * if there are any unversioned obstructing items.
- *
- * If @a URL refers to a file rather than a directory, return the
- * error #SVN_ERR_UNSUPPORTED_FEATURE.  If @a URL does not exist,
- * return the error #SVN_ERR_RA_ILLEGAL_URL.
- *
- * Use @a pool for any temporary allocation.
+ * @param[out] result_rev   If non-NULL, the value of the revision checked
+ *              out form the repository.
+ * @param[in] URL       The repository URL of the checkout source.
+ * @param[in] path      The root of the new working copy.
+ * @param[in] peg_revision  The peg revision.
+ * @param[in] revision  The operative revision.
+ * @param[in] depth     The depth of the operation.  If #svn_depth_unknown,
+ *              then behave as if for #svn_depth_infinity, except in the case
+ *              of resuming a previous checkout of @a path (i.e., updating),
+ *              in which case use the depth of the existing working copy.
+ * @param[in] ignore_externals  If @c TRUE, don't process externals
+ *              definitions as part of this operation.
+ * @param[in] allow_unver_obstructions  If @c TRUE, then tolerate existing
+ *              unversioned items that obstruct incoming paths.  Only
+ *              obstructions of the same type (file or dir) as the added
+ *              item are tolerated.  The text of obstructing files is left
+ *              as-is, effectively treating it as a user modification after
+ *              the checkout.  Working properties of obstructing items are
+ *              set equal to the base properties. <br>
+ *              If @c FALSE, then abort if there are any unversioned
+ *              obstructing items.
+ * @param[in] ctx   The standard client context, used for authentication and
+ *              notification.
+ * @param[in] pool  Used for any temporary allocation.
+ *
+ * @return A pointer to an #svn_error_t of the type (this list is not
+ *         exhaustive): <br>
+ *         #SVN_ERR_UNSUPPORTED_FEATURE if @a URL refers to a file rather
+ *         than a directory; <br>
+ *         #SVN_ERR_RA_ILLEGAL_URL if @a URL does not exist; <br>
+ *         #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
+ *         #svn_opt_revision_number, #svn_opt_revision_head, or
+ *         #svn_opt_revision_date. <br>
+ *         If no error occurred, return #SVN_NO_ERROR.
  *
  * @since New in 1.5.
+ *
+ * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
+ *      a discussion of operative and peg revisions.
  */
 svn_error_t *
 svn_client_checkout3(svn_revnum_t *result_rev,
@@ -1201,6 +1196,17 @@ svn_client_checkout(svn_revnum_t *result
  *
  * Use @a pool for any temporary allocation.
  *
+ *  @todo  Multiple Targets
+ *  - Up for debate:  an update on multiple targets is *not* atomic.
+ *  Right now, svn_client_update only takes one path.  What's
+ *  debatable is whether this should ever change.  On the one hand,
+ *  it's kind of losing to have the client application loop over
+ *  targets and call svn_client_update() on each one;  each call to
+ *  update initializes a whole new repository session (network
+ *  overhead, etc.)  On the other hand, it's a very simple
+ *  implementation, and allows for the possibility that different
+ *  targets may come from different repositories.
+ *
  * @since New in 1.5.
  */
 svn_error_t *
@@ -3412,18 +3418,35 @@ svn_client_upgrade(const char *dir,
  */
 
 /**
- * Modify a working copy directory @a dir, changing any
- * repository URLs that begin with @a from to begin with @a to instead,
- * recursing into subdirectories if @a recurse is TRUE.
+ * Recursively modify a working copy rooted at @a wcroot_dir, changing any
+ * repository URLs that begin with @a from to begin with @a to instead.
  *
- * @param dir Working copy directory
+ * @param wcroot_dir Working copy root directory
  * @param from Original URL
  * @param to New URL
- * @param recurse Whether to recurse
  * @param ctx svn_client_ctx_t
  * @param pool The pool from which to perform memory allocations
+ *
+ * @since New in 1.7
  */
 svn_error_t *
+svn_client_relocate2(const char *wcroot_dir,
+                     const char *from,
+                     const char *to,
+                     svn_client_ctx_t *ctx,
+                     apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_relocate2().
+ *
+ * @note As of the 1.7 API, @a dir is required to be a working copy
+ * root directory, and @a recurse is required to be TRUE.
+ *
+ * @deprecated Provided for limited backwards compatibility with the
+ * 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_client_relocate(const char *dir,
                     const char *from,
                     const char *to,
@@ -3431,7 +3454,6 @@ svn_client_relocate(const char *dir,
                     svn_client_ctx_t *ctx,
                     apr_pool_t *pool);
 
-
 /** @} */
 
 /**
@@ -3789,10 +3811,6 @@ svn_client_copy(svn_client_commit_info_t
  *     is a directory it will remain in the working copy but all the files,
  *     and unversioned items, it contains will be removed.
  *
- *   - If one of @a src_paths contains locally modified and/or unversioned
- *     items and @a force is not set, the move will fail. If @a force is set
- *     such items will be removed.
- *
  * 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
@@ -3839,7 +3857,6 @@ svn_client_copy(svn_client_commit_info_t
 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,
@@ -3852,6 +3869,9 @@ svn_client_move6(const apr_array_header_
  * Similar to svn_client_move6(), but returns the @a commit_info_p directly,
  * rather than through @a commit_callback.
  *
+ * A WC-to-WC move will include any modified and/or unversioned children.
+ * @a force is ignored.
+ *
  * @since New in 1.5.
  * @deprecated Provided for backward compatibility with the 1.6 API.
  */
@@ -3872,6 +3892,11 @@ svn_client_move5(svn_commit_info_t **com
  * move_as_child set to @c FALSE, @a revprop_table passed as NULL, and
  * @a make_parents set to @c FALSE.
  *
+ * Note: The behaviour of @a force changed in r860885 and r861421, when the
+ * 'move' semantics were improved to just move the source including any
+ * modified and/or unversioned items in it.  Before that, @a force
+ * controlled what happened to such items, but now @a force is ignored.
+ *
  * @since New in 1.4.
  *
  * @deprecated Provided for backward compatibility with the 1.4 API.
@@ -4094,6 +4119,12 @@ svn_client_propset(const char *propname,
  * new value.  (To check that an old value is still non-existent, set
  * @a original_propval->data to NULL, and @a original_propval->len is
  * ignored.)
+ * If the server advertises #SVN_RA_CAPABILITY_ATOMIC_REVPROPS, the
+ * check of @a original_propval is done atomically.
+ *
+ * Note: the representation of "property is not set" in @a
+ * original_propval differs from the representation in other APIs
+ * (such as svn_fs_change_rev_prop2() and svn_ra_change_rev_prop2()).
  *
  * If @a force is TRUE, allow newlines in the author property.
  *
@@ -4685,26 +4716,30 @@ svn_client_ls(apr_hash_t **dirents,
  */
 
 /**
- * Output the content of file identified by @a path_or_url and @a
- * revision to the stream @a out.  The actual node revision selected
- * is determined by the path as it exists in @a peg_revision.  If @a
- * peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
- * to #svn_opt_revision_head for URLs or #svn_opt_revision_working
- * for WC targets.
- *
- * If @a path_or_url is not a local path, then if @a revision is of
- * kind #svn_opt_revision_previous (or some other kind that requires
- * a local path), an error will be returned, because the desired
- * revision cannot be determined.
- *
- * Use the authentication baton cached in @a ctx to authenticate against the
- * repository.
+ * Output the content of a file.
  *
- * Perform all allocations from @a pool.
- *
- * ### @todo Add an expansion/translation flag?
+ * @param[in] out           The stream to which the content will be written.
+ * @param[in] path_or_url   The path or URL of the file.
+ * @param[in] peg_revision  The peg revision.
+ * @param[in] revision  The operative revision.
+ * @param[in] ctx   The standard client context, used for possible
+ *                  authentication.
+ * @param[in] pool  Used for any temporary allocation.
+ *
+ * @todo Add an expansion/translation flag?
+ *
+ * @return A pointer to an #svn_error_t of the type (this list is not
+ *         exhaustive): <br>
+ *         An unspecified error if @a revision is of kind
+ *         #svn_opt_revision_previous (or some other kind that requires
+ *         a local path), because the desired revision cannot be
+ *         determined. <br>
+ *         If no error occurred, return #SVN_NO_ERROR.
  *
  * @since New in 1.2.
+ *
+ * @see #svn_client_ctx_t <br> @ref clnt_revisions for
+ *      a discussion of operative and peg revisions.
  */
 svn_error_t *
 svn_client_cat2(svn_stream_t *out,
@@ -5224,6 +5259,15 @@ typedef svn_error_t *(*svn_client_patch_
  * stripped from paths obtained from the patch. It is an error if a
  * negative strip count is passed.
  *
+ * If @a old_patch_target_names is @c TRUE, use target names from the old
+ * side of the patch, rather than using target names from the new side of
+ * the patch. For instance, if a unidiff header contains
+ *   --- foo.c
+ *   +++ foo.c.new
+ * and @a old_patch_target_names is @c TRUE, the name "foo.c" will be used
+ * for the target, and if @a old_patch_target_names is @c FALSE, the target
+ * name "foo.c.new" will be used.
+ *
  * If @a reverse is @c TRUE, apply patches in reverse, deleting lines
  * the patch would add and adding lines the patch would delete.
  * This is useful when applying a unidiff which was created with the
@@ -5255,6 +5299,7 @@ svn_client_patch(const char *patch_abspa
                  const char *local_abspath,
                  svn_boolean_t dry_run,
                  int strip_count,
+                 svn_boolean_t old_patch_target_names,
                  svn_boolean_t reverse,
                  svn_boolean_t ignore_whitespace,
                  svn_boolean_t remove_tempfiles,

Modified: subversion/branches/javahl-ra/subversion/include/svn_dav.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_dav.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_dav.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_dav.h Tue Sep 28 17:35:22 2010
@@ -243,6 +243,12 @@ extern "C" {
 #define SVN_DAV_NS_DAV_SVN_LOG_REVPROPS SVN_DAV_PROP_NS_DAV "svn/log-revprops"
 
 /** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to enforce
+ * old-value atomicity in PROPPATCH (for editing revprops). */
+#define SVN_DAV_NS_DAV_SVN_ATOMIC_REVPROPS\
+            SVN_DAV_PROP_NS_DAV "svn/atomic-revprops"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
  * that the transmitter (in this case, the server) knows how to handle
  * a replay of a directory in the repository (not root). */
 #define SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY\

Modified: subversion/branches/javahl-ra/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_error.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_error.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_error.h Tue Sep 28 17:35:22 2010
@@ -193,6 +193,15 @@ svn_error_compose(svn_error_t *chain,
 svn_error_t *
 svn_error_root_cause(svn_error_t *err);
 
+/** Return TRUE if @a err's chain contains the error code @a apr_err.
+ *
+ * If @a err is #SVN_NO_ERROR, return FALSE.
+ *
+ * @since New in 1.7.
+ */
+svn_boolean_t
+svn_error_has_cause(svn_error_t *err, apr_status_t apr_err);
+
 /** Create a new error that is a deep copy of @a err and return it.
  *
  * @since New in 1.2.

Modified: subversion/branches/javahl-ra/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_error_codes.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_error_codes.h Tue Sep 28 17:35:22 2010
@@ -365,14 +365,14 @@ SVN_ERROR_START
              SVN_ERR_WC_CATEGORY_START + 6,
              "Invalid lock")
 
- /** Previously this error number was used by SVN_ERR_WC_NOT_DIRECTORY, which
+ /** Previously this error number was used by #SVN_ERR_WC_NOT_DIRECTORY, which
   * is now an alias for this error.
   * @since Since 1.7. */
   SVN_ERRDEF(SVN_ERR_WC_NOT_WORKING_COPY,
              SVN_ERR_WC_CATEGORY_START + 7,
              "Path is not a working copy directory")
 
-  /* This name is deprecated. Use SVN_ERR_WC_NOT_WORKING_COPY.
+  /** This name is deprecated. Use #SVN_ERR_WC_NOT_WORKING_COPY.
    * @deprecated Provided for backward compatibility with the 1.6 API. */
 #define SVN_ERR_WC_NOT_DIRECTORY SVN_ERR_WC_NOT_WORKING_COPY
 
@@ -738,6 +738,12 @@ SVN_ERROR_START
              SVN_ERR_FS_CATEGORY_START + 48,
              "Filesystem has no such checksum-representation index record")
 
+  /** @since New in 1.7. */
+  SVN_ERRDEF(SVN_ERR_FS_PROP_BASEVALUE_MISMATCH,
+             SVN_ERR_FS_CATEGORY_START + 49,
+             "Property value in filesystem differs from the provided "
+             "base value")
+
   /* repos errors */
 
   SVN_ERRDEF(SVN_ERR_REPOS_LOCKED,
@@ -1328,12 +1334,12 @@ SVN_ERROR_START
              SVN_ERR_MISC_CATEGORY_START + 32,
              "Unsupported schema found in SQLite db")
 
-/** @since New in 1.7. */
+  /** @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. */
+  /** @since New in 1.7. */
   SVN_ERRDEF(SVN_ERR_SQLITE_RESETTING_FOR_ROLLBACK,
              SVN_ERR_MISC_CATEGORY_START + 34,
              "SQLite busy at transaction rollback; "

Modified: subversion/branches/javahl-ra/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_fs.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_fs.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_fs.h Tue Sep 28 17:35:22 2010
@@ -1894,10 +1894,11 @@ svn_fs_revision_proplist(apr_hash_t **ta
  * - @a fs is a filesystem, and @a rev is the revision in that filesystem
  *   whose property should change.
  * - @a name is the name of the property to change.
- * - if @a old_value_p is not @c NULL, then @a *old_value_p is the expected old
- *   value of the property, and changing the value will fail with error
- *   #SVN_ERR_BAD_PROPERTY_VALUE if the present value of the property is not @a
- *   *old_value_p.
+ * - if @a old_value_p is not @c NULL, then changing the property will fail with
+ *   error #SVN_ERR_FS_PROP_BASEVALUE_MISMATCH if the present value of the
+ *   property is not @a *old_value_p.  (This is an atomic test-and-set).
+ *   @a *old_value_p may be @c NULL, representing that the property must be not
+ *   already set.
  * - @a value is the new value of the property, or zero if the property should
  *   be removed altogether.
  *

Modified: subversion/branches/javahl-ra/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_io.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_io.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_io.h Tue Sep 28 17:35:22 2010
@@ -248,7 +248,10 @@ svn_io_open_uniquely_named(apr_file_t **
  * be possible to atomically rename the resulting file due to cross-device
  * issues.)
  *
- * The file will be deleted according to @a delete_when.
+ * The file will be deleted according to @a delete_when.  If @a delete_when
+ * is @c svn_io_file_del_on_close and @a file is @c NULL, the file will be
+ * deleted before this function returns.
+ *
  * When passing @c svn_io_file_del_none please don't forget to eventually
  * remove the temporary file to avoid filling up the system temp directory.
  * It is often appropriate to bind the lifetime of the temporary file to

Modified: subversion/branches/javahl-ra/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_ra.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_ra.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_ra.h Tue Sep 28 17:35:22 2010
@@ -746,12 +746,40 @@ svn_ra_get_dated_revision(svn_ra_session
  *
  * If @a value is @c NULL, delete the named revision property.
  *
+ * If the server advertises the #SVN_RA_CAPABILITY_ATOMIC_REVPROPS capability
+ * and @a old_value_p is not @c NULL, then changing the property will fail with
+ * an error chain that contains #SVN_ERR_FS_PROP_BASEVALUE_MISMATCH if the
+ * present value of the property is not @a *old_value_p.  (This is an atomic
+ * test-and-set).
+ * @a *old_value_p may be @c NULL, representing that the property must be not
+ * already set.
+ *
+ * If the capability is not advertised, then @a old_value_p MUST be @c NULL.
+ *
  * Please note that properties attached to revisions are @em unversioned.
  *
  * Use @a pool for memory allocation.
  *
+ * @see svn_fs_change_rev_prop2(), svn_error_has_cause().
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_ra_change_rev_prop2(svn_ra_session_t *session,
+                        svn_revnum_t rev,
+                        const char *name,
+                        const svn_string_t *const *old_value_p,
+                        const svn_string_t *value,
+                        apr_pool_t *pool);
+
+/**
+ * Similar to svn_ra_change_rev_prop2(), but with @a old_value_p set
+ * to @c NULL.
+ *
  * @since New in 1.2.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_change_rev_prop(svn_ra_session_t *session,
                        svn_revnum_t rev,
@@ -1913,6 +1941,14 @@ svn_ra_has_capability(svn_ra_session_t *
  */
 #define SVN_RA_CAPABILITY_COMMIT_REVPROPS "commit-revprops"
 
+/**
+ * The capability of specifying (and atomically verifying) expected
+ * preexisting values when modifying revprops.
+ *
+ * @since New in 1.7.
+ */
+#define SVN_RA_CAPABILITY_ATOMIC_REVPROPS "atomic-revprops"
+
 /*       *** PLEASE READ THIS IF YOU ADD A NEW CAPABILITY ***
  *
  * RA layers generally fetch all capabilities when asked about any

Modified: subversion/branches/javahl-ra/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_ra_svn.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_ra_svn.h Tue Sep 28 17:35:22 2010
@@ -60,6 +60,8 @@ extern "C" {
 #define SVN_RA_SVN_CAP_LOG_REVPROPS "log-revprops"
 /* maps to SVN_RA_CAPABILITY_PARTIAL_REPLAY */
 #define SVN_RA_SVN_CAP_PARTIAL_REPLAY "partial-replay"
+/* maps to SVN_RA_CAPABILITY_ATOMIC_REVPROPS */
+#define SVN_RA_SVN_CAP_ATOMIC_REVPROPS "atomic-revprops"
 
 /** ra_svn passes @c svn_dirent_t fields over the wire as a list of
  * words, these are the values used to represent each field.

Modified: subversion/branches/javahl-ra/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_repos.h?rev=1002283&r1=1002282&r2=1002283&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_repos.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_repos.h Tue Sep 28 17:35:22 2010
@@ -1994,28 +1994,55 @@ svn_repos_fs_get_locks(apr_hash_t **lock
 /** @} */
 
 /**
- * Like svn_fs_change_rev_prop(), but validate the name and value of the
+ * Like svn_fs_change_rev_prop2(), but validate the name and value of the
  * property and invoke the @a repos's pre- and post-revprop-change hooks
  * around the change as specified by @a use_pre_revprop_change_hook and
  * @a use_post_revprop_change_hook (respectively).
  *
  * @a rev is the revision whose property to change, @a name is the
  * name of the property, and @a new_value is the new value of the
- * property.   @a author is the authenticated username of the person
+ * property.   If @a old_value_p is not @c NULL, then @a *old_value_p
+ * is the expected current (preexisting) value of the property (or @c NULL
+ * for "unset").  @a author is the authenticated username of the person
  * changing the property value, or NULL if not available.
  *
  * If @a authz_read_func is non-NULL, then use it (with @a
  * authz_read_baton) to validate the changed-paths associated with @a
  * rev.  If the revision contains any unreadable changed paths, then
- * return SVN_ERR_AUTHZ_UNREADABLE.
+ * return #SVN_ERR_AUTHZ_UNREADABLE.
  *
  * Validate @a name and @a new_value like the same way
  * svn_repos_fs_change_node_prop() does.
  *
  * Use @a pool for temporary allocations.
  *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_repos_fs_change_rev_prop4(svn_repos_t *repos,
+                              svn_revnum_t rev,
+                              const char *author,
+                              const char *name,
+                              const svn_string_t *const *old_value_p,
+                              const svn_string_t *new_value,
+                              svn_boolean_t
+                              use_pre_revprop_change_hook,
+                              svn_boolean_t
+                              use_post_revprop_change_hook,
+                              svn_repos_authz_func_t
+                              authz_read_func,
+                              void *authz_read_baton,
+                              apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_fs_change_rev_prop4(), but with @a old_value_p always
+ * set to @c NULL.  (In other words, it is similar to
+ * svn_fs_change_rev_prop().)
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  * @since New in 1.5.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_fs_change_rev_prop3(svn_repos_t *repos,
                               svn_revnum_t rev,