Author: ivan
Date: Mon Nov 24 15:09:30 2014
New Revision: 1641404
URL: http://svn.apache.org/r1641404
Log:
On remove-log-addressing branch: Merge changes from trunk.
Added:
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests_data/load_txdelta.dump.gz
- copied unchanged from r1641359,
subversion/trunk/subversion/tests/cmdline/svnadmin_tests_data/load_txdelta.dump.gz
subversion/branches/remove-log-addressing/tools/examples/ExampleAuthn.java
- copied unchanged from r1641359,
subversion/trunk/tools/examples/ExampleAuthn.java
subversion/branches/remove-log-addressing/tools/examples/ExampleAuthnOld.java
- copied unchanged from r1641359,
subversion/trunk/tools/examples/ExampleAuthnOld.java
subversion/branches/remove-log-addressing/tools/examples/ExampleAuthnVeryOld.java
- copied unchanged from r1641359,
subversion/trunk/tools/examples/ExampleAuthnVeryOld.java
Modified:
subversion/branches/remove-log-addressing/ (props changed)
subversion/branches/remove-log-addressing/Makefile.in
subversion/branches/remove-log-addressing/autogen.sh
subversion/branches/remove-log-addressing/build/ac-macros/apache.m4
subversion/branches/remove-log-addressing/build/run_tests.py
subversion/branches/remove-log-addressing/subversion/include/private/svn_wc_private.h
subversion/branches/remove-log-addressing/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/commit_util.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/externals.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/locking_commands.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/merge.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/mergeinfo.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/update.c
subversion/branches/remove-log-addressing/subversion/libsvn_client/util.c
subversion/branches/remove-log-addressing/subversion/libsvn_delta/text_delta.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_base/reps-strings.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.h
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/revprops.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/stats.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/transaction.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/tree.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/verify.c
subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/ (props
changed)
subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/cached_data.c
subversion/branches/remove-log-addressing/subversion/libsvn_subr/stream.c
subversion/branches/remove-log-addressing/subversion/libsvn_wc/node.c
subversion/branches/remove-log-addressing/subversion/svnfsfs/svnfsfs.c
subversion/branches/remove-log-addressing/subversion/tests/cmdline/basic_tests.py
subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/main.py
subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c
subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/stream-test.c
subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/wc-test.c
subversion/branches/remove-log-addressing/subversion/tests/templates/greek-fsfs-v6.zip
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/mkramdisk.sh
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh
subversion/branches/remove-log-addressing/tools/hook-scripts/mailer/tests/mailer-init.sh
Propchange: subversion/branches/remove-log-addressing/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1639366-1641359
Modified: subversion/branches/remove-log-addressing/Makefile.in
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/Makefile.in?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/Makefile.in (original)
+++ subversion/branches/remove-log-addressing/Makefile.in Mon Nov 24 15:09:30
2014
@@ -370,6 +370,7 @@ INSTALL_EXTRA_SWIG_RB=\
done
APXS = @APXS@
+HTTPD_VERSION = @HTTPD_VERSION@
PYTHON = @PYTHON@
PERL = @PERL@
@@ -534,6 +535,9 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $
if test "$(HTTP_LIBRARY)" != ""; then \
flags="--http-library $(HTTP_LIBRARY) $$flags"; \
fi; \
+ if test "$(HTTPD_VERSION)" != ""; then \
+ flags="--httpd-version $(HTTPD_VERSION) $$flags"; \
+ fi; \
if test "$(SERVER_MINOR_VERSION)" != ""; then \
flags="--server-minor-version $(SERVER_MINOR_VERSION) $$flags"; \
fi; \
Modified: subversion/branches/remove-log-addressing/autogen.sh
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/autogen.sh?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/autogen.sh (original)
+++ subversion/branches/remove-log-addressing/autogen.sh Mon Nov 24 15:09:30
2014
@@ -72,48 +72,80 @@ rm -f build/config.guess build/config.su
$libtoolize --copy --automake --force
ltpath="`dirname $libtoolize`"
-ltfile=${LIBTOOL_M4-`cd $ltpath/../share/aclocal ; pwd`}/libtool.m4
-if [ ! -f $ltfile ]; then
- echo "$ltfile not found (try setting the LIBTOOL_M4 environment variable)"
+if [ "x$LIBTOOL_M4" = "x" ]; then
+ ltm4_error='(try setting the LIBTOOL_M4 environment variable)'
+ if [ -d "$ltpath/../share/aclocal/." ]; then
+ ltm4=`cd "$ltpath/../share/aclocal" && pwd`
+ else
+ echo "Libtool helper path not found $ltm4_error"
+ echo " expected at: '$ltpath/../share/aclocal'"
+ exit 1
+ fi
+else
+ ltm4_error="(the LIBTOOL_M4 environment variable is: $LIBTOOL_M4)"
+ ltm4="$LIBTOOL_M4"
+fi
+
+ltfile="$ltm4/libtool.m4"
+if [ ! -f "$ltfile" ]; then
+ echo "$ltfile not found $ltm4_error"
exit 1
fi
-echo "Copying libtool helper: $ltfile"
+echo "Copying libtool helper: $ltfile"
# An ancient helper might already be present from previous builds,
# and it might be write-protected (e.g. mode 444, seen on FreeBSD).
# This would cause cp to fail and print an error message, but leave
# behind a potentially outdated libtool helper. So, remove before
# copying:
rm -f build/libtool.m4
-cp $ltfile build/libtool.m4
+cp "$ltfile" build/libtool.m4
for file in ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4; do
rm -f build/$file
if [ $lt_major_version -ge 2 ]; then
- ltfile=${LIBTOOL_M4-`cd $ltpath/../share/aclocal ; pwd`}/$file
+ ltfile="$ltm4/$file"
- if [ ! -f $ltfile ]; then
- echo "$ltfile not found (try setting the LIBTOOL_M4 environment
variable)"
+ if [ ! -f "$ltfile" ]; then
+ echo "$ltfile not found $ltm4_error"
exit 1
fi
- echo "Copying libtool helper: $ltfile"
- cp $ltfile build/$file
+ echo "Copying libtool helper: $ltfile"
+ cp "$ltfile" "build/$file"
fi
done
if [ $lt_major_version -ge 2 ]; then
+ if [ "x$LIBTOOL_CONFIG" = "x" ]; then
+ ltconfig_error='(try setting the LIBTOOL_CONFIG environment variable)'
+ if [ -d "$ltpath/../share/libtool/config/." ]; then
+ ltconfig=`cd "$ltpath/../share/libtool/config" && pwd`
+ elif [ -d "$ltpath/../share/libtool/build-aux/." ]; then
+ ltconfig=`cd "$ltpath/../share/libtool/build-aux" && pwd`
+ else
+ echo "Autoconf helper path not found $ltconfig_error"
+ echo " expected at: '$ltpath/../share/libtool/config'"
+ echo " or: '$ltpath/../share/libtool/build-aux'"
+ exit 1
+ fi
+ else
+ ltconfig_error="(the LIBTOOL_CONFIG environment variable is:
$LIBTOOL_CONFIG)"
+ ltconfig="$LIBTOOL_CONFIG"
+ fi
+
for file in config.guess config.sub; do
- configfile=${LIBTOOL_CONFIG-`cd $ltpath/../share/libtool/config ;
pwd`}/$file
+ configfile="$ltconfig/$file"
- if [ ! -f $configfile ]; then
- echo "$configfile not found (try setting the LIBTOOL_CONFIG
environment variable)"
+ if [ ! -f "$configfile" ]; then
+ echo "$configfile not found $ltconfig_error"
exit 1
fi
- cp $configfile build/$file
+ echo "Copying autoconf helper: $configfile"
+ cp "$configfile" build/$file
done
fi
Modified: subversion/branches/remove-log-addressing/build/ac-macros/apache.m4
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/build/ac-macros/apache.m4?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/build/ac-macros/apache.m4
(original)
+++ subversion/branches/remove-log-addressing/build/ac-macros/apache.m4 Mon Nov
24 15:09:30 2014
@@ -162,6 +162,11 @@ if test -n "$APXS" && test "$APXS" != "n
BUILD_APACHE_RULE=apache-mod
INSTALL_APACHE_RULE=install-mods-shared
INSTALL_APACHE_MODS=true
+ HTTPD="`$APXS -q sbindir`/`$APXS -q PROGNAME`"
+ if ! test -e $HTTPD ; then
+ HTTPD="`$APXS -q bindir`/`$APXS -q PROGNAME`"
+ fi
+ HTTPD_VERSION=["`$HTTPD -v | $SED -e 's@^.*/\([0-9.]*\)\(.*$\)@\1@ ; 1q'`"]
case $host in
*-*-cygwin*)
@@ -180,6 +185,7 @@ AC_SUBST(APACHE_LDFLAGS)
AC_SUBST(APACHE_INCLUDES)
AC_SUBST(APACHE_LIBEXECDIR)
AC_SUBST(INSTALL_APACHE_MODS)
+AC_SUBST(HTTPD_VERSION)
# there aren't any flags that interest us ...
#if test -n "$APXS" && test "$APXS" != "no"; then
Modified: subversion/branches/remove-log-addressing/build/run_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/build/run_tests.py?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/build/run_tests.py (original)
+++ subversion/branches/remove-log-addressing/build/run_tests.py Mon Nov 24
15:09:30 2014
@@ -29,6 +29,7 @@
[--fs-type=<fs-type>] [--fsfs-packing] [--fsfs-sharding=<n>]
[--list] [--milestone-filter=<regex>] [--mode-filter=<type>]
[--server-minor-version=<version>] [--http-proxy=<host>:<port>]
+ [--httpd-version=<version>]
[--config-file=<file>] [--ssl-cert=<file>]
[--exclusive-wc-locks] [--memcached-server=<url:port>]
<abs_srcdir> <abs_builddir>
@@ -127,7 +128,8 @@ class TestHarness:
list_tests=None, svn_bin=None, mode_filter=None,
milestone_filter=None, set_log_level=None, ssl_cert=None,
http_proxy=None, http_proxy_username=None,
- http_proxy_password=None, exclusive_wc_locks=None,
+ http_proxy_password=None, httpd_version=None,
+ exclusive_wc_locks=None,
memcached_server=None, skip_c_tests=None):
'''Construct a TestHarness instance.
@@ -185,6 +187,7 @@ class TestHarness:
self.http_proxy = http_proxy
self.http_proxy_username = http_proxy_username
self.http_proxy_password = http_proxy_password
+ self.httpd_version = httpd_version
self.exclusive_wc_locks = exclusive_wc_locks
self.memcached_server = memcached_server
if not sys.stdout.isatty() or sys.platform == 'win32':
@@ -527,6 +530,8 @@ class TestHarness:
svntest.main.options.http_proxy_username = self.http_proxy_username
if self.http_proxy_password is not None:
svntest.main.options.http_proxy_password = self.http_proxy_password
+ if self.httpd_version is not None:
+ svntest.main.options.httpd_version = self.httpd_version
if self.exclusive_wc_locks is not None:
svntest.main.options.exclusive_wc_locks = self.exclusive_wc_locks
if self.memcached_server is not None:
@@ -700,7 +705,8 @@ def main():
'log-to-stdout', 'list', 'milestone-filter=',
'mode-filter=', 'set-log-level=', 'ssl-cert=',
'http-proxy=', 'http-proxy-username=',
- 'http-proxy-password=','exclusive-wc-locks',
+ 'http-proxy-password=', 'httpd-version=',
+ 'exclusive-wc-locks',
'memcached-server='])
except getopt.GetoptError:
args = []
@@ -713,11 +719,11 @@ def main():
http_library, server_minor_version, fsfs_sharding, fsfs_packing, \
parallel, config_file, log_to_stdout, list_tests, mode_filter, \
milestone_filter, set_log_level, ssl_cert, http_proxy, \
- http_proxy_username, http_proxy_password, exclusive_wc_locks, \
- memcached_server = \
+ http_proxy_username, http_proxy_password, httpd_version, \
+ exclusive_wc_locks, memcached_server = \
None, None, None, None, None, None, None, None, None, None, \
None, None, None, None, None, None, None, None, None, None, \
- None, None, None
+ None, None, None, None,
for opt, val in opts:
if opt in ['-u', '--url']:
base_url = val
@@ -761,6 +767,8 @@ def main():
http_proxy_username = val
elif opt in ['--http-proxy-password']:
http_proxy_password = val
+ elif opt in ['--httpd-version']:
+ httpd_version = val
elif opt in ['--exclusive-wc-locks']:
exclusive_wc_locks = 1
elif opt in ['--memcached-server']:
@@ -784,6 +792,7 @@ def main():
http_proxy=http_proxy,
http_proxy_username=http_proxy_username,
http_proxy_password=http_proxy_password,
+ httpd_version=httpd_version,
exclusive_wc_locks=exclusive_wc_locks,
memcached_server=memcached_server,
skip_c_tests=skip_c_tests)
Modified:
subversion/branches/remove-log-addressing/subversion/include/private/svn_wc_private.h
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/include/private/svn_wc_private.h?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/include/private/svn_wc_private.h
(original)
+++
subversion/branches/remove-log-addressing/subversion/include/private/svn_wc_private.h
Mon Nov 24 15:09:30 2014
@@ -621,7 +621,6 @@ svn_wc__node_get_base(svn_node_kind_t *k
svn_wc_context_t *wc_ctx,
const char *local_abspath,
svn_boolean_t ignore_enoent,
- svn_boolean_t show_hidden,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
Mon Nov 24 15:09:30 2014
@@ -49,120 +49,19 @@
/*-----------------------------------------------------------------------*/
-struct gnome_keyring_baton
-{
- const char *keyring_name;
- GnomeKeyringInfo *info;
- GMainLoop *loop;
-};
-
-
-/* Callback function to destroy gnome_keyring_baton. */
-static void
-callback_destroy_data_keyring(void *data)
-{
- struct gnome_keyring_baton *key_info = data;
-
- if (data == NULL)
- return;
-
- free((void*)key_info->keyring_name);
- key_info->keyring_name = NULL;
-
- if (key_info->info)
- {
- gnome_keyring_info_free(key_info->info);
- key_info->info = NULL;
- }
-
- return;
-}
-
-
-/* Callback function to complete the keyring operation. */
-static void
-callback_done(GnomeKeyringResult result,
- gpointer data)
-{
- struct gnome_keyring_baton *key_info = data;
-
- g_main_loop_quit(key_info->loop);
- return;
-}
-
-
-/* Callback function to get the keyring info. */
-static void
-callback_get_info_keyring(GnomeKeyringResult result,
- GnomeKeyringInfo *info,
- void *data)
-{
- struct gnome_keyring_baton *key_info = data;
-
- if (result == GNOME_KEYRING_RESULT_OK && info != NULL)
- {
- key_info->info = gnome_keyring_info_copy(info);
- }
- else
- {
- if (key_info->info != NULL)
- gnome_keyring_info_free(key_info->info);
-
- key_info->info = NULL;
- }
-
- g_main_loop_quit(key_info->loop);
-
- return;
-}
-
-
-/* Callback function to get the default keyring string name. */
-static void
-callback_default_keyring(GnomeKeyringResult result,
- const char *string,
- void *data)
-{
- struct gnome_keyring_baton *key_info = data;
-
- if (result == GNOME_KEYRING_RESULT_OK && string != NULL)
- {
- key_info->keyring_name = strdup(string);
- }
- else
- {
- free((void*)key_info->keyring_name);
- key_info->keyring_name = NULL;
- }
-
- g_main_loop_quit(key_info->loop);
-
- return;
-}
-
/* Returns the default keyring name, allocated in RESULT_POOL. */
static char*
get_default_keyring_name(apr_pool_t *result_pool)
{
- char *def = NULL;
- struct gnome_keyring_baton key_info;
-
- key_info.info = NULL;
- key_info.keyring_name = NULL;
+ char *name, *def;
+ GnomeKeyringResult gkr;
- /* Finds default keyring. */
- key_info.loop = g_main_loop_new(NULL, FALSE);
- gnome_keyring_get_default_keyring(callback_default_keyring, &key_info, NULL);
- g_main_loop_run(key_info.loop);
+ gkr = gnome_keyring_get_default_keyring_sync(&name);
+ if (gkr != GNOME_KEYRING_RESULT_OK)
+ return NULL;
- if (key_info.keyring_name == NULL)
- {
- callback_destroy_data_keyring(&key_info);
- return NULL;
- }
-
- def = apr_pstrdup(result_pool, key_info.keyring_name);
- callback_destroy_data_keyring(&key_info);
+ def = apr_pstrdup(result_pool, name);
+ g_free(name);
return def;
}
@@ -171,28 +70,22 @@ get_default_keyring_name(apr_pool_t *res
static svn_boolean_t
check_keyring_is_locked(const char *keyring_name)
{
- struct gnome_keyring_baton key_info;
+ GnomeKeyringInfo *info;
+ svn_boolean_t locked;
+ GnomeKeyringResult gkr;
- key_info.info = NULL;
- key_info.keyring_name = NULL;
+ gkr = gnome_keyring_get_info_sync(keyring_name, &info);
+ if (gkr != GNOME_KEYRING_RESULT_OK)
+ return FALSE;
- /* Get details about the default keyring. */
- key_info.loop = g_main_loop_new(NULL, FALSE);
- gnome_keyring_get_info(keyring_name, callback_get_info_keyring, &key_info,
- NULL);
- g_main_loop_run(key_info.loop);
+ if (gnome_keyring_info_get_is_locked(info))
+ locked = TRUE;
+ else
+ locked = FALSE;
- if (key_info.info == NULL)
- {
- callback_destroy_data_keyring(&key_info);
- return FALSE;
- }
+ gnome_keyring_info_free(info);
- /* Check if keyring is locked. */
- if (gnome_keyring_info_get_is_locked(key_info.info))
- return TRUE;
- else
- return FALSE;
+ return locked;
}
/* Unlock the KEYRING_NAME with the KEYRING_PASSWORD. If KEYRING was
@@ -202,34 +95,19 @@ unlock_gnome_keyring(const char *keyring
const char *keyring_password,
apr_pool_t *pool)
{
- struct gnome_keyring_baton key_info;
-
- key_info.info = NULL;
- key_info.keyring_name = NULL;
+ GnomeKeyringInfo *info;
+ GnomeKeyringResult gkr;
- /* Get details about the default keyring. */
- key_info.loop = g_main_loop_new(NULL, FALSE);
- gnome_keyring_get_info(keyring_name, callback_get_info_keyring,
- &key_info, NULL);
- g_main_loop_run(key_info.loop);
+ gkr = gnome_keyring_get_info_sync(keyring_name, &info);
+ if (gkr != GNOME_KEYRING_RESULT_OK)
+ return FALSE;
- if (key_info.info == NULL)
- {
- callback_destroy_data_keyring(&key_info);
- return FALSE;
- }
- else
- {
- key_info.loop = g_main_loop_new(NULL, FALSE);
- gnome_keyring_unlock(keyring_name, keyring_password,
- callback_done, &key_info, NULL);
- g_main_loop_run(key_info.loop);
- }
- callback_destroy_data_keyring(&key_info);
- if (check_keyring_is_locked(keyring_name))
+ gkr = gnome_keyring_unlock_sync(keyring_name, keyring_password);
+ gnome_keyring_info_free(info);
+ if (gkr != GNOME_KEYRING_RESULT_OK)
return FALSE;
- return TRUE;
+ return check_keyring_is_locked(keyring_name);
}
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/commit_util.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/commit_util.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_client/commit_util.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_client/commit_util.c
Mon Nov 24 15:09:30 2014
@@ -779,7 +779,6 @@ harvest_status_callback(void *status_bat
wc_ctx, svn_dirent_dirname(local_abspath,
scratch_pool),
FALSE /* ignore_enoent */,
- FALSE /* show_hidden */,
scratch_pool, scratch_pool));
if (copy_mode_root || status->switched || node_rev != dir_rev)
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/externals.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/externals.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_client/externals.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_client/externals.c
Mon Nov 24 15:09:30 2014
@@ -186,7 +186,6 @@ switch_dir_external(const char *local_ab
&repos_root_url, &repos_uuid,
NULL, ctx->wc_ctx, local_abspath,
TRUE, /* ignore_enoent */
- TRUE, /* show hidden */
pool, pool));
if (kind != svn_node_unknown)
{
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/locking_commands.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/locking_commands.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_client/locking_commands.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_client/locking_commands.c
Mon Nov 24 15:09:30 2014
@@ -375,7 +375,6 @@ organize_lock_targets(apr_array_header_t
&wli->lock_token,
wc_ctx, local_abspath,
FALSE /* ignore_enoent */,
- FALSE /* show_hidden */,
result_pool, iterpool));
if (kind != svn_node_file)
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/merge.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/merge.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_client/merge.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_client/merge.c
Mon Nov 24 15:09:30 2014
@@ -4706,7 +4706,6 @@ calculate_remaining_ranges(svn_client__m
NULL, NULL, NULL, NULL,
ctx->wc_ctx, child->abspath,
TRUE /* ignore_enoent */,
- FALSE /* show_hidden */,
scratch_pool, scratch_pool));
/* If CHILD has no base revision then it hasn't been committed yet, so it
can't have any "future" history. */
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/mergeinfo.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/mergeinfo.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_client/mergeinfo.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_client/mergeinfo.c
Mon Nov 24 15:09:30 2014
@@ -224,7 +224,6 @@ svn_client__get_wc_mergeinfo(svn_mergein
SVN_ERR(svn_wc__node_get_base(NULL, &base_revision, NULL, NULL, NULL, NULL,
ctx->wc_ctx, local_abspath,
TRUE /* ignore_enoent */,
- FALSE /* show_hidden */,
scratch_pool, scratch_pool));
iterpool = svn_pool_create(scratch_pool);
@@ -295,7 +294,7 @@ svn_client__get_wc_mergeinfo(svn_mergein
SVN_ERR(svn_wc__node_get_base(NULL, &parent_base_rev, NULL, NULL,
NULL, NULL,
ctx->wc_ctx, local_abspath,
- TRUE, FALSE,
+ TRUE /* ignore_enoent */,
scratch_pool, scratch_pool));
/* ### This checks the WORKING changed_rev, so invalid on replacement
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/update.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/update.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_client/update.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_client/update.c
Mon Nov 24 15:09:30 2014
@@ -262,7 +262,7 @@ update_internal(svn_revnum_t *result_rev
SVN_ERR(svn_wc__node_get_base(NULL, NULL, &repos_relpath, &repos_root_url,
&repos_uuid, NULL,
ctx->wc_ctx, anchor_abspath,
- TRUE, FALSE,
+ TRUE /* ignore_enoent */,
scratch_pool, scratch_pool));
/* It does not make sense to update conflict victims. */
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_client/util.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_client/util.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_client/util.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_client/util.c
Mon Nov 24 15:09:30 2014
@@ -200,7 +200,6 @@ svn_client__wc_node_get_base(svn_client_
NULL,
wc_ctx, wc_abspath,
TRUE /* ignore_enoent */,
- TRUE /* show_hidden */,
result_pool, scratch_pool));
if ((*base_p)->repos_root_url && relpath)
{
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_delta/text_delta.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_delta/text_delta.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_delta/text_delta.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_delta/text_delta.c
Mon Nov 24 15:09:30 2014
@@ -637,13 +637,17 @@ patterning_copy(char *target, const char
const apr_size_t overlap = target - source;
while (len > overlap)
{
- target = memcpy(target, source, overlap);
+ memcpy(target, source, overlap);
+ target += overlap;
len -= overlap;
}
/* Copy any remaining source pattern. */
if (len)
- target = memcpy(target, source, len);
+ {
+ memcpy(target, source, len);
+ target += len;
+ }
return target;
}
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_base/reps-strings.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_base/reps-strings.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_fs_base/reps-strings.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_fs_base/reps-strings.c
Mon Nov 24 15:09:30 2014
@@ -920,7 +920,7 @@ txn_body_read_rep(void *baton, trail_t *
args->rb->md5_checksum)))
return svn_error_create(SVN_ERR_FS_CORRUPT,
svn_checksum_mismatch_err(rep->md5_checksum,
- args->rb->sha1_checksum, trail->pool,
+ args->rb->md5_checksum, trail->pool,
_("MD5 checksum mismatch on representation '%s'"),
args->rb->rep_key),
NULL);
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.c
Mon Nov 24 15:09:30 2014
@@ -73,7 +73,6 @@ compare_dir_entries_format6(const svn_so
apr_array_header_t *
svn_fs_fs__order_dir_entries(svn_fs_t *fs,
apr_hash_t *directory,
- svn_revnum_t revision,
apr_pool_t *pool)
{
apr_array_header_t *ordered
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.h
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.h?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.h
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/pack.h
Mon Nov 24 15:09:30 2014
@@ -52,13 +52,11 @@ svn_fs_fs__get_packed_offset(apr_off_t *
/* Return the svn_dir_entry_t* objects of DIRECTORY in an APR array
* allocated in POOL with entries added in storage (on-disk) order.
- * FS format and the directory's REVISION number will be used to pick
- * the optimal ordering strategy.
+ * FS format will be used to pick the optimal ordering strategy.
*/
apr_array_header_t *
svn_fs_fs__order_dir_entries(svn_fs_t *fs,
apr_hash_t *directory,
- svn_revnum_t revision,
apr_pool_t *pool);
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/revprops.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/revprops.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/revprops.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/revprops.c
Mon Nov 24 15:09:30 2014
@@ -673,7 +673,6 @@ write_non_packed_revprop(const char **fi
* file at TMP_PATH to FINAL_PATH and give it the permissions from
* PERMS_REFERENCE.
*
- * If indicated in BUMP_GENERATION, increase FS' revprop generation.
* Finally, delete all the temporary files given in FILES_TO_DELETE.
* The latter may be NULL.
*
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/stats.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/stats.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/stats.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/stats.c
Mon Nov 24 15:09:30 2014
@@ -176,43 +176,45 @@ typedef struct query_t
void *cancel_baton;
} query_t;
-/* Return the length of REV_FILE in *FILE_SIZE. Use POOL for allocations.
+/* Return the length of REV_FILE in *FILE_SIZE.
+ * Use SCRATCH_POOL for temporary allocations.
*/
static svn_error_t *
get_file_size(apr_off_t *file_size,
svn_fs_fs__revision_file_t *rev_file,
- apr_pool_t *pool)
+ apr_pool_t *scratch_pool)
{
apr_finfo_t finfo;
SVN_ERR(svn_io_file_info_get(&finfo, APR_FINFO_SIZE, rev_file->file,
- pool));
+ scratch_pool));
*file_size = finfo.size;
return SVN_NO_ERROR;
}
/* Initialize the LARGEST_CHANGES member in STATS with a capacity of COUNT
- * entries. Use POOL for allocations.
+ * entries. Allocate the result in RESULT_POOL.
*/
static void
initialize_largest_changes(svn_fs_fs__stats_t *stats,
apr_size_t count,
- apr_pool_t *pool)
+ apr_pool_t *result_pool)
{
apr_size_t i;
- stats->largest_changes = apr_pcalloc(pool, sizeof(*stats->largest_changes));
+ stats->largest_changes = apr_pcalloc(result_pool,
+ sizeof(*stats->largest_changes));
stats->largest_changes->count = count;
stats->largest_changes->min_size = 1;
stats->largest_changes->changes
- = apr_palloc(pool, count * sizeof(*stats->largest_changes->changes));
+ = apr_palloc(result_pool, count *
sizeof(*stats->largest_changes->changes));
/* allocate *all* entries before the path stringbufs. This increases
* cache locality and enhances performance significantly. */
for (i = 0; i < count; ++i)
stats->largest_changes->changes[i]
- = apr_palloc(pool, sizeof(**stats->largest_changes->changes));
+ = apr_palloc(result_pool, sizeof(**stats->largest_changes->changes));
/* now initialize them and allocate the stringbufs */
for (i = 0; i < count; ++i)
@@ -220,7 +222,7 @@ initialize_largest_changes(svn_fs_fs__st
stats->largest_changes->changes[i]->size = 0;
stats->largest_changes->changes[i]->revision = SVN_INVALID_REVNUM;
stats->largest_changes->changes[i]->path
- = svn_stringbuf_create_ensure(1024, pool);
+ = svn_stringbuf_create_ensure(1024, result_pool);
}
}
@@ -412,15 +414,15 @@ find_representation(int *idx,
/* Find / auto-construct the representation stats for REP in QUERY and
* return it in *REPRESENTATION.
*
- * If necessary, allocate the result in POOL; use SCRATCH_POOL for temp.
- * allocations.
+ * If necessary, allocate the result in RESULT_POOL; use SCRATCH_POOL for
+ * temporary allocations.
*/
static svn_error_t *
parse_representation(rep_stats_t **representation,
query_t *query,
representation_t *rep,
revision_info_t *revision_info,
- apr_pool_t *pool,
+ apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
rep_stats_t *result;
@@ -438,10 +440,10 @@ parse_representation(rep_stats_t **repre
/* not parsed, yet (probably a rep in the same revision).
* Create a new rep object and determine its base rep as well.
*/
- result = apr_pcalloc(pool, sizeof(*result));
+ result = apr_pcalloc(result_pool, sizeof(*result));
result->revision = rep->revision;
result->expanded_size = (rep->expanded_size ? rep->expanded_size
- : rep->size);
+ : rep->size);
result->offset = (apr_off_t)rep->item_index;
result->size = rep->size;
@@ -452,7 +454,7 @@ parse_representation(rep_stats_t **repre
SVN_ERR_ASSERT(revision_info->rev_file);
SVN_ERR(svn_io_file_seek(revision_info->rev_file->file, APR_SET,
- &offset, scratch_pool));
+ &offset, scratch_pool));
SVN_ERR(svn_fs_fs__read_rep_header(&header,
revision_info->rev_file->stream,
scratch_pool, scratch_pool));
@@ -473,7 +475,7 @@ static svn_error_t *
read_noderev(query_t *query,
svn_stringbuf_t *noderev_str,
revision_info_t *revision_info,
- apr_pool_t *pool,
+ apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
/* Read the noderev item at OFFSET in REVISION_INFO from the filesystem
@@ -528,22 +530,21 @@ read_phsy_noderev(svn_stringbuf_t **node
* directories and representations linked in that tree structure.
* Store them in QUERY and REVISION_INFO. Also, read them only once.
*
- * Use POOL for persistent allocations and SCRATCH_POOL for temporaries.
+ * Use RESULT_POOL for persistent allocations and SCRATCH_POOL for
+ * temporaries.
*/
static svn_error_t *
parse_dir(query_t *query,
node_revision_t *noderev,
revision_info_t *revision_info,
- apr_pool_t *pool,
+ apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
apr_pool_t *iterpool = svn_pool_create(scratch_pool);
- apr_pool_t *subpool = svn_pool_create(scratch_pool);
-
int i;
apr_array_header_t *entries;
SVN_ERR(svn_fs_fs__rep_contents_dir(&entries, query->fs, noderev,
- subpool, subpool));
+ scratch_pool, scratch_pool));
for (i = 0; i < entries->nelts; ++i)
{
@@ -557,13 +558,12 @@ parse_dir(query_t *query,
SVN_ERR(read_phsy_noderev(&noderev_str, query,
svn_fs_fs__id_item(dirent->id),
revision_info, iterpool, iterpool));
- SVN_ERR(read_noderev(query, noderev_str, revision_info, pool,
- iterpool));
+ SVN_ERR(read_noderev(query, noderev_str, revision_info,
+ result_pool, iterpool));
}
}
svn_pool_destroy(iterpool);
- svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
@@ -572,29 +572,29 @@ parse_dir(query_t *query,
* REVISION_INFO. In phys. addressing mode, continue reading all DAG nodes,
* directories and representations linked in that tree structure.
*
- * Use POOL for persistent allocations and SCRATCH_POOL for temporaries.
+ * Use RESULT_POOL for persistent allocations and SCRATCH_POOL for
+ * temporaries.
*/
static svn_error_t *
read_noderev(query_t *query,
svn_stringbuf_t *noderev_str,
revision_info_t *revision_info,
- apr_pool_t *pool,
+ apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
rep_stats_t *text = NULL;
rep_stats_t *props = NULL;
-
node_revision_t *noderev;
- apr_pool_t *subpool = svn_pool_create(scratch_pool);
- svn_stream_t *stream = svn_stream_from_stringbuf(noderev_str, subpool);
- SVN_ERR(svn_fs_fs__read_noderev(&noderev, stream, subpool, subpool));
+ svn_stream_t *stream = svn_stream_from_stringbuf(noderev_str, scratch_pool);
+ SVN_ERR(svn_fs_fs__read_noderev(&noderev, stream, scratch_pool,
+ scratch_pool));
if (noderev->data_rep)
{
SVN_ERR(parse_representation(&text, query,
noderev->data_rep, revision_info,
- pool, subpool));
+ result_pool, scratch_pool));
/* if we are the first to use this rep, mark it as "text rep" */
if (++text->ref_count == 1)
@@ -605,7 +605,7 @@ read_noderev(query_t *query,
{
SVN_ERR(parse_representation(&props, query,
noderev->prop_rep, revision_info,
- pool, subpool));
+ result_pool, scratch_pool));
/* if we are the first to use this rep, mark it as "prop rep" */
if (++props->ref_count == 1)
@@ -626,7 +626,7 @@ read_noderev(query_t *query,
/* if this is a directory and has not been processed, yet, read and
* process it recursively */
if ( noderev->kind == svn_node_dir && text && text->ref_count == 1)
- SVN_ERR(parse_dir(query, noderev, revision_info, pool, subpool));
+ SVN_ERR(parse_dir(query, noderev, revision_info, result_pool,
scratch_pool));
/* update stats */
if (noderev->kind == svn_node_dir)
@@ -639,7 +639,6 @@ read_noderev(query_t *query,
revision_info->file_noderev_size += noderev_str->len;
revision_info->file_noderev_count++;
}
- svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
@@ -653,6 +652,10 @@ get_phys_change_count(query_t *query,
revision_info_t *revision_info,
apr_pool_t *scratch_pool)
{
+ /* We are going to use our own sub-pool here because the changes object
+ * may well be >100MB and SCRATCH_POOL may not get cleared until all other
+ * info has been read by read_phys_revision(). Therefore, tidy up early.
+ */
apr_pool_t *subpool = svn_pool_create(scratch_pool);
apr_array_header_t *changes;
@@ -660,6 +663,7 @@ get_phys_change_count(query_t *query,
revision_info->revision, subpool));
revision_info->change_count = changes->nelts;
+ /* Release potentially tons of memory. */
svn_pool_destroy(subpool);
return SVN_NO_ERROR;
@@ -712,22 +716,25 @@ read_phys_revision(query_t *query,
}
/* Read the content of the pack file staring at revision BASE physical
- * addressing mode and store it in QUERY. Use POOL for allocations.
+ * addressing mode and store it in QUERY.
+ *
+ * Use RESULT_POOL for persistent allocations and SCRATCH_POOL for
+ * temporaries.
*/
static svn_error_t *
read_phys_pack_file(query_t *query,
svn_revnum_t base,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
- apr_pool_t *local_pool = svn_pool_create(pool);
- apr_pool_t *iterpool = svn_pool_create(local_pool);
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
int i;
apr_off_t file_size = 0;
svn_fs_fs__revision_file_t *rev_file;
SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, query->fs, base,
- pool, pool));
- SVN_ERR(get_file_size(&file_size, rev_file, local_pool));
+ scratch_pool, scratch_pool));
+ SVN_ERR(get_file_size(&file_size, rev_file, scratch_pool));
/* process each revision in the pack file */
for (i = 0; i < query->shard_size; ++i)
@@ -739,8 +746,9 @@ read_phys_pack_file(query_t *query,
SVN_ERR(query->cancel_func(query->cancel_baton));
/* create the revision info for the current rev */
- info = apr_pcalloc(pool, sizeof(*info));
- info->representations = apr_array_make(iterpool, 4,
sizeof(rep_stats_t*));
+ info = apr_pcalloc(result_pool, sizeof(*info));
+ info->representations = apr_array_make(result_pool, 4,
+ sizeof(rep_stats_t*));
info->rev_file = rev_file;
info->revision = base + i;
@@ -752,12 +760,12 @@ read_phys_pack_file(query_t *query,
SVN_ERR(svn_fs_fs__get_packed_offset(&info->end, query->fs,
base + i + 1, iterpool));
- SVN_ERR(read_phys_revision(query, info, pool, iterpool));
+ SVN_ERR(read_phys_revision(query, info, result_pool, iterpool));
- info->representations = apr_array_copy(pool, info->representations);
+ info->representations = apr_array_copy(result_pool,
+ info->representations);
/* Done with this revision. */
- SVN_ERR(svn_fs_fs__close_revision_file(rev_file));
info->rev_file = NULL;
/* put it into our container */
@@ -767,25 +775,29 @@ read_phys_pack_file(query_t *query,
svn_pool_clear(iterpool);
}
+ /* Done with this pack file. */
+ SVN_ERR(svn_fs_fs__close_revision_file(rev_file));
+
/* one more pack file processed */
if (query->progress_func)
- query->progress_func(base, query->progress_baton, local_pool);
-
- svn_pool_destroy(local_pool);
+ query->progress_func(base, query->progress_baton, scratch_pool);
return SVN_NO_ERROR;
}
/* Read the content of the file for REVISION in physical addressing mode
- * and store its contents in QUERY. Use POOL for allocations.
+ * and store its contents in QUERY.
+ *
+ * Use RESULT_POOL for persistent allocations and SCRATCH_POOL for
+ * temporaries.
*/
static svn_error_t *
read_phys_revision_file(query_t *query,
svn_revnum_t revision,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
- apr_pool_t *local_pool = svn_pool_create(pool);
- revision_info_t *info = apr_pcalloc(pool, sizeof(*info));
+ revision_info_t *info = apr_pcalloc(result_pool, sizeof(*info));
apr_off_t file_size = 0;
svn_fs_fs__revision_file_t *rev_file;
@@ -795,18 +807,18 @@ read_phys_revision_file(query_t *query,
/* read the whole pack file into memory */
SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, query->fs, revision,
- pool, pool));
- SVN_ERR(get_file_size(&file_size, rev_file, local_pool));
+ scratch_pool, scratch_pool));
+ SVN_ERR(get_file_size(&file_size, rev_file, scratch_pool));
/* create the revision info for the current rev */
- info->representations = apr_array_make(pool, 4, sizeof(rep_stats_t*));
+ info->representations = apr_array_make(result_pool, 4, sizeof(rep_stats_t*));
info->rev_file = rev_file;
info->revision = revision;
info->offset = 0;
info->end = file_size;
- SVN_ERR(read_phys_revision(query, info, pool, local_pool));
+ SVN_ERR(read_phys_revision(query, info, result_pool, scratch_pool));
/* Done with this revision. */
SVN_ERR(svn_fs_fs__close_revision_file(rev_file));
@@ -819,23 +831,25 @@ read_phys_revision_file(query_t *query,
if (query->progress_func)
{
if (query->shard_size && (revision % query->shard_size == 0))
- query->progress_func(revision, query->progress_baton, local_pool);
+ query->progress_func(revision, query->progress_baton, scratch_pool);
if (!query->shard_size && (revision % 1000 == 0))
- query->progress_func(revision, query->progress_baton, local_pool);
+ query->progress_func(revision, query->progress_baton, scratch_pool);
}
- svn_pool_destroy(local_pool);
-
return SVN_NO_ERROR;
}
/* Read the repository and collect the stats info in QUERY.
- * Use POOL for allocations.
+ *
+ * Use RESULT_POOL for persistent allocations and SCRATCH_POOL for
+ * temporaries.
*/
static svn_error_t *
read_revisions(query_t *query,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
svn_revnum_t revision;
/* read all packed revs */
@@ -843,12 +857,17 @@ read_revisions(query_t *query,
; revision < query->min_unpacked_rev
; revision += query->shard_size)
{
- SVN_ERR(read_phys_pack_file(query, revision, pool));
+ svn_pool_clear(iterpool);
+ SVN_ERR(read_phys_pack_file(query, revision, result_pool, iterpool));
}
/* read non-packed revs */
for ( ; revision <= query->head; ++revision)
- SVN_ERR(read_phys_revision_file(query, revision, pool));
+ {
+ svn_pool_clear(iterpool);
+ SVN_ERR(read_phys_revision_file(query, revision, result_pool, iterpool));
+ }
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
@@ -1017,7 +1036,7 @@ svn_fs_fs__get_stats(svn_fs_fs__stats_t
SVN_ERR(create_query(&query, fs, *stats, progress_func, progress_func,
cancel_func, cancel_baton, scratch_pool,
scratch_pool));
- SVN_ERR(read_revisions(query, scratch_pool));
+ SVN_ERR(read_revisions(query, scratch_pool, scratch_pool));
aggregate_stats(query->revisions, *stats);
return SVN_NO_ERROR;
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/transaction.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/transaction.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/transaction.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/transaction.c
Mon Nov 24 15:09:30 2014
@@ -2267,9 +2267,7 @@ write_directory_to_stream(svn_stream_t *
is not NULL, it will be used in addition to the on-disk cache to find
earlier reps with the same content. When such existing reps can be
found, we will truncate the one just written from the file and return
- the existing rep. If FINAL_REVISION is not SVN_INVALID_REVNUM, use it
- to determine whether to write to the proto-index files.
- Perform temporary allocations in SCRATCH_POOL. */
+ the existing rep. Perform temporary allocations in SCRATCH_POOL. */
static svn_error_t *
write_container_rep(representation_t *rep,
apr_file_t *file,
@@ -2278,7 +2276,6 @@ write_container_rep(representation_t *re
svn_fs_t *fs,
apr_hash_t *reps_hash,
apr_uint32_t item_type,
- svn_revnum_t final_revision,
apr_pool_t *scratch_pool)
{
svn_stream_t *stream;
@@ -2343,8 +2340,6 @@ write_container_rep(representation_t *re
If ITEM_TYPE is IS_PROPS equals SVN_FS_FS__ITEM_TYPE_*_PROPS, assume
that we want to a props representation as the base for our delta.
- If FINAL_REVISION is not SVN_INVALID_REVNUM, use it to determine whether
- to write to the proto-index files.
Perform temporary allocations in SCRATCH_POOL.
*/
static svn_error_t *
@@ -2356,7 +2351,6 @@ write_container_delta_rep(representation
node_revision_t *noderev,
apr_hash_t *reps_hash,
apr_uint32_t item_type,
- svn_revnum_t final_revision,
apr_pool_t *scratch_pool)
{
svn_txdelta_window_handler_t diff_wh;
@@ -2630,12 +2624,11 @@ write_final_rev(const svn_fs_id_t **new_
write_directory_to_stream,
fs, noderev, NULL,
SVN_FS_FS__ITEM_TYPE_DIR_REP,
- rev, pool));
+ pool));
else
SVN_ERR(write_container_rep(noderev->data_rep, file, entries,
write_directory_to_stream, fs, NULL,
- SVN_FS_FS__ITEM_TYPE_DIR_REP, rev,
- pool));
+ SVN_FS_FS__ITEM_TYPE_DIR_REP, pool));
reset_txn_in_rep(noderev->data_rep);
}
@@ -2677,11 +2670,11 @@ write_final_rev(const svn_fs_id_t **new_
if (ffd->deltify_properties)
SVN_ERR(write_container_delta_rep(noderev->prop_rep, file, proplist,
write_hash_to_stream, fs, noderev,
- reps_hash, item_type, rev, pool));
+ reps_hash, item_type, pool));
else
SVN_ERR(write_container_rep(noderev->prop_rep, file, proplist,
write_hash_to_stream, fs, reps_hash,
- item_type, rev, pool));
+ item_type, pool));
reset_txn_in_rep(noderev->prop_rep);
}
@@ -2758,17 +2751,15 @@ write_final_rev(const svn_fs_id_t **new_
}
/* Write the changed path info CHANGED_PATHS from transaction TXN_ID to the
- permanent rev-file FILE representing NEW_REV in filesystem FS. *OFFSET_P
- is set the to offset in the file of the beginning of this information.
- NEW_REV is the revision currently being committed.
- Perform temporary allocations in POOL. */
+ permanent rev-file FILE in filesystem FS. *OFFSET_P is set the to offset
+ in the file of the beginning of this information. Perform temporary
+ allocations in POOL. */
static svn_error_t *
write_final_changed_path_info(apr_off_t *offset_p,
apr_file_t *file,
svn_fs_t *fs,
const svn_fs_fs__id_part_t *txn_id,
apr_hash_t *changed_paths,
- svn_revnum_t new_rev,
apr_pool_t *pool)
{
apr_off_t offset;
@@ -3102,7 +3093,7 @@ commit_body(void *baton, apr_pool_t *poo
/* Write the changed-path information. */
SVN_ERR(write_final_changed_path_info(&changed_path_offset, proto_file,
cb->fs, txn_id, changed_paths,
- new_rev, pool));
+ pool));
/* Write the final line. */
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/tree.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/tree.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/tree.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/tree.c
Mon Nov 24 15:09:30 2014
@@ -2387,10 +2387,7 @@ fs_dir_optimal_order(apr_array_header_t
apr_hash_t *entries,
apr_pool_t *pool)
{
- *ordered_p
- = svn_fs_fs__order_dir_entries(root->fs, entries,
- root->rev,
- pool);
+ *ordered_p = svn_fs_fs__order_dir_entries(root->fs, entries, pool);
return SVN_NO_ERROR;
}
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/verify.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/verify.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/verify.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_fs_fs/verify.c
Mon Nov 24 15:09:30 2014
@@ -22,6 +22,7 @@
#include "svn_sorts.h"
#include "svn_checksum.h"
+#include "svn_time.h"
#include "private/svn_subr_private.h"
#include "verify.h"
Propchange: subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
Merged /subversion/trunk/subversion/libsvn_fs_x:r1637359-1641359
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/cached_data.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/cached_data.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/cached_data.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/libsvn_fs_x/cached_data.c
Mon Nov 24 15:09:30 2014
@@ -684,7 +684,6 @@ create_rep_state_body(rep_state_t **rep_
{
/* we will need the on-disk location for non-txn reps */
apr_off_t offset;
- apr_uint32_t sub_item;
svn_boolean_t in_container = TRUE;
/* ensure file is open and navigate to the start of rep header */
@@ -693,7 +692,6 @@ create_rep_state_body(rep_state_t **rep_
/* ... we can re-use the same, already open file object.
* This implies that we don't read from a txn.
*/
- SVN_ERR_ASSERT(sub_item == 0);
rs->sfile = *shared_file;
SVN_ERR(auto_open_shared_file(rs->sfile));
}
@@ -708,6 +706,8 @@ create_rep_state_body(rep_state_t **rep_
if (SVN_IS_VALID_REVNUM(revision))
{
+ apr_uint32_t sub_item;
+
SVN_ERR(svn_fs_x__item_offset(&offset, &sub_item, fs,
rs->sfile->rfile, &rep->id,
scratch_pool));
Modified:
subversion/branches/remove-log-addressing/subversion/libsvn_subr/stream.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_subr/stream.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_subr/stream.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_subr/stream.c
Mon Nov 24 15:09:30 2014
@@ -78,17 +78,8 @@ svn_stream_create(void *baton, apr_pool_
{
svn_stream_t *stream;
- stream = apr_palloc(pool, sizeof(*stream));
+ stream = apr_pcalloc(pool, sizeof(*stream));
stream->baton = baton;
- stream->read_fn = NULL;
- stream->skip_fn = NULL;
- stream->write_fn = NULL;
- stream->close_fn = NULL;
- stream->mark_fn = NULL;
- stream->seek_fn = NULL;
- stream->data_available_fn = NULL;
- stream->is_buffered_fn = NULL;
- stream->file = NULL;
return stream;
}
@@ -1126,7 +1117,7 @@ read_helper_gz(svn_stream_t *substream,
uInt, but Subversion's API requires apr_size_t. */
apr_size_t apr_len = (apr_size_t) *len;
- SVN_ERR(svn_stream_read2(substream, buffer, &apr_len));
+ SVN_ERR(svn_stream_read_full(substream, buffer, &apr_len));
/* Type cast back to uInt type that zlib uses. On LP64 platforms
apr_size_t will be bigger than uInt. */
Modified: subversion/branches/remove-log-addressing/subversion/libsvn_wc/node.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/libsvn_wc/node.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/libsvn_wc/node.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/libsvn_wc/node.c Mon
Nov 24 15:09:30 2014
@@ -636,7 +636,6 @@ svn_wc__node_get_base(svn_node_kind_t *k
svn_wc_context_t *wc_ctx,
const char *local_abspath,
svn_boolean_t ignore_enoent,
- svn_boolean_t show_hidden,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
@@ -656,9 +655,8 @@ svn_wc__node_get_base(svn_node_kind_t *k
if (err && err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
return svn_error_trace(err);
else if (err
- || (!err && !show_hidden
- && (status != svn_wc__db_status_normal
- && status != svn_wc__db_status_incomplete)))
+ || (status != svn_wc__db_status_normal
+ && status != svn_wc__db_status_incomplete))
{
if (!ignore_enoent)
{
Modified: subversion/branches/remove-log-addressing/subversion/svnfsfs/svnfsfs.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/svnfsfs/svnfsfs.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/svnfsfs/svnfsfs.c
(original)
+++ subversion/branches/remove-log-addressing/subversion/svnfsfs/svnfsfs.c Mon
Nov 24 15:09:30 2014
@@ -445,7 +445,7 @@ sub_main(int *exit_code, int argc, const
apr_signal(SIGXFSZ, SIG_IGN);
#endif
- /* Configure FSFS caches for maximum efficiency with svnadmin.
+ /* Configure FSFS caches for maximum efficiency with svnfsfs.
* Also, apply the respective command line parameters, if given. */
{
svn_cache_config_t settings = *svn_cache_config_get();
@@ -466,7 +466,7 @@ sub_main(int *exit_code, int argc, const
|| err->apr_err == SVN_ERR_CL_ARG_PARSING_ERROR)
{
err = svn_error_quick_wrap(err,
- _("Try 'svnadmin help' for more info"));
+ _("Try 'svnfsfs help' for more info"));
}
return err;
}
@@ -482,7 +482,7 @@ main(int argc, const char *argv[])
svn_error_t *err;
/* Initialize the app. */
- if (svn_cmdline_init("svnadmin", stderr) != EXIT_SUCCESS)
+ if (svn_cmdline_init("svnfsfs", stderr) != EXIT_SUCCESS)
return EXIT_FAILURE;
/* Create our top-level pool. Use a separate mutexless allocator,
Modified:
subversion/branches/remove-log-addressing/subversion/tests/cmdline/basic_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/basic_tests.py?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/cmdline/basic_tests.py
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/cmdline/basic_tests.py
Mon Nov 24 15:09:30 2014
@@ -2003,6 +2003,7 @@ def delete_keep_local_twice(sbox):
logger.warn('Directory was really deleted')
raise svntest.Failure
+@XFail(svntest.main.is_mod_dav_url_quoting_broken)
def special_paths_in_repos(sbox):
"use folders with names like 'c:hi'"
Modified:
subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh
Mon Nov 24 15:09:30 2014
@@ -264,8 +264,6 @@ HTTPD=$(get_prog_name $httpd) || fail "H
"$HTTPD" -v 1>/dev/null 2>&1 \
|| fail "HTTPD '$HTTPD' doesn't start properly"
-say "Using '$HTTPD'..."
-
HTPASSWD=$(get_prog_name htpasswd htpasswd2) \
|| fail "Could not find htpasswd or htpasswd2"
[ -x $HTPASSWD ] \
Modified:
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py
Mon Nov 24 15:09:30 2014
@@ -32,6 +32,7 @@ import shutil
import sys
import threading
import time
+import gzip
logger = logging.getLogger()
@@ -2836,6 +2837,35 @@ def upgrade(sbox):
'-m', svntest.main.make_log_msg(),
sbox.repo_url + '/dir')
+def load_txdelta(sbox):
+ "exercising svn_txdelta_target on BDB"
+
+ test_create(sbox)
+
+ # This dumpfile produced a BDB repository that generated cheksum
+ # mismatches on read caused by the improper handling of
+ # svn_txdelta_target ops. The bug was fixed by r1640832.
+
+ dumpfile_location = os.path.join(os.path.dirname(sys.argv[0]),
+ 'svnadmin_tests_data',
+ 'load_txdelta.dump.gz')
+ dumpfile = gzip.open(dumpfile_location).read()
+
+ load_dumpstream(sbox, dumpfile)
+
+ # Verify would fail with a checksum mismatch:
+ # * Error verifying revision 14.
+ # svnadmin: E200014: MD5 checksum mismatch on representation 'r':
+ # expected: 5182e8876ed894dc7fe28f6ff5b2fee6
+ # actual: 5121f82875508863ad70daa8244e6947
+
+ exit_code, output, errput = svntest.main.run_svnadmin("verify",
sbox.repo_dir)
+ if errput:
+ raise SVNUnexpectedStderr(errput)
+ if svntest.verify.verify_outputs(
+ "Output of 'svnadmin verify' is unexpected.", None, output, None,
+ ".*Verified revision *"):
+ raise svntest.Failure
########################################################################
# Run the tests
@@ -2890,6 +2920,7 @@ test_list = [ None,
fsfs_hotcopy_progress_old,
freeze_same_uuid,
upgrade,
+ load_txdelta,
]
if __name__ == '__main__':
Modified:
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/main.py
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/main.py?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/main.py
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/main.py
Mon Nov 24 15:09:30 2014
@@ -908,68 +908,10 @@ def file_substitute(path, contents, new_
fcontent = open(path, 'r').read().replace(contents, new_contents)
open(path, 'w').write(fcontent)
-def _unpack_precooked_repos(path, template):
- testdir = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
- repozip = os.path.join(os.path.dirname(testdir), "templates", template)
- zipfile.ZipFile(repozip, 'r').extractall(path)
-
-# For creating new, pre-cooked greek repositories
-def unpack_greek_repos(path):
- template = "greek-fsfs-v%d.zip" % options.fsfs_version
- _unpack_precooked_repos(path, template)
-
-# For creating blank new repositories
-def create_repos(path, minor_version = None):
- """Create a brand-new SVN repository at PATH. If PATH does not yet
- exist, create it."""
-
- if not os.path.exists(path):
- os.makedirs(path) # this creates all the intermediate dirs, if necessary
-
- if options.fsfs_version is None:
- if options.fs_type == "bdb":
- opts = ("--bdb-txn-nosync",)
- else:
- opts = ()
- if minor_version is None or minor_version > options.server_minor_version:
- minor_version = options.server_minor_version
- opts += ("--compatible-version=1.%d" % (minor_version),)
- if options.fs_type is not None:
- opts += ("--fs-type=" + options.fs_type,)
- exit_code, stdout, stderr = run_command(svnadmin_binary, 1, False,
- "create", path, *opts)
- else:
- # Copy a pre-cooked FSFS repository
- assert options.fs_type == "fsfs"
- template = "empty-fsfs-v%d.zip" % options.fsfs_version
- _unpack_precooked_repos(path, template)
- exit_code, stdout, stderr = run_command(svnadmin_binary, 1, False,
- "setuuid", path)
-
- # Skip tests if we can't create the repository.
- if stderr:
- stderr_lines = 0
- not_using_fsfs_backend = (options.fs_type != "fsfs")
- backend_deprecation_warning = False
- for line in stderr:
- stderr_lines += 1
- if line.find('Unknown FS type') != -1:
- raise Skip
- if not_using_fsfs_backend:
- if 0 < line.find('repository back-end is deprecated, consider using'):
- backend_deprecation_warning = True
-
- # Creating BDB repositories will cause svnadmin to print a warning
- # which should be ignored.
- if (stderr_lines == 1
- and not_using_fsfs_backend
- and backend_deprecation_warning):
- pass
- else:
- # If the FS type is known and we noticed more than just the
- # BDB-specific warning, assume the repos couldn't be created
- # (e.g. due to a missing 'svnadmin' binary).
- raise SVNRepositoryCreateFailure("".join(stderr).rstrip())
+# For setting up authz and hooks in existing repos
+def _post_create_repos(path, minor_version = None):
+ """Set default access right configurations for svnserve and mod_dav
+ as well as hooks etc. in the SVN repository at PATH."""
# Require authentication to write to the repos, for ra_svn testing.
file_write(get_svnserve_conf_file_path(path),
@@ -1039,6 +981,73 @@ def create_repos(path, minor_version = N
# make the repos world-writeable, for mod_dav_svn's sake.
chmod_tree(path, 0666, 0666)
+def _unpack_precooked_repos(path, template):
+ testdir = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
+ repozip = os.path.join(os.path.dirname(testdir), "templates", template)
+ zipfile.ZipFile(repozip, 'r').extractall(path)
+
+# For creating new, pre-cooked greek repositories
+def unpack_greek_repos(path):
+ template = "greek-fsfs-v%d.zip" % options.fsfs_version
+ _unpack_precooked_repos(path, template)
+ _post_create_repos(path, options.server_minor_version)
+
+# For creating blank new repositories
+def create_repos(path, minor_version = None):
+ """Create a brand-new SVN repository at PATH. If PATH does not yet
+ exist, create it."""
+
+ if not os.path.exists(path):
+ os.makedirs(path) # this creates all the intermediate dirs, if necessary
+
+ if options.fsfs_version is None:
+ if options.fs_type == "bdb":
+ opts = ("--bdb-txn-nosync",)
+ else:
+ opts = ()
+ if minor_version is None or minor_version > options.server_minor_version:
+ minor_version = options.server_minor_version
+ opts += ("--compatible-version=1.%d" % (minor_version),)
+ if options.fs_type is not None:
+ opts += ("--fs-type=" + options.fs_type,)
+ exit_code, stdout, stderr = run_command(svnadmin_binary, 1, False,
+ "create", path, *opts)
+ else:
+ # Copy a pre-cooked FSFS repository
+ assert options.fs_type == "fsfs"
+ template = "empty-fsfs-v%d.zip" % options.fsfs_version
+ _unpack_precooked_repos(path, template)
+ exit_code, stdout, stderr = run_command(svnadmin_binary, 1, False,
+ "setuuid", path)
+
+ # Skip tests if we can't create the repository.
+ if stderr:
+ stderr_lines = 0
+ not_using_fsfs_backend = (options.fs_type != "fsfs")
+ backend_deprecation_warning = False
+ for line in stderr:
+ stderr_lines += 1
+ if line.find('Unknown FS type') != -1:
+ raise Skip
+ if not_using_fsfs_backend:
+ if 0 < line.find('repository back-end is deprecated, consider using'):
+ backend_deprecation_warning = True
+
+ # Creating BDB repositories will cause svnadmin to print a warning
+ # which should be ignored.
+ if (stderr_lines == 1
+ and not_using_fsfs_backend
+ and backend_deprecation_warning):
+ pass
+ else:
+ # If the FS type is known and we noticed more than just the
+ # BDB-specific warning, assume the repos couldn't be created
+ # (e.g. due to a missing 'svnadmin' binary).
+ raise SVNRepositoryCreateFailure("".join(stderr).rstrip())
+
+ # Configure the new repository.
+ _post_create_repos(path, minor_version)
+
# For copying a repository
def copy_repos(src_path, dst_path, head_revision, ignore_uuid = 1,
minor_version = None):
@@ -1464,6 +1473,17 @@ def is_plaintext_password_storage_disabl
return False
return True
+
+# https://issues.apache.org/bugzilla/show_bug.cgi?id=56480
+__mod_dav_url_quoting_broken_versions = frozenset([
+ '2.2.26',
+ '2.4.9',
+])
+def is_mod_dav_url_quoting_broken():
+ if is_ra_type_dav():
+ return (options.httpd_version in __mod_dav_url_quoting_broken_versions)
+ return None
+
######################################################################
@@ -1525,6 +1545,8 @@ class TestSpawningThread(threading.Threa
args.append('--http-proxy-username=' + options.http_proxy_username)
if options.http_proxy_password:
args.append('--http-proxy-password=' + options.http_proxy_password)
+ if options.httpd_version:
+ args.append('--httpd-version=' + options.httpd_version)
if options.exclusive_wc_locks:
args.append('--exclusive-wc-locks')
if options.memcached_server:
@@ -1886,6 +1908,8 @@ def _create_parser():
help='Username for the HTTP Proxy.')
parser.add_option('--http-proxy-password', action='store',
help='Password for the HTTP Proxy.')
+ parser.add_option('--httpd-version', action='store',
+ help='Assume HTTPD is this version.')
parser.add_option('--tools-bin', action='store', dest='tools_bin',
help='Use the svn tools installed in this path')
parser.add_option('--exclusive-wc-locks', action='store_true',
Modified:
subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c
Mon Nov 24 15:09:30 2014
@@ -6539,6 +6539,62 @@ test_fs_merge(const svn_test_opts_t *opt
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_fsfs_config_opts(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ apr_hash_t *fs_config;
+ svn_fs_t *fs;
+ const svn_fs_info_placeholder_t *fs_info;
+ const svn_fs_fsfs_info_t *fsfs_info;
+
+ /* Bail (with SKIP) on known-untestable scenarios */
+ if (strcmp(opts->fs_type, "fsfs") != 0)
+ return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL,
+ "this will test FSFS repositories only");
+
+ /* Remove the test directory from previous runs. */
+ SVN_ERR(svn_io_remove_dir2("test-fsfs-config-opts", TRUE, NULL, NULL, pool));
+
+ /* Create the test directory and add it to the test cleanup list. */
+ SVN_ERR(svn_io_dir_make("test-fsfs-config-opts", APR_OS_DEFAULT, pool));
+ svn_test_add_dir_cleanup("test-fsfs-config-opts");
+
+ /* Create an FSFS filesystem with default config.*/
+ fs_config = apr_hash_make(pool);
+ svn_hash_sets(fs_config, SVN_FS_CONFIG_FS_TYPE, SVN_FS_TYPE_FSFS);
+ SVN_ERR(svn_fs_create(&fs, "test-fsfs-config-opts/default", fs_config,
pool));
+
+ /* Re-open FS to test the data on disk. */
+ SVN_ERR(svn_fs_open2(&fs, "test-fsfs-config-opts/default", NULL, pool,
pool));
+
+ SVN_ERR(svn_fs_info(&fs_info, fs, pool, pool));
+ SVN_TEST_STRING_ASSERT(fs_info->fs_type, SVN_FS_TYPE_FSFS);
+ fsfs_info = (const void *) fs_info;
+
+ /* Check FSFS specific info. Don't check the SHARD_SIZE, because it depends
+ * on a compile-time constant and may be overridden. */
+ SVN_TEST_ASSERT(fsfs_info->min_unpacked_rev == 0);
+
+ /* Create an FSFS filesystem with custom settings: custom shard size (123).
*/
+ fs_config = apr_hash_make(pool);
+ svn_hash_sets(fs_config, SVN_FS_CONFIG_FS_TYPE, SVN_FS_TYPE_FSFS);
+ svn_hash_sets(fs_config, SVN_FS_CONFIG_FSFS_SHARD_SIZE, "123");
+ SVN_ERR(svn_fs_create(&fs, "test-fsfs-config-opts/custom", fs_config, pool));
+
+ /* Re-open FS to test the data on disk. */
+ SVN_ERR(svn_fs_open2(&fs, "test-fsfs-config-opts/custom", NULL, pool, pool));
+
+ SVN_ERR(svn_fs_info(&fs_info, fs, pool, pool));
+ SVN_TEST_STRING_ASSERT(fs_info->fs_type, SVN_FS_TYPE_FSFS);
+ fsfs_info = (const void *) fs_info;
+
+ /* Check FSFS specific info, including the SHARD_SIZE. */
+ SVN_TEST_ASSERT(fsfs_info->shard_size == 123);
+ SVN_TEST_ASSERT(fsfs_info->min_unpacked_rev == 0);
+
+ return SVN_NO_ERROR;
+}
/* ------------------------------------------------------------------------ */
/* The test table. */
@@ -6662,6 +6718,8 @@ static struct svn_test_descriptor_t test
"get a delta stream on a file"),
SVN_TEST_OPTS_PASS(test_fs_merge,
"get merging txns with newer revisions"),
+ SVN_TEST_OPTS_PASS(test_fsfs_config_opts,
+ "test creating FSFS repository with different opts"),
SVN_TEST_NULL
};
Modified:
subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/stream-test.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/stream-test.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/stream-test.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/stream-test.c
Mon Nov 24 15:09:30 2014
@@ -771,6 +771,38 @@ test_stringbuf_from_stream(apr_pool_t *p
return SVN_NO_ERROR;
}
+static svn_error_t *
+empty_read_full_fn(void *baton, char *buffer, apr_size_t *len)
+{
+ *len = 0;
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_stream_compressed_read_full(apr_pool_t *pool)
+{
+ svn_stream_t *stream, *empty_stream;
+ char buf[1];
+ apr_size_t len;
+
+ /* Reading an empty stream with read_full only support should not error. */
+ empty_stream = svn_stream_create(NULL, pool);
+
+ /* Create stream with only full read support. */
+ svn_stream_set_read2(empty_stream, NULL, empty_read_full_fn);
+
+ stream = svn_stream_compressed(empty_stream, pool);
+ len = sizeof(buf);
+ SVN_ERR(svn_stream_read_full(stream, buf, &len));
+ if (len > 0)
+ return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
+ "Got unexpected result.");
+
+ SVN_ERR(svn_stream_close(stream));
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
static int max_threads = 1;
@@ -800,6 +832,8 @@ static struct svn_test_descriptor_t test
"base64 decoding allocation problem"),
SVN_TEST_PASS2(test_stringbuf_from_stream,
"test svn_stringbuf_from_stream"),
+ SVN_TEST_PASS2(test_stream_compressed_read_full,
+ "test compression for streams without partial read"),
SVN_TEST_NULL
};
Modified:
subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/wc-test.c
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/wc-test.c?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/wc-test.c
(original)
+++
subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/wc-test.c
Mon Nov 24 15:09:30 2014
@@ -141,7 +141,6 @@ test_node_get_base(const svn_test_opts_t
NULL,
b->wc_ctx, local_abspath,
TRUE /* ignore_enoent */,
- FALSE /* show_hidden */,
b->pool, b->pool));
SVN_TEST_ASSERT(revision == subtest->base_rev);
if (SVN_IS_VALID_REVNUM(subtest->base_rev))
Modified:
subversion/branches/remove-log-addressing/subversion/tests/templates/greek-fsfs-v6.zip
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/templates/greek-fsfs-v6.zip?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
Binary files - no diff available.
Modified:
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
(original)
+++
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
Mon Nov 24 15:09:30 2014
@@ -28,9 +28,10 @@ SVN_VER_MINOR=`awk '/define SVN_VER_MINO
cd ../obj
grep obj/subversion/tests /etc/mnttab > /dev/null || mount-tmpfs
-if [ $SVN_VER_MINOR -eq 8 ]; then
- # A bug causes 1.8 --enable-optimize to add -flto which isn't supported
- OPTIONS_1_8='--disable-optimize'
+# --enable-optimize adds -flto which breaks the 1.8 C tests because
+# they link main() from a library.
+if [ $SVN_VER_MINOR -gt 8 ]; then
+ OPTIMIZE_OPTION='--enable-optimize'
fi
echo "============ configure"
@@ -42,7 +43,7 @@ echo "============ configure"
--with-sqlite=/export/home/wandisco/buildbot/sqlite-amalgamation-3071501/sqlite3.c
\
--enable-optimize \
--disable-shared \
- $OPTIONS_1_8 \
+ $OPTIMIZE_OPTION \
|| exit $?
echo "============ make"
Modified:
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/mkramdisk.sh
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/mkramdisk.sh?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/mkramdisk.sh
(original)
+++
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/mkramdisk.sh
Mon Nov 24 15:09:30 2014
@@ -30,7 +30,7 @@ mount | fgrep "on ${volume} " >/dev/null
set -e
# Make sure we strip trailing spaces from the result of older
# versions of hduitil.
- device=$(echo $(hdiutil attach -nomount ram://1000000))
+ device=$(echo $(hdiutil attach -nomount ram://900000))
newfs_hfs -M 0700 -v "$1" "${device}"
hdiutil mountvol "${device}"
}
Modified:
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh
(original)
+++
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh
Mon Nov 24 15:09:30 2014
@@ -39,6 +39,14 @@ if [ ! -z "${aprdir}" -a -d "${aprdir}"
fi
#
+# Step 0: Create a directory for the test log files
+#
+if [ -d "${abssrc}/.test-logs" ]; then
+ rm -fr "${abssrc}/.test-logs"
+fi
+mkdir "${abssrc}/.test-logs" || exit 1
+
+#
# Step 1: get the latest and greatest amalgamanted SQLite
#
@@ -55,6 +63,14 @@ echo "============ autogen.sh"
cd ${abssrc}
./autogen.sh
+svnminor=$(awk '/define *SVN_VER_MINOR/ { print $3 }'
subversion/include/svn_version.h)
+
+# --enable-optimize adds -flto which breaks the 1.8 C tests because
+# they link main() from a library.
+if [ ${svnminor} -gt 8 ]; then
+ optimizeconfig=' --enable-optimize'
+fi
+
#
# Step 3: Configure
#
@@ -64,8 +80,7 @@ cd ${absbld}
env CC=clang CXX=clang++ \
${abssrc}/configure \
--prefix="${absbld}/.install-prefix" \
- --disable-debug \
- --enable-optimize \
+ --disable-debug${optimizeconfig} \
--disable-nls \
--disable-mod-activation \
${aprconfig}${serfconfig} \
@@ -75,6 +90,8 @@ ${abssrc}/configure \
--without-jikes \
--with-junit="${SVNBB_JUNIT}"
+test -f config.log && mv config.log "${abssrc}/.test-logs/config.log"
+
#
# Step 4: build
#
Modified:
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh
URL:
http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh?rev=1641404&r1=1641403&r2=1641404&view=diff
==============================================================================
---
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh
(original)
+++
subversion/branches/remove-log-addressing/tools/buildbot/slaves/svn-x64-macosx/svncheck.sh
Mon Nov 24 15:09:30 2014
@@ -38,9 +38,23 @@ run_tests() {
test -f tests.log && mv tests.log
"${abssrc}/.test-logs/tests-${ra}-${fs}.log"
test -f fails.log && mv fails.log
"${abssrc}/.test-logs/fails-${ra}-${fs}.log"
+ # Remove the test working directory to make space on the RAM disk
+ # for more tests.
+ rm -fr subversion/tests/cmdline/svn-test-work
+
${ok} || exit 1
}
+check_tests() {
+ ra="$1"
+
+ ${check_fsfs} && run_tests ${ra} fsfs
+ ${check_fsfs_v6} && run_tests ${ra} fsfs-v6
+ ${check_fsfs_v4} && run_tests ${ra} fsfs-v4
+ ${check_bdb} && run_tests ${ra} bdb
+ ${check_fsx} && run_tests ${ra} fsx
+}
+
set -x
@@ -53,40 +67,28 @@ check_local=false
check_svn=false
check_dav=false
check_fsfs=false
+check_fsfs_v6=false
+check_fsfs_v4=false
+check_fsx=false
check_bdb=false
while [ ! -z "$1" ]; do
case "$1" in
- local) check_local=true;;
- svn) check_svn=true;;
- dav) check_dav=true;;
- fsfs) check_fsfs=true;;
- bdb) check_bdb=true;;
- *) exit 1;;
+ local) check_local=true;;
+ svn) check_svn=true;;
+ dav) check_dav=true;;
+ fsfs) check_fsfs=true;;
+ fsfs-v6) check_fsfs_v6=true;;
+ fsfs-v4) check_fsfs_v4=true;;
+ fsx) check_fsx=true;;
+ bdb) check_bdb=true;;
+ *) exit 1;;
esac
shift
done
-# Create a directory for the test log files
-if [ -d "${abssrc}/.test-logs" ]; then
- rm -fr "${abssrc}/.test-logs"
-fi
-mkdir "${abssrc}/.test-logs" || exit 1
-
-
-${check_local} && {
- ${check_fsfs} && run_tests local fsfs
- ${check_bdb} && run_tests local bdb
-}
-
-${check_svn} && {
- ${check_fsfs} && run_tests svn fsfs
- ${check_bdb} && run_tests svn bdb
-}
-
-${check_dav} && {
- ${check_fsfs} && run_tests dav fsfs
- ${check_bdb} && run_tests dav bdb
-}
+${check_local} && check_tests local
+${check_svn} && check_tests svn
+${check_dav} && check_tests dav
exit 0