You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2015/08/19 04:35:15 UTC
svn commit: r1696514 [1/10] - in /subversion/branches/patch-exec: ./
build/ac-macros/ notes/ subversion/bindings/javahl/native/
subversion/bindings/swig/ subversion/include/ subversion/include/private/
subversion/libsvn_client/ subversion/libsvn_fs_fs/...
Author: danielsh
Date: Wed Aug 19 02:35:12 2015
New Revision: 1696514
URL: http://svn.apache.org/r1696514
Log:
On the patch-exec branch, sync with trunk@r1696512.
Added:
subversion/branches/patch-exec/subversion/libsvn_fs_x/batch_fsync.c
- copied unchanged from r1696512, subversion/trunk/subversion/libsvn_fs_x/batch_fsync.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/batch_fsync.h
- copied unchanged from r1696512, subversion/trunk/subversion/libsvn_fs_x/batch_fsync.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/dag_cache.c
- copied unchanged from r1696512, subversion/trunk/subversion/libsvn_fs_x/dag_cache.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/dag_cache.h
- copied unchanged from r1696512, subversion/trunk/subversion/libsvn_fs_x/dag_cache.h
subversion/branches/patch-exec/subversion/libsvn_subr/cache-null.c
- copied unchanged from r1696512, subversion/trunk/subversion/libsvn_subr/cache-null.c
subversion/branches/patch-exec/tools/client-side/svn-mergeinfo-normalizer/
- copied from r1696512, subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/
Modified:
subversion/branches/patch-exec/ (props changed)
subversion/branches/patch-exec/CHANGES
subversion/branches/patch-exec/INSTALL
subversion/branches/patch-exec/build.conf
subversion/branches/patch-exec/build/ac-macros/apache.m4
subversion/branches/patch-exec/notes/ (props changed)
subversion/branches/patch-exec/subversion/bindings/javahl/native/SVNRepos.cpp
subversion/branches/patch-exec/subversion/bindings/swig/svn_client.i
subversion/branches/patch-exec/subversion/include/private/svn_cache.h
subversion/branches/patch-exec/subversion/include/private/svn_dep_compat.h
subversion/branches/patch-exec/subversion/include/private/svn_mutex.h
subversion/branches/patch-exec/subversion/include/private/svn_ra_svn_private.h
subversion/branches/patch-exec/subversion/include/private/svn_subr_private.h
subversion/branches/patch-exec/subversion/include/private/svn_temp_serializer.h
subversion/branches/patch-exec/subversion/include/svn_repos.h
subversion/branches/patch-exec/subversion/libsvn_client/diff.c
subversion/branches/patch-exec/subversion/libsvn_client/ra.c
subversion/branches/patch-exec/subversion/libsvn_fs_fs/caching.c
subversion/branches/patch-exec/subversion/libsvn_fs_fs/id.c
subversion/branches/patch-exec/subversion/libsvn_fs_fs/temp_serializer.c
subversion/branches/patch-exec/subversion/libsvn_fs_fs/util.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/ (props changed)
subversion/branches/patch-exec/subversion/libsvn_fs_x/cached_data.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/cached_data.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/caching.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/changes.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/changes.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/dag.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/dag.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/fs.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/fs.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/fs_x.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/fs_x.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/hotcopy.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/hotcopy.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/index.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/index.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/lock.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/lock.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/low_level.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/low_level.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/noderevs.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/noderevs.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/pack.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/pack.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/recovery.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/recovery.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/reps.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/reps.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/rev_file.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/rev_file.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/revprops.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/revprops.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/string_table.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/string_table.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/temp_serializer.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/temp_serializer.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/transaction.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/transaction.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/tree.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/tree.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/util.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/util.h
subversion/branches/patch-exec/subversion/libsvn_fs_x/verify.c
subversion/branches/patch-exec/subversion/libsvn_fs_x/verify.h
subversion/branches/patch-exec/subversion/libsvn_ra_svn/client.c
subversion/branches/patch-exec/subversion/libsvn_ra_svn/editorp.c
subversion/branches/patch-exec/subversion/libsvn_ra_svn/marshal.c
subversion/branches/patch-exec/subversion/libsvn_repos/deprecated.c
subversion/branches/patch-exec/subversion/libsvn_repos/dump.c
subversion/branches/patch-exec/subversion/libsvn_repos/load-fs-vtable.c
subversion/branches/patch-exec/subversion/libsvn_repos/log.c
subversion/branches/patch-exec/subversion/libsvn_subr/cache-membuffer.c
subversion/branches/patch-exec/subversion/libsvn_subr/compress.c
subversion/branches/patch-exec/subversion/libsvn_subr/deprecated.c
subversion/branches/patch-exec/subversion/libsvn_subr/io.c
subversion/branches/patch-exec/subversion/libsvn_subr/mergeinfo.c
subversion/branches/patch-exec/subversion/libsvn_subr/mutex.c
subversion/branches/patch-exec/subversion/libsvn_subr/stream.c
subversion/branches/patch-exec/subversion/libsvn_subr/sysinfo.c
subversion/branches/patch-exec/subversion/libsvn_subr/temp_serializer.c
subversion/branches/patch-exec/subversion/libsvn_subr/xml.c
subversion/branches/patch-exec/subversion/mod_authz_svn/mod_authz_svn.c
subversion/branches/patch-exec/subversion/mod_dav_svn/repos.c
subversion/branches/patch-exec/subversion/svn/help-cmd.c
subversion/branches/patch-exec/subversion/svnadmin/svnadmin.c
subversion/branches/patch-exec/subversion/svndumpfilter/svndumpfilter.c
subversion/branches/patch-exec/subversion/svnrdump/load_editor.c
subversion/branches/patch-exec/subversion/svnserve/svnserve.c
subversion/branches/patch-exec/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
subversion/branches/patch-exec/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
subversion/branches/patch-exec/subversion/tests/cmdline/patch_tests.py
subversion/branches/patch-exec/subversion/tests/cmdline/svnadmin_tests.py
subversion/branches/patch-exec/subversion/tests/cmdline/svntest/verify.py
subversion/branches/patch-exec/subversion/tests/libsvn_fs/fs-test.c
subversion/branches/patch-exec/subversion/tests/libsvn_fs_x/ (props changed)
subversion/branches/patch-exec/subversion/tests/libsvn_fs_x/fs-x-pack-test.c
subversion/branches/patch-exec/subversion/tests/libsvn_ra/ra-test.c
subversion/branches/patch-exec/subversion/tests/libsvn_repos/dump-load-test.c
subversion/branches/patch-exec/subversion/tests/libsvn_repos/repos-test.c
subversion/branches/patch-exec/subversion/tests/libsvn_subr/cache-test.c
subversion/branches/patch-exec/tools/buildbot/slaves/svn-sparc-solaris/svncheck.sh
subversion/branches/patch-exec/tools/client-side/bash_completion
subversion/branches/patch-exec/tools/dev/fsfs-access-map.c
subversion/branches/patch-exec/tools/dist/security/mailer.py
subversion/branches/patch-exec/tools/dist/security/parser.py
Propchange: subversion/branches/patch-exec/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 19 02:35:12 2015
@@ -1,4 +1,4 @@
-/subversion/branches/1.10-cache-improvements:1675666-1677522,1679679,1679681,1679859
+/subversion/branches/1.10-cache-improvements:1669168-1694487
/subversion/branches/1.5.x-r30215:870312
/subversion/branches/1.7.x-fs-verify:1146708,1161180
/subversion/branches/1.9-cache-improvements:1678948-1679863
@@ -23,6 +23,7 @@
/subversion/branches/fsfs-lock-many:1571740-1577217
/subversion/branches/fsfs-pack:873717-874575
/subversion/branches/fsx:1507845-1509914
+/subversion/branches/fsx-1.10:1658219-1694500
/subversion/branches/fsx-id:1645603-1649011
/subversion/branches/gnome-keyring:870558-871410
/subversion/branches/gpg-agent-password-store:1005036-1150766
@@ -64,6 +65,7 @@
/subversion/branches/performance:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-1029336,1029339-1029340,1029342,10
29344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
/subversion/branches/pin-externals:1643757-1659392
/subversion/branches/py-tests-as-modules:956579-1033052
+/subversion/branches/ra-svn-tuning:1658201-1694489
/subversion/branches/ra_serf-digest-authn:875693-876404
/subversion/branches/reintegrate-improvements:873853-874164
/subversion/branches/remote-only-status:1581845-1586090
@@ -74,6 +76,7 @@
/subversion/branches/svn-auth-x509:1603509-1655900
/subversion/branches/svn-info-detail:1660035-1662618
/subversion/branches/svn-mergeinfo-enhancements:870119-870195,870197-870288
+/subversion/branches/svn-mergeinfo-normalizer:1642232-1695991
/subversion/branches/svn-patch-improvements:918519-934609
/subversion/branches/svn_mutex:1141683-1182099
/subversion/branches/svnpatch-diff:865738-876477
@@ -91,4 +94,4 @@
/subversion/branches/verify-at-commit:1462039-1462408
/subversion/branches/verify-keep-going:1439280-1546110
/subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1692717-1694026
+/subversion/trunk:1692717-1696512
Modified: subversion/branches/patch-exec/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/CHANGES?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/CHANGES (original)
+++ subversion/branches/patch-exec/CHANGES Wed Aug 19 02:35:12 2015
@@ -9,7 +9,6 @@ http://svn.apache.org/repos/asf/subversi
- Major new features:
* fsfs: new format 7 with more efficient on-disk layout (r1547045 et al)
- * resolve: improve interactive conflict resolution menus
* blame: support showing prospective as well as previous changes
* info: support printing of individual values with --show-item (r1662620)
* svn auth: new subcommand to manage cached credentials and certs
@@ -137,7 +136,6 @@ http://svn.apache.org/repos/asf/subversi
* svnfsfs: new expert tool (r1594860)
* mod_dav_svn: allow server admin to GET the FSFS global cache stats
(r1595160)
- * patch: support of svn:mergeinfo (issue #3747)
* diff: support git-like binary file diffs with '--git' (r1599552)
* diff: support arbitrary context size for internal diff tool with
'-U' option (r1603847, 1603871)
@@ -167,6 +165,7 @@ http://svn.apache.org/repos/asf/subversi
* svnadmin setrevprop: add '--transaction' option (r1631435)
* svnadmin delrevprop: new subcommand (1592723)
* svnadmin verify: validate the index data against checksums (r1631598)
+ * svnadmin verify: new option '--metadata-only' (r1593753)
* cp: improve performance of local copies (r1632284, et al)
* fsfs: speed up operations that use revision properties (r1634875,
r1634879)
@@ -175,8 +174,7 @@ http://svn.apache.org/repos/asf/subversi
* patch: improve command to be more capable as compared to GNU patch
(issue #4533)
* limit server caches to avoid running out of memory if server admin
- configured caches largely then they can possibly be on the platform
- (r1645572)
+ configured caches larger than supported by the platform (r1645572)
* mod_authz_svn: log implicit read access failures with INFO log level;
Explicit read access failures are still logged with ERROR log level
(r1653032)
@@ -335,7 +333,6 @@ http://svn.apache.org/repos/asf/subversi
* svnserve: fix potential integer overflow in Cyrus SASL support (r1570434)
* bdb: fix potential integer overflow and underflow (r1570701)
* bdb: prevent silent propogation of some corruption (r1570778)
- * svnadmin verify: new option '--metadata-only' (r1593753)
* svnadmin hotcopy: do not corrupt db/current contents when copying old
FSFS repos (r1603485)
* svnadmin hotcopy: don't produce broken copies when a concurrent pack
@@ -749,6 +746,9 @@ http://svn.apache.org/repos/asf/subversi
of user and revision after 'svn up' (r1680242)
- Server-side bugfixes:
+ * mod_authz_svn: do not leak information in mixed anonymous/authenticated
+ httpd (dav) configurations (CVE-2015-3184)
+ * do not leak paths that were hidden by path-based authz (CVE-2015-3187)
* mod_dav_svn: do not ignore skel parsing errors (r1658168)
* detect invalid svndiff data earlier (r1684077)
* prevent possible repository corruption on power/disk failures (r1680819)
@@ -1599,10 +1599,17 @@ http://svn.apache.org/repos/asf/subversi
* add missing API functions to JavaHL bindings (issue #4326)
* fix some reference counting bugs in swig-py bindings (r1464899, r1466524)
+Version 1.7.22
+(12 Aug 2015, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.22
+
+ Developer-visible changes:
+ - General:
+ * fix the regression test suite which was broken in 1.7.21 (r1694012)
Version 1.7.21
(5 Aug 2015, from /branches/1.7.x)
-http://svn.apache.org/repos/asf/subversion/tags/1.8.21
+http://svn.apache.org/repos/asf/subversion/tags/1.7.21
User-visible changes:
- Client-side bugfixes:
@@ -1611,6 +1618,9 @@ http://svn.apache.org/repos/asf/subversi
non-deltas dumpfile (r1652182 et al.)
- Server-side bugfixes:
+ * mod_authz_svn: do not leak information in mixed anonymous/authenticated
+ httpd (dav) configurations (CVE-2015-3184)
+ * do not leak paths that were hidden by path-based authz (CVE-2015-3187)
* fix 'svnadmin recover' for pre-1.4 FSFS repositories (r1561419)
Developer-visible changes:
Modified: subversion/branches/patch-exec/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/INSTALL?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/INSTALL (original)
+++ subversion/branches/patch-exec/INSTALL Wed Aug 19 02:35:12 2015
@@ -955,6 +955,8 @@ II. INSTALLATION
*Note: Use "call ms\do_nasm" if you have nasm instead of MASM, or
"call ms\do_ms" if you don't have an assembler.
+ Also if you are using OpenSSL >= 1.0.0 masm is no longer
+ supported. You will have to use do_nasm or do_ms in this case.
Apache 2
Modified: subversion/branches/patch-exec/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/build.conf?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/build.conf (original)
+++ subversion/branches/patch-exec/build.conf Wed Aug 19 02:35:12 2015
@@ -1532,6 +1532,7 @@ path = build/win32
libs = __ALL_TESTS__
diff diff3 diff4 fsfs-access-map svnauth
svn-populate-node-origins-index x509-parser svn-wc-db-tester
+ svn-mergeinfo-normalizer
[__LIBS__]
type = project
@@ -1646,6 +1647,13 @@ path = tools/dev/svnraisetreeconflict
libs = libsvn_wc libsvn_subr apriconv apr
install = tools
+[svn-mergeinfo-normalizer]
+type = exe
+path = tools/client-side/svn-mergeinfo-normalizer
+install = tools
+libs = libsvn_client libsvn_wc libsvn_ra libsvn_delta libsvn_diff libsvn_subr
+ apriconv apr
+
[x509-parser]
description = Tool to verify x509 certificates
type = exe
Modified: subversion/branches/patch-exec/build/ac-macros/apache.m4
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/build/ac-macros/apache.m4?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/build/ac-macros/apache.m4 (original)
+++ subversion/branches/patch-exec/build/ac-macros/apache.m4 Wed Aug 19 02:35:12 2015
@@ -164,19 +164,42 @@ if test -n "$APXS" && test "$APXS" != "n
AC_CHECK_HEADERS(unistd.h, [AC_CHECK_FUNCS(getpid)], [])
+ MMN_MAJOR=`$SED -ne '/^#define MODULE_MAGIC_NUMBER_MAJOR/p' "$APXS_INCLUDE/ap_mmn.h" | $SED -e 's/^.*MAJOR *//'`
+ MMN_MINOR=`$SED -ne '/^#define MODULE_MAGIC_NUMBER_MINOR/p' "$APXS_INCLUDE/ap_mmn.h" | $SED -e 's/^.*MINOR *//' | $SED -e 's/ .*//'`
+ if test "$MMN_MAJOR" = "20120211" && test "$MMN_MINOR" -lt "47" ; then
+ # This is httpd 2.4 and it doesn't appear to have the required
+ # API but the installation may have been patched.
+ AC_ARG_ENABLE(broken-httpd-auth,
+ AS_HELP_STRING([--enable-broken-httpd-auth],
+ [Force build against httpd 2.4 with broken auth]),
+ [broken_httpd_auth=$enableval],[broken_httpd_auth=no])
+ AC_MSG_CHECKING([for ap_some_authn_required])
+ old_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $APACHE_INCLUDES $SVN_APR_INCLUDES"
+ AC_EGREP_CPP([int.*\sap_some_authn_required\s*\(],
+ [#include "http_request.h"],
+ [AC_MSG_RESULT([yes])
+ working_auth=yes],
+ [AC_MSG_RESULT([no])])
+ CPPFLAGS="$old_CPPFLAGS"
+ if test "$working_auth" = "yes" ; then
+ AC_DEFINE(SVN_USE_FORCE_AUTHN, 1,
+ [Defined to build with patched httpd 2.4 and working auth])
+ elif test "$enable_broken_httpd_auth" = "yes"; then
+ AC_MSG_WARN([==============================================])
+ AC_MSG_WARN([Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR])
+ AC_MSG_WARN([Subversion will be vulnerable to CVE-2015-3184])
+ AC_MSG_WARN([==============================================])
+ AC_DEFINE(SVN_ALLOW_BROKEN_HTTPD_AUTH, 1,
+ [Defined to build against httpd 2.4 with broken auth])
+ else
+ AC_MSG_ERROR([Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR has broken auth (CVE-2015-3184)])
+ fi
+ fi
+
BUILD_APACHE_RULE=apache-mod
INSTALL_APACHE_RULE=install-mods-shared
INSTALL_APACHE_MODS=true
- AC_ARG_ENABLE(broken-httpd-auth,
- AS_HELP_STRING([--enable-broken-httpd-auth],
- [Allow building against httpd 2.4 with broken auth]),
- [broken_httpd_auth=$enableval],[broken_httpd_auth=no])
- if test "$enable_broken_httpd_auth" = "yes"; then
- AC_MSG_NOTICE([Building with broken httpd auth])
- AC_DEFINE(SVN_ALLOW_BROKEN_HTTPD_AUTH, 1,
- [Defined to allow building against httpd 2.4 with broken auth])
- fi
-
case $host in
*-*-cygwin*)
APACHE_LDFLAGS="-shrext .so"
Propchange: subversion/branches/patch-exec/notes/
('svn:mergeinfo' removed)
Modified: subversion/branches/patch-exec/subversion/bindings/javahl/native/SVNRepos.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/bindings/javahl/native/SVNRepos.cpp?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/bindings/javahl/native/SVNRepos.cpp (original)
+++ subversion/branches/patch-exec/subversion/bindings/javahl/native/SVNRepos.cpp Wed Aug 19 02:35:12 2015
@@ -240,8 +240,9 @@ void SVNRepos::dump(File &path, OutputSt
" (%ld)"), youngest), );
}
- SVN_JNI_ERR(svn_repos_dump_fs3(repos, dataOut.getStream(requestPool),
+ SVN_JNI_ERR(svn_repos_dump_fs4(repos, dataOut.getStream(requestPool),
lower, upper, incremental, useDeltas,
+ true, true,
notifyCallback != NULL
? ReposNotifyCallback::notify
: NULL,
Modified: subversion/branches/patch-exec/subversion/bindings/swig/svn_client.i
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/bindings/swig/svn_client.i?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/bindings/swig/svn_client.i (original)
+++ subversion/branches/patch-exec/subversion/bindings/swig/svn_client.i Wed Aug 19 02:35:12 2015
@@ -442,13 +442,13 @@ Callback: svn_client_diff_summarize_func
self = apr_palloc(pool, sizeof(*self));
self->path = path ? apr_pstrdup(pool, path) : NULL;
- revision = apr_palloc(pool, sizeof(revision));
+ revision = apr_palloc(pool, sizeof(*revision));
revision->kind = rev->kind;
revision->value.number = rev->value.number;
revision->value.date = rev->value.date;
self->revision = revision;
- peg_revision = apr_palloc(pool, sizeof(peg_revision));
+ peg_revision = apr_palloc(pool, sizeof(*peg_revision));
peg_revision->kind = peg_rev->kind;
peg_revision->value.number = peg_rev->value.number;
peg_revision->value.date = peg_rev->value.date;
Modified: subversion/branches/patch-exec/subversion/include/private/svn_cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/private/svn_cache.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/private/svn_cache.h (original)
+++ subversion/branches/patch-exec/subversion/include/private/svn_cache.h Wed Aug 19 02:35:12 2015
@@ -356,7 +356,12 @@ svn_cache__membuffer_cache_create(svn_me
*
* If @a thread_safe is true, and APR is compiled with threads, all
* accesses to the cache will be protected with a mutex, if the shared
- * @a memcache has also been created with thread_safe flag set.
+ * @a membuffer has also been created with thread_safe flag set.
+ *
+ * If @a short_lived is set, assume that the data stored through this
+ * cache will probably only be needed for a short period of time.
+ * Typically, some UUID is used as part of the prefix in that scenario.
+ * This flag is a mere hint and does not affect functionality.
*
* These caches do not support svn_cache__iter.
*/
@@ -369,10 +374,24 @@ svn_cache__create_membuffer_cache(svn_ca
const char *prefix,
apr_uint32_t priority,
svn_boolean_t thread_safe,
+ svn_boolean_t short_lived,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
/**
+ * Creates a null-cache instance in @a *cache_p, allocated from
+ * @a result_pool. The given @c id is the only data stored in it and can
+ * be retrieved through svn_cache__get_info().
+ *
+ * The cache object will immediately evict (reject) any data being added
+ * to it and will always report as empty.
+ */
+svn_error_t *
+svn_cache__create_null(svn_cache__t **cache_p,
+ const char *id,
+ apr_pool_t *result_pool);
+
+/**
* Sets @a handler to be @a cache's error handling routine. If any
* error is returned from a call to svn_cache__get or svn_cache__set, @a
* handler will be called with @a baton and the error, and the
Modified: subversion/branches/patch-exec/subversion/include/private/svn_dep_compat.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/private/svn_dep_compat.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/private/svn_dep_compat.h (original)
+++ subversion/branches/patch-exec/subversion/include/private/svn_dep_compat.h Wed Aug 19 02:35:12 2015
@@ -90,12 +90,8 @@ extern "C" {
|| (defined(__APPLE__) && defined(__MACH__))) /* UNIX-style OS? */
# include <unistd.h>
# if defined(_POSIX_VERSION)
-# define SVN_ON_POSIX 1
-# else
-# define SVN_ON_POSIX 0
+# define SVN_ON_POSIX
# endif
-#else
-# define SVN_ON_POSIX 0
#endif
#endif
Modified: subversion/branches/patch-exec/subversion/include/private/svn_mutex.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/private/svn_mutex.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/private/svn_mutex.h (original)
+++ subversion/branches/patch-exec/subversion/include/private/svn_mutex.h Wed Aug 19 02:35:12 2015
@@ -104,6 +104,17 @@ do {
SVN_ERR(svn_mutex__unlock(svn_mutex__m, (expr))); \
} while (0)
+#if APR_HAS_THREADS
+
+/** Return the APR mutex encapsulated in @a mutex.
+ *
+ * @note This function should only be called by APR wrapper code.
+ */
+apr_thread_mutex_t *
+svn_mutex__get(svn_mutex__t *mutex);
+
+#endif
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/patch-exec/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/private/svn_ra_svn_private.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/patch-exec/subversion/include/private/svn_ra_svn_private.h Wed Aug 19 02:35:12 2015
@@ -347,7 +347,7 @@ svn_error_t *
svn_ra_svn__write_cmd_open_root(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
svn_revnum_t rev,
- const char *token);
+ const svn_string_t *token);
/** Send a "delete-entry" command over connection @a conn. Delete the
* @a path at optional revision @a rev below @a parent_token.
@@ -358,7 +358,7 @@ svn_ra_svn__write_cmd_delete_entry(svn_r
apr_pool_t *pool,
const char *path,
svn_revnum_t rev,
- const char *parent_token);
+ const svn_string_t *parent_token);
/** Send a "add-dir" command over connection @a conn. Add a new directory
* node named @a path under the directory identified by @a parent_token.
@@ -370,8 +370,8 @@ svn_error_t *
svn_ra_svn__write_cmd_add_dir(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *parent_token,
- const char *token,
+ const svn_string_t *parent_token,
+ const svn_string_t *token,
const char *copy_path,
svn_revnum_t copy_rev);
@@ -384,8 +384,8 @@ svn_error_t *
svn_ra_svn__write_cmd_open_dir(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *parent_token,
- const char *token,
+ const svn_string_t *parent_token,
+ const svn_string_t *token,
svn_revnum_t rev);
/** Send a "change-dir-prop" command over connection @a conn. Set the
@@ -395,7 +395,7 @@ svn_ra_svn__write_cmd_open_dir(svn_ra_sv
svn_error_t *
svn_ra_svn__write_cmd_change_dir_prop(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token,
+ const svn_string_t *token,
const char *name,
const svn_string_t *value);
@@ -406,7 +406,7 @@ svn_ra_svn__write_cmd_change_dir_prop(sv
svn_error_t *
svn_ra_svn__write_cmd_close_dir(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token);
+ const svn_string_t *token);
/** Send a "absent-dir" command over connection @a conn. Directory node
* named @a path under the directory identified by @a parent_token is
@@ -416,7 +416,7 @@ svn_error_t *
svn_ra_svn__write_cmd_absent_dir(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *parent_token);
+ const svn_string_t *parent_token);
/** Send a "add-file" command over connection @a conn. Add a new file
* node named @a path under the directory identified by @a parent_token.
@@ -428,8 +428,8 @@ svn_error_t *
svn_ra_svn__write_cmd_add_file(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *parent_token,
- const char *token,
+ const svn_string_t *parent_token,
+ const svn_string_t *token,
const char *copy_path,
svn_revnum_t copy_rev);
@@ -442,8 +442,8 @@ svn_error_t *
svn_ra_svn__write_cmd_open_file(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *parent_token,
- const char *token,
+ const svn_string_t *parent_token,
+ const svn_string_t *token,
svn_revnum_t rev);
/** Send a "change-file-prop" command over connection @a conn. Set the
@@ -453,7 +453,7 @@ svn_ra_svn__write_cmd_open_file(svn_ra_s
svn_error_t *
svn_ra_svn__write_cmd_change_file_prop(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token,
+ const svn_string_t *token,
const char *name,
const svn_string_t *value);
@@ -465,7 +465,7 @@ svn_ra_svn__write_cmd_change_file_prop(s
svn_error_t *
svn_ra_svn__write_cmd_close_file(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token,
+ const svn_string_t *token,
const char *text_checksum);
/** Send a "absent-file" command over connection @a conn. File node
@@ -476,7 +476,7 @@ svn_error_t *
svn_ra_svn__write_cmd_absent_file(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *parent_token);
+ const svn_string_t *parent_token);
/** Send a "apply-textdelta" command over connection @a conn. Starts a
* series of text deltas to be applied to the file identified by @a token.
@@ -486,7 +486,7 @@ svn_ra_svn__write_cmd_absent_file(svn_ra
svn_error_t *
svn_ra_svn__write_cmd_apply_textdelta(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token,
+ const svn_string_t *token,
const char *base_checksum);
/** Send a "textdelta-chunk" command over connection @a conn. Apply
@@ -496,7 +496,7 @@ svn_ra_svn__write_cmd_apply_textdelta(sv
svn_error_t *
svn_ra_svn__write_cmd_textdelta_chunk(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token,
+ const svn_string_t *token,
const svn_string_t *chunk);
/** Send a "textdelta-end" command over connection @a conn. Ends the
@@ -506,7 +506,7 @@ svn_ra_svn__write_cmd_textdelta_chunk(sv
svn_error_t *
svn_ra_svn__write_cmd_textdelta_end(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
- const char *token);
+ const svn_string_t *token);
/** Send a "close-edit" command over connection @a conn. Ends the editor
* drive (successfully). Use @a pool for allocations.
@@ -790,7 +790,7 @@ svn_error_t *
svn_ra_svn__write_cmd_unlock(svn_ra_svn_conn_t *conn,
apr_pool_t *pool,
const char *path,
- const char *token,
+ const svn_string_t *token,
svn_boolean_t break_lock);
/** Send a "get-lock" command over connection @a conn.
Modified: subversion/branches/patch-exec/subversion/include/private/svn_subr_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/private/svn_subr_private.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/private/svn_subr_private.h (original)
+++ subversion/branches/patch-exec/subversion/include/private/svn_subr_private.h Wed Aug 19 02:35:12 2015
@@ -689,6 +689,19 @@ svn_dso__pool(void);
/** @} */
+
+/* Return the xml (expat) version we compiled against. */
+const char *svn_xml__compiled_version(void);
+
+/* Return the xml (expat) version we run against. */
+const char *svn_xml__runtime_version(void);
+
+/* Return the zlib version we compiled against. */
+const char *svn_zlib__compiled_version(void);
+
+/* Return the zlib version we run against. */
+const char *svn_zlib__runtime_version(void);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/patch-exec/subversion/include/private/svn_temp_serializer.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/private/svn_temp_serializer.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/private/svn_temp_serializer.h (original)
+++ subversion/branches/patch-exec/subversion/include/private/svn_temp_serializer.h Wed Aug 19 02:35:12 2015
@@ -206,7 +206,7 @@ svn_temp_serializer__get(svn_temp_serial
* the pointer to resolve in @a ptr.
*/
void
-svn_temp_deserializer__resolve(void *buffer, void **ptr);
+svn_temp_deserializer__resolve(const void *buffer, void **ptr);
/**
* Similar to svn_temp_deserializer__resolve() but instead of modifying
Modified: subversion/branches/patch-exec/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/include/svn_repos.h?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/include/svn_repos.h (original)
+++ subversion/branches/patch-exec/subversion/include/svn_repos.h Wed Aug 19 02:35:12 2015
@@ -247,7 +247,10 @@ typedef enum svn_repos_notify_action_t
svn_repos_notify_hotcopy_rev_range,
/** The repository pack did not do anything. @since New in 1.10. */
- svn_repos_notify_pack_noop
+ svn_repos_notify_pack_noop,
+
+ /** The revision properties got set. @since New in 1.10. */
+ svn_repos_notify_load_revprop_set
} svn_repos_notify_action_t;
/** The type of warning occurring.
@@ -2986,6 +2989,12 @@ svn_repos_verify_fs(svn_repos_t *repos,
* be done with full plain text. A dump with @a use_deltas set cannot
* be loaded by Subversion 1.0.x.
*
+ * If @a include_revprops is @c TRUE, output the revision properties as
+ * well, otherwise omit them.
+ *
+ * If @a include_changes is @c TRUE, output the revision contents, i.e.
+ * tree and node changes.
+ *
* If @a notify_func is not null, then call it with @a notify_baton and
* with a notification structure in which the fields are set as follows.
* (For a warning or error notification that does not apply to a specific
@@ -3017,8 +3026,31 @@ svn_repos_verify_fs(svn_repos_t *repos,
*
* Use @a scratch_pool for temporary allocation.
*
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_repos_dump_fs4(svn_repos_t *repos,
+ svn_stream_t *stream,
+ svn_revnum_t start_rev,
+ svn_revnum_t end_rev,
+ svn_boolean_t incremental,
+ svn_boolean_t use_deltas,
+ svn_boolean_t include_revprops,
+ svn_boolean_t include_changes,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_dump_fs4(), but with @a include_revprops and
+ * @a include_changes both set to @c TRUE.
+ *
* @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.9 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_repos_dump_fs3(svn_repos_t *repos,
svn_stream_t *dumpstream,
@@ -3222,6 +3254,52 @@ svn_repos_load_fs(svn_repos_t *repos,
void *cancel_baton,
apr_pool_t *pool);
+/**
+ * Read and parse dumpfile-formatted @a dumpstream, extracting the
+ * revision properties from it and apply them to the already-open
+ * @a repos. Use @a scratch_pool for temporary allocations.
+ *
+ * If, after filtering by the @a start_rev and @a end_rev, the dumpstream
+ * contains revisions missing in @a repos, an error will be thrown.
+ *
+ * @a start_rev and @a end_rev act as filters, the lower and upper
+ * (inclusive) range values of revisions in @a dumpstream which will
+ * be loaded. Either both of these values are #SVN_INVALID_REVNUM (in
+ * which case no revision-based filtering occurs at all), or both are
+ * valid revisions (where @a start_rev is older than or equivalent to
+ * @a end_rev).
+ *
+ * If @a validate_props is set, then validate Subversion revision
+ * properties (those in the svn: namespace) against established
+ * rules for those things.
+ *
+ * If @a ignore_dates is set, ignore any revision datestamps found in
+ * @a dumpstream, keeping whatever timestamps the revisions currently
+ * have.
+ *
+ * If non-NULL, use @a notify_func and @a notify_baton to send notification
+ * of events to the caller.
+ *
+ * If @a cancel_func is not @c NULL, it is called periodically with
+ * @a cancel_baton as argument to see if the client wishes to cancel
+ * the load.
+ *
+ * @remark No repository hooks will be triggered.
+ *
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_repos_load_fs_revprops(svn_repos_t *repos,
+ svn_stream_t *dumpstream,
+ svn_revnum_t start_rev,
+ svn_revnum_t end_rev,
+ svn_boolean_t validate_props,
+ svn_boolean_t ignore_dates,
+ svn_repos_notify_func_t notify_func,
+ void *notify_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *scratch_pool);
/**
* A vtable that is driven by svn_repos_parse_dumpstream3().
@@ -3424,7 +3502,7 @@ svn_repos_parse_dumpstream3(svn_stream_t
* @since New in 1.9.
*/
svn_error_t *
-svn_repos_get_fs_build_parser5(const svn_repos_parse_fns3_t **callbacks,
+svn_repos_get_fs_build_parser5(const svn_repos_parse_fns3_t **parser,
void **parse_baton,
svn_repos_t *repos,
svn_revnum_t start_rev,
Modified: subversion/branches/patch-exec/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/libsvn_client/diff.c?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/patch-exec/subversion/libsvn_client/diff.c Wed Aug 19 02:35:12 2015
@@ -259,7 +259,7 @@ print_git_diff_header_added(svn_stream_t
"diff --git a/%s b/%s%s",
path1, path2, APR_EOL_STR));
SVN_ERR(svn_stream_printf_from_utf8(os, header_encoding, result_pool,
- "new file mode 10644" APR_EOL_STR));
+ "new file mode 100644" APR_EOL_STR));
return SVN_NO_ERROR;
}
@@ -275,7 +275,7 @@ print_git_diff_header_deleted(svn_stream
"diff --git a/%s b/%s%s",
path1, path2, APR_EOL_STR));
SVN_ERR(svn_stream_printf_from_utf8(os, header_encoding, result_pool,
- "deleted file mode 10644"
+ "deleted file mode 100644"
APR_EOL_STR));
return SVN_NO_ERROR;
}
Modified: subversion/branches/patch-exec/subversion/libsvn_client/ra.c
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/libsvn_client/ra.c?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/libsvn_client/ra.c (original)
+++ subversion/branches/patch-exec/subversion/libsvn_client/ra.c Wed Aug 19 02:35:12 2015
@@ -727,7 +727,7 @@ repos_locations(const char **start_url,
/* We'd better have all the paths we were looking for! */
if (start_url)
{
- start_path = apr_hash_get(rev_locs, &start_revnum, sizeof(svn_revnum_t));
+ start_path = apr_hash_get(rev_locs, &start_revnum, sizeof(start_revnum));
if (! start_path)
return svn_error_createf
(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL,
@@ -739,7 +739,7 @@ repos_locations(const char **start_url,
if (end_url)
{
- end_path = apr_hash_get(rev_locs, &end_revnum, sizeof(svn_revnum_t));
+ end_path = apr_hash_get(rev_locs, &end_revnum, sizeof(end_revnum));
if (! end_path)
return svn_error_createf
(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL,
Modified: subversion/branches/patch-exec/subversion/libsvn_fs_fs/caching.c
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/libsvn_fs_fs/caching.c?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/libsvn_fs_fs/caching.c (original)
+++ subversion/branches/patch-exec/subversion/libsvn_fs_fs/caching.c Wed Aug 19 02:35:12 2015
@@ -274,7 +274,8 @@ init_callbacks(svn_cache__t *cache,
* MEMBUFFER is not NULL. Fallbacks to inprocess cache if MEMCACHE and
* MEMBUFFER are NULL and pages is non-zero. Sets *CACHE_P to NULL
* otherwise. Use the given PRIORITY class for the new cache. If it
- * is 0, then use the default priority class.
+ * is 0, then use the default priority class. HAS_NAMESPACE indicates
+ * whether we prefixed this cache instance with a namespace.
*
* Unless NO_HANDLER is true, register an error handler that reports errors
* as warnings to the FS warning callback.
@@ -292,6 +293,7 @@ create_cache(svn_cache__t **cache_p,
apr_ssize_t klen,
const char *prefix,
apr_uint32_t priority,
+ svn_boolean_t has_namespace,
svn_fs_t *fs,
svn_boolean_t no_handler,
apr_pool_t *result_pool,
@@ -314,9 +316,12 @@ create_cache(svn_cache__t **cache_p,
}
else if (membuffer)
{
+ /* We assume caches with namespaces to be relatively short-lived,
+ * i.e. their data will not be needed after a while. */
SVN_ERR(svn_cache__create_membuffer_cache(
cache_p, membuffer, serializer, deserializer,
- klen, prefix, priority, FALSE, result_pool, scratch_pool));
+ klen, prefix, priority, FALSE, has_namespace,
+ result_pool, scratch_pool));
}
else if (pages)
{
@@ -349,6 +354,7 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
svn_boolean_t cache_txdeltas;
svn_boolean_t cache_fulltexts;
const char *cache_namespace;
+ svn_boolean_t has_namespace;
/* Evaluating the cache configuration. */
SVN_ERR(read_config(&cache_namespace,
@@ -358,6 +364,7 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
pool));
prefix = apr_pstrcat(pool, "ns:", cache_namespace, ":", prefix, SVN_VA_NULL);
+ has_namespace = strlen(cache_namespace) > 0;
membuffer = svn_cache__get_global_membuffer_cache();
@@ -386,34 +393,35 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
* commands, this is only going to contain a few entries (svnadmin
* dump/verify is an exception here), so to reduce overhead let's
* try to keep it to just one page. I estimate each entry has about
- * 72 bytes of overhead (svn_revnum_t key, svn_fs_id_t +
- * id_private_t + 3 strings for value, and the cache_entry); the
- * default pool size is 8192, so about a hundred should fit
- * comfortably. */
+ * 130 bytes of overhead (svn_revnum_t key, ID struct, and the cache_entry);
+ * the default pool size is 8192, so about a fifty should fit comfortably.
+ */
SVN_ERR(create_cache(&(ffd->rev_root_id_cache),
NULL,
membuffer,
- 1, 100,
+ 1, 50,
svn_fs_fs__serialize_id,
svn_fs_fs__deserialize_id,
sizeof(svn_revnum_t),
apr_pstrcat(pool, prefix, "RRI", SVN_VA_NULL),
0,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
- /* Rough estimate: revision DAG nodes have size around 320 bytes, so
- * let's put 16 on a page. */
+ /* Rough estimate: revision DAG nodes have size around 1kBytes, so
+ * let's put 8 on a page. */
SVN_ERR(create_cache(&(ffd->rev_node_cache),
NULL,
membuffer,
- 1024, 16,
+ 1, 8,
svn_fs_fs__dag_serialize,
svn_fs_fs__dag_deserialize,
APR_HASH_KEY_STRING,
apr_pstrcat(pool, prefix, "DAG", SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_LOW_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -425,28 +433,30 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->dir_cache),
NULL,
membuffer,
- 1024, 8,
+ 1, 8,
svn_fs_fs__serialize_dir_entries,
svn_fs_fs__deserialize_dir_entries,
sizeof(pair_cache_key_t),
apr_pstrcat(pool, prefix, "DIR", SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
- /* Only 16 bytes per entry (a revision number + the corresponding offset).
- Since we want ~8k pages, that means 512 entries per page. */
+ /* 8 kBytes per entry (1000 revs / shared, one file offset per rev).
+ Covering about 8 pack files gives us an "o.k." hit rate. */
SVN_ERR(create_cache(&(ffd->packed_offset_cache),
NULL,
membuffer,
- 32, 1,
+ 8, 1,
svn_fs_fs__serialize_manifest,
svn_fs_fs__deserialize_manifest,
sizeof(svn_revnum_t),
apr_pstrcat(pool, prefix, "PACK-MANIFEST",
SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_HIGH_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -455,12 +465,13 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->node_revision_cache),
NULL,
membuffer,
- 32, 32, /* ~200 byte / entry; 1k entries total */
+ 2, 16, /* ~500 byte / entry; 32 entries total */
svn_fs_fs__serialize_node_revision,
svn_fs_fs__deserialize_node_revision,
sizeof(pair_cache_key_t),
apr_pstrcat(pool, prefix, "NODEREVS", SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_HIGH_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -469,12 +480,13 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->rep_header_cache),
NULL,
membuffer,
- 1, 1000, /* ~8 bytes / entry; 1k entries total */
+ 1, 200, /* ~40 bytes / entry; 200 entries total */
svn_fs_fs__serialize_rep_header,
svn_fs_fs__deserialize_rep_header,
sizeof(pair_cache_key_t),
apr_pstrcat(pool, prefix, "REPHEADER", SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -489,6 +501,7 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
sizeof(svn_revnum_t),
apr_pstrcat(pool, prefix, "CHANGES", SVN_VA_NULL),
0,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -499,12 +512,13 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->fulltext_cache),
ffd->memcache,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
/* Values are svn_stringbuf_t */
NULL, NULL,
sizeof(pair_cache_key_t),
apr_pstrcat(pool, prefix, "TEXT", SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -512,13 +526,14 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->properties_cache),
NULL,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
svn_fs_fs__serialize_properties,
svn_fs_fs__deserialize_properties,
sizeof(pair_cache_key_t),
apr_pstrcat(pool, prefix, "PROP",
SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -526,13 +541,14 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->mergeinfo_cache),
NULL,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
svn_fs_fs__serialize_mergeinfo,
svn_fs_fs__deserialize_mergeinfo,
APR_HASH_KEY_STRING,
apr_pstrcat(pool, prefix, "MERGEINFO",
SVN_VA_NULL),
0,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -540,13 +556,14 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->mergeinfo_existence_cache),
NULL,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
/* Values are svn_stringbuf_t */
NULL, NULL,
APR_HASH_KEY_STRING,
apr_pstrcat(pool, prefix, "HAS_MERGEINFO",
SVN_VA_NULL),
0,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -565,13 +582,14 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->raw_window_cache),
NULL,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
svn_fs_fs__serialize_raw_window,
svn_fs_fs__deserialize_raw_window,
sizeof(window_cache_key_t),
apr_pstrcat(pool, prefix, "RAW_WINDOW",
SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_LOW_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -579,13 +597,14 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->txdelta_window_cache),
NULL,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
svn_fs_fs__serialize_txdelta_window,
svn_fs_fs__deserialize_txdelta_window,
sizeof(window_cache_key_t),
apr_pstrcat(pool, prefix, "TXDELTA_WINDOW",
SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_LOW_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -593,13 +612,14 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->combined_window_cache),
NULL,
membuffer,
- 0, 0, /* Do not use inprocess cache */
+ 0, 0, /* Do not use the inprocess cache */
/* Values are svn_stringbuf_t */
NULL, NULL,
sizeof(window_cache_key_t),
apr_pstrcat(pool, prefix, "COMBINED_WINDOW",
SVN_VA_NULL),
SVN_CACHE__MEMBUFFER_LOW_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -613,28 +633,34 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
SVN_ERR(create_cache(&(ffd->l2p_header_cache),
NULL,
membuffer,
- 64, 16, /* entry size varies but we must cover
- a reasonable number of revisions (1k) */
+ 8, 16, /* entry size varies but we must cover a
+ reasonable number of rev / pack files
+ to allow for delta chains to be walked
+ efficiently etc. */
svn_fs_fs__serialize_l2p_header,
svn_fs_fs__deserialize_l2p_header,
sizeof(pair_cache_key_t),
apr_pstrcat(pool, prefix, "L2P_HEADER",
(char *)NULL),
SVN_CACHE__MEMBUFFER_HIGH_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
SVN_ERR(create_cache(&(ffd->l2p_page_cache),
NULL,
membuffer,
- 64, 16, /* entry size varies but we must cover
- a reasonable number of revisions (1k) */
+ 8, 16, /* entry size varies but we must cover a
+ reasonable number of rev / pack files
+ to allow for delta chains to be walked
+ efficiently etc. */
svn_fs_fs__serialize_l2p_page,
svn_fs_fs__deserialize_l2p_page,
sizeof(svn_fs_fs__page_cache_key_t),
apr_pstrcat(pool, prefix, "L2P_PAGE",
(char *)NULL),
SVN_CACHE__MEMBUFFER_HIGH_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -648,19 +674,21 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
apr_pstrcat(pool, prefix, "P2L_HEADER",
(char *)NULL),
SVN_CACHE__MEMBUFFER_HIGH_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
SVN_ERR(create_cache(&(ffd->p2l_page_cache),
NULL,
membuffer,
- 4, 16, /* Variably sized entries. Rarely used. */
+ 4, 1, /* Variably sized entries. Rarely used. */
svn_fs_fs__serialize_p2l_page,
svn_fs_fs__deserialize_p2l_page,
sizeof(svn_fs_fs__page_cache_key_t),
apr_pstrcat(pool, prefix, "P2L_PAGE",
(char *)NULL),
SVN_CACHE__MEMBUFFER_HIGH_PRIORITY,
+ has_namespace,
fs,
no_handler,
fs->pool, pool));
@@ -807,6 +835,7 @@ svn_fs_fs__initialize_txn_caches(svn_fs_
apr_pstrcat(pool, prefix, "TXNDIR",
SVN_VA_NULL),
0,
+ TRUE, /* The TXN-ID is our namespace. */
fs,
TRUE,
pool, pool));
Modified: subversion/branches/patch-exec/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/libsvn_fs_fs/id.c?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/branches/patch-exec/subversion/libsvn_fs_fs/id.c Wed Aug 19 02:35:12 2015
@@ -610,7 +610,9 @@ svn_fs_fs__id_serialize(svn_temp_seriali
if (id == NULL)
return;
- /* serialize the id data struct itself */
+ /* Serialize the id data struct itself.
+ * Note that the structure behind IN is actually larger than a mere
+ * svn_fs_id_t . */
svn_temp_serializer__add_leaf(context,
(const void * const *)in,
sizeof(fs_fs__id_t));
Modified: subversion/branches/patch-exec/subversion/libsvn_fs_fs/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/libsvn_fs_fs/temp_serializer.c?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/libsvn_fs_fs/temp_serializer.c (original)
+++ subversion/branches/patch-exec/subversion/libsvn_fs_fs/temp_serializer.c Wed Aug 19 02:35:12 2015
@@ -103,9 +103,7 @@ serialize_svn_string(svn_temp_serializer
if (string == NULL)
return;
- svn_temp_serializer__push(context,
- (const void * const *)s,
- sizeof(*string));
+ svn_temp_serializer__push(context, (const void * const *)s, sizeof(**s));
/* the "string" content may actually be arbitrary binary data.
* Thus, we cannot use svn_temp_serializer__add_string. */
@@ -143,7 +141,7 @@ serialize_representation(svn_temp_serial
/* serialize the representation struct itself */
svn_temp_serializer__add_leaf(context,
(const void * const *)representation,
- sizeof(*rep));
+ sizeof(**representation));
}
/* auxiliary structure representing the content of a directory array */
@@ -191,7 +189,7 @@ serialize_dir_entry(svn_temp_serializer_
svn_temp_serializer__push(context,
(const void * const *)entry_p,
- sizeof(svn_fs_dirent_t));
+ sizeof(**entry_p));
svn_fs_fs__id_serialize(context, &entry->id);
svn_temp_serializer__add_string(context, &entry->name);
@@ -216,8 +214,9 @@ serialize_dir(svn_fs_fs__dir_data_t *dir
/* calculate sizes */
int count = entries->nelts;
apr_size_t over_provision = 2 + count / 4;
- apr_size_t entries_len = (count + over_provision) * sizeof(svn_fs_dirent_t*);
- apr_size_t lengths_len = (count + over_provision) * sizeof(apr_uint32_t);
+ apr_size_t total_count = count + over_provision;
+ apr_size_t entries_len = total_count * sizeof(*dir_data.entries);
+ apr_size_t lengths_len = total_count * sizeof(*dir_data.lengths);
/* copy the hash entries to an auxiliary struct of known layout */
dir_data.count = count;
@@ -416,7 +415,7 @@ serialize_txdelta_ops(svn_temp_serialize
/* the ops form a contiguous chunk of memory with no further references */
svn_temp_serializer__add_leaf(context,
(const void * const *)ops,
- count * sizeof(svn_txdelta_op_t));
+ count * sizeof(**ops));
}
/* Utility function to serialize W in the given serialization CONTEXT.
@@ -428,9 +427,7 @@ serialize_txdeltawindow(svn_temp_seriali
svn_txdelta_window_t *window = *w;
/* serialize the window struct itself */
- svn_temp_serializer__push(context,
- (const void * const *)w,
- sizeof(svn_txdelta_window_t));
+ svn_temp_serializer__push(context, (const void * const *)w, sizeof(**w));
/* serialize its sub-structures */
serialize_txdelta_ops(context, &window->ops, window->num_ops);
@@ -1088,7 +1085,7 @@ svn_fs_fs__serialize_rep_header(void **d
svn_fs_fs__rep_header_t *copy = apr_palloc(pool, sizeof(*copy));
*copy = *(svn_fs_fs__rep_header_t *)in;
- *data_len = sizeof(svn_fs_fs__rep_header_t);
+ *data_len = sizeof(*copy);
*data = copy;
return SVN_NO_ERROR;
Modified: subversion/branches/patch-exec/subversion/libsvn_fs_fs/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/patch-exec/subversion/libsvn_fs_fs/util.c?rev=1696514&r1=1696513&r2=1696514&view=diff
==============================================================================
--- subversion/branches/patch-exec/subversion/libsvn_fs_fs/util.c (original)
+++ subversion/branches/patch-exec/subversion/libsvn_fs_fs/util.c Wed Aug 19 02:35:12 2015
@@ -674,7 +674,7 @@ svn_fs_fs__move_into_place(const char *o
if (err)
return svn_error_trace(err);
-#if SVN_ON_POSIX
+#ifdef SVN_ON_POSIX
{
/* On POSIX, the file name is stored in the file's directory entry.
Hence, we need to fsync() that directory as well.
Propchange: subversion/branches/patch-exec/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 19 02:35:12 2015
@@ -1,3 +1,4 @@
+/subversion/branches/1.10-cache-improvements/subversion/libsvn_fs_x:1669168-1694487
/subversion/branches/1.5.x-r30215/subversion/libsvn_fs_x:870312
/subversion/branches/1.7.x-fs-verify/subversion/libsvn_fs_x:1146708,1161180
/subversion/branches/10Gb/subversion/libsvn_fs_x:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
@@ -17,10 +18,11 @@
/subversion/branches/fs-rep-sharing/subversion/libsvn_fs_x:869036-873803
/subversion/branches/fsfs-format7/subversion/libsvn_fs_x:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029
/subversion/branches/fsfs-improvements/subversion/libsvn_fs_fs:1499981-1593795
-/subversion/branches/fsfs-improvements/subversion/libsvn_fs_x:1499981-1517476
+/subversion/branches/fsfs-improvements/subversion/libsvn_fs_x:1499981-1517476,1532583,1536949,1545955,1546837
/subversion/branches/fsfs-lock-many/subversion/libsvn_fs_x:1571740-1577217
/subversion/branches/fsfs-pack/subversion/libsvn_fs_x:873717-874575
/subversion/branches/fsx/subversion/libsvn_fs_x:1507845-1508040
+/subversion/branches/fsx-1.10/subversion/libsvn_fs_x:1658219-1694500
/subversion/branches/fsx-id/subversion/libsvn_fs_x:1645603-1649011
/subversion/branches/gnome-keyring/subversion/libsvn_fs_x:870558-871410
/subversion/branches/gpg-agent-password-store/subversion/libsvn_fs_x:1005036-1150766
@@ -72,6 +74,7 @@
/subversion/branches/subtree-mergeinfo/subversion/libsvn_fs_x:876734-878766
/subversion/branches/svn-auth-x509/subversion/libsvn_fs_x:1603509-1655900
/subversion/branches/svn-mergeinfo-enhancements/subversion/libsvn_fs_x:870119-870195,870197-870288
+/subversion/branches/svn-mergeinfo-normalizer/subversion/libsvn_fs_x:1642232-1695991
/subversion/branches/svn-patch-improvements/subversion/libsvn_fs_x:918519-934609
/subversion/branches/svn_mutex/subversion/libsvn_fs_x:1141683-1182099
/subversion/branches/svnpatch-diff/subversion/libsvn_fs_x:865738-876477
@@ -90,4 +93,4 @@
/subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639,1546002-1546110
/subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
/subversion/trunk/subversion/libsvn_fs_fs:1415133-1596500,1596567,1597414,1597989,1598273,1599140,1600872,1601633,1603485-1603487,1603499,1603605,1604128,1604188,1604413-1604414,1604416-1604417,1604421,1604442,1604700,1604717,1604720,1604726,1604755,1604794,1604802,1604824,1604836,1604844,1604902-1604903,1604911,1604925,1604933,1604947,1605059-1605060,1605064-1605065,1605068,1605071-1605073,1605075,1605123,1605188-1605189,1605191,1605197,1605444,1605633,1606132,1606142,1606144,1606514,1606526,1606528,1606551,1606554,1606564,1606598-1606599,1606656,1606658,1606662,1606744,1606840,1607085,1607572,1612407,1612810,1613339,1613872,1614611,1615348,1615351-1615352,1615356,1616338-1616339,1616613,1617586,1617688,1618138,1618151,1618153,1618226,1618641,1618653,1618662,1619068,1619358,1619413,1619769,1619774,1620602,1620909,1620912,1620928,1620930,1621275,1621635,1622931,1622937,1622942,1622946,1622959-1622960,1622963,1622987,1623007,1623368,1623373,1623377,1623379,1623381,1623398,1623402,162
4011,1624265,1624512,1626246,1626871,1626873,1626886,1627497-1627498,1627502,1627947-1627949,1627966,1628083,1628093,1628158-1628159,1628161,1628392-1628393,1628415,1628427,1628676,1628738,1628762,1628764,1629854-1629855,1629857,1629865,1629873,1629875,1629879,1630067,1630070,1631049-1631051,1631075,1631115,1631171,1631180,1631185-1631186,1631196-1631197,1631239-1631240,1631548,1631550,1631563,1631567,1631588,1631598,1632646,1632776,1632849,1632851-1632853,1632856-1632857,1632868,1632908,1632926,1633232,1633617-1633618,1634872,1634875,1634879-1634880,1634920,1636478,1636483,1636629,1636644,1637184,1637186,1637330,1637358,1637363,1637393,1639319,1639322,1639335,1639348,1639352,1639355,1639358,1639414,1639419,1639426,1639430,1639436,1639440,1639549,1640061-1640062,1640197,1640915,1640966,1641013,1643139,1643233,1645567,1646021,1646712,1646716,1647537,1647540-1647541,1647820,1647905,1648230,1648238,1648241-1648243,1648253,1648272,1648532,1648537-1648539,1648542,1648591,1648612,1653608,
1658482
-/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1692717-1696512