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


Reply via email to