subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject svn commit: r1479901 [1/7] - in /subversion/branches/wc-collate-path: ./ build/ac-macros/ build/generator/ build/generator/templates/ contrib/server-side/fsfsfixer/ contrib/server-side/fsfsfixer/fixer/ subversion/bindings/ctypes-python/ subversion/bind...
Date Tue, 07 May 2013 13:26:27 GMT
Author: brane
Date: Tue May  7 13:26:25 2013
New Revision: 1479901

URL: http://svn.apache.org/r1479901
Log:
Sync wc-collate-path branch with trunk up to r1479898.

Added:
    subversion/branches/wc-collate-path/.ycm_extra_conf.py
      - copied unchanged from r1479898, subversion/trunk/.ycm_extra_conf.py
    subversion/branches/wc-collate-path/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_nonroot.tar.bz2
      - copied unchanged from r1479898, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_nonroot.tar.bz2
    subversion/branches/wc-collate-path/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_nonroot1_6.tar.bz2
      - copied unchanged from r1479898, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_nonroot1_6.tar.bz2
    subversion/branches/wc-collate-path/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_root.tar.bz2
      - copied unchanged from r1479898, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_root.tar.bz2
    subversion/branches/wc-collate-path/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_root1_6.tar.bz2
      - copied unchanged from r1479898, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/iprops_upgrade_root1_6.tar.bz2
Removed:
    subversion/branches/wc-collate-path/tools/server-side/svnpubsub/notes/
Modified:
    subversion/branches/wc-collate-path/   (props changed)
    subversion/branches/wc-collate-path/CHANGES
    subversion/branches/wc-collate-path/COMMITTERS
    subversion/branches/wc-collate-path/Makefile.in
    subversion/branches/wc-collate-path/build/ac-macros/apache.m4
    subversion/branches/wc-collate-path/build/generator/extractor.py
    subversion/branches/wc-collate-path/build/generator/gen_base.py
    subversion/branches/wc-collate-path/build/generator/templates/build-outputs.mk.ezt
    subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fix-repo
    subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/find_good_id.py
    subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fix-rev.py
    subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fixer_config.py
    subversion/branches/wc-collate-path/get-deps.sh   (contents, props changed)
    subversion/branches/wc-collate-path/subversion/bindings/ctypes-python/setup.py
    subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java
    subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java
    subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_containers.swg
    subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_types.swg
    subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
    subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
    subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Client.pm
    subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Core.pm
    subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/t/3client.t
    subversion/branches/wc-collate-path/subversion/bindings/swig/svn_client.i
    subversion/branches/wc-collate-path/subversion/include/private/svn_client_private.h
    subversion/branches/wc-collate-path/subversion/include/private/svn_ra_svn_private.h
    subversion/branches/wc-collate-path/subversion/include/private/svn_sqlite.h
    subversion/branches/wc-collate-path/subversion/include/svn_config.h
    subversion/branches/wc-collate-path/subversion/include/svn_fs.h
    subversion/branches/wc-collate-path/subversion/include/svn_io.h
    subversion/branches/wc-collate-path/subversion/include/svn_repos.h
    subversion/branches/wc-collate-path/subversion/include/svn_string.h
    subversion/branches/wc-collate-path/subversion/libsvn_client/log.c
    subversion/branches/wc-collate-path/subversion/libsvn_client/merge.c
    subversion/branches/wc-collate-path/subversion/libsvn_client/mergeinfo.c
    subversion/branches/wc-collate-path/subversion/libsvn_client/ra.c
    subversion/branches/wc-collate-path/subversion/libsvn_client/repos_diff.c
    subversion/branches/wc-collate-path/subversion/libsvn_delta/compose_delta.c
    subversion/branches/wc-collate-path/subversion/libsvn_fs/fs-loader.c
    subversion/branches/wc-collate-path/subversion/libsvn_fs/fs-loader.h
    subversion/branches/wc-collate-path/subversion/libsvn_fs_base/fs.c
    subversion/branches/wc-collate-path/subversion/libsvn_fs_fs/fs.c
    subversion/branches/wc-collate-path/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/wc-collate-path/subversion/libsvn_ra_serf/commit.c
    subversion/branches/wc-collate-path/subversion/libsvn_ra_serf/update.c
    subversion/branches/wc-collate-path/subversion/libsvn_ra_svn/marshal.c
    subversion/branches/wc-collate-path/subversion/libsvn_repos/authz.c
    subversion/branches/wc-collate-path/subversion/libsvn_repos/dump.c
    subversion/branches/wc-collate-path/subversion/libsvn_repos/fs-wrap.c
    subversion/branches/wc-collate-path/subversion/libsvn_repos/hooks.c
    subversion/branches/wc-collate-path/subversion/libsvn_repos/repos.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/cache-inprocess.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/cache-memcache.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/cache.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/cache.h
    subversion/branches/wc-collate-path/subversion/libsvn_subr/config.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/config_file.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/config_impl.h
    subversion/branches/wc-collate-path/subversion/libsvn_subr/deprecated.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/error.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/stream.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/string.c
    subversion/branches/wc-collate-path/subversion/libsvn_subr/subst.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/adm_ops.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/conflicts.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/entries.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/props.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/update_editor.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/upgrade.c
    subversion/branches/wc-collate-path/subversion/libsvn_wc/wc-metadata.sql
    subversion/branches/wc-collate-path/subversion/libsvn_wc/workqueue.h
    subversion/branches/wc-collate-path/subversion/po/de.po
    subversion/branches/wc-collate-path/subversion/po/sv.po
    subversion/branches/wc-collate-path/subversion/svn/cl.h
    subversion/branches/wc-collate-path/subversion/svn/conflict-callbacks.c
    subversion/branches/wc-collate-path/subversion/svn/diff-cmd.c
    subversion/branches/wc-collate-path/subversion/svn/log-cmd.c
    subversion/branches/wc-collate-path/subversion/svn/notify.c
    subversion/branches/wc-collate-path/subversion/svn/propedit-cmd.c
    subversion/branches/wc-collate-path/subversion/svn/props.c
    subversion/branches/wc-collate-path/subversion/svn/propset-cmd.c
    subversion/branches/wc-collate-path/subversion/svn/resolve-cmd.c
    subversion/branches/wc-collate-path/subversion/svn/svn.c
    subversion/branches/wc-collate-path/subversion/svn/util.c
    subversion/branches/wc-collate-path/subversion/svnadmin/svnadmin.c
    subversion/branches/wc-collate-path/subversion/svnlook/svnlook.c
    subversion/branches/wc-collate-path/subversion/svnserve/serve.c
    subversion/branches/wc-collate-path/subversion/svnserve/svnserve.c
    subversion/branches/wc-collate-path/subversion/tests/cmdline/authz_tests.py
    subversion/branches/wc-collate-path/subversion/tests/cmdline/diff_tests.py
    subversion/branches/wc-collate-path/subversion/tests/cmdline/log_tests.py
    subversion/branches/wc-collate-path/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/wc-collate-path/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/wc-collate-path/subversion/tests/libsvn_delta/random-test.c
    subversion/branches/wc-collate-path/subversion/tests/libsvn_delta/range-index-test.h
    subversion/branches/wc-collate-path/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/wc-collate-path/subversion/tests/libsvn_fs_fs/fs-pack-test.c
    subversion/branches/wc-collate-path/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/wc-collate-path/subversion/tests/libsvn_subr/cache-test.c
    subversion/branches/wc-collate-path/subversion/tests/libsvn_subr/config-test.c
    subversion/branches/wc-collate-path/subversion/tests/libsvn_subr/config-test.cfg
    subversion/branches/wc-collate-path/subversion/tests/libsvn_wc/conflict-data-test.c
    subversion/branches/wc-collate-path/tools/dev/aprerr.txt
    subversion/branches/wc-collate-path/tools/dev/build-svn-deps-win.pl
    subversion/branches/wc-collate-path/tools/dev/remove-trailing-whitespace.sh
    subversion/branches/wc-collate-path/tools/dev/unix-build/Makefile.svn
    subversion/branches/wc-collate-path/tools/dev/which-error.py
    subversion/branches/wc-collate-path/tools/dist/backport.pl
    subversion/branches/wc-collate-path/tools/dist/release.py
    subversion/branches/wc-collate-path/tools/server-side/mod_dontdothat/mod_dontdothat.c

Propchange: subversion/branches/wc-collate-path/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue May  7 13:26:25 2013
@@ -52,3 +52,4 @@ serf
 gtest
 .git
 .gitignore
+compile_commands.json

Propchange: subversion/branches/wc-collate-path/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1470282-1479898
  Merged /subversion/branches/cache-server:r1458643-1476567

Modified: subversion/branches/wc-collate-path/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/CHANGES?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/CHANGES (original)
+++ subversion/branches/wc-collate-path/CHANGES Tue May  7 13:26:25 2013
@@ -8,6 +8,7 @@ http://svn.apache.org/repos/asf/subversi
   - Major new features:
 
   - Minor new features and improvements:
+    * new 'diff-ignore-content-type' runtime configuration option.
 
   - Client-side bugfixes:
 
@@ -80,13 +81,14 @@ http://svn.apache.org/repos/asf/subversi
 
   - Server-side bugfixes:
     * SVNParentPath / repository listing now authz-filtered (r1408184)
+    * user and group names in the authz config file are case-sensitive (r1475772)
 
   - Other tool improvements and bugfixes:
     * 'svnmucc' promoted to first-class supported utility (issue #3308)
   
  Developer-visible changes:
   - General:
-    * Now require Python 2.5 for tests and dev tools (r1243627)
+    * now require Python 2.5 for tests and dev tools (r1243627)
     * configure defaults to --without-apache-libexecdir (r1469862)
 
   - API changes:

Modified: subversion/branches/wc-collate-path/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/COMMITTERS?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/COMMITTERS [UTF-8] (original)
+++ subversion/branches/wc-collate-path/COMMITTERS [UTF-8] Tue May  7 13:26:25 2013
@@ -1,4 +1,4 @@
-The following people have commit access to the Subversion sources.
+The following people have commit access to the Subversion sources.
 Note that this is not a full list of Subversion's authors, however --
 for that, you'd need to look over the log messages to see all the
 patch contributors.
@@ -96,6 +96,7 @@ Commit access for specific areas:
     jrvernooij   Jelmer Vernooij <jelmer@samba.org>          (Python bindings)
           sage   Sage LaTorra <sagelt@gmail.com>             (Ctypes-Python b.)
           vmpn   Vladimir Berezniker <vmpn@hitechman.com>    (JavaHL bindings)
+       rschupp   Roderich Schupp <roderich.schupp@gmail.com> (Swig bindings)
 
   Packages:
 
@@ -186,6 +187,7 @@ giorgio_valoti   Giorgio Valoti <giorgio
                                                              IS BOUNCING]
         fabien   Fabien Coelho <fabien@coelho.net>           (po: fr)
        marcelg   Marcel Gosselin <marcel.gosselin@polymtl.ca> (po: fr)
+      mattiase   Mattias Engdegård <mattiase@acm.org>        (po: sv)
 
   Experimental branches:
 

Modified: subversion/branches/wc-collate-path/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/Makefile.in?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/Makefile.in (original)
+++ subversion/branches/wc-collate-path/Makefile.in Tue May  7 13:26:25 2013
@@ -398,7 +398,6 @@ locale-gnu-po-update:
 fast-clean: doc-clean
 	@list='$(BUILD_DIRS)'; for i in $$list; do                   \
           if [ -d $$i ]; then                                        \
-            echo "Cleaning $$i ..." ;                                \
             (cd $$i && rm -f *.o *.lo *.la *.la-a *.spo *.mo &&      \
              rm -rf .libs);                                          \
           fi                                                         \
@@ -571,6 +570,15 @@ svnsshcheck: bin $(TEST_DEPS) @BDB_TEST_
 bdbcheck: bin $(TEST_DEPS) @BDB_TEST_DEPS@
 	@$(MAKE) check FS_TYPE=bdb
 
+# Produce the clang compilation database as the compile_commands.json file
+# in the srcdir.  This is used by tools such as the YouCompleteMe vim plugin
+# to know the compile flags for various source files so that analysis such
+# as syntax checking, static analysis or symbol completion can be done
+# outside the build system.  To do this it uses the tool called bear:
+# https://github.com/rizsotto/Bear
+compile-commands:
+	@bear -o $(abs_srcdir)/compile_commands.json -- $(MAKE) all
+
 # Create an execution coverage report from the data collected during
 # all execution since the last reset.
 gcov:
@@ -588,8 +596,10 @@ gcov-clean:
 	find . -name "*.gcda" -o -name "*.gcno" -print0 | xargs -0 rm -f --
 
 check-clean: gcov-clean
-	find subversion/tests/cmdline/svn-test-work -mindepth 1 -maxdepth 1 \
+	if [ -d subversion/tests/cmdline/svn-test-work ]; then \
+	  find subversion/tests/cmdline/svn-test-work -mindepth 1 -maxdepth 1 \
                -print0 | xargs -0 rm -rf --;   \
+	fi
 	rm -rf subversion/tests/libsvn_fs/test-repo-*          \
 	       subversion/tests/libsvn_fs_base/test-repo-*     \
 	       subversion/tests/libsvn_fs_fs/test-repo-*       \
@@ -880,10 +890,16 @@ check-ctypes-python: ctypes-python
 	cd $(CTYPES_PYTHON_SRC_DIR); \
 	  $(LT_EXECUTE) $(PYTHON) test/run_all.py
 
+# If any of those files exists, run ctypes' 'setup.py clean'.  We don't run
+# it otherwise because it spams stdout+stderr; see r1479326.
 clean-ctypes-python:
-	cd $(CTYPES_PYTHON_SRC_DIR); \
-	  $(PYTHON) setup.py clean --all
-
+	cd $(CTYPES_PYTHON_SRC_DIR);            \
+	  for b in build csvn/core/functions.py svn_all.py svn_all2.py ; do \
+	    if [ -e "$$b" ] ; then              \
+	      $(PYTHON) setup.py clean --all;   \
+	      break;                            \
+	    fi;                                 \
+	  done
 
 # manually describe a dependency, which we won't otherwise detect
 subversion/libsvn_wc/wc-queries.h: $(abs_srcdir)/subversion/libsvn_wc/wc-metadata.sql

Modified: subversion/branches/wc-collate-path/build/ac-macros/apache.m4
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/build/ac-macros/apache.m4?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/build/ac-macros/apache.m4 (original)
+++ subversion/branches/wc-collate-path/build/ac-macros/apache.m4 Tue May  7 13:26:25 2013
@@ -121,7 +121,7 @@ fi
 AC_ARG_WITH(apache-libexecdir,
             [AS_HELP_STRING([[--with-apache-libexecdir[=PATH]]],
                             [Install Apache modules to Apache's configured
-                             modules directory instead of LIBEXECDIIR;
+                             modules directory instead of LIBEXECDIR;
                              if PATH is given, install to PATH.])],
 [APACHE_LIBEXECDIR="$withval"],[APACHE_LIBEXECDIR='no'])
 

Modified: subversion/branches/wc-collate-path/build/generator/extractor.py
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/build/generator/extractor.py?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/build/generator/extractor.py (original)
+++ subversion/branches/wc-collate-path/build/generator/extractor.py Tue May  7 13:26:25 2013
@@ -57,13 +57,6 @@ _filter_names = [
   'svn_auth_kwallet_version',
   'svn_auth_get_gpg_agent_simple_provider',
   'svn_auth_gpg_agent_version',
-  # -DSVN_FS_INFO:
-  'svn_repos_capabilities',
-  'svn_repos_info_format',
-  'svn_fs_info_format',
-  'svn_fs_info_config_files',
-  'svn_fs_info',
-  'svn_fs_info_dup',
   ]
 
 if __name__ == '__main__':

Modified: subversion/branches/wc-collate-path/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/build/generator/gen_base.py?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/build/generator/gen_base.py (original)
+++ subversion/branches/wc-collate-path/build/generator/gen_base.py Tue May  7 13:26:25 2013
@@ -241,9 +241,18 @@ class GeneratorBase:
 
   @staticmethod
   def write_errno_table():
+    # ### We generate errorcode.inc at autogen.sh time (here!).
+    # ###
+    # ### Currently it's only used by maintainer-mode builds.  If this
+    # ### functionality ever moves to release builds, it will have to move
+    # ### to configure-time.  (But then you have to solve two problems:
+    # ### what to do on windows, and what to do on unix when Python is not
+    # ### available at configure-time.)
     import errno
     fd = open('subversion/libsvn_subr/errorcode.inc', 'w')
     fd.write('/* This file was generated by build/generator/gen_base.py */\n\n')
+
+    ## write errno codes.
     fd.write('static struct {\n'
              '  int errcode;\n'
              '  const char *errname;\n'
@@ -253,6 +262,31 @@ class GeneratorBase:
     # fd.seek(-2, os.SEEK_CUR); fd.write('\n');
     fd.write('};\n')
 
+    fd.write('\n')
+
+    ## write apr error codes.
+    fd.write('static struct {\n'
+             '  int errcode;\n'
+             '  const char *errname;\n'
+             '} svn__apr_errno[] = {\n');
+    aprerr = []
+    for line in open(os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),
+                                  'tools', 'dev', 'aprerr.txt')):
+      # aprerr.txt parsing duplicated in which-error.py
+      if line.startswith('#'):
+         continue
+      key, _, val = line.split()
+      aprerr += [(int(val), key)]
+    for num, val in sorted(aprerr):
+      fd.write('  { %d, "%s" },\n' % (num, val))
+    # fd.seek(-2, os.SEEK_CUR); fd.write('\n');
+    fd.write('};\n')
+
+    ## sanity check
+    intersection = set(errno.errorcode.keys()) & set(dict(aprerr).keys())
+    if intersection:
+        print("WARNING: errno intersects APR error codes: %r" % intersection)
+
 class DependencyGraph:
   """Record dependencies between build items.
 

Modified: subversion/branches/wc-collate-path/build/generator/templates/build-outputs.mk.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/build/generator/templates/build-outputs.mk.ezt?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/build/generator/templates/build-outputs.mk.ezt (original)
+++ subversion/branches/wc-collate-path/build/generator/templates/build-outputs.mk.ezt Tue May  7 13:26:25 2013
@@ -44,7 +44,9 @@ check-deps test-deps: [for test_helpers]
 MANPAGES =[for manpages] [manpages][end]
 
 CLEAN_FILES =[for cfiles] [cfiles][end]
-EXTRACLEAN_FILES =[for sql] [sql.header][end]
+EXTRACLEAN_FILES =[for sql] [sql.header][end] \
+  $(abs_builddir)/subversion/libsvn_subr/errorcode.inc \
+  $(abs_srcdir)/compile_commands.json
 
 SWIG_INCLUDES = -I$(abs_builddir)/subversion \
   -I$(abs_srcdir)/subversion/include \

Modified: subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fix-repo
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fix-repo?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fix-repo (original)
+++ subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fix-repo Tue May  7 13:26:25 2013
@@ -1,6 +1,6 @@
 #!/bin/sh
-USAGE="Fix some kinds of corruption in a Subversion repository
-by running './fixer/fix-rev.py' on each revision.
+USAGE="Fix some kinds of corruption in a Subversion FSFS repository.
+This script runs './fixer/fix-rev.py' on each revision.
 Usage: $0 REPO-DIR START-REV
 
 Backup your repository before running these scripts."

Modified: subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/find_good_id.py
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/find_good_id.py?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/find_good_id.py (original)
+++ subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/find_good_id.py Tue May  7 13:26:25 2013
@@ -1,12 +1,5 @@
 #!/usr/bin/env python
 
-# PER-REPOSITORY CONFIGURATION
-#
-# The number of revs per shard of the repository being accessed, or None if
-# it is not sharded.
-# TODO: Read this from the db/format file.
-REVS_PER_SHARD=None
-
 usage = """
 Print the correct FSFS node-rev id, given one that is correct except for
 its byte-offset part.
@@ -21,6 +14,7 @@ Example:
 """
 
 import os, sys
+from fixer_config import *
 
 class FixError(Exception):
   """An exception for any kind of inablility to repair the repository."""

Modified: subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fix-rev.py
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fix-rev.py?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fix-rev.py (original)
+++ subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fix-rev.py Tue May  7 13:26:25 2013
@@ -210,7 +210,7 @@ def fix_one_error(repo_dir, rev):
     if handle_one_error(repo_dir, rev, svnlook_err):
       return True
 
-  raise FixError("unfixable error:\n  " + "\n  ".join(svnadmin_err))
+  raise FixError("unrecognized error message, and so unable to fix:\n  " + "\n  ".join(svnadmin_err))
 
 def check_formats(repo_dir):
   """Check that REPO_DIR isn't newer than we know how to handle."""

Modified: subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fixer_config.py
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fixer_config.py?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fixer_config.py (original)
+++ subversion/branches/wc-collate-path/contrib/server-side/fsfsfixer/fixer/fixer_config.py Tue May  7 13:26:25 2013
@@ -8,3 +8,17 @@ SVNLOOK = 'svnlook'
 
 # Verbosity: True for verbose, or False for quiet
 VERBOSE = True
+
+# PER-REPOSITORY CONFIGURATION
+
+# The number of revs per shard of the repository being accessed, or 'None'
+# for a linear (that is, non-sharded) layout.  This is 1000 for almost all
+# repositories in practice.
+#
+# The correct value can be found in the 'db/format' file in the repository.
+# The second line of that file will say something like 'layout sharded 1000'
+# or 'layout linear'.
+#
+# TODO: Read this value automatically from the db/format file.
+REVS_PER_SHARD=1000
+

Modified: subversion/branches/wc-collate-path/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/get-deps.sh?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/get-deps.sh (original)
+++ subversion/branches/wc-collate-path/get-deps.sh Tue May  7 13:26:25 2013
@@ -23,10 +23,18 @@
 # get-deps.sh -- download the dependencies useful for building Subversion
 #
 
+# If changing this file please take care to try to make your changes as
+# portable as possible.  That means at a minimum only use POSIX supported
+# features and functions.  However, it may be desirable to use an even
+# more narrow set of features than POSIX, e.g. Solaris /bin/sh only has
+# a subset of the POSIX shell features.  If in doubt, limit yourself to
+# features already used in the file.  Reviewing the history of changes
+# may be useful as well.
+
 APR=apr-1.4.6
 APR_UTIL=apr-util-1.5.1
 SERF=serf-1.2.0
-ZLIB=zlib-1.2.7
+ZLIB=zlib-1.2.8
 SQLITE_VERSION=3.7.15.1
 SQLITE_VERSION_LIST=`echo $SQLITE_VERSION | sed -e 's/\./ /g'`
 SQLITE=sqlite-amalgamation-`printf %d%02d%02d%02d $SQLITE_VERSION_LIST`
@@ -86,10 +94,10 @@ get_zlib() {
     test -d $BASEDIR/zlib && return
 
     cd $TEMPDIR
-    $HTTP_FETCH http://www.zlib.net/$ZLIB.tar.bz2
+    $HTTP_FETCH http://www.zlib.net/$ZLIB.tar.gz
     cd $BASEDIR
 
-    bzip2 -dc $TEMPDIR/$ZLIB.tar.bz2 | tar -xf -
+    gzip -dc $TEMPDIR/$ZLIB.tar.gz | tar -xf -
 
     mv $ZLIB zlib
 }

Propchange: subversion/branches/wc-collate-path/get-deps.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/wc-collate-path/subversion/bindings/ctypes-python/setup.py
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/ctypes-python/setup.py?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/ctypes-python/setup.py (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/ctypes-python/setup.py Tue May  7 13:26:25 2013
@@ -58,7 +58,7 @@ class clean(_clean):
         if not self.dry_run:
           os.remove(f)
       else:
-        log.warn("'%s' does not exist -- can't clean it", os.path.normpath(f))
+        log.debug("'%s' does not exist -- can't clean it", os.path.normpath(f))
 
     # Run standard clean command
     _clean.run(self)

Modified: subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java Tue May  7 13:26:25 2013
@@ -51,7 +51,11 @@ public class LogDate implements java.io.
         {
             throw new ParseException("String is not a valid Subversion date", 0);
         }
-        Date date = formatter.parse(datestr.substring(0, 23) + " UTC");
+        Date date;
+        synchronized(formatter)
+        {
+            date = formatter.parse(datestr.substring(0, 23) + " UTC");
+        }
         this.cachedString = datestr;
         cachedDate = Calendar.getInstance(UTC);
         cachedDate.setTime(date);

Modified: subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java Tue May  7 13:26:25 2013
@@ -53,7 +53,11 @@ public class LogDate implements java.io.
         {
             throw new ParseException("String is not a valid Subversion date", 0);
         }
-        Date date = formatter.parse(datestr.substring(0, 23) + " UTC");
+        Date date;
+        synchronized(formatter)
+        {
+            date = formatter.parse(datestr.substring(0, 23) + " UTC");
+        }
         this.cachedString = datestr;
         cachedDate = Calendar.getInstance(UTC);
         cachedDate.setTime(date);

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_containers.swg?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_containers.swg Tue May  7 13:26:25 2013
@@ -266,6 +266,13 @@
 #endif
 
 #ifdef SWIGPERL
+%typemap(in) apr_hash_t *PROPHASH
+  (apr_pool_t *_global_pool = NULL)
+{
+  if (_global_pool == NULL)
+    _global_pool = svn_swig_pl_make_pool((SV *)NULL);
+  $1 = svn_swig_pl_hash_to_prophash($input, _global_pool);  
+}
 %typemap(out) apr_hash_t *PROPHASH
 {
   %append_output(svn_swig_pl_prophash_to_hash($1));
@@ -777,6 +784,12 @@
 }
 #endif
 
+#ifdef SWIGPERL
+%typemap(in) apr_array_header_t *REVISION_RANGE_LIST {
+  $1 = svn_swig_pl_array_to_apr_array_revision_range($input, _global_pool);
+}
+#endif
+
 #ifdef SWIGRUBY
 %typemap(in) apr_array_header_t *REVISION_RANGE_LIST {
   $1 = svn_swig_rb_array_to_apr_array_revision_range($input, _global_pool);

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_types.swg?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/include/svn_types.swg Tue May  7 13:26:25 2013
@@ -1173,7 +1173,7 @@ svn_ ## TYPE ## _swig_rb_closed(VALUE se
 */
 #ifdef SWIGPERL
 %typemap(in) svn_opt_revision_t * (svn_opt_revision_t rev) {
-    $1 = svn_swig_pl_set_revision(&rev, $input);
+  $1 = svn_swig_pl_set_revision(&rev, $input, TRUE);
 }
 #endif
 

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Tue May  7 13:26:25 2013
@@ -98,6 +98,71 @@ static void *convert_pl_revnum_t(SV *val
   return (void *)result;
 }
 
+static void *convert_pl_svn_string_t(SV *value, void *dummy, apr_pool_t *pool)
+{
+    svn_string_t *result = apr_palloc(pool, sizeof(svn_string_t));
+    /* just the in typemap for svn_string_t */
+    result->data = SvPV(value, result->len);
+    return (void *)result;
+}
+
+/* Convert a revision range and return a svn_opt_revision_range_t*.
+ * Value can be:
+ * - a _p_svn_opt_revision_range_t object
+ * - a reference to a two-element array, [start, end],
+ *   where start and end is anything accepted by svn_swig_pl_set_revision
+ * If value is not acceptable and *(svn_boolean_t *)ctx is FALSE,
+ * convert_pl_revision_range returns NULL, otherwise it croak()s.
+ */
+static void *convert_pl_revision_range(SV *value, void *ctx, apr_pool_t *pool)
+{
+    svn_boolean_t croak_on_error = *(svn_boolean_t *)ctx;
+
+    if (sv_isobject(value) && sv_derived_from(value, "_p_svn_opt_revision_range_t")) {
+        svn_opt_revision_range_t *range;
+        /* this will assign to range */
+        SWIG_ConvertPtr(value, (void **)&range, _SWIG_TYPE("svn_opt_revision_range_t *"), 0);
+        return range;
+    } 
+
+    if (SvROK(value) 
+        && SvTYPE(SvRV(value)) == SVt_PVAV
+        && av_len((AV *)SvRV(value)) == 1) {    
+        /* value is a two-element ARRAY */
+        AV* array = (AV *)SvRV(value);
+        svn_opt_revision_t temp_start, temp_end;
+        svn_opt_revision_t *start, *end;
+        svn_opt_revision_range_t *range;
+
+        /* Note: Due to how svn_swig_pl_set_revision works,
+         * either the passed in svn_opt_revision_t is modified
+         * (and the original pointer returned) or a different pointer 
+         * is returned. svn_swig_pl_set_revision may return NULL
+         * only if croak_on_error is FALSE.
+         */
+        start = svn_swig_pl_set_revision(&temp_start, 
+                                         *av_fetch(array, 0, 0), croak_on_error);
+        if (start == NULL)
+            return NULL;
+        end = svn_swig_pl_set_revision(&temp_end, 
+                                       *av_fetch(array, 1, 0), croak_on_error);
+        if (end == NULL)
+            return NULL;
+
+        /* allocate a new range and copy in start and end fields */
+        range = apr_palloc(pool, sizeof(*range));
+        range->start = *start;
+        range->end = *end;
+        return range;
+    } 
+
+    if (croak_on_error)
+        croak("unknown revision range: "
+              "must be an array of length 2 whose elements are acceptable "
+              "as opt_revision_t or a _p_svn_opt_revision_range_t object");
+    return NULL;
+}
+
 /* perl -> c hash convertors */
 static apr_hash_t *svn_swig_pl_to_hash(SV *source,
                                        pl_element_converter_t cv,
@@ -156,6 +221,11 @@ apr_hash_t *svn_swig_pl_objs_to_hash_of_
                              NULL, pool);
 }
 
+apr_hash_t *svn_swig_pl_hash_to_prophash(SV *source, apr_pool_t *pool)
+{
+  return svn_swig_pl_to_hash(source, convert_pl_svn_string_t, NULL, pool);
+}
+
 /* perl -> c array convertors */
 static const
 apr_array_header_t *svn_swig_pl_to_array(SV *source,
@@ -204,6 +274,37 @@ const apr_array_header_t *svn_swig_pl_ob
                               tinfo, pool);
 }
 
+/* Convert a single revision range or an array of revisions ranges
+ * Note: We can't simply use svn_swig_pl_to_array() as is, since 
+ * it immediatley checks whether source is an array reference and then
+ * proceeds to treat this as the "array of ..." case. But a revision range
+ * may be specified as a (two-element) array. Hence we first try to
+ * convert source as a single revision range. Failing that and if it's
+ * an array we then call svn_swig_pl_to_array(). Otherwise we croak().
+ */
+const apr_array_header_t *svn_swig_pl_array_to_apr_array_revision_range(
+        SV *source, apr_pool_t *pool)
+{
+    svn_boolean_t croak_on_error = FALSE;
+    svn_opt_revision_range_t *range;
+
+    if (range = convert_pl_revision_range(source, &croak_on_error, pool)) {
+        apr_array_header_t *temp = apr_array_make(pool, 1, 
+                                                  sizeof(svn_opt_revision_range_t *));
+        temp->nelts = 1;
+        APR_ARRAY_IDX(temp, 0, svn_opt_revision_range_t *) = range;
+        return temp;
+    }
+
+    if (SvROK(source) && SvTYPE(SvRV(source)) == SVt_PVAV) {
+        croak_on_error = TRUE;
+        return svn_swig_pl_to_array(source, convert_pl_revision_range, 
+                                    &croak_on_error, pool);
+    }
+
+    croak("must pass a single revision range or a reference to an array of revision ranges");
+}
+
 /* element convertors for c -> perl */
 typedef SV *(*element_converter_t)(void *value, void *ctx);
 
@@ -316,8 +417,13 @@ SV *svn_swig_pl_revnums_to_list(const ap
 }
 
 /* perl -> c svn_opt_revision_t conversion */
-svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source)
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, 
+                                             SV *source, 
+                                             svn_boolean_t croak_on_error)
 {
+#define maybe_croak(argv) do { if (croak_on_error) croak argv; \
+                               else return NULL; } while (0)
+
     if (source == NULL || source == &PL_sv_undef || !SvOK(source)) {
         rev->kind = svn_opt_revision_unspecified;
     }
@@ -348,33 +454,34 @@ svn_opt_revision_t *svn_swig_pl_set_revi
 
             char *end = strchr(input,'}');
             if (!end)
-                croak("unknown opt_revision_t string \"%s\": "
-                      "missing closing brace for \"{DATE}\"", input);
+                maybe_croak(("unknown opt_revision_t string \"%s\": "
+                             "missing closing brace for \"{DATE}\"", input));
             *end = '\0';
             err = svn_parse_date (&matched, &tm, input + 1, apr_time_now(),
                                   svn_swig_pl_make_pool ((SV *)NULL));
             if (err) {
                 svn_error_clear (err);
-                croak("unknown opt_revision_t string \"{%s}\": "
-                      "internal svn_parse_date error", input + 1);
+                maybe_croak(("unknown opt_revision_t string \"{%s}\": "
+                             "internal svn_parse_date error", input + 1));
             }
             if (!matched)
-                croak("unknown opt_revision_t string \"{%s}\": "
-                      "svn_parse_date failed to parse it", input + 1);
+                maybe_croak(("unknown opt_revision_t string \"{%s}\": "
+                             "svn_parse_date failed to parse it", input + 1));
 
             rev->kind = svn_opt_revision_date;
             rev->value.date = tm;
         } else
-            croak("unknown opt_revision_t string \"%s\": must be one of "
-                  "\"BASE\", \"HEAD\", \"WORKING\", \"COMMITTED\", "
-                  "\"PREV\" or a \"{DATE}\"", input);
+            maybe_croak(("unknown opt_revision_t string \"%s\": must be one of "
+                         "\"BASE\", \"HEAD\", \"WORKING\", \"COMMITTED\", "
+                         "\"PREV\" or a \"{DATE}\"", input));
     } else
-        croak("unknown opt_revision_t type: must be undef, a number, "
-              "a string (one of \"BASE\", \"HEAD\", \"WORKING\", "
-              "\"COMMITTED\", \"PREV\" or a \"{DATE}\") "
-              "or a _p_svn_opt_revision_t object");
+        maybe_croak(("unknown opt_revision_t type: must be undef, a number, "
+                     "a string (one of \"BASE\", \"HEAD\", \"WORKING\", "
+                     "\"COMMITTED\", \"PREV\" or a \"{DATE}\") "
+                     "or a _p_svn_opt_revision_t object"));
 
     return rev;
+#undef maybe_croak
 }
 
 /* put the va_arg in stack and invoke caller_func with func.

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Tue May  7 13:26:25 2013
@@ -93,9 +93,12 @@ apr_hash_t *svn_swig_pl_objs_to_hash_by_
                                              apr_pool_t *pool);
 apr_hash_t *svn_swig_pl_objs_to_hash_of_revnum_t(SV *source,
                                                  apr_pool_t *pool);
+apr_hash_t *svn_swig_pl_hash_to_prophash(SV *source, apr_pool_t *pool);
 const apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
                                                     swig_type_info *tinfo,
                                                     apr_pool_t *pool);
+const apr_array_header_t *svn_swig_pl_array_to_apr_array_revision_range(
+        SV *source, apr_pool_t *pool);
 
 SV *svn_swig_pl_array_to_list(const apr_array_header_t *array);
 /* Formerly used by pre-1.0 APIs. Now unused
@@ -106,7 +109,9 @@ SV *svn_swig_pl_convert_array(const apr_
 
 SV *svn_swig_pl_revnums_to_list(const apr_array_header_t *array);
 
-svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, SV *source);
+svn_opt_revision_t *svn_swig_pl_set_revision(svn_opt_revision_t *rev, 
+                                             SV *source,
+                                             svn_boolean_t croak_on_error);
 
 /* thunked log_message receiver function.  */
 svn_error_t * svn_swig_pl_thunk_log_receiver(void *baton,

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Client.pm
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Client.pm?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Client.pm (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Client.pm Tue May  7 13:26:25 2013
@@ -12,8 +12,8 @@ BEGIN {
             checkout2 checkout update4 update3 update2 update switch2 switch
             add4 add3 add2 add mkdir4 mkdir3 mkdir2 mkdir delete3 delete2
             delete import3 import2 import commit4 commit3 commit2
-            commit status4 status3 status2 status log4 log3 log2 log blame4
-            blame3 blame2 blame diff4 diff3 diff2 diff diff_peg4
+            commit status4 status3 status2 status log5 log4 log3 log2 log 
+            blame4 blame3 blame2 blame diff4 diff3 diff2 diff diff_peg4
             diff_peg3 diff_peg2 diff_peg diff_summarize2
             diff_summarize diff_summarize_peg2 diff_summarize_peg
             merge3 merge2 merge merge_peg3 merge_peg2 merge_peg

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Core.pm
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Core.pm?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Core.pm (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/Core.pm Tue May  7 13:26:25 2013
@@ -703,6 +703,8 @@ use SVN::Base qw(Core svn_log_changed_pa
 
 =head2 svn_log_changed_path2_t
 
+An object to represent a path that changed for a log entry.
+
 =over 4
 
 =item $lcp-E<gt>action()
@@ -825,11 +827,56 @@ use SVN::Base qw(Core svn_opt_revision_t
 
 =head2 svn_opt_revision_t
 
+A revision, specified in one of C<SVN::Core::opt_revision_*> ways.
+
+=over 4
+
+=item $rev-E<gt>kind()
+
+An enum denoting how the revision C<$rev> was specified.  One of 
+C<$VN::Core::opt_revision_unspecified>,
+C<$VN::Core::opt_revision_number>,
+C<$VN::Core::opt_revision_date>,
+C<$VN::Core::opt_revision_committed>,
+C<$VN::Core::opt_revision_previous>,
+C<$VN::Core::opt_revision_base>,
+C<$VN::Core::opt_revision_working>
+or C<$SVN::Core::opt_revision_head>.
+
+=item $rev-E<gt>value()
+
+Extra data about the revision. Only relevant if C<$rev-E<gt>kind> is
+C<$VN::Core::opt_revision_number> (where it contains the revision number)
+or C<$VN::Core::opt_revision_date> (where it contains a date).
+
+=back
+
 =cut
 
 package _p_svn_opt_revision_value_t;
 use SVN::Base qw(Core svn_opt_revision_value_t_);
 
+package _p_svn_opt_revision_range_t;
+use SVN::Base qw(Core svn_opt_revision_range_t_);
+
+=head2 svn_opt_revision_range_t
+
+An object representing a range of revisions.
+
+=over 4
+
+=item $range-E<gt>start()
+
+The first revision in the range, a C<_p_svn_opt_revision_t> object.
+
+=item $range-E<gt>end()
+
+The last revision in the range, a C<_p_svn_opt_revision_t> object.
+
+=back
+
+=cut
+
 package _p_svn_config_t;
 use SVN::Base qw(Core svn_config_);
 

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/t/3client.t
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/t/3client.t?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/t/3client.t (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/perl/native/t/3client.t Tue May  7 13:26:25 2013
@@ -20,7 +20,7 @@
 #
 #
 
-use Test::More tests => 262;
+use Test::More tests => 297;
 use strict;
 
 # shut up about variables that are only used once.
@@ -382,7 +382,7 @@ sub test_log_message_receiver {
   isa_ok($pool,'_p_apr_pool_t',
          'pool param is _p_apr_pool_t');
 }
-
+ 
 # TEST  log range $current_rev:$current_rev
 is($ctx->log("$reposurl/dir1/new",$current_rev,$current_rev,1,0,
              \&test_log_message_receiver), 
@@ -410,35 +410,56 @@ $ctx->log3([ $reposurl, @new_paths ],
 });
 
 sub get_full_log {
-    my ($rev) = @_;
+    my ($start, $end) = @_;
     my @log;
-    $ctx->log($reposurl, $rev, 0, 0, 0, sub { 
-        my (undef, $revision, $author, $date, $msg, undef) = @_; 
-        push @log, [ $revision, $author, $date, $msg ];
+    $ctx->log($reposurl, $start, $end, 1, 0, sub { 
+        my ($changed_paths, $revision, $author, $date, $msg, undef) = @_; 
+        # "unpack" the values of the $changed_paths hash 
+        # (_p_svn_log_changed_path_t objects) so that
+        # we can use is_deeply() to compare results
+        my %hash;
+        while (my ($path, $changed) = each %$changed_paths) {
+            foreach (qw( action copyfrom_path copyfrom_rev )) {
+                $hash{$path}{$_} = $changed->$_()
+            }
+        }
+        push @log, [ \%hash, $revision, $author, $date, $msg ];
     });
     return \@log;
 }
 
 # TEST
+my $full_log = get_full_log('HEAD',1);
+is(scalar @$full_log, $current_rev, "history up to 'HEAD'");
+
+# TEST
 my $opt_revision_head = SVN::_Core::new_svn_opt_revision_t();
 $opt_revision_head->kind($SVN::Core::opt_revision_head);
-is_deeply(get_full_log($opt_revision_head),      # got
-          get_full_log('HEAD'));                 # expected
+is_deeply(get_full_log($opt_revision_head,1),   # got
+          $full_log,                            # expected
+          "history up to svn_opt_revision_t of kind head");
+
+# TEST
+is_deeply(get_full_log($current_rev,1),         # got
+          $full_log,                            # expected
+          "history up to number $current_rev");
+
 # TEST
 my $opt_revision_number = SVN::_Core::new_svn_opt_revision_t();
 $opt_revision_number->kind($SVN::Core::opt_revision_number);
 $opt_revision_number->value->number($current_rev);
-is_deeply(get_full_log($opt_revision_number),    # got
-          get_full_log($current_rev));           # expected
+is_deeply(get_full_log($opt_revision_number,1), # got
+          $full_log,                            # expected
+          "history up to svn_opt_revision_t of kind number and value $current_rev");
 
 sub test_log_entry_receiver {
   my ($log_entry,$pool) = @_;
   # TEST
   isa_ok($log_entry, '_p_svn_log_entry_t',
-         'log_entry param is a _p_svn_log_entry_t');
+         'log_entry param');
   # TEST
   isa_ok($pool,'_p_apr_pool_t',
-         'pool param is _p_apr_pool_t');
+         'pool param');
   # TEST
   is($log_entry->revision,$current_rev,
      'log_entry->revision matches current rev');
@@ -446,7 +467,7 @@ sub test_log_entry_receiver {
   my $revprops = $log_entry->revprops;
   # TEST
   isa_ok($revprops,'HASH',
-         'log_entry->revprops is a HASH');
+         'log_entry->revprops');
   # TEST
   is($revprops->{"svn:author"},$username,
      'svn:author revprop matches expected username');
@@ -459,11 +480,11 @@ sub test_log_entry_receiver {
   my $changed_paths = $log_entry->changed_paths2;
   # TEST
   isa_ok($changed_paths,'HASH',
-         'log_entry->changed_paths2 is a HASH');
+         'log_entry->changed_paths2');
   # TEST
   isa_ok($changed_paths->{'/dir1/new'},
          '_p_svn_log_changed_path2_t',
-         'Hash value is a _p_svn_log_changed_path2_t');
+         'log_entry->changed_paths2 value');
   # TEST
   is($changed_paths->{'/dir1/new'}->action(),'A',
      'action returns A for add');
@@ -495,6 +516,86 @@ is($ctx->log4("$reposurl/dir1/new",
    'log4 returns undef');
 
 # TEST
+is($ctx->log5("$reposurl/dir1/new",
+              'HEAD',[$current_rev,0],1, # peg rev, rev ranges, limit
+              1,1,0, # discover_changed_paths, strict_node_history, include_merged_revisions
+              undef, # revprops
+              \&test_log_entry_receiver), 
+   undef,
+   'log5 returns undef');
+
+# test the different forms to specify revision ranges
+sub get_revs {
+    my ($rev_ranges) = @_;
+    my @revs;
+    $ctx->log5($reposurl, 'HEAD', $rev_ranges, 0, 0, 0, 0, undef, sub { 
+        my ($log_entry,$pool) = @_;
+        push @revs, $log_entry->revision;
+    });
+    return \@revs;
+}
+
+my $top = SVN::_Core::new_svn_opt_revision_range_t();
+$top->start('HEAD');
+$top->end('HEAD');
+my $bottom = SVN::_Core::new_svn_opt_revision_range_t();
+$bottom->start(1);
+$bottom->end($current_rev-1);
+
+# TEST
+is_deeply(get_revs($top),   
+          [ $current_rev ], 'single svn_opt_revision_range_t');
+# TEST
+is_deeply(get_revs([$top]), 
+          [ $current_rev ], 'list of svn_opt_revision_range_t');
+# TEST
+is_deeply(get_revs(['HEAD', 'HEAD']),
+          [ $current_rev ], 'single [start, end]');
+# TEST
+is_deeply(get_revs([['HEAD', 'HEAD']]),
+          [ $current_rev ], 'list of [start, end]');
+# TEST
+is_deeply(get_revs([$current_rev, $current_rev]),
+          [ $current_rev ], 'single [start, end]');
+# TEST
+is_deeply(get_revs([[$current_rev, $current_rev]]),
+          [ $current_rev ], 'list of [start, end]');
+# TEST
+is_deeply(get_revs([1, 'HEAD']),
+          [ 1..$current_rev ], 'single [start, end]');
+# TEST
+is_deeply(get_revs([[1, 'HEAD']]),
+          [ 1..$current_rev ], 'list of [start, end]');
+# TEST
+is_deeply(get_revs([1, $opt_revision_head]),
+          [ 1..$current_rev ], 'single [start, end]');
+# TEST
+is_deeply(get_revs([[1, $opt_revision_head]]),
+          [ 1..$current_rev ], 'list of [start, end]');
+# TEST
+is_deeply(get_revs($bottom), 
+          [ 1..$current_rev-1 ], 'single svn_opt_revision_range_t');
+# TEST
+is_deeply(get_revs([$bottom]), 
+          [ 1..$current_rev-1 ], 'list of svn_opt_revision_range_t');
+# TEST
+is_deeply(get_revs([1, $current_rev-1]),
+          [ 1..$current_rev-1 ], 'single [start, end]');
+# TEST
+is_deeply(get_revs([[1, $current_rev-1]]),
+          [ 1..$current_rev-1 ], 'list of [start, end]');
+# TEST
+is_deeply(get_revs([[1, $current_rev-1], $top]),
+          [ 1..$current_rev ], 'mixed list of ranges');
+# TEST
+is_deeply(get_revs([$bottom, ['HEAD', 'HEAD']]),
+          [ 1..$current_rev ], 'mixed list of ranges');
+# TEST
+is_deeply(get_revs([$bottom, $top]),
+          [ 1..$current_rev ], 'mixed list of ranges');
+          
+
+# TEST
 is($ctx->update($wcpath,'HEAD',1),$current_rev,
    'Return from update is the current rev');
 
@@ -546,8 +647,7 @@ is($ctx->status($wcpath, undef, sub {
                                          ' the correct path.');
                                       # TEST
                                       isa_ok($wc_status,'_p_svn_wc_status_t',
-                                             'wc_stats param is a' .
-                                             ' _p_svn_wc_status_t');
+                                             'wc_stats param');
                                       # TEST
                                       is($wc_status->text_status(),
                                          $SVN::Wc::Status::normal,
@@ -868,7 +968,7 @@ my($pl) = $ctx->proplist($reposurl,$curr
 isa_ok($pl,'ARRAY','proplist returns an ARRAY');
 # TEST
 isa_ok($pl->[0], '_p_svn_client_proplist_item_t',
-       'array element is a _p_svn_client_proplist_item_t');
+       'proplist array element');
 # TEST
 is($pl->[0]->node_name(),"$reposurl/dir1",
    'node_name is the expected value');
@@ -959,8 +1059,7 @@ is($ctx->blame("$reposurl/foo",'HEAD','H
                                               }
                                               # TEST
                                               isa_ok($pool,'_p_apr_pool_t',
-                                                     'pool param is ' .
-                                                     '_p_apr_pool_t');
+                                                     'pool param');
                                             }),
    undef,
    'blame returns undef');
@@ -987,7 +1086,7 @@ my ($dirents) = $ctx->ls($reposurl,"$cur
 isa_ok($dirents, 'HASH','ls returns a HASH');
 # TEST
 isa_ok($dirents->{'dir1'},'_p_svn_dirent_t',
-       'hash value is a _p_svn_dirent_t');
+       'dirents hash value');
 # TEST
 is($dirents->{'dir1'}->kind(),$SVN::Core::node_dir,
    'kind() returns a dir node');

Modified: subversion/branches/wc-collate-path/subversion/bindings/swig/svn_client.i
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/bindings/swig/svn_client.i?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/bindings/swig/svn_client.i (original)
+++ subversion/branches/wc-collate-path/subversion/bindings/swig/svn_client.i Tue May  7 13:26:25 2013
@@ -64,12 +64,10 @@
 }
 #endif
 
-#if defined(SWIGRUBY) || defined(SWIGPYTHON)
 %apply apr_array_header_t *REVISION_RANGE_LIST {
   const apr_array_header_t *ranges_to_merge,
   const apr_array_header_t *revision_ranges
 }
-#endif
 
 #ifdef SWIGRUBY
 %apply const char *NOT_NULL {

Modified: subversion/branches/wc-collate-path/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/private/svn_client_private.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/private/svn_client_private.h Tue May  7 13:26:25 2013
@@ -291,6 +291,39 @@ svn_client__copy_foreign(const char *url
                          svn_client_ctx_t *ctx,
                          apr_pool_t *scratch_pool);
 
+/* Same as the public svn_client_mergeinfo_log2 API, except for the addition
+ * of the TARGET_MERGEINFO_CATALOG and RESULT_POOL parameters.
+ *
+ * If TARGET_MERGEINFO_CATALOG is NULL then this acts exactly as the public
+ * API.  If *TARGET_MERGEINFO_CATALOG is NULL, then *TARGET_MERGEINFO_CATALOG
+ * is set to the a mergeinfo catalog representing the mergeinfo on
+ * TARGET_PATH_OR_URL@TARGET_PEG_REVISION at DEPTH, (like the public API only
+ * depths of svn_depth_empty or svn_depth_infinity are supported) allocated in
+ * RESULT_POOL.  Finally, if *TARGET_MERGEINFO_CATALOG is non-NULL, then it is
+ * assumed to be a mergeinfo catalog representing the mergeinfo on
+ * TARGET_PATH_OR_URL@TARGET_PEG_REVISION at DEPTH.
+ *
+ * The keys for the subtree mergeinfo are the repository root-relative
+ * paths of TARGET_PATH_OR_URL and/or its subtrees, regardless of whether
+ * TARGET_PATH_OR_URL is a URL or WC path.
+ */
+svn_error_t *
+svn_client__mergeinfo_log(svn_boolean_t finding_merged,
+                          const char *target_path_or_url,
+                          const svn_opt_revision_t *target_peg_revision,
+                          svn_mergeinfo_catalog_t *target_mergeinfo_catalog,
+                          const char *source_path_or_url,
+                          const svn_opt_revision_t *source_peg_revision,
+                          const svn_opt_revision_t *source_start_revision,
+                          const svn_opt_revision_t *source_end_revision,
+                          svn_log_entry_receiver_t log_receiver,
+                          void *log_receiver_baton,
+                          svn_boolean_t discover_changed_paths,
+                          svn_depth_t depth,
+                          const apr_array_header_t *revprops,
+                          svn_client_ctx_t *ctx,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/wc-collate-path/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/private/svn_ra_svn_private.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/private/svn_ra_svn_private.h Tue May  7 13:26:25 2013
@@ -186,6 +186,7 @@ svn_ra_svn__skip_leading_garbage(svn_ra_
      w     const char **          Word
      b     svn_boolean_t *        Word ("true" or "false")
      B     apr_uint64_t *         Word ("true" or "false")
+     3     svn_tristate_t *       Word ("true" or "false")
      l     apr_array_header_t **  List
      (                            Begin tuple
      )                            End tuple
@@ -196,14 +197,18 @@ svn_ra_svn__skip_leading_garbage(svn_ra_
  * the end of the specification.  So if @a fmt is "c?cc" and @a list
  * contains two elements, an error will result.
  *
- * 'B' is similar to 'b', but may be used in the optional tuple specification.
- * It returns TRUE, FALSE, or SVN_RA_SVN_UNSPECIFIED_NUMBER.
+ * '3' is similar to 'b', but may be used in the optional tuple specification.
+ * It returns #svn_tristate_true, #svn_tristate_false or #svn_tristate_unknown.
+ *
+ * 'B' is similar to '3', but it returns @c TRUE, @c FALSE, or
+ * #SVN_RA_SVN_UNSPECIFIED_NUMBER.  'B' is deprecated; new code should
+ * use '3' instead.
  *
  * If an optional part of a tuple contains no data, 'r' values will be
- * set to @c SVN_INVALID_REVNUM, 'n' and 'B' values will be set to
- * SVN_RA_SVN_UNSPECIFIED_NUMBER, and 's', 'c', 'w', and 'l' values
- * will be set to @c NULL.  'b' may not appear inside an optional
- * tuple specification; use 'B' instead.
+ * set to @c SVN_INVALID_REVNUM; 'n' and 'B' values will be set to
+ * #SVN_RA_SVN_UNSPECIFIED_NUMBER; 's', 'c', 'w', and 'l' values
+ * will be set to @c NULL; and '3' values will be set to #svn_tristate_unknown
+ * 'b' may not appear inside an optional tuple specification; use '3' instead.
  */
 svn_error_t *
 svn_ra_svn__parse_tuple(const apr_array_header_t *list,

Modified: subversion/branches/wc-collate-path/subversion/include/private/svn_sqlite.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/private/svn_sqlite.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/private/svn_sqlite.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/private/svn_sqlite.h Tue May  7 13:26:25 2013
@@ -120,7 +120,7 @@ svn_sqlite__read_schema_version(int *ver
    The statements will be finalized and the SQLite database will be closed
    when RESULT_POOL is cleaned up. */
 svn_error_t *
-svn_sqlite__open(svn_sqlite__db_t **db, const char *repos_path,
+svn_sqlite__open(svn_sqlite__db_t **db, const char *path,
                  svn_sqlite__mode_t mode, const char * const statements[],
                  int latest_schema, const char * const *upgrade_sql,
                  apr_pool_t *result_pool, apr_pool_t *scratch_pool);

Modified: subversion/branches/wc-collate-path/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/svn_config.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/svn_config.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/svn_config.h Tue May  7 13:26:25 2013
@@ -125,6 +125,8 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG_OPTION_PRESERVED_CF_EXTS         "preserved-conflict-file-exts"
 #define SVN_CONFIG_OPTION_INTERACTIVE_CONFLICTS     "interactive-conflicts"
 #define SVN_CONFIG_OPTION_MEMORY_CACHE_SIZE         "memory-cache-size"
+/** @since New in 1.9. */
+#define SVN_CONFIG_OPTION_DIFF_IGNORE_CONTENT_TYPE  "diff-ignore-content-type"
 #define SVN_CONFIG_SECTION_TUNNELS              "tunnels"
 #define SVN_CONFIG_SECTION_AUTO_PROPS           "auto-props"
 /** @since New in 1.8. */
@@ -211,15 +213,30 @@ svn_config_get_config(apr_hash_t **cfg_h
                       const char *config_dir,
                       apr_pool_t *pool);
 
-
 /** Set @a *cfgp to an empty @c svn_config_t structure,
  * allocated in @a result_pool.
  *
  * Pass TRUE to @a section_names_case_sensitive if
  * section names are to be populated case sensitively.
  *
+ * Pass TRUE to @a option_names_case_sensitive if
+ * option names are to be populated case sensitively.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_create2(svn_config_t **cfgp,
+                   svn_boolean_t section_names_case_sensitive,
+                   svn_boolean_t option_names_case_sensitive,
+                   apr_pool_t *result_pool);
+
+/** Similar to svn_config_create2, but always passes @c FALSE to
+ * @a option_names_case_sensitive.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_config_create(svn_config_t **cfgp,
                   svn_boolean_t section_names_case_sensitive,
@@ -234,18 +251,35 @@ svn_config_create(svn_config_t **cfgp,
  * If @a section_names_case_sensitive is @c TRUE, populate section name hashes
  * case sensitively, except for the default #SVN_CONFIG__DEFAULT_SECTION.
  *
- * @since New in 1.7.
+ * If @a option_names_case_sensitive is @c TRUE, populate option name hashes
+ * case sensitively.
+ *
+ * @since New in 1.8.
  */
+svn_error_t *
+svn_config_read3(svn_config_t **cfgp,
+                 const char *file,
+                 svn_boolean_t must_exist,
+                 svn_boolean_t section_names_case_sensitive,
+                 svn_boolean_t option_names_case_sensitive,
+                 apr_pool_t *result_pool);
 
+/** Similar to svn_config_read3, but always passes @c FALSE to
+ * @a option_names_case_sensitive.
+ *
+ * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with 1.7 API.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_config_read2(svn_config_t **cfgp,
                  const char *file,
                  svn_boolean_t must_exist,
                  svn_boolean_t section_names_case_sensitive,
-                 apr_pool_t *pool);
+                 apr_pool_t *result_pool);
 
 /** Similar to svn_config_read2, but always passes @c FALSE to
- * section_names_case_sensitive.
+ * @a section_names_case_sensitive.
  *
  * @deprecated Provided for backward compatibility with 1.6 API.
  */
@@ -254,7 +288,7 @@ svn_error_t *
 svn_config_read(svn_config_t **cfgp,
                 const char *file,
                 svn_boolean_t must_exist,
-                apr_pool_t *pool);
+                apr_pool_t *result_pool);
 
 /** Read configuration data from @a stream into @a *cfgp, allocated in
  * @a result_pool.
@@ -262,6 +296,9 @@ svn_config_read(svn_config_t **cfgp,
  * If @a section_names_case_sensitive is @c TRUE, populate section name hashes
  * case sensitively, except for the default #SVN_CONFIG__DEFAULT_SECTION.
  *
+ * If @a option_names_case_sensitive is @c TRUE, populate option name hashes
+ * case sensitively.
+ *
  * @since New in 1.8.
  */
 
@@ -269,6 +306,7 @@ svn_error_t *
 svn_config_parse(svn_config_t **cfgp,
                  svn_stream_t *stream,
                  svn_boolean_t section_names_case_sensitive,
+                 svn_boolean_t option_names_case_sensitive,
                  apr_pool_t *result_pool);
 
 /** Like svn_config_read(), but merges the configuration data from @a file

Modified: subversion/branches/wc-collate-path/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/svn_fs.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/svn_fs.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/svn_fs.h Tue May  7 13:26:25 2013
@@ -325,6 +325,20 @@ svn_fs_path(svn_fs_t *fs,
             apr_pool_t *pool);
 
 /**
+ * Return a shallow copy of the configuration parameters used to open
+ * @a fs, allocated in @a pool.  It may be @c NULL.  The contents of the
+ * hash contents remains valid only for @a fs's lifetime.
+ * 
+ * @note This is just what was passed to svn_fs_create() or svn_fs_open().
+ * You may not modify it.
+ *
+ * @since New in 1.8.
+ */
+apr_hash_t *
+svn_fs_config(svn_fs_t *fs,
+              apr_pool_t *pool);
+
+/**
  * Delete the filesystem at @a path.
  *
  * @note: Deleting a filesystem that has an open svn_fs_t is not
@@ -2046,7 +2060,6 @@ svn_fs_youngest_rev(svn_revnum_t *younge
                     apr_pool_t *pool);
 
 
-#ifdef SVN_FS_INFO
 /**
  * Return filesystem format information for @a fs.
  *
@@ -2059,7 +2072,7 @@ svn_fs_youngest_rev(svn_revnum_t *younge
  *
  * @see svn_repos_info_format()
  *
- * @since New in 1.8.
+ * @since New in 1.9.
  */
 svn_error_t *
 svn_fs_info_format(int *fs_format,
@@ -2072,14 +2085,13 @@ svn_fs_info_format(int *fs_format,
  * Return a list of admin-serviceable config files for @a fs.  @a *files
  * will be set to an array containing paths as C strings.
  *
- * @since New in 1.8.
+ * @since New in 1.9.
  */
 svn_error_t *
 svn_fs_info_config_files(apr_array_header_t **files,
                          svn_fs_t *fs,
                          apr_pool_t *result_pool,
                          apr_pool_t *scratch_pool);
-#endif /* SVN_FS_INFO */
 
 
 
@@ -2466,7 +2478,9 @@ svn_fs_pack(const char *db_path,
 /**
  * Perform backend-specific data consistency and correctness validations
  * to the Subversion filesystem (mainly the meta-data) located in the
- * directory @a path.  Use @a scratch_pool for temporary allocations.
+ * directory @a path.  Use the backend-specific configuration @a fs_config
+ * when opening the filesystem.  @a NULL is valid for all backends.
+ * Use @a scratch_pool for temporary allocations.
  *
  * @a start and @a end define the (minimum) range of revisions to check.
  * If @a start is #SVN_INVALID_REVNUM, it defaults to @c r0.  Likewise,
@@ -2505,6 +2519,7 @@ svn_fs_pack(const char *db_path,
  */
 svn_error_t *
 svn_fs_verify(const char *path,
+              apr_hash_t *fs_config,
               svn_revnum_t start,
               svn_revnum_t end,
               svn_fs_progress_notify_func_t notify_func,
@@ -2543,7 +2558,6 @@ svn_fs_verify_root(svn_fs_root_t *root,
 
 /** @} */
 
-#ifdef SVN_FS_INFO
 /**
  * @defgroup fs_info Filesystem information subsystem
  * @{
@@ -2551,71 +2565,74 @@ svn_fs_verify_root(svn_fs_root_t *root,
 
 /**
  * A structure that provides some information about a filesystem.
- * Returned by svn_fs_info().
+ * Returned by svn_fs_info() for #SVN_FS_TYPE_FSFS filesystems.
  *
  * @note Fields may be added to the end of this structure in future
  * versions.  Therefore, users shouldn't allocate structures of this
  * type, to preserve binary compatibility.
  *
- * @since New in 1.8.
+ * @since New in 1.9.
  */
-typedef struct svn_fs_info_t {
+typedef struct svn_fs_fsfs_info_t {
+
+  /** Filesystem backend (#fs_type), i.e., the string #SVN_FS_TYPE_FSFS. */
+  const char *fs_type;
+
+  /** Shard size, or 0 if the filesystem is not currently sharded. */
+  int shard_size;
+
+  /** The smallest revision (as #svn_revnum_t) which is not in a pack file.
+   * @note Zero (0) if (but not iff) the format does not support packing. */
+  svn_revnum_t min_unpacked_rev;
 
-#if 0
-  /* Potential future feature. */
-  svn_boolean_t is_write_locked;
-#endif
+  /* ### TODO: information about fsfs.conf? rep-cache.db? write locks? */
 
-  /** Filesystem backend (#fs_type) -specific information.
-   * @see SVN_FS_FSFS_INFO_* */
-  apr_hash_t *fsap_info;
+  /* If you add fields here, check whether you need to extend svn_fs_info()
+     or svn_fs_info_dup(). */
+} svn_fs_fsfs_info_t;
 
-} svn_fs_info_t;
+/** @see svn_fs_info()
+ * @since New in 1.9. */
+typedef struct svn_fs_info_placeholder_t {
+  /** @see svn_fs_type() */
+  const char *fs_type;
+
+  /* Do not add new fields here, to maintain compatibility with the first
+     released version of svn_fs_fsfs_info_t. */
+} svn_fs_info_placeholder_t;
 
 /**
- * Set @a *info to an info struct describing @a fs.
+ * Set @a *fs_info to a struct describing @a fs.  The type of the
+ * struct depends on the backend: for #SVN_FS_TYPE_FSFS, the struct will be
+ * of type #svn_fs_fsfs_info_t; otherwise, the struct is guaranteed to be
+ * (compatible with) #svn_fs_info_placeholder_t.
  *
- * @see #svn_fs_info_t
+ * @see #svn_fs_fsfs_info_t
  *
- * @since New in 1.8.
+ * @since New in 1.9.
  */
 svn_error_t *
-svn_fs_info(const svn_fs_info_t **info,
+svn_fs_info(const svn_fs_info_placeholder_t **fs_info,
             svn_fs_t *fs,
             apr_pool_t *result_pool,
             apr_pool_t *scratch_pool);
 
 /**
- * Return a duplicate of @a info, allocated in @a pool. No part of the new
- * structure will be shared with @a info.
- *
- * @since New in 1.8.
- */
-svn_fs_info_t *
-svn_fs_info_dup(const svn_fs_info_t *info,
-                apr_pool_t *result_pool);
-
-/** @name FSFS-specific #svn_fs_info_t information.
- * @since New in 1.8.
- * @{
- */
-
-/** Value: shard size (as int), or 0 if the filesystem is
- * not currently sharded. */
-#define SVN_FS_FSFS_INFO_SHARDED "sharded"
-
-/** Value: abspath to rep-cache.db, or absent if that doesn't exist.
- @note Do not modify the db schema or tables!
- */
-#define SVN_FS_FSFS_INFO_REP_CACHE_PATH "rep-cache-path"
-
-/** The smallest revision (as #svn_revnum_t) which is not in a pack file.
- * @note Zero (0) if (but not iff) the format does not support packing. */
-#define SVN_FS_FSFS_INFO_MIN_UNPACKED_REV "min-unpacked-rev"
-/** @} */
+ * Return a duplicate of @a info, allocated in @a pool. The returned struct
+ * will be of the same type as the passed-in struct, which itself must have
+ * been returned from svn_fs_info() or svn_fs_info_dup().  No part of the new
+ * structure will be shared with @a info (except static string constants).
+ *
+ * @see #svn_fs_info_placeholder_t, #svn_fs_fsfs_info_t
+ *
+ * @since New in 1.9.
+ */
+void *
+svn_fs_info_dup(const void *info,
+                apr_pool_t *result_pool,
+                apr_pool_t *scratch_pool);
 
 /** @} */
-#endif /* SVN_FS_INFO */
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/wc-collate-path/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/svn_io.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/svn_io.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/svn_io.h Tue May  7 13:26:25 2013
@@ -1370,6 +1370,15 @@ svn_string_from_stream(svn_string_t **re
 /** A function type provided for use as a callback from
  * @c svn_stream_lazyopen_create().
  *
+ * The callback function shall open a new stream and set @a *stream to
+ * the stream object, allocated in @a result_pool.  @a baton is the
+ * callback baton that was passed to svn_stream_lazyopen_create().
+ *
+ * @a result_pool is the result pool that was passed to
+ * svn_stream_lazyopen_create().  The callback function may use
+ * @a scratch_pool for temporary allocations; the caller may clear or
+ * destroy @a scratch_pool any time after the function returns.
+ *
  * @since New in 1.8.
  */
 typedef svn_error_t *
@@ -1381,20 +1390,22 @@ typedef svn_error_t *
 
 /** Return a generic stream which wraps another primary stream,
  * delaying the "opening" of that stream until the first time the
- * stream is accessed.
+ * returned stream is accessed.
  *
  * @a open_func and @a open_baton are a callback function/baton pair
- * invoked upon the first read of @a *stream which are used to open the
- * "real" source stream.
+ * which will be invoked upon the first access of the returned
+ * stream (read, write, mark, seek, skip, or possibly close).  The
+ * callback shall open the primary stream.
  *
- * @note If the only "access" the returned stream gets is to close it,
- * @a open_func will not be called.
+ * If the only "access" the returned stream gets is to close it
+ * then @a open_func will only be called if @a open_on_close is TRUE.
  *
  * @since New in 1.8.
  */
 svn_stream_t *
 svn_stream_lazyopen_create(svn_stream_lazyopen_func_t open_func,
                            void *open_baton,
+                           svn_boolean_t open_on_close,
                            apr_pool_t *result_pool);
 
 /** @} */

Modified: subversion/branches/wc-collate-path/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/svn_repos.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/svn_repos.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/svn_repos.h Tue May  7 13:26:25 2013
@@ -295,8 +295,7 @@ typedef struct svn_repos_notify_t
    * the revision which just completed. */
   svn_revnum_t revision;
 
-  /** For #svn_repos_notify_warning, the warning object. Must be cleared
-      by the consumer of the notification. */
+  /** For #svn_repos_notify_warning, the warning object. */
   const char *warning_str;
   svn_repos_notify_warning_t warning;
 
@@ -494,7 +493,6 @@ svn_repos_has_capability(svn_repos_t *re
                          const char *capability,
                          apr_pool_t *pool);
 
-#ifdef SVN_FS_INFO
 /**
  * Return a set capabilities supported by the running Subversion library and by
  * @a repos.  (Capabilities supported by this version of Subversion but not by
@@ -504,16 +502,15 @@ svn_repos_has_capability(svn_repos_t *re
  * The set is represented as a hash whose keys are the set members.  The values
  * are not defined.
  *
- * @see svn_repos_info()
+ * @see svn_repos_info_format()
  *
- * @since New in 1.8.
+ * @since New in 1.9.
  */
 svn_error_t *
 svn_repos_capabilities(apr_hash_t **capabilities,
                        svn_repos_t *repos,
                        apr_pool_t *result_pool,
                        apr_pool_t *scratch_pool);
-#endif /* SVN_FS_INFO */
 /** @} */
 
 /**
@@ -2488,7 +2485,6 @@ svn_repos_node_editor(const svn_delta_ed
 svn_repos_node_t *
 svn_repos_node_from_baton(void *edit_baton);
 
-#ifdef SVN_FS_INFO
 /**
  * Return repository format information for @a repos.
  *
@@ -2499,9 +2495,9 @@ svn_repos_node_from_baton(void *edit_bat
  * Set @a *supports_version to the version number of the minimum Subversion GA
  * release that can read and write @a repos.
  *
- * @see svn_fs_info_format()
+ * @see svn_fs_info_format(), svn_repos_capabilities()
  *
- * @since New in 1.8.
+ * @since New in 1.9.
  */
 svn_error_t *
 svn_repos_info_format(int *repos_format,
@@ -2509,7 +2505,6 @@ svn_repos_info_format(int *repos_format,
                       svn_repos_t *repos,
                       apr_pool_t *result_pool,
                       apr_pool_t *scratch_pool);
-#endif /* SVN_FS_INFO */
 
 /** @} */
 

Modified: subversion/branches/wc-collate-path/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/wc-collate-path/subversion/include/svn_string.h?rev=1479901&r1=1479900&r2=1479901&view=diff
==============================================================================
--- subversion/branches/wc-collate-path/subversion/include/svn_string.h (original)
+++ subversion/branches/wc-collate-path/subversion/include/svn_string.h Tue May  7 13:26:25 2013
@@ -407,9 +407,11 @@ svn_string_compare_stringbuf(const svn_s
  * @{
  */
 
-/** Divide @a input into substrings along @a sep_chars boundaries, return an
- * array of copies of those substrings (plain const char*), allocating both
- * the array and the copies in @a pool.
+/** Divide @a input into substrings, interpreting any char from @a sep
+ * as a token separator.  
+ *
+ * Return an array of copies of those substrings (plain const char*),
+ * allocating both the array and the copies in @a pool.
  *
  * None of the elements added to the array contain any of the
  * characters in @a sep_chars, and none of the new elements are empty



Mime
View raw message