subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stef...@apache.org
Subject svn commit: r1632906 [1/10] - in /subversion/branches/revprop-caching-ng: ./ build/ notes/ subversion/bindings/ctypes-python/ subversion/bindings/cxxhl/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_delta/ ...
Date Sun, 19 Oct 2014 13:55:38 GMT
Author: stefan2
Date: Sun Oct 19 13:55:35 2014
New Revision: 1632906

URL: http://svn.apache.org/r1632906
Log:
Sync with /trunk up to r1632905.  Resolved a few simple text conflicts
in fs_fs.c, fs-fs-pack-test.c and svn_error_codes.h.

Added:
    subversion/branches/revprop-caching-ng/subversion/include/private/svn_fs_fs_private.h
      - copied unchanged from r1632905, subversion/trunk/subversion/include/private/svn_fs_fs_private.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/dump-index.c
      - copied unchanged from r1632905, subversion/trunk/subversion/libsvn_fs_fs/dump-index.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/load-index.c
      - copied unchanged from r1632905, subversion/trunk/subversion/libsvn_fs_fs/load-index.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/stats.c
      - copied unchanged from r1632905, subversion/trunk/subversion/libsvn_fs_fs/stats.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c
      - copied unchanged from r1632905, subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c
      - copied unchanged from r1632905, subversion/trunk/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c
    subversion/branches/revprop-caching-ng/tools/client-side/svn-vendor.py
      - copied unchanged from r1632905, subversion/trunk/tools/client-side/svn-vendor.py
Removed:
    subversion/branches/revprop-caching-ng/subversion/svn-bench/client_errors.h
    subversion/branches/revprop-caching-ng/subversion/svn/client_errors.h
    subversion/branches/revprop-caching-ng/tools/client-side/showchange.pl
Modified:
    subversion/branches/revprop-caching-ng/   (props changed)
    subversion/branches/revprop-caching-ng/CHANGES
    subversion/branches/revprop-caching-ng/COMMITTERS
    subversion/branches/revprop-caching-ng/autogen.sh
    subversion/branches/revprop-caching-ng/build.conf
    subversion/branches/revprop-caching-ng/build/buildcheck.sh
    subversion/branches/revprop-caching-ng/configure.ac
    subversion/branches/revprop-caching-ng/notes/   (props changed)
    subversion/branches/revprop-caching-ng/notes/knobs
    subversion/branches/revprop-caching-ng/subversion/bindings/ctypes-python/README   (props changed)
    subversion/branches/revprop-caching-ng/subversion/bindings/cxxhl/README   (props changed)
    subversion/branches/revprop-caching-ng/subversion/include/private/README   (props changed)
    subversion/branches/revprop-caching-ng/subversion/include/private/svn_cert.h   (props changed)
    subversion/branches/revprop-caching-ng/subversion/include/private/svn_dep_compat.h
    subversion/branches/revprop-caching-ng/subversion/include/private/svn_wc_private.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_client.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_cmdline.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_config.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_delta.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_error_codes.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_fs.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_io.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_string.h
    subversion/branches/revprop-caching-ng/subversion/include/svn_wc.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/commit.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/copy.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/diff_local.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/externals.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/import.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/mtcc.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/relocate.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/upgrade.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_client/util.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_delta/text_delta.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs/fs-loader.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/bdb/changes-table.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/fs.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/cached_data.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/caching.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/fs.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/fs.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/fs_fs.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/hotcopy.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/id.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/id.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/index.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/index.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/lock.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/low_level.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/low_level.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/pack.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/recovery.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/rev_file.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/rev_file.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/structure
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/structure-indexes
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/temp_serializer.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/transaction.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/tree.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/util.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/util.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/verify.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/   (props changed)
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/cached_data.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/index.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/noderevs.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/pack.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/transaction.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_fs_x/verify.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/blame.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/commit.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/get_lock.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/lock.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/log.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/merge.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/serf.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/update.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_serf/xml.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_ra_svn/client.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_repos/dump.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_repos/replay.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_repos/repos.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/bit_array.c   (props changed)
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/cache-inprocess.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/cmdline.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/config_file.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/deprecated.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/gpg_agent.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/io.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/packed_data.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/path.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/sorts.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/string.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/subst.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/sysinfo.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_subr/utf8proc/README   (props changed)
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/adm_ops.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/copy.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/deprecated.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/diff.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/diff_editor.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/diff_local.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/externals.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/node.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/update_editor.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/wc.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/wc_db.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/wc_db.h
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/workqueue.c
    subversion/branches/revprop-caching-ng/subversion/libsvn_wc/workqueue.h
    subversion/branches/revprop-caching-ng/subversion/mod_dav_svn/deadprops.c
    subversion/branches/revprop-caching-ng/subversion/mod_dav_svn/lock.c
    subversion/branches/revprop-caching-ng/subversion/mod_dav_svn/status.c   (props changed)
    subversion/branches/revprop-caching-ng/subversion/mod_dav_svn/util.c
    subversion/branches/revprop-caching-ng/subversion/svn-bench/cl.h
    subversion/branches/revprop-caching-ng/subversion/svn-bench/svn-bench.c
    subversion/branches/revprop-caching-ng/subversion/svn/auth-cmd.c
    subversion/branches/revprop-caching-ng/subversion/svn/checkout-cmd.c
    subversion/branches/revprop-caching-ng/subversion/svn/cl.h
    subversion/branches/revprop-caching-ng/subversion/svn/conflict-callbacks.c
    subversion/branches/revprop-caching-ng/subversion/svn/svn.c
    subversion/branches/revprop-caching-ng/subversion/svn/util.c
    subversion/branches/revprop-caching-ng/subversion/svnadmin/svnadmin.c
    subversion/branches/revprop-caching-ng/subversion/svnfsfs/dump-index-cmd.c
    subversion/branches/revprop-caching-ng/subversion/svnfsfs/load-index-cmd.c
    subversion/branches/revprop-caching-ng/subversion/svnfsfs/stats-cmd.c
    subversion/branches/revprop-caching-ng/subversion/svnfsfs/svnfsfs.c
    subversion/branches/revprop-caching-ng/subversion/svnfsfs/svnfsfs.h
    subversion/branches/revprop-caching-ng/subversion/svnlook/svnlook.c
    subversion/branches/revprop-caching-ng/subversion/svnmucc/svnmucc.c
    subversion/branches/revprop-caching-ng/subversion/svnrdump/svnrdump.c
    subversion/branches/revprop-caching-ng/subversion/svnsync/svnsync.c
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/basic_tests.py
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/externals_tests.py
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/lock_tests.py
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/relocate_tests.py
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/revprop-caching-ng/subversion/tests/cmdline/switch_tests.py
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs_fs/   (props changed)
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs_x/   (props changed)
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_fs_x/fs-x-pack-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_subr/bit-array-test.c   (props changed)
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_subr/io-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_subr/skel-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/libsvn_wc/wc-test.c
    subversion/branches/revprop-caching-ng/subversion/tests/manual/README   (props changed)
    subversion/branches/revprop-caching-ng/subversion/tests/svn_test.h
    subversion/branches/revprop-caching-ng/subversion/tests/svn_test_fs.c
    subversion/branches/revprop-caching-ng/subversion/tests/svn_test_fs.h
    subversion/branches/revprop-caching-ng/tools/client-side/bash_completion
    subversion/branches/revprop-caching-ng/tools/dev/fsfs-access-map.c
    subversion/branches/revprop-caching-ng/tools/dev/unix-build/Makefile.svn
    subversion/branches/revprop-caching-ng/tools/server-side/svnpredumpfilter.py

Propchange: subversion/branches/revprop-caching-ng/
------------------------------------------------------------------------------
--- svn:auto-props (added)
+++ svn:auto-props Sun Oct 19 13:55:35 2014
@@ -0,0 +1,10 @@
+*.c = svn:eol-style=native
+*.cpp = svn:eol-style=native
+*.h = svn:eol-style=native
+*.hpp = svn:eol-style=native
+*.py = svn:eol-style=native
+*.pl = svn:eol-style=native
+*.rb = svn:eol-style=native
+*.txt = svn:eol-style=native
+README = svn:eol-style=native
+BRANCH-README = svn:eol-style=native

Propchange: subversion/branches/revprop-caching-ng/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1619780-1632905

Modified: subversion/branches/revprop-caching-ng/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/CHANGES?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/CHANGES (original)
+++ subversion/branches/revprop-caching-ng/CHANGES Sun Oct 19 13:55:35 2014
@@ -138,7 +138,6 @@ http://svn.apache.org/repos/asf/subversi
     * alow the use of libmagic to be configured via subversion configuration
       file or SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE env variable (r1572916)
     * store human readable info about SSL certs in auth store (r1573625)
-    * new 'http-pipelining' configuration option for serf (r1619072)
 
   - Client-side bugfixes:
     * export: fix problem exporting symlinks on windows (r1476093)

Modified: subversion/branches/revprop-caching-ng/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/COMMITTERS?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/COMMITTERS [UTF-8] (original)
+++ subversion/branches/revprop-caching-ng/COMMITTERS [UTF-8] Sun Oct 19 13:55:35 2014
@@ -98,6 +98,8 @@ Commit access for specific areas:
           sage   Sage LaTorra <sagelt@gmail.com>             (Ctypes-Python b.)
           vmpn   Vladimir Berezniker <vmpn@hitechman.com>    (JavaHL bindings)
        rschupp   Roderich Schupp <roderich.schupp@gmail.com> (Swig bindings)
+        stilor   Alexey Neyman <stilor@att.net>              (Python bindings,
+                                                             svn-vendor.py)
 
   Packages:
 

Modified: subversion/branches/revprop-caching-ng/autogen.sh
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/autogen.sh?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/autogen.sh (original)
+++ subversion/branches/revprop-caching-ng/autogen.sh Sun Oct 19 13:55:35 2014
@@ -59,7 +59,8 @@ done
 # ### APR's libtool. deferring to a second round of change...
 #
 
-libtoolize="`./build/PrintPath glibtoolize libtoolize libtoolize15`"
+# Much like APR except we do not prefer libtool 1 over libtool 2.
+libtoolize="`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`"
 lt_major_version=`$libtoolize --version 2>/dev/null | sed -e 's/^[^0-9]*//' -e 's/\..*//' -e '/^$/d' -e 1q`
 
 if [ "x$libtoolize" = "x" ]; then

Modified: subversion/branches/revprop-caching-ng/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/build.conf?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/build.conf (original)
+++ subversion/branches/revprop-caching-ng/build.conf Sun Oct 19 13:55:35 2014
@@ -810,6 +810,24 @@ install = test
 libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
        libsvn_subr apriconv apr
 
+[fs-fs-fuzzy-test]
+description = Use fuzzying to test FSFS corruption resilience
+type = exe
+path = subversion/tests/libsvn_fs_fs
+sources = fs-fs-fuzzy-test.c
+install = sub-test
+libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
+       libsvn_repos libsvn_subr apriconv apr
+
+[fs-fs-private-test]
+description = Test FSSF private API
+type = exe
+path = subversion/tests/libsvn_fs_fs
+sources = fs-fs-private-test.c
+install = test
+libs = libsvn_test libsvn_fs libsvn_fs_fs libsvn_delta
+       libsvn_repos libsvn_subr apriconv apr
+
 # ----------------------------------------------------------------------------
 # Tests for libsvn_fs_x
 [fs-x-pack-test]
@@ -1448,8 +1466,8 @@ libs = svn svnadmin svndumpfilter svnloo
 type = project
 path = build/win32
 libs = __ALL__
-       fs-test fs-base-test fs-fsfs-test fs-fs-pack-test fs-x-pack-test
-       string-table-test
+       fs-test fs-base-test fs-fsfs-test fs-fs-pack-test fs-fs-fuzzy-test
+       fs-fs-private-test fs-x-pack-test string-table-test
        skel-test strings-reps-test changes-test locks-test
        repos-test dump-load-test
        checksum-test compat-test config-test hashdump-test mergeinfo-test

Modified: subversion/branches/revprop-caching-ng/build/buildcheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/build/buildcheck.sh?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/build/buildcheck.sh (original)
+++ subversion/branches/revprop-caching-ng/build/buildcheck.sh Sun Oct 19 13:55:35 2014
@@ -97,14 +97,15 @@ else
   esac
 fi
 
-libtool=${LIBTOOL:-`./build/PrintPath glibtool libtool libtool15`}
+# Much like APR except we do not prefer libtool 1 over libtool 2.
+libtoolize=${LIBTOOLIZE:-`./build/PrintPath glibtoolize libtoolize glibtoolize1 libtoolize15 libtoolize14`}
 # Extract the libtool version number: everything from the first number in
 # the version text until a hyphen or space.
-lt_pversion=`$libtool --version 2>/dev/null |
+lt_pversion=`$libtoolize --version 2>/dev/null |
   sed -e 's/^[^0-9]*//' -e 's/[- ].*//' -e '/^$/d' |
   sed -e 1q`
 if test -z "$lt_pversion"; then
-  echo "buildcheck: libtool not found."
+  echo "buildcheck: libtoolize not found."
   echo "            You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
   exit 1
 fi

Modified: subversion/branches/revprop-caching-ng/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/configure.ac?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/configure.ac (original)
+++ subversion/branches/revprop-caching-ng/configure.ac Sun Oct 19 13:55:35 2014
@@ -319,18 +319,6 @@ case $host in
 esac
 AC_SUBST(LT_NO_UNDEFINED)
 
-AC_MSG_CHECKING([whether to avoid circular linkage at all costs])
-case $host in
-  *-*-cygwin*)
-    AC_MSG_RESULT([yes])
-    AC_DEFINE([SVN_AVOID_CIRCULAR_LINKAGE_AT_ALL_COSTS_HACK], 1,
-              [Define if circular linkage is not possible on this platform.])
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-esac
-
 dnl Check for trang.
 trang=yes
 AC_ARG_WITH(trang,

Propchange: subversion/branches/revprop-caching-ng/notes/
------------------------------------------------------------------------------
  Merged /subversion/trunk/notes:r1619780-1632905

Modified: subversion/branches/revprop-caching-ng/notes/knobs
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/notes/knobs?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/notes/knobs (original)
+++ subversion/branches/revprop-caching-ng/notes/knobs Sun Oct 19 13:55:35 2014
@@ -55,6 +55,7 @@ SVN_SQLITE_MIN_VERSION_NUMBER
 SVN_SQLITE_MIN_VERSION
 SVN_SERF_NO_LOGGING
 SVN_ALLOW_SHORT_INTS
+SVN_ALLOW_NON_8_BIT_CHARS
 
 2.3 Debugging Support
 
@@ -290,6 +291,18 @@ SVN_I_LIKE_LATENCY_SO_IGNORE_HTTPV2
   Default:   not defined
   Suggested: not defined (to ensure correct behaviour)
 
+4.12 SVN_ALLOW_NON_8_BIT_CHARS
+
+  Scope:     global
+  Purpose:   Disables the size check for the 'char' type.  We assume char
+             has exactly 8 bits.  Other values may break the code reading,
+             interpreting and writing repository files.  Defining this option
+             will allow SVN to be compiled even if the size check would fail
+             for some reason.
+  Range:     definedness
+  Default:   not defined
+  Suggested: not defined (to ensure correct behaviour)
+
 
 5 Defines controlling debug support
 ==================================

Propchange: subversion/branches/revprop-caching-ng/subversion/bindings/ctypes-python/README
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/revprop-caching-ng/subversion/bindings/cxxhl/README
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/revprop-caching-ng/subversion/include/private/README
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/revprop-caching-ng/subversion/include/private/svn_cert.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/revprop-caching-ng/subversion/include/private/svn_dep_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/private/svn_dep_compat.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/private/svn_dep_compat.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/private/svn_dep_compat.h Sun Oct 19 13:55:35 2014
@@ -47,6 +47,19 @@ extern "C" {
 #endif
 
 /**
+ * We assume that 'char' is 8 bits wide.  The critical interfaces are
+ * our repository formats and RA encodings.  E.g. a 32 bit wide char may
+ * mess up UTF8 parsing, how we interpret size values etc.
+ *
+ * @since New in 1.9.
+ */
+#if    defined(CHAR_BIT) \
+    && !defined(SVN_ALLOW_NON_8_BIT_CHARS) \
+    && (CHAR_BIT != 8)
+#error char is not 8 bits and may break Subversion. Define SVN_ALLOW_NON_8_BIT_CHARS to skip this check.
+#endif
+
+/**
  * Work around a platform dependency issue. apr_thread_rwlock_trywrlock()
  * will make APR_STATUS_IS_EBUSY() return TRUE if the lock could not be
  * acquired under Unix. Under Windows, this will not work. So, provide

Modified: subversion/branches/revprop-caching-ng/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/private/svn_wc_private.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/private/svn_wc_private.h Sun Oct 19 13:55:35 2014
@@ -1553,8 +1553,12 @@ svn_wc__get_switch_editor(const svn_delt
  * if they weren't modified after being copied. This allows the callbacks
  * to generate appropriate --git diff headers for such files.
  *
- * Normally, the difference from repository->working_copy is shown.
- * If @a reverse_order is TRUE, then show working_copy->repository diffs.
+ * Normally, the difference from repository->working_copy is shown. If
+ * @a reverse_order is TRUE, then we want to show working_copy->repository
+ * diffs. Most of the reversal is done by the caller; here we just swap the
+ * order of reporting a replacement so that the local addition is reported
+ * before the remote delete. (The caller's diff processor can then transform
+ * adds into deletes and deletes into adds, but it can't reorder the output.)
  *
  * If @a cancel_func is non-NULL, it will be used along with @a cancel_baton
  * to periodically check if the client has canceled the operation.

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_client.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_client.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_client.h Sun Oct 19 13:55:35 2014
@@ -1081,20 +1081,15 @@ svn_client_create_context(svn_client_ctx
 /** @} end group: Client context management */
 
 /**
- * @name Authentication information file names
- *
- * Names of files that contain authentication information.
- *
- * These filenames are decided by libsvn_client, since this library
- * implements all the auth-protocols;  libsvn_wc does nothing but
- * blindly store and retrieve these files from protected areas.
- *
- * @defgroup clnt_auth_filenames Client authentication file names
- * @{
+ * @deprecated Provided for backward compatibility. This constant was never
+ * used in released versions.
  */
 #define SVN_CLIENT_AUTH_USERNAME            "username"
+/**
+ * @deprecated Provided for backward compatibility. This constant was never
+ * used in released versions.
+ */
 #define SVN_CLIENT_AUTH_PASSWORD            "password"
-/** @} group end: Authentication information file names */
 
 /** Client argument processing
  *

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_cmdline.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_cmdline.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_cmdline.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_cmdline.h Sun Oct 19 13:55:35 2014
@@ -320,15 +320,58 @@ svn_cmdline_auth_plaintext_passphrase_pr
  * by the command line client.
  *
  * @a non_interactive, @a username, @a password, @a config_dir,
- * @a no_auth_cache, and @a trust_server_cert are the values of the
- * command line options of the corresponding names.
+ * and @a no_auth_cache are the values of the command line options
+ * of the corresponding names.
  *
+ * If @a non_interactive is @c TRUE, then the following parameters
+ * control whether an invalid SSL certificate will be accepted
+ * regardless of a specific verification failure:
+ *
+ * @a trust_server_cert_unknown_ca: If @c TRUE, accept certificates
+ * from unknown certificate authorities.
+ *
+ * @a trust_server_cert_cn_mismatch: If @c TRUE, accept certificates
+ * even if the Common Name attribute of the certificate differs from
+ * the hostname of the server.
+ *
+ * @a trust_server_cert_expired: If @c TRUE, accept certificates even
+ * if they are expired.
+ *
+ * @a trust_server_cert_not_yet_valid: If @c TRUE, accept certificates
+ * from the future.
+ *
+ * @a trust_server_cert_other_failure: If @c TRUE, accept certificates
+ * even if any other verification failure than the above occured.
+ * 
  * @a cfg is the @c SVN_CONFIG_CATEGORY_CONFIG configuration, and
  * @a cancel_func and @a cancel_baton control the cancellation of the
  * prompting providers that are initialized.
  *
  * Use @a pool for all allocations.
  *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_cmdline_create_auth_baton2(svn_auth_baton_t **ab,
+                               svn_boolean_t non_interactive,
+                               const char *username,
+                               const char *password,
+                               const char *config_dir,
+                               svn_boolean_t no_auth_cache,
+                               svn_boolean_t trust_server_cert_unknown_ca,
+                               svn_boolean_t trust_server_cert_cn_mismatch,
+                               svn_boolean_t trust_server_cert_expired,
+                               svn_boolean_t trust_server_cert_not_yet_valid,
+                               svn_boolean_t trust_server_cert_other_failure,
+                               svn_config_t *cfg,
+                               svn_cancel_func_t cancel_func,
+                               void *cancel_baton,
+                               apr_pool_t *pool);
+
+/* Like svn_cmdline_create_auth_baton2, but with only one trust_server_cert
+ * option which corresponds to trust_server_cert_unknown_ca.
+ * 
+ * @deprecated Provided for backward compatibility with the 1.8 API.
  * @since New in 1.6.
  */
 svn_error_t *

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_config.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_config.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_config.h Sun Oct 19 13:55:35 2014
@@ -97,8 +97,6 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS      "http-max-connections"
 /** @since New in 1.9. */
 #define SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS     "http-chunked-requests"
-/** @since New in 1.9. */
-#define SVN_CONFIG_OPTION_HTTP_PIPELINING           "http-pipelining"
 
 /** @since New in 1.9. */
 #define SVN_CONFIG_OPTION_SERF_LOG_COMPONENTS       "serf-log-components"
@@ -193,7 +191,7 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_1 \
   "*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__"
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_2 \
-  "*.rej *~ #*# .#* .*.swp .DS_Store"
+  "*.rej *~ #*# .#* .*.swp .DS_Store [Tt]humbs.db"
 #endif
 
 #define SVN_CONFIG_DEFAULT_GLOBAL_IGNORES \

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_delta.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_delta.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_delta.h Sun Oct 19 13:55:35 2014
@@ -249,6 +249,7 @@ svn_txdelta_compose_windows(const svn_tx
  *
  * @since New in 1.4
  *
+ * @since Since 1.9, @a tbuf may be NULL if @a *tlen is 0.
  */
 void
 svn_txdelta_apply_instructions(svn_txdelta_window_t *window,

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_error_codes.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_error_codes.h Sun Oct 19 13:55:35 2014
@@ -817,17 +817,17 @@ SVN_ERROR_START
              "Malformed transaction ID string.")
 
   /** @since New in 1.9. */
-  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_CORRUPTION,
+  SVN_ERRDEF(SVN_ERR_FS_INDEX_CORRUPTION,
              SVN_ERR_FS_CATEGORY_START + 54,
              "Corrupt index file.")
 
   /** @since New in 1.9. */
-  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_REVISION,
+  SVN_ERRDEF(SVN_ERR_FS_INDEX_REVISION,
              SVN_ERR_FS_CATEGORY_START + 55,
              "Revision not covered by index.")
 
   /** @since New in 1.9. */
-  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_OVERFLOW,
+  SVN_ERRDEF(SVN_ERR_FS_INDEX_OVERFLOW,
              SVN_ERR_FS_CATEGORY_START + 56,
              "Item index too large for this revision.")
 
@@ -837,7 +837,7 @@ SVN_ERROR_START
              "Container index out of range.")
 
   /** @since New in 1.9. */
-  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_INCONSISTENT,
+  SVN_ERRDEF(SVN_ERR_FS_INDEX_INCONSISTENT,
              SVN_ERR_FS_CATEGORY_START + 58,
              "Index files are inconsistent.")
 
@@ -857,8 +857,13 @@ SVN_ERROR_START
              "Container capacity exceeded.")
 
   /** @since New in 1.9. */
-  SVN_ERRDEF(SVN_ERR_FS_INVALID_GENERATION,
+  SVN_ERRDEF(SVN_ERR_FS_MALFORMED_NODEREV_ID,
              SVN_ERR_FS_CATEGORY_START + 62,
+             "Malformed node revision ID string.")
+
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_INVALID_GENERATION,
+             SVN_ERR_FS_CATEGORY_START + 63,
              "Invalid generation number data.")
 
   /* repos errors */

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_fs.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_fs.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_fs.h Sun Oct 19 13:55:35 2014
@@ -116,6 +116,16 @@ typedef struct svn_fs_t svn_fs_t;
  */
 #define SVN_FS_CONFIG_FSFS_BLOCK_READ           "fsfs-block-read"
 
+/** String with a decimal representation of the FSFS format shard size.
+ * Zero ("0") means that a repository with linear layout should be created.
+ *
+ * This option will only be used during the creation of new repositories
+ * and is otherwise ignored.
+ *
+ * @since New in 1.9.
+ */
+#define SVN_FS_CONFIG_FSFS_SHARD_SIZE           "fsfs-shard-size"
+
 /* Note to maintainers: if you add further SVN_FS_CONFIG_FSFS_CACHE_* knobs,
    update fs_fs.c:verify_as_revision_before_current_plus_plus(). */
 
@@ -1420,6 +1430,11 @@ typedef enum svn_fs_path_change_kind_t
  * versions.  Therefore, to preserve binary compatibility, users
  * should not directly allocate structures of this type.
  *
+ * @note The @c text_mod, @c prop_mod and @c mergeinfo_mod flags mean the
+ * text, properties and mergeinfo property (respectively) were "touched"
+ * by the commit API; this does not mean the new value is different from
+ * the old value.
+ *
  * @since New in 1.6. */
 typedef struct svn_fs_path_change2_t
 {
@@ -1429,10 +1444,23 @@ typedef struct svn_fs_path_change2_t
   /** kind of change */
   svn_fs_path_change_kind_t change_kind;
 
-  /** were there text mods? */
+  /** was the text touched?
+   * For node_kind=dir: always false. For node_kind=file:
+   *   modify:      true iff text touched.
+   *   add (copy):  true iff text touched.
+   *   add (plain): always true.
+   *   delete:      always false.
+   *   replace:     as for the add/copy part of the replacement.
+   */
   svn_boolean_t text_mod;
 
-  /** were there property mods? */
+  /** were the properties touched?
+   *   modify:      true iff props touched.
+   *   add (copy):  true iff props touched.
+   *   add (plain): true iff props touched.
+   *   delete:      always false.
+   *   replace:     as for the add/copy part of the replacement.
+   */
   svn_boolean_t prop_mod;
 
   /** what node kind is the path?
@@ -1445,7 +1473,12 @@ typedef struct svn_fs_path_change2_t
   svn_revnum_t copyfrom_rev;
   const char *copyfrom_path;
 
-  /** were there mergeinfo mods?
+  /** was the mergeinfo property touched?
+   *   modify:      } true iff svn:mergeinfo property add/del/mod
+   *   add (copy):  }          and fs format supports this flag.
+   *   add (plain): }
+   *   delete:      always false.
+   *   replace:     as for the add/copy part of the replacement.
    * (Note: Pre-1.9 repositories will report #svn_tristate_unknown.)
    * @since New in 1.9. */
   svn_tristate_t mergeinfo_mod;

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_io.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_io.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_io.h Sun Oct 19 13:55:35 2014
@@ -1534,6 +1534,10 @@ typedef svn_error_t *
  * If the only "access" the returned stream gets is to close it
  * then @a open_func will only be called if @a open_on_close is TRUE.
  *
+ * Allocate the returned stream in @a result_pool. Also arrange for
+ * @a result_pool to be passed as the @c result_pool parameter to
+ * @a open_func when it is called.
+ *
  * @since New in 1.8.
  */
 svn_stream_t *

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_string.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_string.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_string.h Sun Oct 19 13:55:35 2014
@@ -140,6 +140,8 @@ svn_string_create_empty(apr_pool_t *pool
 /** Create a new string copied from a generic string of bytes, @a bytes, of
  * length @a size bytes.  @a bytes is NOT assumed to be null-terminated, but
  * the new string will be.
+ *
+ * @since Since 1.9, @a bytes can be NULL if @a size is zero.
  */
 svn_string_t *
 svn_string_ncreate(const char *bytes, apr_size_t size, apr_pool_t *pool);
@@ -205,6 +207,8 @@ svn_stringbuf_create(const char *cstring
 /** Create a new stringbuf copied from the generic string of bytes, @a bytes,
  * of length @a size bytes.  @a bytes is NOT assumed to be null-terminated,
  * but the new stringbuf will be.
+ *
+ * @since Since 1.9, @a bytes can be NULL if @a size is zero.
  */
 svn_stringbuf_t *
 svn_stringbuf_ncreate(const char *bytes, apr_size_t size, apr_pool_t *pool);
@@ -307,6 +311,8 @@ svn_stringbuf_appendbyte(svn_stringbuf_t
 /** Append an array of bytes onto @a targetstr.
  *
  * reallocs if necessary. @a targetstr is affected, nothing else is.
+ *
+ * @since 1.9 @a bytes can be NULL if @a count is zero.
  */
 void
 svn_stringbuf_appendbytes(svn_stringbuf_t *targetstr,
@@ -349,6 +355,8 @@ svn_stringbuf_appendcstr(svn_stringbuf_t
  * @note The inserted string may be a sub-range if @a str.
  *
  * @since New in 1.8.
+ *
+ * @since Since 1.9, @a bytes can be NULL if @a count is zero.
  */
 void
 svn_stringbuf_insert(svn_stringbuf_t *str,
@@ -380,6 +388,8 @@ svn_stringbuf_remove(svn_stringbuf_t *st
  * @endcode
  *
  * @since New in 1.8.
+ *
+ * @since Since 1.9, @a bytes can be NULL if @a new_count is zero.
  */
 void
 svn_stringbuf_replace(svn_stringbuf_t *str,

Modified: subversion/branches/revprop-caching-ng/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/include/svn_wc.h?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/include/svn_wc.h (original)
+++ subversion/branches/revprop-caching-ng/subversion/include/svn_wc.h Sun Oct 19 13:55:35 2014
@@ -5167,6 +5167,12 @@ svn_wc_committed_queue_create(apr_pool_t
  *   ### seems to be not a set of changes but rather the new complete set of
  *   ### props.  And it's renamed to 'new_dav_cache' inside; why?
  *
+ * If @a is_committed is @c TRUE, the node will be processed as committed. This
+ * turns the node and its implied descendants as the new unmodified state at
+ * the new specified revision. Unless @a recurse is TRUE, changes on
+ * descendants are not committed as changes directly. In this case they should
+ * be queueud as their own changes.
+ *
  * If @a remove_lock is @c TRUE, any entryprops related to a repository
  * lock will be removed.
  *
@@ -5204,7 +5210,25 @@ svn_wc_committed_queue_create(apr_pool_t
  * Temporary allocations will be performed in @a scratch_pool, and persistent
  * allocations will use the same pool as @a queue used when it was created.
  *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_wc_queue_committed4(svn_wc_committed_queue_t *queue,
+                        svn_wc_context_t *wc_ctx,
+                        const char *local_abspath,
+                        svn_boolean_t recurse,
+                        svn_boolean_t is_committed,
+                        const apr_array_header_t *wcprop_changes,
+                        svn_boolean_t remove_lock,
+                        svn_boolean_t remove_changelist,
+                        const svn_checksum_t *sha1_checksum,
+                        apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_queue_committed4, but with is_committed always
+ * TRUE.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backwards compatibility with the 1.8 API.
  */
 svn_error_t *
 svn_wc_queue_committed3(svn_wc_committed_queue_t *queue,
@@ -8175,7 +8199,17 @@ typedef svn_error_t *(*svn_changelist_re
 
 
 /**
- * ### TODO: Doc string, please.
+ * Beginning at @a local_abspath, crawl to @a depth to discover every path in
+ * or under @a local_abspath which belongs to one of the changelists in @a
+ * changelist_filter (an array of <tt>const char *</tt> changelist names).
+ * If @a changelist_filter is @c NULL, discover paths with any changelist.
+ * Call @a callback_func (with @a callback_baton) each time a
+ * changelist-having path is discovered.
+ *
+ * @a local_abspath is a local WC path.
+ *
+ * If @a cancel_func is not @c NULL, invoke it passing @a cancel_baton
+ * during the recursive walk.
  *
  * @since New in 1.7.
  */

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/commit.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/commit.c Sun Oct 19 13:55:35 2014
@@ -250,39 +250,18 @@ post_process_commit_item(svn_wc_committe
     remove_lock = TRUE;
 
   return svn_error_trace(
-         svn_wc_queue_committed3(queue, wc_ctx, item->path,
+         svn_wc_queue_committed4(queue, wc_ctx, item->path,
                                  loop_recurse,
+                                 0 != (item->state_flags & 
+                                       (SVN_CLIENT_COMMIT_ITEM_ADD
+                                        | SVN_CLIENT_COMMIT_ITEM_DELETE
+                                        | SVN_CLIENT_COMMIT_ITEM_TEXT_MODS
+                                        | SVN_CLIENT_COMMIT_ITEM_PROP_MODS)),
                                  item->incoming_prop_changes,
                                  remove_lock, !keep_changelists,
                                  sha1_checksum, scratch_pool));
 }
 
-/* Do similar handling as post_process_commit_item() but for items that
- * are commit items, but aren't actual changes. Most importantly
- * remove lock tokens. */
-static svn_error_t *
-post_process_no_commit_item(const svn_client_commit_item3_t *item,
-                            svn_wc_context_t *wc_ctx,
-                            svn_boolean_t keep_changelists,
-                            svn_boolean_t keep_locks,
-                            apr_pool_t *scratch_pool)
-{
-  if ((item->state_flags & SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN)
-      && !keep_locks)
-    {
-      SVN_ERR(svn_wc_remove_lock2(wc_ctx, item->path, scratch_pool));
-    }
-
-  if (!keep_changelists)
-    SVN_ERR(svn_wc_set_changelist2(wc_ctx, item->path, NULL,
-                                   svn_depth_empty, NULL,
-                                   NULL, NULL,
-                                   NULL, NULL,
-                                   scratch_pool));
-
-  return SVN_NO_ERROR;
-}
-
 /* Given a list of committables described by their common base abspath
    BASE_ABSPATH and a list of relative dirents TARGET_RELPATHS determine
    which absolute paths must be locked to commit all these targets and
@@ -943,11 +922,6 @@ svn_client_commit6(const apr_array_heade
           svn_client_commit_item3_t *item
             = APR_ARRAY_IDX(commit_items, i, svn_client_commit_item3_t *);
 
-          if (! (item->state_flags & ~ SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN))
-            {
-              continue; /* Nothing to post process via the queue */
-            }
-
           svn_pool_clear(iterpool);
           bump_err = post_process_commit_item(
                        queue, item, ctx->wc_ctx,
@@ -969,23 +943,6 @@ svn_client_commit6(const apr_array_heade
 
       if (bump_err)
         goto cleanup;
-
-      for (i = 0; i < commit_items->nelts; i++)
-        {
-          svn_client_commit_item3_t *item
-            = APR_ARRAY_IDX(commit_items, i, svn_client_commit_item3_t *);
-
-          if (item->state_flags & ~ SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN)
-            continue; /* Already processed via the queue */
-
-          svn_pool_clear(iterpool);
-          bump_err = post_process_no_commit_item(
-                       item, ctx->wc_ctx,
-                       keep_changelists, keep_locks,
-                       iterpool);
-          if (bump_err)
-            goto cleanup;
-        }
     }
 
  cleanup:

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/copy.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/copy.c Sun Oct 19 13:55:35 2014
@@ -1101,12 +1101,15 @@ repos_to_repos_copy(const apr_array_head
           item = svn_client_commit_item3_create(pool);
           item->url = svn_path_url_add_component2(top_url, info->dst_path,
                                                   pool);
-          item->state_flags = SVN_CLIENT_COMMIT_ITEM_ADD;
+          item->state_flags = SVN_CLIENT_COMMIT_ITEM_ADD
+                              | SVN_CLIENT_COMMIT_ITEM_IS_COPY;
+          item->copyfrom_url = info->src_url;
+          item->copyfrom_rev = info->src_revnum;
           APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item;
 
           if (is_move && (! info->resurrection))
             {
-              item = apr_pcalloc(pool, sizeof(*item));
+              item = svn_client_commit_item3_create(pool);
               item->url = svn_path_url_add_component2(top_url, info->src_path,
                                                       pool);
               item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE;

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/diff_local.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/diff_local.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/diff_local.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/diff_local.c Sun Oct 19 13:55:35 2014
@@ -42,6 +42,7 @@
 #include "svn_pools.h"
 #include "svn_props.h"
 #include "svn_sorts.h"
+#include "svn_subst.h"
 #include "client.h"
 
 #include "private/svn_sorts_private.h"
@@ -291,6 +292,68 @@ inner_dir_diff(const char *left_abspath,
 
   return SVN_NO_ERROR;
 }
+
+/* Translates *LEFT_ABSPATH to a temporary file if PROPS specify that the
+   file needs translation. *LEFT_ABSPATH is updated to point to a file that
+   lives at least as long as RESULT_POOL when translation is necessary.
+   Otherwise the value is not updated */
+static svn_error_t *
+translate_if_necessary(const char **local_abspath,
+                       apr_hash_t *props,
+                       svn_cancel_func_t cancel_func,
+                       void *cancel_baton,
+                       apr_pool_t *result_pool,
+                       apr_pool_t *scratch_pool)
+{
+  const svn_string_t *eol_style_val;
+  const svn_string_t *keywords_val;
+  svn_subst_eol_style_t eol_style;
+  const char *eol;
+  apr_hash_t *keywords;
+  svn_stream_t *contents;
+  svn_stream_t *dst;
+
+  /* if (svn_hash_gets(props, SVN_PROP_SPECIAL))
+      ### TODO: Implement */
+
+  eol_style_val = svn_hash_gets(props, SVN_PROP_EOL_STYLE);
+  keywords_val = svn_hash_gets(props, SVN_PROP_KEYWORDS);
+
+  if (eol_style_val)
+    svn_subst_eol_style_from_value(&eol_style, &eol, eol_style_val->data);
+  else
+    {
+      eol = NULL;
+      eol_style = svn_subst_eol_style_none;
+    }
+
+  if (keywords_val)
+    SVN_ERR(svn_subst_build_keywords3(&keywords, keywords_val->data,
+                                      APR_STRINGIFY(SVN_INVALID_REVNUM),
+                                      "", "", 0, "", scratch_pool));
+  else
+    keywords = NULL;
+
+  if (!svn_subst_translation_required(eol_style, eol, keywords, FALSE, FALSE))
+    return SVN_NO_ERROR;
+
+  SVN_ERR(svn_stream_open_readonly(&contents, *local_abspath,
+                                    scratch_pool, scratch_pool));
+
+  SVN_ERR(svn_stream_open_unique(&dst, local_abspath, NULL,
+                                  svn_io_file_del_on_pool_cleanup,
+                                  result_pool, scratch_pool));
+
+  dst = svn_subst_stream_translated(dst, eol, TRUE /* repair */,
+                                    keywords, FALSE /* expand */,
+                                    scratch_pool);
+
+  SVN_ERR(svn_stream_copy3(contents, dst, cancel_func, cancel_baton,
+                           scratch_pool));
+
+  return SVN_NO_ERROR;
+}
+
 /* Handles reporting of a file for inner_dir_diff */
 static svn_error_t *
 do_file_diff(const char *left_abspath,
@@ -356,6 +419,10 @@ do_file_diff(const char *left_abspath,
             svn_hash_sets(left_props, SVN_PROP_MIME_TYPE,
                           svn_string_create(mime_type, scratch_pool));
         }
+
+      SVN_ERR(translate_if_necessary(&left_abspath, left_props,
+                                     ctx->cancel_func, ctx->cancel_baton,
+                                     scratch_pool, scratch_pool));
     }
   else
     left_props = NULL;
@@ -379,6 +446,11 @@ do_file_diff(const char *left_abspath,
             svn_hash_sets(right_props, SVN_PROP_MIME_TYPE,
                           svn_string_create(mime_type, scratch_pool));
         }
+
+      SVN_ERR(translate_if_necessary(&right_abspath, right_props,
+                                     ctx->cancel_func, ctx->cancel_baton,
+                                     scratch_pool, scratch_pool));
+
     }
   else
     right_props = NULL;

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/externals.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/externals.c Sun Oct 19 13:55:35 2014
@@ -169,6 +169,37 @@ switch_dir_external(const char *local_ab
   if (revision->kind == svn_opt_revision_number)
     external_rev = revision->value.number;
 
+  /* 
+   * The code below assumes existing versioned paths are *not* part of
+   * the external's defining working copy.
+   * The working copy library does not support registering externals
+   * on top of existing BASE nodes and will error out if we try.
+   * So if the external target is part of the defining working copy's
+   * BASE tree, don't attempt to create the external. Doing so would
+   * leave behind a switched path instead of an external (since the
+   * switch succeeds but registration of the external in the DB fails).
+   * The working copy then cannot be updated until the path is switched back.
+   * See issue #4085.
+   */
+  SVN_ERR(svn_wc__node_get_base(&kind, NULL, NULL,
+                                &repos_root_url, &repos_uuid,
+                                NULL, ctx->wc_ctx, local_abspath,
+                                TRUE, /* ignore_enoent */
+                                TRUE, /* show hidden */
+                                pool, pool));
+  if (kind != svn_node_unknown)
+    {
+      const char *wcroot_abspath;
+      const char *defining_wcroot_abspath;
+
+      SVN_ERR(svn_wc__get_wcroot(&wcroot_abspath, ctx->wc_ctx,
+                                 local_abspath, pool, pool));
+      SVN_ERR(svn_wc__get_wcroot(&defining_wcroot_abspath, ctx->wc_ctx,
+                                 defining_abspath, pool, pool));
+      if (strcmp(wcroot_abspath, defining_wcroot_abspath) == 0)
+        return svn_error_create(SVN_ERR_WC_PATH_UNEXPECTED_STATUS, NULL, NULL);
+    }
+
   /* If path is a directory, try to update/switch to the correct URL
      and revision. */
   SVN_ERR(svn_io_check_path(local_abspath, &kind, pool));

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/import.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/import.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/import.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/import.c Sun Oct 19 13:55:35 2014
@@ -844,7 +844,7 @@ svn_client_import5(const char *path,
         = apr_array_make(scratch_pool, 1, sizeof(item));
 
       item = svn_client_commit_item3_create(scratch_pool);
-      item->path = apr_pstrdup(scratch_pool, path);
+      item->path = local_abspath;
       item->state_flags = SVN_CLIENT_COMMIT_ITEM_ADD;
       APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item;
 

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/mtcc.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/mtcc.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/mtcc.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/mtcc.c Sun Oct 19 13:55:35 2014
@@ -1250,6 +1250,7 @@ add_commit_items(mtcc_op_t *op,
                                                            op->src_relpath,
                                                            result_pool);
           item->copyfrom_rev = op->src_rev;
+          item->state_flags |= SVN_CLIENT_COMMIT_ITEM_IS_COPY;
         }
       else
         item->copyfrom_rev = SVN_INVALID_REVNUM;

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/relocate.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/relocate.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/relocate.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/relocate.c Sun Oct 19 13:55:35 2014
@@ -127,85 +127,6 @@ validator_func(void *baton,
   return SVN_NO_ERROR;
 }
 
-
-/* Examing the array of svn_wc_external_item2_t's EXT_DESC (parsed
-   from the svn:externals property set on LOCAL_ABSPATH) and determine
-   if the external working copies described by such should be
-   relocated as a side-effect of the relocation of their parent
-   working copy (from OLD_PARENT_REPOS_ROOT_URL to
-   NEW_PARENT_REPOS_ROOT_URL).  If so, attempt said relocation.  */
-static svn_error_t *
-relocate_externals(const char *local_abspath,
-                   apr_array_header_t *ext_desc,
-                   const char *old_parent_repos_root_url,
-                   const char *new_parent_repos_root_url,
-                   svn_client_ctx_t *ctx,
-                   apr_pool_t *scratch_pool)
-{
-  apr_pool_t *iterpool;
-  int i;
-
-  /* Parse an externals definition into an array of external items. */
-
-  iterpool = svn_pool_create(scratch_pool);
-
-  for (i = 0; i < ext_desc->nelts; i++)
-    {
-      svn_wc_external_item2_t *ext_item =
-        APR_ARRAY_IDX(ext_desc, i, svn_wc_external_item2_t *);
-      const char *target_repos_root_url;
-      const char *target_abspath;
-      svn_error_t *err;
-
-      svn_pool_clear(iterpool);
-
-      /* If this external isn't pulled in via a relative URL, ignore
-         it.  There's no sense in relocating a working copy only to
-         have the next 'svn update' try to point it back to another
-         location. */
-      if (! ((strncmp("../", ext_item->url, 3) == 0) ||
-             (strncmp("^/", ext_item->url, 2) == 0)))
-        continue;
-
-      /* If the external working copy's not-yet-relocated repos root
-         URL matches the primary working copy's pre-relocated
-         repository root URL, try to relocate that external, too.
-         You might wonder why this check is needed, given that we're
-         already limiting ourselves to externals pulled via URLs
-         relative to their primary working copy.  Well, it's because
-         you can use "../" to "crawl up" above one repository's URL
-         space and down into another one.  */
-      SVN_ERR(svn_dirent_get_absolute(&target_abspath,
-                                      svn_dirent_join(local_abspath,
-                                                      ext_item->target_dir,
-                                                      iterpool),
-                                      iterpool));
-      err = svn_client_get_repos_root(&target_repos_root_url, NULL /* uuid */,
-                                      target_abspath, ctx, iterpool, iterpool);
-
-      /* Ignore externals that aren't present in the working copy.
-       * This can happen if an external is deleted from disk accidentally,
-       * or if an external is configured on a locally added directory. */
-      if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
-        {
-          svn_error_clear(err);
-          continue;
-        }
-      else
-        SVN_ERR(err);
-
-      if (strcmp(target_repos_root_url, old_parent_repos_root_url) == 0)
-        SVN_ERR(svn_client_relocate2(target_abspath,
-                                     old_parent_repos_root_url,
-                                     new_parent_repos_root_url,
-                                     FALSE, ctx, iterpool));
-    }
-
-  svn_pool_destroy(iterpool);
-
-  return SVN_NO_ERROR;
-}
-
 svn_error_t *
 svn_client_relocate2(const char *wcroot_dir,
                      const char *from_prefix,
@@ -256,10 +177,9 @@ svn_client_relocate2(const char *wcroot_
 
 
   /* Relocate externals, too (if any). */
-  SVN_ERR(svn_wc__externals_gather_definitions(&externals_hash, NULL,
-                                               ctx->wc_ctx, local_abspath,
-                                               svn_depth_infinity,
-                                               pool, pool));
+  SVN_ERR(svn_wc__externals_defined_below(&externals_hash,
+                                          ctx->wc_ctx, local_abspath,
+                                          pool, pool));
   if (! apr_hash_count(externals_hash))
     return SVN_NO_ERROR;
 
@@ -269,18 +189,39 @@ svn_client_relocate2(const char *wcroot_
        hi != NULL;
        hi = apr_hash_next(hi))
     {
+      svn_node_kind_t kind;
       const char *this_abspath = apr_hash_this_key(hi);
-      const char *value = apr_hash_this_val(hi);
-      apr_array_header_t *ext_desc;
 
       svn_pool_clear(iterpool);
 
-      SVN_ERR(svn_wc_parse_externals_description3(&ext_desc, this_abspath,
-                                                  value, FALSE,
-                                                  iterpool));
-      if (ext_desc->nelts)
-        SVN_ERR(relocate_externals(this_abspath, ext_desc, old_repos_root_url,
-                                   new_repos_root_url, ctx, iterpool));
+      SVN_ERR(svn_wc__read_external_info(&kind, NULL, NULL, NULL, NULL,
+                                         ctx->wc_ctx,
+                                         local_abspath, this_abspath,
+                                         FALSE, iterpool, iterpool));
+
+      if (kind == svn_node_dir)
+        {
+          const char *this_repos_root_url;
+          svn_error_t *err;
+
+          err = svn_client_get_repos_root(&this_repos_root_url, NULL /* uuid */,
+                                          this_abspath, ctx, iterpool, iterpool);
+
+          /* Ignore externals that aren't present in the working copy.
+           * This can happen if an external is deleted from disk accidentally,
+           * or if an external is configured on a locally added directory. */
+          if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+            {
+              svn_error_clear(err);
+              continue;
+            }
+          SVN_ERR(err);
+
+          if (strcmp(old_repos_root_url, this_repos_root_url) == 0)
+            SVN_ERR(svn_client_relocate2(this_abspath, from_prefix, to_prefix,
+                                         FALSE /* ignore_externals */,
+                                         ctx, iterpool));
+        }
     }
 
   svn_pool_destroy(iterpool);

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/upgrade.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/upgrade.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/upgrade.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/upgrade.c Sun Oct 19 13:55:35 2014
@@ -82,6 +82,14 @@ fetch_repos_info(const char **repos_root
   return SVN_NO_ERROR;
 }
 
+/* Forward definition. Upgrades svn:externals properties in the working copy
+   LOCAL_ABSPATH to the WC-NG  storage.
+ */
+static svn_error_t *
+upgrade_externals_from_properties(svn_client_ctx_t *ctx,
+                                  const char *local_abspath,
+                                  apr_pool_t *scratch_pool);
+
 svn_error_t *
 svn_client_upgrade(const char *path,
                    svn_client_ctx_t *ctx,
@@ -89,10 +97,6 @@ svn_client_upgrade(const char *path,
 {
   const char *local_abspath;
   apr_hash_t *externals;
-  apr_hash_index_t *hi;
-  apr_pool_t *iterpool;
-  apr_pool_t *iterpool2;
-  svn_opt_revision_t rev = {svn_opt_revision_unspecified, {0}};
   struct repos_info_baton info_baton;
 
   info_baton.state_pool = scratch_pool;
@@ -111,6 +115,80 @@ svn_client_upgrade(const char *path,
                          ctx->notify_func2, ctx->notify_baton2,
                          scratch_pool));
 
+  SVN_ERR(svn_wc__externals_defined_below(&externals,
+                                          ctx->wc_ctx, local_abspath,
+                                          scratch_pool, scratch_pool));
+
+  if (apr_hash_count(externals) > 0)
+    {
+      apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+      apr_hash_index_t *hi;
+
+      /* We are upgrading from >= 1.7. No need to upgrade from
+         svn:externals properties. And by that avoiding the removal
+         of recorded externals information (issue #4519)
+
+         Only directory externals need an explicit upgrade */
+      for (hi = apr_hash_first(scratch_pool, externals);
+           hi;
+           hi = apr_hash_next(hi))
+        {
+          const char *ext_abspath;
+          svn_node_kind_t kind;
+
+          svn_pool_clear(iterpool);
+
+          ext_abspath = apr_hash_this_key(hi);
+
+          SVN_ERR(svn_wc__read_external_info(&kind, NULL, NULL, NULL, NULL,
+                                             ctx->wc_ctx, local_abspath,
+                                             ext_abspath, FALSE,
+                                             iterpool, iterpool));
+
+          if (kind == svn_node_dir)
+            {
+              svn_error_t *err = svn_client_upgrade(ext_abspath, ctx, iterpool);
+
+              if (err)
+                {
+                  svn_wc_notify_t *notify =
+                            svn_wc_create_notify(ext_abspath,
+                                                 svn_wc_notify_failed_external,
+                                                 iterpool);
+                  notify->err = err;
+                  ctx->notify_func2(ctx->notify_baton2,
+                                    notify, iterpool);
+                  svn_error_clear(err);
+                  /* Next external node, please... */
+                }
+            }
+        }
+
+      svn_pool_destroy(iterpool);
+    }
+  else
+    {
+      /* Upgrading from <= 1.6, or no svn:properties defined.
+         (There is no way to detect the difference from libsvn_client :( ) */
+
+      SVN_ERR(upgrade_externals_from_properties(ctx, local_abspath,
+                                                scratch_pool));
+    }
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+upgrade_externals_from_properties(svn_client_ctx_t *ctx,
+                                  const char *local_abspath,
+                                  apr_pool_t *scratch_pool)
+{
+  apr_hash_index_t *hi;
+  apr_pool_t *iterpool;
+  apr_pool_t *iterpool2;
+  apr_hash_t *externals;
+  svn_opt_revision_t rev = {svn_opt_revision_unspecified, {0}};
+  struct repos_info_baton info_baton;
+
   /* Now it's time to upgrade the externals too. We do it after the wc
      upgrade to avoid that errors in the externals causes the wc upgrade to
      fail. Thanks to caching the performance penalty of walking the wc a
@@ -163,7 +241,7 @@ svn_client_upgrade(const char *path,
                                     iterpool);
       if (!err)
         err = svn_wc_parse_externals_description3(
-                  &externals_p, svn_dirent_dirname(path, iterpool),
+                  &externals_p, svn_dirent_dirname(local_abspath, iterpool),
                   external_desc->data, FALSE, iterpool);
       if (err)
         {

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_client/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_client/util.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_client/util.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_client/util.c Sun Oct 19 13:55:35 2014
@@ -138,7 +138,12 @@ svn_client__pathrev_fspath(const svn_cli
 svn_client_commit_item3_t *
 svn_client_commit_item3_create(apr_pool_t *pool)
 {
-  return apr_pcalloc(pool, sizeof(svn_client_commit_item3_t));
+  svn_client_commit_item3_t *item = apr_pcalloc(pool, sizeof(*item));
+
+  item->revision = SVN_INVALID_REVNUM;
+  item->copyfrom_rev = SVN_INVALID_REVNUM;
+
+  return item;
 }
 
 svn_client_commit_item3_t *

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_delta/text_delta.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_delta/text_delta.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_delta/text_delta.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_delta/text_delta.c Sun Oct 19 13:55:35 2014
@@ -656,6 +656,11 @@ svn_txdelta_apply_instructions(svn_txdel
   const svn_txdelta_op_t *op;
   apr_size_t tpos = 0;
 
+  /* Nothing to do for empty buffers.
+   * This check allows for NULL TBUF in that case. */
+  if (*tlen == 0)
+    return;
+
   for (op = window->ops; op < window->ops + window->num_ops; op++)
     {
       const apr_size_t buf_len = (op->length < *tlen - tpos

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_fs/fs-loader.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_fs/fs-loader.c Sun Oct 19 13:55:35 2014
@@ -558,6 +558,13 @@ svn_fs_upgrade2(const char *path,
   return SVN_NO_ERROR;
 }
 
+/* A warning handling function that does not abort on errors,
+   but just lets them be returned normally.  */
+static void
+verify_fs_warning_func(void *baton, svn_error_t *err)
+{
+}
+
 svn_error_t *
 svn_fs_verify(const char *path,
               apr_hash_t *fs_config,
@@ -574,6 +581,7 @@ svn_fs_verify(const char *path,
 
   SVN_ERR(fs_library_vtable(&vtable, path, pool));
   fs = fs_new(fs_config, pool);
+  svn_fs_set_warning_func(fs, verify_fs_warning_func, NULL);
 
   SVN_ERR(vtable->verify_fs(fs, path, start, end,
                             notify_func, notify_baton,

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/bdb/changes-table.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/bdb/changes-table.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/bdb/changes-table.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/bdb/changes-table.c Sun Oct 19 13:55:35 2014
@@ -121,12 +121,32 @@ svn_fs_bdb__changes_delete(svn_fs_t *fs,
   return SVN_NO_ERROR;
 }
 
+/* Return a deep FS API type copy of SOURCE in internal format and allocate
+ * the result in RESULT_POOL.
+ */
+static svn_fs_path_change2_t *
+change_to_fs_change(const change_t *change,
+                    apr_pool_t *result_pool)
+{
+  svn_fs_path_change2_t *result = svn_fs__path_change_create_internal(
+                                    svn_fs_base__id_copy(change->noderev_id,
+                                                         result_pool),
+                                    change->kind,
+                                    result_pool);
+  result->text_mod = change->text_mod;
+  result->prop_mod = change->prop_mod;
+  result->node_kind = svn_node_unknown;
+  result->copyfrom_known = FALSE;
+
+  return result;
+}
 
 /* Merge the internal-use-only CHANGE into a hash of public-FS
    svn_fs_path_change2_t CHANGES, collapsing multiple changes into a
    single succinct change per path. */
 static svn_error_t *
 fold_change(apr_hash_t *changes,
+            apr_hash_t *deletions,
             const change_t *change)
 {
   apr_pool_t *pool = apr_hash_pool_get(changes);
@@ -185,7 +205,7 @@ fold_change(apr_hash_t *changes,
         case svn_fs_path_change_reset:
           /* A reset here will simply remove the path change from the
              hash. */
-          old_change = NULL;
+          new_change = NULL;
           break;
 
         case svn_fs_path_change_delete:
@@ -194,14 +214,21 @@ fold_change(apr_hash_t *changes,
               /* If the path was introduced in this transaction via an
                  add, and we are deleting it, just remove the path
                  altogether. */
-              old_change = NULL;
+              new_change = NULL;
+            }
+          else if (old_change->change_kind == svn_fs_path_change_replace)
+            {
+              /* A deleting a 'replace' restore the original deletion. */
+              new_change = svn_hash_gets(deletions, path);
+              SVN_ERR_ASSERT(new_change);
             }
           else
             {
               /* A deletion overrules all previous changes. */
-              old_change->change_kind = svn_fs_path_change_delete;
-              old_change->text_mod = change->text_mod;
-              old_change->prop_mod = change->prop_mod;
+              new_change = old_change;
+              new_change->change_kind = svn_fs_path_change_delete;
+              new_change->text_mod = change->text_mod;
+              new_change->prop_mod = change->prop_mod;
             }
           break;
 
@@ -209,38 +236,33 @@ fold_change(apr_hash_t *changes,
         case svn_fs_path_change_replace:
           /* An add at this point must be following a previous delete,
              so treat it just like a replace. */
-          old_change->change_kind = svn_fs_path_change_replace;
-          old_change->node_rev_id = svn_fs_base__id_copy(change->noderev_id,
-                                                         pool);
-          old_change->text_mod = change->text_mod;
-          old_change->prop_mod = change->prop_mod;
+
+          new_change = change_to_fs_change(change, pool);
+          new_change->change_kind = svn_fs_path_change_replace;
+
+          /* Remember the original deletion.
+           * Make sure to allocate the hash key in a durable pool. */
+          svn_hash_sets(deletions,
+                        apr_pstrdup(apr_hash_pool_get(deletions), path),
+                        old_change);
           break;
 
         case svn_fs_path_change_modify:
         default:
+          new_change = old_change;
           if (change->text_mod)
-            old_change->text_mod = TRUE;
+            new_change->text_mod = TRUE;
           if (change->prop_mod)
-            old_change->prop_mod = TRUE;
+            new_change->prop_mod = TRUE;
           break;
         }
-
-      /* Point our new_change to our (possibly modified) old_change. */
-      new_change = old_change;
     }
   else
     {
       /* This change is new to the hash, so make a new public change
          structure from the internal one (in the hash's pool), and dup
          the path into the hash's pool, too. */
-      new_change = svn_fs__path_change_create_internal(
-                       svn_fs_base__id_copy(change->noderev_id, pool),
-                       change->kind,
-                       pool);
-      new_change->text_mod = change->text_mod;
-      new_change->prop_mod = change->prop_mod;
-      new_change->node_kind = svn_node_unknown;
-      new_change->copyfrom_known = FALSE;
+      new_change = change_to_fs_change(change, pool);
       path = apr_pstrdup(pool, change->path);
     }
 
@@ -265,6 +287,8 @@ svn_fs_bdb__changes_fetch(apr_hash_t **c
   svn_error_t *err = SVN_NO_ERROR;
   apr_hash_t *changes = apr_hash_make(pool);
   apr_pool_t *subpool = svn_pool_create(pool);
+  apr_pool_t *iterpool = svn_pool_create(pool);
+  apr_hash_t *deletions = apr_hash_make(subpool);
 
   /* Get a cursor on the first record matching KEY, and then loop over
      the records, adding them to the return array. */
@@ -286,11 +310,11 @@ svn_fs_bdb__changes_fetch(apr_hash_t **c
       svn_skel_t *result_skel;
 
       /* Clear the per-iteration subpool. */
-      svn_pool_clear(subpool);
+      svn_pool_clear(iterpool);
 
       /* RESULT now contains a change record associated with KEY.  We
          need to parse that skel into an change_t structure ...  */
-      result_skel = svn_skel__parse(result.data, result.size, subpool);
+      result_skel = svn_skel__parse(result.data, result.size, iterpool);
       if (! result_skel)
         {
           err = svn_error_createf(SVN_ERR_FS_CORRUPT, NULL,
@@ -298,12 +322,12 @@ svn_fs_bdb__changes_fetch(apr_hash_t **c
                                   key);
           goto cleanup;
         }
-      err = svn_fs_base__parse_change_skel(&change, result_skel, subpool);
+      err = svn_fs_base__parse_change_skel(&change, result_skel, iterpool);
       if (err)
         goto cleanup;
 
       /* ... and merge it with our return hash.  */
-      err = fold_change(changes, change);
+      err = fold_change(changes, deletions, change);
       if (err)
         goto cleanup;
 
@@ -319,7 +343,7 @@ svn_fs_bdb__changes_fetch(apr_hash_t **c
         {
           apr_hash_index_t *hi;
 
-          for (hi = apr_hash_first(subpool, changes);
+          for (hi = apr_hash_first(iterpool, changes);
                hi;
                hi = apr_hash_next(hi))
             {
@@ -347,6 +371,7 @@ svn_fs_bdb__changes_fetch(apr_hash_t **c
     }
 
   /* Destroy the per-iteration subpool. */
+  svn_pool_destroy(iterpool);
   svn_pool_destroy(subpool);
 
   /* If there are no (more) change records for this KEY, we're

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/fs.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/fs.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_fs_base/fs.c Sun Oct 19 13:55:35 2014
@@ -1084,7 +1084,7 @@ svn_fs_base__clean_logs(const char *live
 
   {  /* Process unused logs from live area */
     int idx;
-    apr_pool_t *sub_pool = svn_pool_create(pool);
+    apr_pool_t *subpool = svn_pool_create(pool);
 
     /* Process log files. */
     for (idx = 0; idx < logfiles->nelts; idx++)
@@ -1093,9 +1093,9 @@ svn_fs_base__clean_logs(const char *live
         const char *live_log_path;
         const char *backup_log_path;
 
-        svn_pool_clear(sub_pool);
-        live_log_path = svn_dirent_join(live_path, log_file, sub_pool);
-        backup_log_path = svn_dirent_join(backup_path, log_file, sub_pool);
+        svn_pool_clear(subpool);
+        live_log_path = svn_dirent_join(live_path, log_file, subpool);
+        backup_log_path = svn_dirent_join(backup_path, log_file, subpool);
 
         { /* Compare files. No point in using MD5 and wasting CPU cycles as we
              got full copies of both logs */
@@ -1112,17 +1112,17 @@ svn_fs_base__clean_logs(const char *live
             SVN_ERR(svn_io_files_contents_same_p(&files_match,
                                                  live_log_path,
                                                  backup_log_path,
-                                                 sub_pool));
+                                                 subpool));
 
           /* If log files do not match, go to the next log file. */
           if (!files_match)
             continue;
         }
 
-        SVN_ERR(svn_io_remove_file2(live_log_path, FALSE, sub_pool));
+        SVN_ERR(svn_io_remove_file2(live_log_path, FALSE, subpool));
       }
 
-    svn_pool_destroy(sub_pool);
+    svn_pool_destroy(subpool);
   }
 
   return SVN_NO_ERROR;

Modified: subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/cached_data.c
URL: http://svn.apache.org/viewvc/subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/cached_data.c?rev=1632906&r1=1632905&r2=1632906&view=diff
==============================================================================
--- subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/cached_data.c (original)
+++ subversion/branches/revprop-caching-ng/subversion/libsvn_fs_fs/cached_data.c Sun Oct 19 13:55:35 2014
@@ -74,7 +74,7 @@ dbg_log_access(svn_fs_t *fs,
                svn_revnum_t revision,
                apr_uint64_t item_index,
                void *item,
-               int item_type,
+               apr_uint32_t item_type,
                apr_pool_t *scratch_pool)
 {
   /* no-op if this macro is not defined */
@@ -937,8 +937,9 @@ svn_fs_fs__check_rep(representation_t *r
 
       /* This may fail if there is a background pack operation (can't auto-
          retry because the item offset lookup has to be redone as well). */
-      SVN_ERR(svn_fs_fs__p2l_entry_lookup(&entry, fs, rev_file, rep->revision,
-                                          offset, scratch_pool));
+      SVN_ERR(svn_fs_fs__p2l_entry_lookup(&entry, fs, rev_file,
+                                          rep->revision, offset,
+                                          scratch_pool, scratch_pool));
 
       if (   entry == NULL
           || entry->type < SVN_FS_FS__ITEM_TYPE_FILE_REP
@@ -978,7 +979,7 @@ svn_fs_fs__rep_chain_length(int *chain_l
   svn_revnum_t shard_size = ffd->max_files_per_dir
                           ? ffd->max_files_per_dir
                           : 1;
-  apr_pool_t *sub_pool = svn_pool_create(scratch_pool);
+  apr_pool_t *subpool = svn_pool_create(scratch_pool);
   apr_pool_t *iterpool = svn_pool_create(scratch_pool);
   svn_boolean_t is_delta = FALSE;
   int count = 0;
@@ -1014,7 +1015,7 @@ svn_fs_fs__rep_chain_length(int *chain_l
                                     &file_hint,
                                     &base_rep,
                                     fs,
-                                    sub_pool,
+                                    subpool,
                                     iterpool));
 
       base_rep.revision = header->base_revision;
@@ -1023,18 +1024,28 @@ svn_fs_fs__rep_chain_length(int *chain_l
       svn_fs_fs__id_txn_reset(&base_rep.txn_id);
       is_delta = header->type == svn_fs_fs__rep_delta;
 
+      /* Clear it the SUBPOOL once in a while.  Doing it too frequently
+       * renders the FILE_HINT ineffective.  Doing too infrequently, may
+       * leave us with too many open file handles.
+       *
+       * Note that this is mostly about efficiency, with larger values
+       * being more efficient, and any non-zero value is legal here.  When
+       * reading deltified contents, we may keep 10s of rev files open at
+       * the same time and the system has to cope with that.  Thus, the
+       * limit of 16 chosen below is in the same ballpark.
+       */
       ++count;
       if (count % 16 == 0)
         {
           file_hint = NULL;
-          svn_pool_clear(sub_pool);
+          svn_pool_clear(subpool);
         }
     }
   while (is_delta && base_rep.revision);
 
   *chain_length = count;
   *shard_count = shards;
-  svn_pool_destroy(sub_pool);
+  svn_pool_destroy(subpool);
   svn_pool_destroy(iterpool);
 
   return SVN_NO_ERROR;
@@ -2393,7 +2404,7 @@ read_dir_entries(apr_array_header_t *ent
                            _("Directory entry corrupt in '%s'"),
                            svn_fs_fs__id_unparse(id, scratch_pool)->data);
 
-      dirent->id = svn_fs_fs__id_parse(str, result_pool);
+      SVN_ERR(svn_fs_fs__id_parse(&dirent->id, str, result_pool));
 
       /* In incremental mode, update the hash; otherwise, write to the
        * final array.  Be sure to use hash keys that survive this iteration.
@@ -3251,7 +3262,8 @@ block_read(void **result,
       block_start = offset - (offset % ffd->block_size);
       SVN_ERR(svn_fs_fs__p2l_index_lookup(&entries, fs, revision_file,
                                           revision, block_start,
-                                          ffd->block_size, scratch_pool));
+                                          ffd->block_size, scratch_pool,
+                                          scratch_pool));
 
       SVN_ERR(aligned_seek(fs, revision_file->file, &block_start, offset,
                            iterpool));
@@ -3286,7 +3298,7 @@ block_read(void **result,
                             && entry->size < ffd->block_size))
             {
               void *item = NULL;
-              SVN_ERR(svn_io_file_seek(revision_file->file, SEEK_SET,
+              SVN_ERR(svn_io_file_seek(revision_file->file, APR_SET,
                                        &entry->offset, iterpool));
               switch (entry->type)
                 {



Mime
View raw message