subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From v...@apache.org
Subject svn commit: r1426654 [1/7] - in /subversion/branches/javahl-ra: ./ build/ build/ac-macros/ subversion/bindings/cxxhl/include/svncxxhl/ subversion/bindings/cxxhl/src/ subversion/bindings/cxxhl/tests/ subversion/include/ subversion/include/private/ subve...
Date Fri, 28 Dec 2012 23:03:53 GMT
Author: vmpn
Date: Fri Dec 28 23:03:51 2012
New Revision: 1426654

URL: http://svn.apache.org/viewvc?rev=1426654&view=rev
Log:
On the javahl-ra branch:

Bring up-to-date with trunk@1426572

Added:
    subversion/branches/javahl-ra/build/ac-macros/compiler.m4
      - copied unchanged from r1426572, subversion/trunk/build/ac-macros/compiler.m4
    subversion/branches/javahl-ra/subversion/bindings/cxxhl/tests/
      - copied from r1426572, subversion/trunk/subversion/bindings/cxxhl/tests/
    subversion/branches/javahl-ra/tools/dev/fsfs-access-map.c
      - copied unchanged from r1426572, subversion/trunk/tools/dev/fsfs-access-map.c
Modified:
    subversion/branches/javahl-ra/   (props changed)
    subversion/branches/javahl-ra/CHANGES
    subversion/branches/javahl-ra/Makefile.in
    subversion/branches/javahl-ra/aclocal.m4
    subversion/branches/javahl-ra/autogen.sh
    subversion/branches/javahl-ra/build.conf
    subversion/branches/javahl-ra/build/ac-macros/svn-macros.m4
    subversion/branches/javahl-ra/build/ac-macros/swig.m4
    subversion/branches/javahl-ra/build/run_tests.py
    subversion/branches/javahl-ra/configure.ac
    subversion/branches/javahl-ra/get-deps.sh
    subversion/branches/javahl-ra/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
    subversion/branches/javahl-ra/subversion/bindings/cxxhl/src/exception.cpp
    subversion/branches/javahl-ra/subversion/include/private/svn_cmdline_private.h
    subversion/branches/javahl-ra/subversion/include/private/svn_mergeinfo_private.h
    subversion/branches/javahl-ra/subversion/include/private/svn_mutex.h
    subversion/branches/javahl-ra/subversion/include/private/svn_named_atomic.h
    subversion/branches/javahl-ra/subversion/include/private/svn_skel.h
    subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h
    subversion/branches/javahl-ra/subversion/include/svn_cmdline.h
    subversion/branches/javahl-ra/subversion/include/svn_config.h
    subversion/branches/javahl-ra/subversion/include/svn_delta.h
    subversion/branches/javahl-ra/subversion/include/svn_io.h
    subversion/branches/javahl-ra/subversion/include/svn_mergeinfo.h
    subversion/branches/javahl-ra/subversion/include/svn_path.h
    subversion/branches/javahl-ra/subversion/include/svn_pools.h
    subversion/branches/javahl-ra/subversion/include/svn_props.h
    subversion/branches/javahl-ra/subversion/include/svn_ra.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_client/add.c
    subversion/branches/javahl-ra/subversion/libsvn_client/client.h
    subversion/branches/javahl-ra/subversion/libsvn_client/cmdline.c
    subversion/branches/javahl-ra/subversion/libsvn_client/commit.c
    subversion/branches/javahl-ra/subversion/libsvn_client/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_client/diff.c
    subversion/branches/javahl-ra/subversion/libsvn_client/externals.c
    subversion/branches/javahl-ra/subversion/libsvn_client/iprops.c
    subversion/branches/javahl-ra/subversion/libsvn_client/merge.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/repos_diff.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/diff_file.c
    subversion/branches/javahl-ra/subversion/libsvn_fs/editor.c
    subversion/branches/javahl-ra/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/javahl-ra/subversion/libsvn_ra/ra_loader.c
    subversion/branches/javahl-ra/subversion/libsvn_repos/authz.c
    subversion/branches/javahl-ra/subversion/libsvn_repos/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_repos/repos.c
    subversion/branches/javahl-ra/subversion/libsvn_repos/repos.h
    subversion/branches/javahl-ra/subversion/libsvn_subr/cmdline.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/config.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/config_file.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/config_impl.h
    subversion/branches/javahl-ra/subversion/libsvn_subr/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/opt.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/path.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/properties.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/skel.c
    subversion/branches/javahl-ra/subversion/libsvn_subr/sqlite.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/adm_ops.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/deprecated.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/props.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/props.h
    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/wc_db_pristine.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/wc_db_update_move.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.c
    subversion/branches/javahl-ra/subversion/libsvn_wc/workqueue.h
    subversion/branches/javahl-ra/subversion/mod_authz_svn/INSTALL
    subversion/branches/javahl-ra/subversion/mod_authz_svn/mod_authz_svn.c
    subversion/branches/javahl-ra/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/javahl-ra/subversion/svn/cl.h
    subversion/branches/javahl-ra/subversion/svn/conflict-callbacks.c
    subversion/branches/javahl-ra/subversion/svn/copy-cmd.c
    subversion/branches/javahl-ra/subversion/svn/file-merge.c
    subversion/branches/javahl-ra/subversion/svn/help-cmd.c
    subversion/branches/javahl-ra/subversion/svn/propedit-cmd.c
    subversion/branches/javahl-ra/subversion/svn/svn.c
    subversion/branches/javahl-ra/subversion/svn/util.c
    subversion/branches/javahl-ra/subversion/svnadmin/svnadmin.c
    subversion/branches/javahl-ra/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/javahl-ra/subversion/svnlook/svnlook.c
    subversion/branches/javahl-ra/subversion/svnmucc/svnmucc.c
    subversion/branches/javahl-ra/subversion/svnrdump/dump_editor.c
    subversion/branches/javahl-ra/subversion/svnrdump/load_editor.c
    subversion/branches/javahl-ra/subversion/svnrdump/svnrdump.c
    subversion/branches/javahl-ra/subversion/svnrdump/svnrdump.h
    subversion/branches/javahl-ra/subversion/svnrdump/util.c
    subversion/branches/javahl-ra/subversion/svnserve/serve.c
    subversion/branches/javahl-ra/subversion/svnserve/server.h
    subversion/branches/javahl-ra/subversion/svnserve/svnserve.8
    subversion/branches/javahl-ra/subversion/svnserve/svnserve.c
    subversion/branches/javahl-ra/subversion/svnserve/svnserve.conf.5
    subversion/branches/javahl-ra/subversion/svnsync/svnsync.c
    subversion/branches/javahl-ra/subversion/tests/cmdline/basic_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/commit_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/diff_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    subversion/branches/javahl-ra/subversion/tests/cmdline/merge_authz_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/merge_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/revert_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnmucc_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/javahl-ra/subversion/tests/cmdline/svntest/main.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_repos/repos-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_subr/config-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_subr/mergeinfo-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_subr/path-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_wc/conflict-data-test.c
    subversion/branches/javahl-ra/subversion/tests/libsvn_wc/utils.c
    subversion/branches/javahl-ra/subversion/tests/svn_test_main.c
    subversion/branches/javahl-ra/tools/client-side/svn-bench/null-log-cmd.c
    subversion/branches/javahl-ra/tools/dist/release.py
    subversion/branches/javahl-ra/tools/server-side/fsfs-reorg.c
    subversion/branches/javahl-ra/tools/server-side/fsfs-stats.c
    subversion/branches/javahl-ra/tools/server-side/svnauthz-validate.c
    subversion/branches/javahl-ra/tools/server-side/svnpubsub/commit-hook.py
    subversion/branches/javahl-ra/tools/server-side/svnpubsub/irkerbridge.py
    subversion/branches/javahl-ra/tools/server-side/svnpubsub/rc.d/svnpubsub.freebsd
    subversion/branches/javahl-ra/tools/server-side/svnpubsub/svnpubsub/client.py
    subversion/branches/javahl-ra/tools/server-side/svnpubsub/svnpubsub/server.py
    subversion/branches/javahl-ra/tools/server-side/svnpubsub/svntweet.py   (props changed)

Propchange: subversion/branches/javahl-ra/
------------------------------------------------------------------------------
  Merged /subversion/branches/issue-4116-dev:r1424719-1425040
  Merged /subversion/trunk:r1423220-1426572
  Merged /subversion/branches/in-repo-authz:r1414342-1424779
  Merged /subversion/branches/tweak-build-take-two:r1424288-1425049,1425051-1425613

Modified: subversion/branches/javahl-ra/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/CHANGES?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/CHANGES (original)
+++ subversion/branches/javahl-ra/CHANGES Fri Dec 28 23:03:51 2012
@@ -34,6 +34,7 @@ http://svn.apache.org/repos/asf/subversi
     * 'svndumpfilter' now supports --delta dumpfiles (r1351009, -3745)
     * client version info now reported to commit hooks (issue #4124)
     * 'svn merge' now uses reintegrate mode automatically when needed
+    * 'svn' is now non-interactive when not run in a terminal device (r1424037)
 
   - Client-side bugfixes:
     *
@@ -65,7 +66,7 @@ http://svn.apache.org/repos/asf/subversi
   - Client-side bugfixes:
     * fix crash with --username option on Windows (r1396285)
     * add missing attributes to "svn log -v --xml" output (r1398100)
-    * fix svn patch ignoring hunks after no trailing newline (r139917)
+    * fix svn patch ignoring hunks after no trailing newline (r1399174)
     * fix hang with ra_serf during error processing (r1403583)
     * ignore file externals with mergeinfo when merging (r1401915)
     * fix "svnmucc cp" segfault with a missing last argument (issue #4079)
@@ -563,6 +564,21 @@ the 1.6 release:  http://subversion.apac
     * fixed setting binary properties in JavaHL (issue #3770)
     * fix type mapping of svn_txdelta_window_t in python bindings (issue #3688)
 
+
+Version 1.6.20
+(04 Jan 2013, from /branches/1.6.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.6.20
+
+ User-visible changes
+  - Client- and server-side bugfixes:
+    * Fix typos in pt_BR, es and zh_TW translations (r1402417)
+
+  - Server-side bugfixes:
+    * add Vary: header to GET responses to improve cacheability (r1390653)
+    * fix fs_fs to cleanup after failed rep transmission (r1403964, et al)
+    * fix an assert with SVNAutoVersioning in mod_dav_svn (issue #4231)
+
+
 Version 1.6.19
 (10 Sep 2012, from /branches/1.6.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.6.19
@@ -578,6 +594,7 @@ http://svn.apache.org/repos/asf/subversi
   - Developer-visible changes:
     * fix the testsuite to avoid FAILs on APR hash order (r1230714, et al)
 
+
 Version 1.6.18
 (29 Mar 2012, from /branches/1.6.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.6.18

Modified: subversion/branches/javahl-ra/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/Makefile.in?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/Makefile.in (original)
+++ subversion/branches/javahl-ra/Makefile.in Fri Dec 28 23:03:51 2012
@@ -169,7 +169,11 @@ DOXYGEN = @DOXYGEN@
 
 # The EXTRA_ parameters can be used to pass extra flags at 'make' time.
 CFLAGS = @CFLAGS@ $(EXTRA_CFLAGS)
+CMODEFLAGS = @CMODEFLAGS@
+CMAINTAINERFLAGS = @CMAINTAINERFLAGS@
 CXXFLAGS = @CXXFLAGS@ $(EXTRA_CXXFLAGS)
+CXXMODEFLAGS = @CXXMODEFLAGS@
+CXXMAINTAINERFLAGS = @CXXMAINTAINERFLAGS@
 ### A few of the CFLAGS (e.g. -Wmissing-prototypes, -Wstrict-prototypes,
 ### -Wmissing-declarations) are not valid for C++, and should be somehow
 ### suppressed (but they may come from httpd or APR).
@@ -177,8 +181,8 @@ CPPFLAGS = @CPPFLAGS@ $(EXTRA_CPPFLAGS)
 LDFLAGS = @LDFLAGS@ $(EXTRA_LDFLAGS)
 SWIG_LDFLAGS = @SWIG_LDFLAGS@ $(EXTRA_SWIG_LDFLAGS)
 
-COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDES)
-COMPILE_CXX = $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES)
+COMPILE = $(CC) $(CMODEFLAGS) $(CPPFLAGS) $(CMAINTAINERFLAGS) $(CFLAGS) $(INCLUDES)
+COMPILE_CXX = $(CXX) $(CXXMODEFLAGS) $(CPPFLAGS) $(CXXMAINTAINERFLAGS) $(CXXFLAGS) $(INCLUDES)
 LT_COMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) $(LT_CFLAGS)
 LT_COMPILE_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=compile $(COMPILE_CXX) $(LT_CFLAGS)
 
@@ -186,7 +190,7 @@ LT_COMPILE_CXX = $(LIBTOOL) $(LTCXXFLAGS
 LT_EXECUTE = $(LIBTOOL) $(LTFLAGS) --mode=execute `for f in $(abs_builddir)/subversion/*/*.la; do echo -dlopen $$f; done`
 
 # special compilation for files destined for mod_dav_svn
-COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(LT_CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c
+COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CMODEFLAGS) $(CPPFLAGS) $(CFLAGS) $(CMAINTAINERFLAGS) $(LT_CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c
 
 # special compilation for files destined for libsvn_swig_* (e.g. swigutil_*.c)
 COMPILE_SWIG_PY = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(CPPFLAGS) $(LT_CFLAGS) -DSWIGPYTHON $(SWIG_PY_INCLUDES) $(INCLUDES) -o $@ -c

Modified: subversion/branches/javahl-ra/aclocal.m4
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/aclocal.m4?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/aclocal.m4 (original)
+++ subversion/branches/javahl-ra/aclocal.m4 Fri Dec 28 23:03:51 2012
@@ -36,6 +36,7 @@ sinclude(build/ac-macros/apr.m4)
 sinclude(build/ac-macros/aprutil.m4)
 sinclude(build/ac-macros/apr_memcache.m4)
 sinclude(build/ac-macros/berkeley-db.m4)
+sinclude(build/ac-macros/compiler.m4)
 sinclude(build/ac-macros/ctypesgen.m4)
 sinclude(build/ac-macros/gssapi.m4)
 sinclude(build/ac-macros/java.m4)

Modified: subversion/branches/javahl-ra/autogen.sh
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/autogen.sh?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/autogen.sh (original)
+++ subversion/branches/javahl-ra/autogen.sh Fri Dec 28 23:03:51 2012
@@ -202,6 +202,7 @@ echo ""
 echo "./configure --enable-maintainer-mode"
 echo "./configure --disable-shared"
 echo "./configure --enable-maintainer-mode --disable-shared"
+echo "./configure CUSERFLAGS='--flags-for-C' CXXUSERFLAGS='--flags-for-C++'"
 echo ""
 echo "Note:  If you wish to run a Subversion HTTP server, you will need"
 echo "Apache 2.x.  See the INSTALL file for details."

Modified: subversion/branches/javahl-ra/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/build.conf?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/build.conf (original)
+++ subversion/branches/javahl-ra/build.conf Fri Dec 28 23:03:51 2012
@@ -655,6 +655,16 @@ msvc-static = yes
 compile-cmd = $(COMPILE_CXXHL_CXX)
 link-cmd = $(LINK_CXX_LIB)
 
+[cxxhl-tests]
+description = Unit tests for Subversion C++ HighLevel bindings
+type = exe
+path = subversion/bindings/cxxhl
+libs = libsvncxxhl libsvn_subr
+sources = tests/*.cpp
+install = tests
+compile-cmd = $(COMPILE_CXXHL_CXX)
+link-cmd = $(LINK_CXX)
+
 # ----------------------------------------------------------------------------
 #
 # TESTING TARGETS
@@ -1227,7 +1237,7 @@ libs = __ALL__
        ra-local-test
        svndiff-test vdelta-test
        entries-dump atomic-ra-revprop-change wc-lock-tester wc-incomplete-tester
-       diff diff3 diff4 fsfs-reorg fsfs-stats svn-bench
+       diff diff3 diff4 fsfs-reorg fsfs-stats fsfs-access-map svn-bench
        client-test
        conflict-data-test db-test pristine-store-test entries-compat-test
        op-depth-test dirent_uri-test wc-queries-test wc-test
@@ -1290,6 +1300,13 @@ sources = fsfs-stats.c
 install = tools
 libs = libsvn_delta libsvn_subr apr
 
+[fsfs-access-map]
+type = exe
+path = tools/dev
+sources = fsfs-access-map.c
+install = tools
+libs = libsvn_subr apr
+
 [diff]
 type = exe
 path = tools/diff

Modified: subversion/branches/javahl-ra/build/ac-macros/svn-macros.m4
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/build/ac-macros/svn-macros.m4?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/build/ac-macros/svn-macros.m4 (original)
+++ subversion/branches/javahl-ra/build/ac-macros/svn-macros.m4 Fri Dec 28 23:03:51 2012
@@ -141,37 +141,6 @@ done
 $1="${svn_cur}"
 ])
 
-dnl SVN_MAYBE_ADD_TO_CFLAGS(option)
-dnl
-dnl Attempt to compile a trivial C program to test if the option passed
-dnl is valid. If it is, then add it to CFLAGS. with the passed in option
-dnl and see if it was successfully compiled.
-dnl
-dnl This macro is usually used for stricter syntax checking flags.
-dnl Therefore we include certain headers which may in turn include system
-dnl headers, as system headers on some platforms may fail strictness checks
-dnl we wish to use on other platforms.
-
-AC_DEFUN(SVN_MAYBE_ADD_TO_CFLAGS,
-[
-  option="$1"
-  svn_maybe_add_to_cflags_saved_flags="$CFLAGS"
-  CFLAGS="$CFLAGS $option"
-  AC_MSG_CHECKING([if $CC accepts $option])
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-    [[#include <apr_portable.h>]],
-    [[]])],
-    [svn_maybe_add_to_cflags_ok="yes"],
-    [svn_maybe_add_to_cflags_ok="no"]
-  )
-  if test "$svn_maybe_add_to_cflags_ok" = "yes"; then
-    AC_MSG_RESULT([yes, will use it])
-  else
-    AC_MSG_RESULT([no])
-    CFLAGS="$svn_maybe_add_to_cflags_saved_flags"
-  fi
-])
-
 dnl SVN_STRIP_FLAG(FLAG_VAR_NAME, FLAG)
 dnl
 dnl Remove FLAG from the variable FLAG_VAR_NAME, if it exists.  This macro

Modified: subversion/branches/javahl-ra/build/ac-macros/swig.m4
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/build/ac-macros/swig.m4?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/build/ac-macros/swig.m4 (original)
+++ subversion/branches/javahl-ra/build/ac-macros/swig.m4 Fri Dec 28 23:03:51 2012
@@ -120,14 +120,6 @@ AC_DEFUN(SVN_FIND_SWIG,
     ])
     SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS"
 
-    dnl Swig-generated code results in a number of shadowed variables and other
-    dnl warnings, so ignore them when compiling swig-py
-    SVN_STRIP_FLAG(SWIG_PY_COMPILE, [-Wall])
-    SVN_STRIP_FLAG(SWIG_PY_COMPILE, [-Wunused])
-    SVN_STRIP_FLAG(SWIG_PY_COMPILE, [-Wshadow])
-    SVN_STRIP_FLAG(SWIG_PY_COMPILE, [-Wmissing-prototypes])
-    SVN_STRIP_FLAG(SWIG_PY_COMPILE, [-Wmissing-declarations])
-
     AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[
       ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`"
     ])
@@ -213,20 +205,13 @@ AC_DEFUN(SVN_FIND_SWIG,
     SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
 
     AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
-      # Ruby doesn't like '-ansi', so strip that out of CFLAGS
-      svn_cv_ruby_compile="$rbconfig_CC `echo $CFLAGS | $SED -e "s/ -ansi//g;s/ -std=c89//g"`"
+      svn_cv_ruby_compile="$rbconfig_CC $CFLAGS"
     ])
     SWIG_RB_COMPILE="$svn_cv_ruby_compile"
-
-    dnl The swig bindings create a lot of spurious warnings with several of
-    dnl our standard compiler flags, so filter them out here
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wall])
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wunused])
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wshadow])
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wstrict-prototypes])
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wmissing-declarations])
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wmissing-prototypes])
-    SVN_STRIP_FLAG(SWIG_RB_COMPILE, [-Wredundant-decls])
+    SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi])
+    SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89])
+    SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90])
+    dnl FIXME: Check that the compiler for Ruby actually supports this flag
     SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast"
 
     AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[
@@ -245,7 +230,10 @@ AC_DEFUN(SVN_FIND_SWIG,
     AC_MSG_CHECKING([for rb_errinfo])
     old_CFLAGS="$CFLAGS"
     old_LIBS="$LIBS"
-    CFLAGS="`echo $CFLAGS | $SED -e "s/ -ansi//g;s/ -std=c89//g"` $svn_cv_ruby_includes"
+    CFLAGS="$CFLAGS $svn_cv_ruby_includes"
+    SVN_STRIP_FLAG([CFLAGS], [-ansi])
+    SVN_STRIP_FLAG([CFLAGS], [-std=c89])
+    SVN_STRIP_FLAG([CFLAGS], [-std=c90])
     LIBS="$SWIG_RB_LIBS"
     AC_LINK_IFELSE([AC_LANG_SOURCE([[
 #include <ruby.h>

Modified: subversion/branches/javahl-ra/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/build/run_tests.py?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/build/run_tests.py (original)
+++ subversion/branches/javahl-ra/build/run_tests.py Fri Dec 28 23:03:51 2012
@@ -565,11 +565,12 @@ class TestHarness:
     progdir, progbase = os.path.split(prog)
     if self.log:
       # Using write here because we don't want even a trailing space
-      test_info = '%s [%d/%d]' % (progbase, test_nr + 1, total_tests)
+      test_info = '[%s/%d] %s' % (str(test_nr + 1).zfill(len(str(total_tests))),
+                                  total_tests, progbase)
       if self.list_tests:
         sys.stdout.write('Listing tests in %s' % (test_info, ))
       else:
-        sys.stdout.write('Running tests in %s' % (test_info, ))
+        sys.stdout.write('%s' % (test_info, ))
       sys.stdout.flush()
     else:
       # ### Hack for --log-to-stdout to work (but not print any dots).
@@ -589,7 +590,6 @@ class TestHarness:
     line_length = _get_term_width()
     dots_needed = line_length \
                     - len(test_info) \
-                    - len('Running tests in ') \
                     - len('success')
     try:
       os.chdir(progdir)

Modified: subversion/branches/javahl-ra/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/configure.ac?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/configure.ac (original)
+++ subversion/branches/javahl-ra/configure.ac Fri Dec 28 23:03:51 2012
@@ -49,10 +49,16 @@ SVN_CONFIG_NICE(config.nice)
 # ==== Check for programs ====================================================
 
 # Look for a C compiler (before anything can set CFLAGS)
+CMAINTAINERFLAGS="$CUSERFLAGS"
+CUSERFLAGS="$CFLAGS"
 AC_PROG_CC
+SVN_CC_MODE_SETUP
 
-# Look for a C++ compiler
+# Look for a C++ compiler (before anything can set CXXFLAGS)
+CXXMAINTAINERFLAGS="$CXXUSERFLAGS"
+CXXUSERFLAGS="$CXXFLAGS"
 AC_PROG_CXX
+SVN_CXX_MODE_SETUP
 
 # Look for a C pre-processor
 AC_PROG_CPP
@@ -148,8 +154,8 @@ SVN_FIND_APACHE(20020903)
 
 dnl Search for SQLite
 SQLITE_MINIMUM_VER="3.7.12"
-SQLITE_RECOMMENDED_VER="3.7.15"
-SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %u%02u%02u%02u $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
+SQLITE_RECOMMENDED_VER="3.7.15.1"
+SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
 
 SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
                ${SQLITE_URL})
@@ -916,22 +922,22 @@ AS_HELP_STRING([--enable-debug],
 [
     # Neither --enable-debug nor --disable-debug was passed.
     enable_debugging="maybe"
-
-        # We leave this as 'maybe' because setting it to 'no' would modify the
-        # CFLAGS/CXXFLAGS later (just after the --enable-maintainer-mode block),
-        # and we don't want to force that.
-    #
-    # TODO: set enable_debugging='no' here, and provide another way to disable
-    #       the CFLAGS/CXXFLAGS munging.
 ])
 
-
-dnl Add -Werror=implicit-function-declaration to CFLAGS
-CFLAGS_KEEP="$CFLAGS"
-CFLAGS="$CFLAGS_KEEP -Werror=implicit-function-declaration"
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-CFLAGS="$CFLAGS_KEEP"
-
+AC_ARG_ENABLE(optimize,
+AS_HELP_STRING([--enable-optimize],
+               [Turn on optimizations]),
+[
+    if test "$enableval" = "yes" ; then
+      enable_optimization="yes"
+    else
+      enable_optimization="no"
+    fi
+],
+[
+    # Neither --enable-optimize nor --disable-optimize was passed.
+    enable_optimization="maybe"
+])
 
 dnl Use -Wl,--no-undefined during linking of some libraries
 AC_ARG_ENABLE(disallowing-of-undefined-references,
@@ -985,89 +991,138 @@ AS_HELP_STRING([--enable-maintainer-mode
         AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
       fi
       enable_debugging=yes
+
+      dnl Enable some extra warnings. Put these before the user's flags
+      dnl so the user can specify flags that override these.
       if test "$GCC" = "yes"; then
         AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
-        dnl Enable some extra warnings. Put these before the user's flags
-        dnl so the user can specify flags that override these.
-        CFLAGS="-Wpointer-arith -Wwrite-strings -Wshadow -ansi -Wall -Wformat=2 -Wunused -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Wunreachable-code -Winline -Wno-long-long $CFLAGS"
-        CXXFLAGS="-Wpointer-arith -Wwrite-strings -Wshadow -ansi -Wall $CXXFLAGS"
 
         dnl some additional flags that can be handy for an occasional review,
         dnl but throw too many warnings in svn code, of too little importance,
         dnl to keep these enabled. Remove the "dnl" to do a run with these
         dnl switches enabled.
-        dnl CFLAGS="-Wswitch-enum -Wswitch-default $CFLAGS"
+        dnl ./configure CUSERFLAGS="-Wswitch-enum -Wswitch-default"
 
         dnl Add each of the following flags only if the C compiler accepts it.
-
         CFLAGS_KEEP="$CFLAGS"
-        AC_LANG_PUSH([C])
+        CFLAGS=""
 
-        CFLAGS="-Werror=declaration-after-statement $CFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
+        SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
+        SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
+        SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
+        SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
+        SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
+        SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
+        SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
+        SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
 
-        CFLAGS="-Wextra-tokens $CFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-
-        CFLAGS="-Wnewline-eof $CFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-
-        CFLAGS="-Wshorten-64-to-32 $CFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-
-        CFLAGS="-Wold-style-definition $CFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-
-        CFLAGS="-Wno-system-headers $CFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-
-        dnl Put this flag behind -Wall:
-
-        CFLAGS="$CFLAGS_KEEP -Wno-format-nonliteral"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CFLAGS_KEEP="$CFLAGS"])
-
-        AC_LANG_POP([C])
+        CMAINTAINERFLAGS="$CFLAGS $CMAINTAINERFLAGS"
         CFLAGS="$CFLAGS_KEEP"
 
-        dnl Add each of the following flags only if the C++ compiler accepts it.
+        dnl Add flags that all versions of GCC (should) support
+        CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long $CMAINTAINERFLAGS"
+      fi
+      if test "$GXX" = "yes"; then
+        AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
 
+        dnl Add each of the following flags only if the C++ compiler accepts it.
         CXXFLAGS_KEEP="$CXXFLAGS"
-        AC_LANG_PUSH([C++])
-
-        CXXFLAGS="-Wextra-tokens $CXXFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CXXFLAGS_KEEP="$CXXFLAGS"])
+        CXXFLAGS=""
 
-        CXXFLAGS="-Wshorten-64-to-32 $CXXFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CXXFLAGS_KEEP="$CXXFLAGS"])
+        SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
+        SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
+        SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
+        SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
 
-        CXXFLAGS="-Wno-system-headers $CXXFLAGS_KEEP"
-        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])], [CXXFLAGS_KEEP="$CXXFLAGS"])
-
-        AC_LANG_POP([C++])
+        CXXMAINTAINERFLAGS="$CXXFLAGS $CXXMAINTAINERFLAGS"
         CXXFLAGS="$CXXFLAGS_KEEP"
+
+        dnl Add flags that all versions of G++ (should) support
+        CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
       fi
     fi
 ])
 
 if test "$enable_debugging" = "yes" ; then
   dnl At the moment, we don't want optimization, because we're
-  dnl debugging.
-  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
-  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+  dnl debugging. Unless optiization was explicitly enabled.
+  if test "$enable_optimization" != "yes"; then
+    AC_MSG_NOTICE([Disabling optimizations for debugging])
+    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+  fi
+  dnl Add debugging flags, unless they were set by the user
+  if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
+    AC_MSG_NOTICE([Enabling debugging for C])
+    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
+    SVN_CFLAGS_ADD_IFELSE([-fno-inline])
+    SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
+    SVN_CFLAGS_ADD_IFELSE([-g3],[],[
+      SVN_CFLAGS_ADD_IFELSE([-g2],[],[
+        SVN_CFLAGS_ADD_IFELSE([-g])])])
+  fi
+  if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
+    AC_MSG_NOTICE([Enabling debugging for C++])
+    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
+    SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
+    SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
+    SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
+      SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
+        SVN_CXXFLAGS_ADD_IFELSE([-g])])])
+  fi
   dnl SVN_DEBUG enables specific features for developer builds
   dnl AP_DEBUG enables specific (Apache) features for developer builds
   CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
   CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
 elif test "$enable_debugging" = "no" ; then
-    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' | $SED -e 's/-g//g'`"]
-    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' | $SED -e 's/-g//g'`"]
-    dnl Compile with NDEBUG to get rid of assertions
-    CFLAGS="$CFLAGS -DNDEBUG"
-    CXXFLAGS="$CXXFLAGS -DNDEBUG"
+  AC_MSG_NOTICE([Disabling debugging])
+  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
+  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
+  dnl Compile with NDEBUG to get rid of assertions
+  CFLAGS="$CFLAGS -DNDEBUG"
+  CXXFLAGS="$CXXFLAGS -DNDEBUG"
 # elif test "$enable_debugging" = "maybe" ; then
 #   # do nothing
 fi
 
+if test "$enable_optimization" = "yes"; then
+  dnl Add optimization flags, unless they were set by the user
+  if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
+    CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+    if test "$enable_debugging" = "yes"; then
+      AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
+      SVN_CFLAGS_ADD_IFELSE([-O1],[],[
+        SVN_CFLAGS_ADD_IFELSE([-O])])
+    else
+      AC_MSG_NOTICE([Enabling optimizations for C])
+      SVN_CFLAGS_ADD_IFELSE([-O2],[],[
+        SVN_CFLAGS_ADD_IFELSE([-O1],[],[
+          SVN_CFLAGS_ADD_IFELSE([-O])])])
+    fi
+  fi
+  if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
+    CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+    if test "$enable_debugging" = "yes"; then
+      AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
+      SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
+        SVN_CXXFLAGS_ADD_IFELSE([-O])])
+    else
+      AC_MSG_NOTICE([Enabling optimizations for C++])
+      SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
+        SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
+          SVN_CXXFLAGS_ADD_IFELSE([-O])])])
+    fi
+  fi
+elif test "$enable_optimization" = "no"; then
+  dnl Remove all optimization flags
+  AC_MSG_NOTICE([Disabling optimizations])
+  CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+  CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
+# elif test "$enable_optimization" = "maybe" ; then
+#   # do nothing
+fi
+
+
 AC_ARG_ENABLE(full-version-match,
 AS_HELP_STRING([--disable-full-version-match],
                [Disable the full version match rules when checking
@@ -1387,11 +1442,6 @@ if test "$CC" = "clang"; then
   SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
 fi
 
-# Clang also doesn't (yet) support the '-ansi' flag
-if test "$CC" = "clang"; then
-  SVN_STRIP_FLAG(CFLAGS, [-ansi ])
-fi
-
 dnl Since this is used only on Unix-y systems, define the path separator as '/'
 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
         [Defined to be the path separator used on your local filesystem])

Modified: subversion/branches/javahl-ra/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/get-deps.sh?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/get-deps.sh (original)
+++ subversion/branches/javahl-ra/get-deps.sh Fri Dec 28 23:03:51 2012
@@ -27,8 +27,8 @@ APR=apr-1.4.6
 APR_UTIL=apr-util-1.5.1
 SERF=serf-1.1.1
 ZLIB=zlib-1.2.7
-SQLITE_VERSION=3.7.15
-SQLITE=sqlite-amalgamation-$(printf %u%02u%02u%02u $(echo $SQLITE_VERSION | sed -e 's/\./ /g'))
+SQLITE_VERSION=3.7.15.1
+SQLITE=sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo $SQLITE_VERSION | sed -e 's/\./ /g'))
 
 HTTPD=httpd-2.4.3
 APR_ICONV=apr-iconv-1.2.1
@@ -115,7 +115,7 @@ get_deps() {
 
     if [ $# -gt 0 ]; then
       for target; do
-        if [ "$target" -ne "deps" ]; then
+        if [ "$target" != "deps" ]; then
           get_$target || usage
         else
           usage

Modified: subversion/branches/javahl-ra/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp Fri Dec 28 23:03:51 2012
@@ -29,16 +29,23 @@
 #define SVN_CXXHL_EXCEPTION_HPP
 
 #include <exception>
+#include <string>
+#include <utility>
+#include <vector>
 
 #include "svncxxhl/_compat.hpp"
 
+// Forward declaration of implementation-specific structure
+struct svn_error_t;
+
 namespace subversion {
 namespace cxxhl {
 
 namespace compat {} // Announce the compat namespace for shared_ptr lookup
 
 namespace detail {
-struct error_description;
+// Forward declaration of implementation-specific structure
+class error_description;
 } // namespace detail
 
 namespace version_1_9_dev {
@@ -48,33 +55,74 @@ class error : public std::exception
 public:
   typedef compat::shared_ptr<error> shared_ptr;
 
-  error(const char* description, int errno);
-  error(const char* description, int errno, shared_ptr nested);
+  error(const char* description, int error_code);
+  error(const char* description, int error_code, shared_ptr nested_error);
 
   error(const error& that) throw();
   error& operator=(const error& that) throw();
   virtual ~error() throw();
 
+  /**
+   * Returns the error code associated with the exception.
+   */
   virtual int code() const throw() { return m_errno; }
-  virtual const char* what() const throw();
+
+  /**
+   * Returns a shared pointer to the nested exception object, if any.
+   */
   virtual shared_ptr nested() const throw() { return m_nested; }
 
-private:
-  int m_errno;                ///< The (SVN or APR) error code
-  shared_ptr m_nested;        ///< Optional pointer to nessted error
+  /// Returns the message associated with this exception object.
+  virtual const char* what() const throw();
 
-  /// Error message; will be @c NULL if this is a trace link.
-  detail::error_description* m_description;
+  /**
+   * Error message description.
+   *
+   * The first element of this pair is the error code, the second the
+   * associated error message. If the error code is 0, the message
+   * describes the location in the source code where the error was
+   * generated from.
+   */
+  typedef std::pair<int, std::string> message;
 
   /**
-   * The location of the error in @a m_loc_file at @a m_loc_line.
+   * The list of messages associated with an error.
+   */
+  typedef std::vector<message> message_list;
+
+  /**
+   * Returns the complete list of error messages, including those from
+   * nested exceptions.
+   */
+  virtual message_list messages() const
+    {
+      return compile_messages(false);
+    }
+
+  /**
+   * Like error::messages(), but includes debugging traceback.
    *
-   * @a m_loc_file will be @c NULL if the location is not available
-   * (i.e., if the wrapped Subversion library was not compiled in
-   * maintaner mode.
+   * @note
+   * Traceback is only available if the Subversion libraries were
+   * compiled with tracing enabled.
    */
-  const char* m_loc_file;
-  int m_loc_line;
+  virtual message_list traced_messages() const
+    {
+      return compile_messages(true);
+    }
+
+public:
+  /** Used internally by the implementation. */
+  static void throw_svn_error(svn_error_t*);
+
+private:
+  error(int error_code, detail::error_description* description) throw();
+  std::vector<message> compile_messages(bool show_traces) const;
+
+  int m_errno;                /**< The (SVN or APR) error code. */
+  shared_ptr m_nested;        /**< Optional pointer to nessted error. */
+  /** Error description and trace location information. */
+  detail::error_description* m_description;
 };
 
 class canceled : public error {};

Modified: subversion/branches/javahl-ra/subversion/bindings/cxxhl/src/exception.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/cxxhl/src/exception.cpp?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/cxxhl/src/exception.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/cxxhl/src/exception.cpp Fri Dec 28 23:03:51 2012
@@ -21,14 +21,19 @@
  * @endcopyright
  */
 
-#include <csignal>
+#include <algorithm>
 #include <cstddef>
 #include <cstring>
 #include <new>
+#include <sstream>
 
 #include "svncxxhl/exception.hpp"
 
 #include "svn_error.h"
+#include "svn_utf.h"
+#include "private/svn_atomic.h"
+#include "private/svn_error_private.h"
+#include "svn_private_config.h"
 #undef TRUE
 #undef FALSE
 
@@ -37,28 +42,72 @@ namespace cxxhl {
 
 namespace detail {
 
-struct error_description
+class error_description
 {
-  volatile std::sig_atomic_t m_refcount;
-  char m_message[1];
+public:
+  static error_description* create(const char* message,
+                                   const char *loc_file, long loc_line,
+                                   bool trace_link)
+    {
+      bool empty_message = (message == NULL);
+      const std::size_t length = (empty_message ? 0 : std::strlen(message));
+      void *memblock = ::operator new(length + sizeof(error_description));
+
+      error_description* description = new(memblock) error_description(
+          loc_file, loc_line, trace_link, empty_message);
+      if (length)
+        std::memcpy(description->m_message, message, length);
+      description->m_message[length] = 0;
+      return description;
+    }
 
-  static error_description* create(const char* message) throw(std::bad_alloc)
+  static error_description* create(const char* message)
     {
-      const std::size_t len = std::strlen(message);
-      void *memblock = ::operator new(len + sizeof(error_description));
+      return create(message, NULL, 0, false);
+    }
 
-      error_description* err = new(memblock) error_description;
-      std::memcpy(err->m_message, message, len);
-      err->m_message[len] = 0;
-      err->m_refcount = 0;
-      return err;
+  error_description* reference() throw()
+    {
+      if (this)
+        svn_atomic_inc(&m_refcount);
+      return this;
     }
 
-  static void destroy(error_description* message) throw()
+  error_description* dereference() throw()
     {
-      // TODO: DEBUG assert(message->m_refcount == 0)
-      ::operator delete(message, std::nothrow);
+      if (this && 0 == svn_atomic_dec(&m_refcount))
+        {
+          this->~error_description();
+          ::operator delete(this, std::nothrow);
+          return NULL;
+        }
+      return this;
     }
+
+  const char* what() const throw() { return (m_empty ? NULL : m_message); }
+  const char* file() const throw() { return m_loc_file; }
+  long line() const throw() { return m_loc_line; }
+  bool trace() const throw() { return m_trace; }
+
+private:
+  error_description(const char *loc_file, long loc_line,
+                    bool trace_link, bool empty_message) throw()
+    : m_loc_file(loc_file),
+      m_loc_line(loc_line),
+      m_trace(trace_link),
+      m_empty(empty_message),
+      m_refcount(0)
+    {}
+
+  ~error_description() throw() {}
+
+  const char* m_loc_file;
+  long m_loc_line;
+  bool m_trace;
+  bool m_empty;
+
+  volatile svn_atomic_t m_refcount;
+  char m_message[1];
 };
 
 } // namespace detail
@@ -68,27 +117,21 @@ namespace version_1_9_dev {
 
 error::error(const char* description, int error_code)
   : m_errno(error_code),
-    m_description(detail::error_description::create(description))
-{
-  ++m_description->m_refcount;
-}
+    m_description(detail::error_description::create(description)->reference())
+{}
 
 error::error(const char* description, int error_code,
              error::shared_ptr nested_error)
   : m_errno(error_code),
     m_nested(nested_error),
-    m_description(detail::error_description::create(description))
-{
-  ++m_description->m_refcount;
-}
+    m_description(detail::error_description::create(description)->reference())
+{}
 
 error::error(const error& that) throw()
   : m_errno(that.m_errno),
     m_nested(that.m_nested),
-    m_description(that.m_description)
-{
-  ++m_description->m_refcount;
-}
+    m_description(that.m_description->reference())
+{}
 
 error& error::operator=(const error& that) throw()
 {
@@ -104,13 +147,160 @@ error& error::operator=(const error& tha
 
 error::~error() throw()
 {
-  if (!--m_description->m_refcount)
-    detail::error_description::destroy(m_description);
+  m_description->dereference();
 }
 
 const char* error::what() const throw()
 {
-  return m_description->m_message;
+  return m_description->what();
+}
+
+error::error(int error_code, detail::error_description* description) throw()
+  : m_errno(error_code),
+    m_description(description)
+{}
+
+void error::throw_svn_error(svn_error_t* err)
+{
+  detail::error_description* description = NULL;
+  try
+    {
+      // Be very careful when creating the error descriptions, so that
+      // the exception unwinder can free them if an allocation fails.
+      // The private constructor does not increment the refcount
+      // precisely for this reason.
+      description = detail::error_description::create(
+          err->message, err->file, err->line,
+          svn_error__is_tracing_link(err));
+      description->reference();
+      error converted = error(err->apr_err, description);
+      description = NULL;
+
+      svn_error_t *prev = err;
+      error* current = &converted;
+      for (err = err->child; err; prev = err, err = err->child)
+        {
+          svn_error_clear(prev);
+          description = detail::error_description::create(
+              err->message, err->file, err->line,
+              svn_error__is_tracing_link(err));
+          description->reference();
+          current->m_nested.reset(new error(err->apr_err, description));
+          description = NULL;
+          current = current->m_nested.get();
+        }
+      svn_error_clear(prev);
+      throw converted;
+    }
+  catch (...)
+    {
+      description->dereference();
+      throw;
+    }
+}
+
+
+namespace {
+void handle_one_error(error::message_list& ml, bool show_traces,
+                      int error_code, detail::error_description* descr,
+                      apr_pool_t* pool)
+{
+  if (show_traces && descr->file())
+    {
+      const char* file_utf8 = NULL;
+      svn_error_t* err =
+        svn_utf_cstring_to_utf8(&file_utf8, descr->file(), pool);
+      if (err)
+        {
+          svn_error_clear(err);
+          file_utf8 = NULL;
+        }
+      std::ostringstream buffer;
+      if (file_utf8)
+        buffer << file_utf8 << ':' << descr->line();
+      else
+        buffer << "svn:<undefined>";
+      buffer << ": (apr_err=" << error_code << ')';
+      ml.push_back(error::message(0, buffer.str()));
+    }
+
+  if (descr->trace())
+    return;
+
+  const char *description = descr->what();
+  if (!description)
+    {
+      char errorbuf[512];
+
+      // Is this a Subversion-specific error code?
+      if (error_code > APR_OS_START_USEERR
+          && error_code <= APR_OS_START_CANONERR)
+        description = svn_strerror(error_code, errorbuf, sizeof(errorbuf));
+      // Otherwise, this must be an APR error code.
+      else
+        {
+          svn_error_t* err = svn_utf_cstring_to_utf8(
+              &description,
+              apr_strerror(error_code, errorbuf, sizeof(errorbuf)),
+              pool);
+          if (err)
+            {
+              svn_error_clear(err);
+              description = _("Can't recode error string from APR");
+            }
+        }
+    }
+  ml.push_back(error::message(error_code, std::string(description)));
+}
+} // anonymous namespace
+
+error::message_list error::compile_messages(bool show_traces) const
+{
+  // Determine the maximum size of the returned list
+  message_list::size_type max_length = 0;
+  for (const error* err = this; err; err = err->m_nested.get())
+    {
+      if (show_traces && m_description->file())
+        ++max_length;                   // We will display an error location
+      if (!m_description->trace())
+        ++max_length;                   // Traces do not emit a message line
+    }
+  message_list ml;
+  ml.reserve(max_length);
+
+  // This vector holds a list of all error codes that we've printed
+  // the generic description for.  See svn_handle_error2 for details.
+  std::vector<int> empties;
+  empties.reserve(max_length);
+
+  apr_pool_t* pool = NULL;
+  apr_pool_create(&pool, NULL);
+  try
+    {
+      for (const error* err = this; err; err = err->m_nested.get())
+        {
+          if (!err->m_description->what())
+            {
+              // Non-specific messages are printed only once.
+              std::vector<int>::iterator it = std::find(
+                  empties.begin(), empties.end(), err->m_errno);
+              if (it != empties.end())
+                continue;
+              empties.push_back(err->m_errno);
+            }
+          handle_one_error(ml, show_traces,
+                           err->m_errno, err->m_description,
+                           pool);
+        }
+    }
+  catch (...)
+    {
+      apr_pool_destroy(pool);
+      throw;
+    }
+
+  apr_pool_destroy(pool);
+  return ml;
 }
 
 } // namespace version_1_9_dev

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_cmdline_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_cmdline_private.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_cmdline_private.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_cmdline_private.h Fri Dec 28 23:03:51 2012
@@ -28,6 +28,7 @@
 #define SVN_CMDLINE_PRIVATE_H
 
 #include <apr_pools.h>
+#include <apr_hash.h>
 
 #include "svn_string.h"
 #include "svn_error.h"
@@ -143,6 +144,61 @@ svn_cmdline__print_xml_prop_hash(svn_str
                                  svn_boolean_t inherited_props,
                                  apr_pool_t *pool);
 
+
+/* Search for a text editor command in standard environment variables,
+   and invoke it to edit PATH.  Use POOL for all allocations.
+
+   If EDITOR_CMD is not NULL, it is the name of the external editor
+   command to use, overriding anything else that might determine the
+   editor.
+
+   CONFIG is a hash of svn_config_t * items keyed on a configuration
+   category (SVN_CONFIG_CATEGORY_CONFIG et al), and may be NULL.  */
+svn_error_t *
+svn_cmdline__edit_file_externally(const char *path,
+                                  const char *editor_cmd,
+                                  apr_hash_t *config,
+                                  apr_pool_t *pool);
+
+/* Search for a text editor command in standard environment variables,
+   and invoke it to edit CONTENTS (using a temporary file created in
+   directory BASE_DIR).  Return the new contents in *EDITED_CONTENTS,
+   or set *EDITED_CONTENTS to NULL if no edit was performed.
+
+   If EDITOR_CMD is not NULL, it is the name of the external editor
+   command to use, overriding anything else that might determine the
+   editor.
+
+   If TMPFILE_LEFT is NULL, the temporary file will be destroyed.
+   Else, the file will be left on disk, and its path returned in
+   *TMPFILE_LEFT.
+
+   CONFIG is a hash of svn_config_t * items keyed on a configuration
+   category (SVN_CONFIG_CATEGORY_CONFIG et al), and may be NULL.
+
+   If AS_TEXT is TRUE, recode CONTENTS and convert to native eol-style before
+   editing and back again afterwards.  In this case, ENCODING determines the
+   encoding used during editing.  If non-NULL, use the named encoding, else
+   use the system encoding.  If AS_TEXT is FALSE, don't do any translation.
+   In that case, ENCODING is ignored.
+
+   Use POOL for all allocations.  Use PREFIX as the prefix for the
+   temporary file used by the editor.
+
+   If return error, *EDITED_CONTENTS is not touched. */
+svn_error_t *
+svn_cmdline__edit_string_externally(svn_string_t **edited_contents,
+                                    const char **tmpfile_left,
+                                    const char *editor_cmd,
+                                    const char *base_dir,
+                                    const svn_string_t *contents,
+                                    const char *prefix,
+                                    apr_hash_t *config,
+                                    svn_boolean_t as_text,
+                                    const char *encoding,
+                                    apr_pool_t *pool);
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_mergeinfo_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_mergeinfo_private.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_mergeinfo_private.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_mergeinfo_private.h Fri Dec 28 23:03:51 2012
@@ -50,12 +50,21 @@ svn_rangelist__set_inheritance(svn_range
  * R1 >= R2 in a "R1-R2" range element).
  *
  * Unlike svn_mergeinfo_parse(), this does not sort the ranges into order
- * or combine adjacent and overlapping ranges. */
+ * or combine adjacent and overlapping ranges.
+ *
+ * The compaction can be done with svn_rangelist__combine_adjacent_ranges().
+ */
 svn_error_t *
 svn_rangelist__parse(svn_rangelist_t **rangelist,
                      const char *str,
                      apr_pool_t *result_pool);
 
+/* In-place combines adjacent ranges in a rangelist.
+   SCRATCH_POOL is just used for providing error messages. */
+svn_error_t *
+svn_rangelist__combine_adjacent_ranges(svn_rangelist_t *rangelist,
+                                       apr_pool_t *scratch_pool);
+
 /* Set inheritability of all rangelists in MERGEINFO to INHERITABLE.
    If MERGEINFO is NULL do nothing.  If a rangelist in MERGEINFO is
    NULL leave it alone. */

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_mutex.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_mutex.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_mutex.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_mutex.h Fri Dec 28 23:03:51 2012
@@ -57,8 +57,8 @@ typedef void svn_mutex__t;
 
 /** Initialize the @a *mutex. If @a mutex_required is TRUE, the mutex will
  * actually be created with a lifetime defined by @a result_pool. Otherwise,
- * the pointer will be set to @c NULL and @ref svn_mutex__lock as well as
- * @ref svn_mutex__unlock will be no-ops.
+ * the pointer will be set to @c NULL and svn_mutex__lock() as well as
+ * svn_mutex__unlock() will be no-ops.
  *
  * If threading is not supported by APR, this function is a no-op.
  */
@@ -67,27 +67,27 @@ svn_mutex__init(svn_mutex__t **mutex,
                 svn_boolean_t mutex_required,
                 apr_pool_t *result_pool);
 
-/** Acquire the @a mutex, if that has been enabled in @ref svn_mutex__init.
- * Make sure to call @ref svn_mutex__unlock some time later in the same
+/** Acquire the @a mutex, if that has been enabled in svn_mutex__init().
+ * Make sure to call svn_mutex__unlock() some time later in the same
  * thread to release the mutex again. Recursive locking are not supported.
  *
- * @note You should use @ref SVN_MUTEX__WITH_LOCK instead of explicit lock
+ * @note You should use #SVN_MUTEX__WITH_LOCK instead of explicit lock
  * aquisition and release.
  */
 svn_error_t *
 svn_mutex__lock(svn_mutex__t *mutex);
 
-/** Release the @a mutex, previously acquired using @ref svn_mutex__lock
- * that has been enabled in @ref svn_mutex__init.
+/** Release the @a mutex, previously acquired using svn_mutex__lock()
+ * that has been enabled in svn_mutex__init().
  *
  * Since this is often used as part of the calling function's exit
  * sequence, we accept that function's current return code in @a err.
- * If it is not @ref SVN_NO_ERROR, it will be used as the return value -
+ * If it is not #SVN_NO_ERROR, it will be used as the return value -
  * irrespective of the possible internal failures during unlock. If @a err
- * is @ref SVN_NO_ERROR, internal failures of this function will be
+ * is #SVN_NO_ERROR, internal failures of this function will be
  * reported in the return value.
  *
- * @note You should use @ref SVN_MUTEX__WITH_LOCK instead of explicit lock
+ * @note You should use #SVN_MUTEX__WITH_LOCK instead of explicit lock
  * aquisition and release.
  */
 svn_error_t *
@@ -96,9 +96,9 @@ svn_mutex__unlock(svn_mutex__t *mutex,
 
 /** Aquires the @a mutex, executes the expression @a expr and finally
  * releases the @a mutex. If any of these steps fail, the function using
- * this macro will return an @ref svn_error_t. This macro guarantees that
+ * this macro will return an #svn_error_t. This macro guarantees that
  * the @a mutex will always be unlocked again if it got locked successfully
- * locked by the first step.
+ * by the first step.
  *
  * @note Prefer using this macro instead of explicit lock aquisition and
  * release.

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_named_atomic.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_named_atomic.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_named_atomic.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_named_atomic.h Fri Dec 28 23:03:51 2012
@@ -100,7 +100,7 @@ svn_atomic_namespace__cleanup(const char
  * be set to @c NULL. Otherwise, a new atomic will be created, its value
  * set to 0 and the access structure be returned in @a *atomic.
  *
- * Note that @a name must not exceed @ref SVN_NAMED_ATOMIC__MAX_NAME_LENGTH
+ * Note that @a name must not exceed #SVN_NAMED_ATOMIC__MAX_NAME_LENGTH
  * characters and an error will be returned if the specified name is longer
  * than supported.
  *

Modified: subversion/branches/javahl-ra/subversion/include/private/svn_skel.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/private/svn_skel.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_skel.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_skel.h Fri Dec 28 23:03:51 2012
@@ -226,7 +226,8 @@ svn_skel__unparse_proplist(svn_skel_t **
 svn_error_t *
 svn_skel__unparse_iproplist(svn_skel_t **skel_p,
                             const apr_array_header_t *inherited_props,
-                            apr_pool_t *result_pool);
+                            apr_pool_t *result_pool,
+                            apr_pool_t *scratch_pool);
 
 #ifdef __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=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h (original)
+++ subversion/branches/javahl-ra/subversion/include/private/svn_sqlite.h Fri Dec 28 23:03:51 2012
@@ -380,6 +380,50 @@ svn_error_t *
 svn_sqlite__reset(svn_sqlite__stmt_t *stmt);
 
 
+/* Begin a transaction in DB. */
+svn_error_t *
+svn_sqlite__begin_transaction(svn_sqlite__db_t *db);
+
+/* Like svn_sqlite__begin_transaction(), but takes out a 'RESERVED' lock
+   immediately, instead of using the default deferred locking scheme. */
+svn_error_t *
+svn_sqlite__begin_immediate_transaction(svn_sqlite__db_t *db);
+
+/* Begin a savepoint in DB. */
+svn_error_t *
+svn_sqlite__begin_savepoint(svn_sqlite__db_t *db);
+
+/* Commit the current transaction in DB if ERR is SVN_NO_ERROR, otherwise
+ * roll back the transaction.  Return a composition of ERR and any error
+ * that may occur during the commit or roll-back. */
+svn_error_t *
+svn_sqlite__finish_transaction(svn_sqlite__db_t *db,
+                               svn_error_t *err);
+
+/* Release the current savepoint in DB if EXPR is SVN_NO_ERROR, otherwise
+ * roll back to the savepoint and then release it.  Return a composition of
+ * ERR and any error that may occur during the release or roll-back. */
+svn_error_t *
+svn_sqlite__finish_savepoint(svn_sqlite__db_t *db,
+                             svn_error_t *err);
+
+/* Evaluate the expression EXPR within a transaction.
+ *
+ * Begin a transaction in DB; evaluate the expression EXPR, which would
+ * typically be a function call that does some work in DB; finally commit
+ * the transaction if EXPR evaluated to SVN_NO_ERROR, otherwise roll back
+ * the transaction.
+ */
+#define SVN_SQLITE__WITH_TXN(expr, db)                                        \
+  do {                                                                        \
+    svn_sqlite__db_t *svn_sqlite__db = (db);                                  \
+    svn_error_t *svn_sqlite__err;                                             \
+                                                                              \
+    SVN_ERR(svn_sqlite__begin_transaction(svn_sqlite__db));                   \
+    svn_sqlite__err = (expr);                                                 \
+    SVN_ERR(svn_sqlite__finish_transaction(svn_sqlite__db, svn_sqlite__err)); \
+  } while (0)
+
 /* Callback function to for use with svn_sqlite__with_transaction(). */
 typedef svn_error_t *(*svn_sqlite__transaction_callback_t)(
   void *baton, svn_sqlite__db_t *db, apr_pool_t *scratch_pool);
@@ -394,6 +438,18 @@ svn_sqlite__with_transaction(svn_sqlite_
                              svn_sqlite__transaction_callback_t cb_func,
                              void *cb_baton, apr_pool_t *scratch_pool);
 
+/* Like SVN_SQLITE__WITH_TXN(), but takes out a 'RESERVED' lock
+   immediately, instead of using the default deferred locking scheme. */
+#define SVN_SQLITE__WITH_IMMEDIATE_TXN(expr, db)                              \
+  do {                                                                        \
+    svn_sqlite__db_t *svn_sqlite__db = (db);                                  \
+    svn_error_t *svn_sqlite__err;                                             \
+                                                                              \
+    SVN_ERR(svn_sqlite__begin_immediate_transaction(svn_sqlite__db));         \
+    svn_sqlite__err = (expr);                                                 \
+    SVN_ERR(svn_sqlite__finish_transaction(svn_sqlite__db, svn_sqlite__err)); \
+  } while (0)
+
 /* Like svn_sqlite__with_transaction(), but takes out a 'RESERVED' lock
    immediately, instead of using the default deferred locking scheme. */
 svn_error_t *
@@ -402,6 +458,23 @@ svn_sqlite__with_immediate_transaction(s
                                        void *cb_baton,
                                        apr_pool_t *scratch_pool);
 
+/* Evaluate the expression EXPR within a 'savepoint'.  Savepoints can be
+ * nested.
+ *
+ * Begin a savepoint in DB; evaluate the expression EXPR, which would
+ * typically be a function call that does some work in DB; finally release
+ * the savepoint if EXPR evaluated to SVN_NO_ERROR, otherwise roll back
+ * to the savepoint and then release it.
+ */
+#define SVN_SQLITE__WITH_LOCK(expr, db)                                       \
+  do {                                                                        \
+    svn_sqlite__db_t *svn_sqlite__db = (db);                                  \
+    svn_error_t *svn_sqlite__err;                                             \
+                                                                              \
+    SVN_ERR(svn_sqlite__begin_savepoint(svn_sqlite__db));                     \
+    svn_sqlite__err = (expr);                                                 \
+    SVN_ERR(svn_sqlite__finish_savepoint(svn_sqlite__db, svn_sqlite__err));   \
+  } while (0)
 
 /* Helper function to handle several SQLite operations inside a shared lock.
    This callback is similar to svn_sqlite__with_transaction(), but can be

Modified: subversion/branches/javahl-ra/subversion/include/svn_cmdline.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_cmdline.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_cmdline.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_cmdline.h Fri Dec 28 23:03:51 2012
@@ -381,6 +381,15 @@ svn_cmdline__getopt_init(apr_getopt_t **
                          const char *argv[],
                          apr_pool_t *pool);
 
+/* Determine whether interactive mode should be enabled, based on whether
+ * the user passed the --non-interactive or --force-interactive options.
+ * If neither option was passed, interactivity is enabled if standard
+ * input is connected to a terminal device.
+ * @since New in 1.8. */
+svn_boolean_t
+svn_cmdline__be_interactive(svn_boolean_t non_interactive,
+                            svn_boolean_t force_interactive);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/javahl-ra/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_config.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_config.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_config.h Fri Dec 28 23:03:51 2012
@@ -34,6 +34,7 @@
 #include <apr_hash.h>   /* for apr_hash_t */
 
 #include "svn_types.h"
+#include "svn_io.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -247,6 +248,21 @@ svn_config_read(svn_config_t **cfgp,
                 svn_boolean_t must_exist,
                 apr_pool_t *pool);
 
+/** Read configuration data from @a stream into @a *cfgp, allocated in
+ * @a result_pool.
+ *
+ * If @a section_names_case_sensitive is TRUE, populate section name hashes
+ * case sensitively, except for the default SVN_CONFIG__DEFAULT_SECTION.
+ *
+ * @since New in 1.8.
+ */
+
+svn_error_t *
+svn_config_parse(svn_config_t **cfgp,
+                 svn_stream_t *stream,
+                 svn_boolean_t section_names_case_sensitive,
+                 apr_pool_t *result_pool);
+
 /** Like svn_config_read(), but merges the configuration data from @a file
  * (a file or registry path) into @a *cfg, which was previously returned
  * from svn_config_read().  This function invalidates all value

Modified: subversion/branches/javahl-ra/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_delta.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_delta.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_delta.h Fri Dec 28 23:03:51 2012
@@ -368,7 +368,7 @@ svn_txdelta_md5_digest(svn_txdelta_strea
  * @a source and @a target are both readable generic streams.  When we call
  * svn_txdelta_next_window() on @a *stream, it will read from @a source and
  * @a target to gather as much data as it needs.  If @a calculate_checksum
- * is set, you may call @ref svn_txdelta_md5_digest to get an MD5 checksum
+ * is set, you may call svn_txdelta_md5_digest() to get an MD5 checksum
  * for @a target.
  *
  * Do any necessary allocation in a sub-pool of @a pool.

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=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_io.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_io.h Fri Dec 28 23:03:51 2012
@@ -724,7 +724,7 @@ svn_io_file_lock2(const char *lock_file,
  * is not available: throw an error instead.
  *
  * Lock will be automatically released when @a pool is cleared or destroyed.
- * You may also explicitly call @ref svn_io_unlock_open_file.
+ * You may also explicitly call svn_io_unlock_open_file().
  * Use @a pool for memory allocations. @a pool must be the pool that
  * @a lockfile_handle has been created in or one of its sub-pools.
  *

Modified: subversion/branches/javahl-ra/subversion/include/svn_mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_mergeinfo.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_mergeinfo.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_mergeinfo.h Fri Dec 28 23:03:51 2012
@@ -315,6 +315,9 @@ svn_rangelist_diff(svn_rangelist_t **del
  * in sorted order and be compacted to the minimal number of ranges
  * needed to represent the merged result.
  *
+ * If the original rangelisted contain non collapsed adjacent ranges, the
+ * final result is not guaranteed to be compacted either.
+ *
  * Use @a scratch_pool for temporary allocations.
  *
  * @since New in 1.8.
@@ -331,6 +334,9 @@ svn_rangelist_merge2(svn_rangelist_t *ra
  * in place. If not used carefully, this function can use up a lot of memory
  * if called in a loop.
  *
+ * It performs an extra adjacent range compaction round to make sure non
+ * collapsed input ranges are compacted in the result.
+ *
  * @since New in 1.5.
  * @deprecated Provided for backward compatibility with the 1.7 API.
  */

Modified: subversion/branches/javahl-ra/subversion/include/svn_path.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_path.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_path.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_path.h Fri Dec 28 23:03:51 2012
@@ -670,6 +670,58 @@ svn_path_cstring_to_utf8(const char **pa
 
 /** @} */
 
+
+/** Repository relative URLs
+ *
+ * @defgroup svn_path_repos_relative_urls Repository relative URLs
+ * @{
+ */
+
+
+/**
+ * Return true iff @a path is a repository-relative URL: specifically that
+ * it starts with the characters "^/"
+ *
+ * @a path is in UTF-8 encoding.
+ *
+ * Does not check whether @a path is a properly URI-encoded, canonical, or
+ * valid in any other way.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_path_is_repos_relative_url(const char *path);
+
+/**
+ * Set @a absolute_url to the absolute URL represented by @a relative_url
+ * relative to @a repos_root_url.  @a absolute_url will be allocated in
+ * @a pool.
+ *
+ * @a absolute_url will end with a peg revision specifier if @a relative_url
+ * did.
+ *
+ * @a relative_url is in repository-relative syntax: "^/[REL-URL][@PEG]"
+ *
+ * @a repos_root_url is the absolute url of the repository root.
+ *
+ * All strings are in UTF-8 encoding.
+ *
+ * @a repos_root_url and @a relative_url do not have to be properly
+ * URI-encoded, canonical, or valid in any other way.  The caller is expected
+ * to perform canonicalization on @a absolute_url after the call to the
+ * function.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_path_resolve_repos_relative_url(const char **absolute_url,
+                                    const char *relative_url,
+                                    const char *repos_root_url,
+                                    apr_pool_t *pool);
+
+
+/** @} */
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/javahl-ra/subversion/include/svn_pools.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_pools.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_pools.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_pools.h Fri Dec 28 23:03:51 2012
@@ -87,7 +87,7 @@ svn_pool_create_ex_debug(pool, allocator
 #define svn_pool_destroy apr_pool_destroy
 
 /** Return a new allocator.  This function limits the unused memory in the
- * new allocator to @ref SVN_ALLOCATOR_RECOMMENDED_MAX_FREE and ensures
+ * new allocator to #SVN_ALLOCATOR_RECOMMENDED_MAX_FREE and ensures
  * proper synchronization if the allocator is used by multiple threads.
  *
  * If your application uses multiple threads, creating a separate allocator

Modified: subversion/branches/javahl-ra/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_props.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_props.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_props.h Fri Dec 28 23:03:51 2012
@@ -110,7 +110,7 @@ typedef struct svn_prop_inherited_item_t
  * @since New in 1.5.
  */
 apr_array_header_t *
-svn_prop_hash_to_array(apr_hash_t *hash,
+svn_prop_hash_to_array(const apr_hash_t *hash,
                        apr_pool_t *pool);
 
 /**
@@ -133,7 +133,7 @@ svn_prop_array_to_hash(const apr_array_h
  * @since New in 1.6.
  */
 apr_hash_t *
-svn_prop_hash_dup(apr_hash_t *hash,
+svn_prop_hash_dup(const apr_hash_t *hash,
                   apr_pool_t *pool);
 
 /**
@@ -144,7 +144,7 @@ svn_prop_hash_dup(apr_hash_t *hash,
  * @since New in 1.7.
  */
 const char *
-svn_prop_get_value(apr_hash_t *properties,
+svn_prop_get_value(const apr_hash_t *properties,
                    const char *prop_name);
 
 /**
@@ -317,8 +317,8 @@ svn_categorize_props(const apr_array_hea
  */
 svn_error_t *
 svn_prop_diffs(apr_array_header_t **propdiffs,
-               apr_hash_t *target_props,
-               apr_hash_t *source_props,
+               const apr_hash_t *target_props,
+               const apr_hash_t *source_props,
                apr_pool_t *pool);
 
 

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=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_ra.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_ra.h Fri Dec 28 23:03:51 2012
@@ -1930,6 +1930,12 @@ svn_ra_get_deleted_rev(svn_ra_session_t 
  * inheritable properties are found, then set @a *inherited_props to
  * an empty array.
  *
+ * If @a use_relpath_keys is true, then the
+ * #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a *inherited_props are
+ * paths relative to the repository root URL (of the repository which
+ * @a ra_session is associated).  Otherwise these members are URLs.
+ *
  * Allocated @a *inherited_props in @a result_pool, use @a scratch_pool
  * for temporary allocations.
  *
@@ -1940,6 +1946,7 @@ svn_ra_get_inherited_props(svn_ra_sessio
                            apr_array_header_t **inherited_props,
                            const char *path,
                            svn_revnum_t revision,
+                           svn_boolean_t use_relpath_keys,
                            apr_pool_t *result_pool,
                            apr_pool_t *scratch_pool);
 

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=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_repos.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_repos.h Fri Dec 28 23:03:51 2012
@@ -3148,16 +3148,15 @@ svn_repos_get_fs_build_parser(const svn_
  */
 typedef struct svn_authz_t svn_authz_t;
 
-/** Read authz configuration data from @a file (a file or registry
- * path) into @a *authz_p, allocated in @a pool.
- *
- * If @a file is not a valid authz rule file, then return
- * SVN_AUTHZ_INVALID_CONFIG.  The contents of @a *authz_p is then
- * undefined.  If @a must_exist is TRUE, a missing authz file is also
- * an error.
+/** 
+ * Similar to svn_repos_authz_read2(), but without support for
+ * authz files stored in a Subversion repository (absolute or
+ * relative URLs) and without the @a repos_root argument.
  *
  * @since New in 1.3.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_authz_read(svn_authz_t **authz_p,
                      const char *file,
@@ -3165,6 +3164,29 @@ svn_repos_authz_read(svn_authz_t **authz
                      apr_pool_t *pool);
 
 /**
+ * Read authz configuration data from @a path (a file, repos relative
+ * url, an absolute file url, or a registry path) into @a *authz_p,
+ * allocated in @a pool.
+ *
+ * If @a path is not a valid authz rule file, then return 
+ * SVN_AUTHZ_INVALID_CONFIG.  The contents of @a *authz_p is then
+ * undefined.  If @a must_exist is TRUE, a missing authz file is also
+ * an error.
+ *
+ * If @path is a repos relative URL then @a repos_root must be set to
+ * the root of the repository the authz configuration will be used with.
+ *
+ * @since New in 1.8
+ */
+svn_error_t *
+svn_repos_authz_read2(svn_authz_t **authz_p,
+                      const char *path,
+                      svn_boolean_t must_exist,
+                      const char *repos_root,
+                      apr_pool_t *pool);
+
+
+/**
  * Check whether @a user can access @a path in the repository @a
  * repos_name with the @a required_access.  @a authz lists the ACLs to
  * check against.  Set @a *access_granted to indicate if the requested

Modified: subversion/branches/javahl-ra/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/include/svn_wc.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/include/svn_wc.h (original)
+++ subversion/branches/javahl-ra/subversion/include/svn_wc.h Fri Dec 28 23:03:51 2012
@@ -4528,7 +4528,16 @@ svn_wc_delete(const char *path,
 
 /**
  * Schedule the single node that exists on disk at @a local_abspath for
- * addition to the working copy.  The added node will have no properties.
+ * addition to the working copy.  The added node will have the properties
+ * provided in @a props, or none if that is NULL.
+ *
+ * Check and canonicalize the properties in the same way as
+ * svn_wc_prop_set4().  Return an error and don't add the node if the
+ * properties are not valid on this node.  Unlike svn_wc_prop_set4()
+ * there is no option to skip some of the checks and canonicalizations.
+ *
+ * ### The error code on validity check failure should be specified, and
+ *     preferably should be a single code.
  *
  * The versioned state of the parent path must be a modifiable directory,
  * and the versioned state of @a local_abspath must be either nonexistent or
@@ -4537,14 +4546,28 @@ svn_wc_delete(const char *path,
  * If @a local_abspath does not exist as file, directory or symlink, return
  * #SVN_ERR_WC_PATH_NOT_FOUND.
  *
- * This is a replacement for svn_wc_add4() case 2a.
+ * ### TODO: Split into add_dir, add_file, add_symlink?
  *
- * ### TODO: Allow the caller to provide the node's properties?
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc_add_from_disk2(svn_wc_context_t *wc_ctx,
+                      const char *local_abspath,
+                      const apr_hash_t *props,
+                      svn_wc_notify_func2_t notify_func,
+                      void *notify_baton,
+                      apr_pool_t *scratch_pool);
+
+
+/**
+ * Similar to svn_wc_add4(), but gives the new node an empty set of properties.
  *
- * ### TODO: Split into add_dir, add_file, add_symlink?
+ * This is a replacement for svn_wc_add4() case 2a.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_add_from_disk(svn_wc_context_t *wc_ctx,
                      const char *local_abspath,

Modified: subversion/branches/javahl-ra/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_client/add.c?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/libsvn_client/add.c (original)
+++ subversion/branches/javahl-ra/subversion/libsvn_client/add.c Fri Dec 28 23:03:51 2012
@@ -275,7 +275,6 @@ add_file(const char *local_abspath,
          apr_pool_t *pool)
 {
   apr_hash_t *properties;
-  apr_hash_index_t *hi;
   const char *mimetype;
   svn_node_kind_t kind;
   svn_boolean_t is_special;
@@ -283,10 +282,7 @@ add_file(const char *local_abspath,
   /* Check to see if this is a special file. */
   SVN_ERR(svn_io_check_special_path(local_abspath, &kind, &is_special, pool));
 
-  /* Add the file */
-  SVN_ERR(svn_wc_add_from_disk(ctx->wc_ctx, local_abspath,
-                               NULL, NULL, pool));
-
+  /* Determine the properties that the file should have */
   if (is_special)
     {
       mimetype = NULL;
@@ -320,47 +316,9 @@ add_file(const char *local_abspath,
                                                pool));
     }
 
-  /* loop through the hashtable and add the properties */
-  for (hi = apr_hash_first(pool, properties);
-       hi != NULL; hi = apr_hash_next(hi))
-    {
-      const char *pname = svn__apr_hash_index_key(hi);
-      const svn_string_t *pval = svn__apr_hash_index_val(hi);
-      svn_error_t *err;
-
-      /* It's probably best to pass 0 for force, so that if
-         the autoprops say to set some weird combination,
-         we just error and let the user sort it out. */
-      err = svn_wc_prop_set4(ctx->wc_ctx, local_abspath, pname, pval,
-                             svn_depth_empty, FALSE, NULL,
-                             NULL, NULL /* cancellation */,
-                             NULL, NULL /* notification */,
-                             pool);
-      if (err)
-        {
-          /* Don't leave the job half-done. If we fail to set a property,
-           * (try to) un-add the file. */
-          return svn_error_compose_create(
-                   err,
-                   svn_wc_revert4(ctx->wc_ctx,
-                                  local_abspath,
-                                  svn_depth_empty,
-                                  FALSE /* use_commit_times */,
-                                  NULL /* changelists */,
-                                  NULL, NULL, NULL, NULL,
-                                  pool));
-        }
-    }
-
-  /* Report the addition to the caller. */
-  if (ctx->notify_func2 != NULL)
-    {
-      svn_wc_notify_t *notify = svn_wc_create_notify(local_abspath,
-                                                     svn_wc_notify_add, pool);
-      notify->kind = svn_node_file;
-      notify->mime_type = mimetype;
-      (*ctx->notify_func2)(ctx->notify_baton2, notify, pool);
-    }
+  /* Add the file */
+  SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, local_abspath, properties,
+                                ctx->notify_func2, ctx->notify_baton2, pool));
 
   return SVN_NO_ERROR;
 }
@@ -425,9 +383,9 @@ add_dir_recursive(const char *dir_abspat
                                         iterpool));
 
   /* Add this directory to revision control. */
-  err = svn_wc_add_from_disk(ctx->wc_ctx, dir_abspath,
-                             ctx->notify_func2, ctx->notify_baton2,
-                             iterpool);
+  err = svn_wc_add_from_disk2(ctx->wc_ctx, dir_abspath, NULL /*props*/,
+                              ctx->notify_func2, ctx->notify_baton2,
+                              iterpool);
   if (err)
     {
       if (err->apr_err == SVN_ERR_ENTRY_EXISTS && force)
@@ -1009,9 +967,10 @@ add(const char *local_abspath,
                                      parent_abspath, local_abspath);
 
           SVN_ERR(svn_io_make_dir_recursively(parent_abspath, scratch_pool));
-          SVN_ERR(svn_wc_add_from_disk(ctx->wc_ctx, parent_abspath,
-                                       ctx->notify_func2, ctx->notify_baton2,
-                                       scratch_pool));
+          SVN_ERR(svn_wc_add_from_disk2(ctx->wc_ctx, parent_abspath,
+                                        NULL /*props*/,
+                                        ctx->notify_func2, ctx->notify_baton2,
+                                        scratch_pool));
         }
       svn_pool_destroy(iterpool);
     }

Modified: subversion/branches/javahl-ra/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/libsvn_client/client.h?rev=1426654&r1=1426653&r2=1426654&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/libsvn_client/client.h (original)
+++ subversion/branches/javahl-ra/subversion/libsvn_client/client.h Fri Dec 28 23:03:51 2012
@@ -653,7 +653,10 @@ svn_client__list_internal(const char *pa
    as any WC roots under LOCAL_ABSPATH (as limited by DEPTH) using
    RA_SESSION.  Store the results in *WCROOT_IPROPS, a hash mapping
    const char * absolute working copy paths to depth-first ordered arrays
-   of svn_prop_inherited_item_t * structures.
+   of svn_prop_inherited_item_t * structures.  If WANT_RELPATH_KEYS is true,
+   then any svn_prop_inherited_item_t->path_or_url members returned in
+   *WCROOT_IPROPS are repository relative paths, otherwise these members are
+   URLs.
 
    If LOCAL_ABSPATH has no base then do nothing.
 
@@ -668,6 +671,7 @@ svn_client__get_inheritable_props(apr_ha
                                   const char *local_abspath,
                                   svn_revnum_t revision,
                                   svn_depth_t depth,
+                                  svn_boolean_t use_relpath_keys,
                                   svn_ra_session_t *ra_session,
                                   svn_client_ctx_t *ctx,
                                   apr_pool_t *result_pool,



Mime
View raw message