subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stef...@apache.org
Subject svn commit: r1481454 [1/5] - in /subversion/branches/fsfs-format7: ./ build/ac-macros/ build/generator/ contrib/server-side/fsfsfixer/ contrib/server-side/fsfsfixer/fixer/ subversion/bindings/ctypes-python/ subversion/bindings/swig/ subversion/bindings...
Date Sat, 11 May 2013 23:28:08 GMT
Author: stefan2
Date: Sat May 11 23:28:06 2013
New Revision: 1481454

URL: http://svn.apache.org/r1481454
Log:
On the fsfs-format7 branch: sync with /trunk up to and including r1481452

Added:
    subversion/branches/fsfs-format7/subversion/libsvn_subr/utf8proc/
      - copied from r1481452, subversion/trunk/subversion/libsvn_subr/utf8proc/
    subversion/branches/fsfs-format7/subversion/libsvn_subr/utf8proc.c
      - copied unchanged from r1481452, subversion/trunk/subversion/libsvn_subr/utf8proc.c
    subversion/branches/fsfs-format7/subversion/tests/diacritical.txt
      - copied unchanged from r1481452, subversion/trunk/subversion/tests/diacritical.txt
Modified:
    subversion/branches/fsfs-format7/   (props changed)
    subversion/branches/fsfs-format7/CHANGES
    subversion/branches/fsfs-format7/COMMITTERS
    subversion/branches/fsfs-format7/Makefile.in
    subversion/branches/fsfs-format7/build.conf
    subversion/branches/fsfs-format7/build/ac-macros/compiler.m4
    subversion/branches/fsfs-format7/build/generator/gen_base.py
    subversion/branches/fsfs-format7/build/generator/gen_win.py
    subversion/branches/fsfs-format7/configure.ac
    subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fix-repo
    subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/find_good_id.py
    subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fix-rev.py
    subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fixer_config.py
    subversion/branches/fsfs-format7/get-deps.sh   (contents, props changed)
    subversion/branches/fsfs-format7/subversion/bindings/ctypes-python/setup.py
    subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_containers.swg
    subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg
    subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
    subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
    subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Client.pm
    subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Core.pm
    subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t
    subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
    subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
    subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/util.rb
    subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/windows_util.rb
    subversion/branches/fsfs-format7/subversion/bindings/swig/svn_client.i
    subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h
    subversion/branches/fsfs-format7/subversion/include/private/svn_mutex.h
    subversion/branches/fsfs-format7/subversion/include/private/svn_utf_private.h
    subversion/branches/fsfs-format7/subversion/include/svn_config.h
    subversion/branches/fsfs-format7/subversion/include/svn_error_codes.h
    subversion/branches/fsfs-format7/subversion/include/svn_io.h
    subversion/branches/fsfs-format7/subversion/include/svn_repos.h
    subversion/branches/fsfs-format7/subversion/include/svn_string.h
    subversion/branches/fsfs-format7/subversion/include/svn_wc.h
    subversion/branches/fsfs-format7/subversion/libsvn_client/add.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/log.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/merge.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/mergeinfo.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/ra.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/repos_diff.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/switch.c
    subversion/branches/fsfs-format7/subversion/libsvn_client/update.c
    subversion/branches/fsfs-format7/subversion/libsvn_ra_serf/serf.c
    subversion/branches/fsfs-format7/subversion/libsvn_repos/delta.c
    subversion/branches/fsfs-format7/subversion/libsvn_repos/dump.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/config_file.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/error.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/sqlite.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/sqlite3wrapper.c
    subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c
    subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.h
    subversion/branches/fsfs-format7/subversion/libsvn_wc/diff_editor.c
    subversion/branches/fsfs-format7/subversion/libsvn_wc/merge.c
    subversion/branches/fsfs-format7/subversion/po/sv.po
    subversion/branches/fsfs-format7/subversion/svn/conflict-callbacks.c
    subversion/branches/fsfs-format7/subversion/svn/diff-cmd.c
    subversion/branches/fsfs-format7/subversion/svnlook/svnlook.c
    subversion/branches/fsfs-format7/subversion/svnmucc/svnmucc.c
    subversion/branches/fsfs-format7/subversion/svnserve/svnserve.c
    subversion/branches/fsfs-format7/subversion/tests/cmdline/authz_tests.py
    subversion/branches/fsfs-format7/subversion/tests/cmdline/diff_tests.py
    subversion/branches/fsfs-format7/subversion/tests/cmdline/log_tests.py
    subversion/branches/fsfs-format7/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/fsfs-format7/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/error-test.c
    subversion/branches/fsfs-format7/subversion/tests/libsvn_subr/utf-test.c
    subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/conflict-data-test.c
    subversion/branches/fsfs-format7/subversion/tests/libsvn_wc/wc-queries-test.c
    subversion/branches/fsfs-format7/subversion/tests/svn_test.h
    subversion/branches/fsfs-format7/tools/buildbot/slaves/bb-openbsd/svnclean.sh
    subversion/branches/fsfs-format7/tools/dev/aprerr.txt
    subversion/branches/fsfs-format7/tools/dev/build-svn-deps-win.pl
    subversion/branches/fsfs-format7/tools/dev/fsfs-access-map.c
    subversion/branches/fsfs-format7/tools/dev/remove-trailing-whitespace.sh
    subversion/branches/fsfs-format7/tools/dev/unix-build/Makefile.svn
    subversion/branches/fsfs-format7/tools/dev/which-error.py
    subversion/branches/fsfs-format7/tools/dist/backport.pl
    subversion/branches/fsfs-format7/tools/dist/release.py

Propchange: subversion/branches/fsfs-format7/
------------------------------------------------------------------------------
  Merged /subversion/branches/wc-collate-path:r1402685-1407641,1407643-1480384
  Merged /subversion/trunk:r1477542-1481452

Modified: subversion/branches/fsfs-format7/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/CHANGES?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/CHANGES (original)
+++ subversion/branches/fsfs-format7/CHANGES Sat May 11 23:28:06 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:
 
@@ -34,7 +35,7 @@ http://svn.apache.org/repos/asf/subversi
   - Major new features:
     * inheritable properties (r1395109)
     * GPG agent support. (r1151069)
-    * fsfs: Packing of revision property shards (issue #3944)
+    * FSFS: Packing of revision property shards (issue #3944)
     * explicit handling of local moves/renames (issue #3631, #4232)
     * new more detailed conflict storage
     * use svn_ra_serf as our new http library.
@@ -51,11 +52,15 @@ http://svn.apache.org/repos/asf/subversi
     * new 'svnadmin lock' / 'svnadmin unlock' subcommands (issue #3942, #4092)
     * new SVNUseUTF8 configuration option for mod_dav_svn (issue #2487)
     * new SVNHooksEnv configuration option for mod_dav_svn (r1239966)
-    * new --ignore-properties option for 'svn diff' (r1239553. -617)
+    * new --ignore-properties option for 'svn diff' (r1239553, -617)
     * new --properties-only option for 'svn diff' (r1336110)
     * new --patch-compatible option for 'svn diff' (r1239561)
     * new --no-diff-added option for 'svn diff' (r1433958)
     * new SvnPubSub distributed commit hooks (tools/server-side/svnpubsub)
+    * new light-weight benchmarking client (tools/client-side/svn-bench)
+    * new w/c subtree duplication tool (tools/client-side/detach.py)
+    * new svndumpfilter dependency analysis (tools/server-side/svnpredumpfilter.py)
+    * new mergeinfo fixup tool (tools/client-side/mergeinfo-sanitizer.py)
     * 'svn diff' can compare arbitrary files and directories (r1310291, et al)
     * ra_serf avoids re-downloading content present in pristine store (r1333936)
     * 'svn mergeinfo' now honors the --revision (-r) option (issue #4199)
@@ -74,27 +79,77 @@ http://svn.apache.org/repos/asf/subversi
     * repos suggested config via svn:auto-props and svn:global-ignores (r1401908)
     * support for custom keyword definitions in svn:keywords (issue #890)
     * support for server-side keyword expansion in mod_dav_svn (r1466055)
+    * FSFS now able to cache revision properties (r1326307)
+    * directory and property deltification option in FSFS (issue #4084)
+    * fine-grained control deltification behavior via fsfs.conf (r1311476)
+    * FSFS de-duplication ("rep sharing") now works within a revision (r1397773)
+    * FSFS de-duplication now works for properties as well (r1243312)
+    * read FSFS data using fewer fopen calls (issue #3372)
+    * 'svnadmin verify' will now check meta data (issues #3956, #4211)
+    * new --client-speed option for svnserve (r1391788)
+    * hook script templates are now marked as executable (r1153414)
+    * svn:ignore __pycache__ directories by default (r1150073)
+    * 'svn diff --git' include copyfrom revision in "copied" headers (r1155279)
+    * svn:mergeinfo related operations now use much less memory (r1149519 et al)
+    * get list of supported schemes for RA libraries (r1148134)
+    * 'svn checkout' skips file externals from unintended repositories (r1153110)
+    * return an error when conflicts could not be resolved (r1150439)
+    * let HTTPv2-aware clients fetch v2-style resources (r1161202)
+    * 'svn status' with better NLS support (r1157537, -682)
+    * error out on non-canonical fspaths in the authz file (r1166111)
+    * improve error messages (r1212823, r1212463)
+    * better tracking of shallow-yet-complete merges (issues #4056, #4057)
+    * improve performance of mergeinfo elision (r1208739)
+    * make 'svn status --quiet' w/ externals quieter still (issue #1935)
+    * ensure that all paths shown in 'svn status' are relative-ized (r1202425)
+    * improve performance of local multi-target deletions (r1195873)
+    * apply update ops to locally moved-away dirs (r1183358, r1185110, r1185392)
 
   - Client-side bugfixes:
-    * 
+    * fix inconsistent 'svn log' output for empty revisions (issue #3964)
+    * fix 'svn revert' of 'svn move' (issue #876)
+    * fix 'wrong 'status' of file externals "resurrecting" a deleted file (#4017)
+    * fix reporting of corrupted 1.6 w/cs by 'svn upgrade' (r1182904, -9)
+    * fix bug caused by URI-decoding local merge source paths (r1210539)
 
   - Server-side bugfixes:
     * SVNParentPath / repository listing now authz-filtered (r1408184)
-    * User and group names in the authz config file are case-sensitive (r1475772)
+    * user and group names in the authz config file are case-sensitive (r1475772)
+    * limit commit runtime for nodes with very deep histories (r1224836)
+    * 'svnadmin recover' truncates rep-cache at the right point (issue #4077)
+    * fix crashes in dumpstream loading with skipped revs (r1214202, r1214216)
+    * fix 'svn log -g' incorrectly treating rename as merge (issue #4022)
 
   - Other tool improvements and bugfixes:
     * 'svnmucc' promoted to first-class supported utility (issue #3308)
+    * rename 'svnauthz-validate' to 'svnauthz' (issue #4284)
+    * make 'svnauthz' optionally validate user/path access (r1197588)
   
  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)
+    * now require bzip2 for tests and dev tools (r1148512)
+    * new require httpd version 2.2.21 for builds with Apache (r1174039)
     * configure defaults to --without-apache-libexecdir (r1469862)
+    * support builds with APR pool debugging (r1176894)
+    * 'make extraclean' is more thorough now (r1149460)
+    * support for Serf 2 (r1147538)
+    * introduction of editor v2 (via private APIs only) (r1166332 et al)
+    * improve SQLite setup for compatibility with OS X 10.7. (r1181666)
+    * rework switch statement to accomodate OWC compiler limitations (r1204407)
+    * new --enable-sqlite-compatibility-version configure option (r1201421)
+    * make test suite LD_LIBRARY_PATH include just-built auth plugins (r1200474)
 
   - API changes:
     * fix inconsistent handling of log revs without changed paths (issue #3694)
+    * new type svn_kind_t to replace svn_node_kind_t (r1181800)
+    * deprecated SVN_ERR_SQLITE_UNSUPPORTED_SCHEMA (r1173240)
 
   - Bindings:
     * star-imports in swig-py only import 'svn_*' symbols (r1303375)
+    * fix compilation of Perl bindings on Mandriva 2007 (issue #2617)
+    * fix Python build on OpenBSD >= 5.0. (r1178846)
+    * new JavaHL testing targets (r1182983)
 
 
 Version 1.7.9

Modified: subversion/branches/fsfs-format7/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/COMMITTERS?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/COMMITTERS [UTF-8] (original)
+++ subversion/branches/fsfs-format7/COMMITTERS [UTF-8] Sat May 11 23:28:06 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.
@@ -187,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/fsfs-format7/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/Makefile.in?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/Makefile.in (original)
+++ subversion/branches/fsfs-format7/Makefile.in Sat May 11 23:28:06 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                                                         \
@@ -597,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-*       \
@@ -889,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/fsfs-format7/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build.conf?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build.conf (original)
+++ subversion/branches/fsfs-format7/build.conf Sat May 11 23:28:06 2013
@@ -40,6 +40,9 @@ private-includes =
         subversion/libsvn_delta/compose_delta.c
         subversion/bindings/cxxhl/include/*.hpp
         subversion/bindings/cxxhl/include/svncxxhl/*.hpp
+        subversion/libsvn_subr/utf8proc/utf8proc.h
+        subversion/libsvn_subr/utf8proc/utf8proc.c.inline
+        subversion/libsvn_subr/utf8proc/utf8proc_data.c.inline
 private-built-includes =
         subversion/svn_private_config.h
         subversion/libsvn_fs_fs/rep-cache-db.h

Modified: subversion/branches/fsfs-format7/build/ac-macros/compiler.m4
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/ac-macros/compiler.m4?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/ac-macros/compiler.m4 (original)
+++ subversion/branches/fsfs-format7/build/ac-macros/compiler.m4 Sat May 11 23:28:06 2013
@@ -66,6 +66,10 @@ AC_DEFUN([SVN_CC_MODE_SETUP],
     ])
   ])
 
+  dnl clang does not (always?) error out on unknown compiler
+  dnl options so silence the diagnostics emitted for warning options
+  SVN_CFLAGS_ADD_IFELSE([-Wno-unknown-warning-option])
+
   CMODEFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS_KEEP"
   AC_SUBST(CMODEFLAGS)
@@ -82,6 +86,10 @@ AC_DEFUN([SVN_CXX_MODE_SETUP],
                 dnl g++ and clang++
   SVN_CXXFLAGS_ADD_IFELSE([-std=c++98])
 
+  dnl clang++ does not (always?) error out on unknown compiler
+  dnl options so silence the diagnostics emitted for warning options
+  SVN_CXXFLAGS_ADD_IFELSE([-Wno-unknown-warning-option])
+
   CXXMODEFLAGS="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS_KEEP"
   AC_SUBST(CXXMODEFLAGS)

Modified: subversion/branches/fsfs-format7/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/gen_base.py?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/generator/gen_base.py (original)
+++ subversion/branches/fsfs-format7/build/generator/gen_base.py Sat May 11 23:28:06 2013
@@ -251,6 +251,8 @@ class GeneratorBase:
     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'
@@ -260,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/fsfs-format7/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/gen_win.py?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/generator/gen_win.py (original)
+++ subversion/branches/fsfs-format7/build/generator/gen_win.py Sat May 11 23:28:06 2013
@@ -1253,7 +1253,9 @@ class WinGeneratorBase(GeneratorBase):
     self.ruby_version = None
     self.ruby_major_version = None
     self.ruby_minor_version = None
-    proc = os.popen('ruby -rrbconfig -e ' + escape_shell_arg(
+    # Pass -W0 to stifle the "-e:1: Use RbConfig instead of obsolete
+    # and deprecated Config." warning if we are using Ruby 1.9.
+    proc = os.popen('ruby -rrbconfig -W0 -e ' + escape_shell_arg(
                     "puts Config::CONFIG['ruby_version'];"
                     "puts Config::CONFIG['LIBRUBY'];"
                     "puts Config::CONFIG['archdir'];"

Modified: subversion/branches/fsfs-format7/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/configure.ac?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/configure.ac (original)
+++ subversion/branches/fsfs-format7/configure.ac Sat May 11 23:28:06 2013
@@ -1106,7 +1106,8 @@ if test "$enable_optimization" = "yes"; 
         SVN_CFLAGS_ADD_IFELSE([-O2],[],[
           SVN_CFLAGS_ADD_IFELSE([-O1],[],[
             SVN_CFLAGS_ADD_IFELSE([-O])])])])
-      SVN_CFLAGS_ADD_IFELSE([-flto -Wno-clobbered])
+      SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
+      SVN_CFLAGS_ADD_IFELSE([-flto])
       SVN_CFLAGS_ADD_IFELSE([-fwhole-program])
     fi
   fi
@@ -1122,7 +1123,8 @@ if test "$enable_optimization" = "yes"; 
         SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
           SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
             SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
-      SVN_CXXFLAGS_ADD_IFELSE([-flto -Wno-clobbered])
+      SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
+      SVN_CXXFLAGS_ADD_IFELSE([-flto])
       SVN_CXXFLAGS_ADD_IFELSE([-fwhole-program])
     fi
   fi

Modified: subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fix-repo
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fix-repo?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fix-repo (original)
+++ subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fix-repo Sat May 11 23:28:06 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/fsfs-format7/contrib/server-side/fsfsfixer/fixer/find_good_id.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/find_good_id.py?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/find_good_id.py (original)
+++ subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/find_good_id.py Sat May 11 23:28:06 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/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fix-rev.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fix-rev.py?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fix-rev.py (original)
+++ subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fix-rev.py Sat May 11 23:28:06 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/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fixer_config.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fixer_config.py?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fixer_config.py (original)
+++ subversion/branches/fsfs-format7/contrib/server-side/fsfsfixer/fixer/fixer_config.py Sat May 11 23:28:06 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/fsfs-format7/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/get-deps.sh?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/get-deps.sh (original)
+++ subversion/branches/fsfs-format7/get-deps.sh Sat May 11 23:28:06 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/fsfs-format7/get-deps.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/fsfs-format7/subversion/bindings/ctypes-python/setup.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/ctypes-python/setup.py?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/ctypes-python/setup.py (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/ctypes-python/setup.py Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_containers.swg?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_containers.swg Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/include/svn_types.swg
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/include/svn_types.swg Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c Sat May 11 23:28:06 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,42 @@ 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");
+
+    /* This return is actually unreachable because of the croak above,
+     * however, Visual Studio's compiler doesn't like if all paths don't have
+     * a return and errors out otherwise. */ 
+    return NULL;
+}
+
 /* element convertors for c -> perl */
 typedef SV *(*element_converter_t)(void *value, void *ctx);
 
@@ -316,8 +422,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 +459,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/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/perl/native/Client.pm
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Client.pm?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Client.pm (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Client.pm Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/perl/native/Core.pm
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Core.pm?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Core.pm (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/Core.pm Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/perl/native/t/3client.t Sat May 11 23:28:06 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/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c Sat May 11 23:28:06 2013
@@ -735,7 +735,9 @@ svn_swig_rb_get_pool(int argc, VALUE *ar
 static svn_boolean_t
 rb_set_pool_if_swig_type_object(VALUE target, VALUE pool)
 {
-  VALUE targets[1] = {target};
+  VALUE targets[1];
+  
+  targets[0] = target;
 
   if (!NIL_P(find_swig_type_object(1, targets))) {
     rb_set_pool(target, pool);
@@ -1530,15 +1532,14 @@ r2c_hash(VALUE hash, r2c_func func, void
     return NULL;
   } else {
     apr_hash_t *apr_hash;
-    hash_to_apr_hash_data_t data = {
-      NULL,
-      func,
-      ctx,
-      pool
-    };
+    hash_to_apr_hash_data_t data;
 
     apr_hash = apr_hash_make(pool);
     data.apr_hash = apr_hash;
+    data.ctx = ctx;
+    data.func = func;
+    data.pool = pool;
+
     rb_hash_foreach(hash, r2c_hash_i, (VALUE)&data);
 
     return apr_hash;
@@ -1637,8 +1638,9 @@ invoke_callback(VALUE baton, VALUE pool)
 {
   callback_baton_t *cbb = (callback_baton_t *)baton;
   VALUE sub_pool;
-  VALUE argv[] = {pool};
+  VALUE argv[1];
 
+  argv[0] = pool;
   svn_swig_rb_get_pool(1, argv, Qnil, &sub_pool, NULL);
   cbb->pool = sub_pool;
   return rb_ensure(callback, baton, callback_ensure, sub_pool);

Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h Sat May 11 23:28:06 2013
@@ -74,7 +74,12 @@
 extern "C" {
 #endif /* __cplusplus */
 
+/* Ruby 1.9 changed the file name of this header */
+#ifdef HAVE_RUBY_IO_H
+#include <ruby/io.h>
+#else
 #include <rubyio.h>
+#endif
 
 typedef struct apr_pool_wrapper_t
 {

Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/util.rb
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/util.rb?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/util.rb (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/util.rb Sat May 11 23:28:06 2013
@@ -19,7 +19,7 @@
 
 require "fileutils"
 require "pathname"
-require "svn/util"
+require "./svn/util"
 require "tmpdir"
 
 require "my-assertions"

Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/windows_util.rb
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/windows_util.rb?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/windows_util.rb (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/ruby/test/windows_util.rb Sat May 11 23:28:06 2013
@@ -194,7 +194,8 @@ exit 1
         @gen_make_opts ||= begin
           lines = []
           gen_make_opts = File.join(@@top_dir, "gen-make.opts")
-          lines = File.read(gen_make_opts).to_a if File.exists?(gen_make_opts)
+          lines =
+            File.read(gen_make_opts).lines.to_a if File.exists?(gen_make_opts)
           config = Hash.new do |hash, key|
             if /^--with-(.*)$/ =~ key
               hash[key] = File.join(@@top_dir, $1)

Modified: subversion/branches/fsfs-format7/subversion/bindings/swig/svn_client.i
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/bindings/swig/svn_client.i?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/bindings/swig/svn_client.i (original)
+++ subversion/branches/fsfs-format7/subversion/bindings/swig/svn_client.i Sat May 11 23:28:06 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/fsfs-format7/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/private/svn_client_private.h Sat May 11 23:28:06 2013
@@ -147,6 +147,37 @@ svn_client__ra_session_from_path2(svn_ra
                                  svn_client_ctx_t *ctx,
                                  apr_pool_t *pool);
 
+/* Given PATH_OR_URL, which contains either a working copy path or an
+   absolute URL, a peg revision PEG_REVISION, and a desired revision
+   REVISION, find the path at which that object exists in REVISION,
+   following copy history if necessary.  If REVISION is younger than
+   PEG_REVISION, then check that PATH_OR_URL is the same node in both
+   PEG_REVISION and REVISION, and return @c
+   SVN_ERR_CLIENT_UNRELATED_RESOURCES if it is not the same node.
+
+   If PEG_REVISION->kind is 'unspecified', the peg revision is 'head'
+   for a URL or 'working' for a WC path.  If REVISION->kind is
+   'unspecified', the operative revision is the peg revision.
+
+   Store the actual location of the object in *RESOLVED_LOC_P.
+
+   RA_SESSION should be an open RA session pointing at the URL of
+   PATH_OR_URL, or NULL, in which case this function will open its own
+   temporary session.
+
+   Use authentication baton cached in CTX to authenticate against the
+   repository.
+
+   Use POOL for all allocations. */
+svn_error_t *
+svn_client__resolve_rev_and_url(svn_client__pathrev_t **resolved_loc_p,
+                                svn_ra_session_t *ra_session,
+                                const char *path_or_url,
+                                const svn_opt_revision_t *peg_revision,
+                                const svn_opt_revision_t *revision,
+                                svn_client_ctx_t *ctx,
+                                apr_pool_t *pool);
+
 /** Return @c SVN_ERR_ILLEGAL_TARGET if TARGETS contains a mixture of
  * URLs and paths; otherwise return SVN_NO_ERROR.
  *
@@ -260,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/fsfs-format7/subversion/include/private/svn_mutex.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/private/svn_mutex.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/private/svn_mutex.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/private/svn_mutex.h Sat May 11 23:28:06 2013
@@ -21,7 +21,7 @@
  * @endcopyright
  *
  * @file svn_mutex.h
- * @brief Strutures and functions for mutual exclusion
+ * @brief Structures and functions for mutual exclusion
  */
 
 #ifndef SVN_MUTEX_H
@@ -72,7 +72,7 @@ svn_mutex__init(svn_mutex__t **mutex,
  * thread to release the mutex again. Recursive locking are not supported.
  *
  * @note You should use #SVN_MUTEX__WITH_LOCK instead of explicit lock
- * aquisition and release.
+ * acquisition and release.
  */
 svn_error_t *
 svn_mutex__lock(svn_mutex__t *mutex);
@@ -88,19 +88,19 @@ svn_mutex__lock(svn_mutex__t *mutex);
  * reported in the return value.
  *
  * @note You should use #SVN_MUTEX__WITH_LOCK instead of explicit lock
- * aquisition and release.
+ * acquisition and release.
  */
 svn_error_t *
 svn_mutex__unlock(svn_mutex__t *mutex,
                   svn_error_t *err);
 
-/** Aquires the @a mutex, executes the expression @a expr and finally
+/** Acquires the @a mutex, executes the expression @a expr and finally
  * releases the @a mutex. If any of these steps fail, the function using
  * this macro will return an #svn_error_t. This macro guarantees that
  * the @a mutex will always be unlocked again if it got locked successfully
  * by the first step.
  *
- * @note Prefer using this macro instead of explicit lock aquisition and
+ * @note Prefer using this macro instead of explicit lock acquisition and
  * release.
  */
 #define SVN_MUTEX__WITH_LOCK(mutex, expr)               \

Modified: subversion/branches/fsfs-format7/subversion/include/private/svn_utf_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/private/svn_utf_private.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/private/svn_utf_private.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/private/svn_utf_private.h Sat May 11 23:28:06 2013
@@ -21,7 +21,7 @@
  * @endcopyright
  *
  * @file svn_utf_private.h
- * @brief UTF validation routines
+ * @brief UTF validation and normalization routines
  */
 
 #ifndef SVN_UTF_PRIVATE_H
@@ -31,6 +31,8 @@
 #include <apr_pools.h>
 
 #include "svn_types.h"
+#include "svn_string.h"
+#include "svn_string_private.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -79,6 +81,57 @@ svn_utf__cstring_from_utf8_fuzzy(const c
                                                const char *,
                                                apr_pool_t *));
 
+/* A constant used for many length parameters in the utf8proc wrappers
+ * to indicate that the length of a string is unknonw. */
+#define SVN_UTF__UNKNOWN_LENGTH ((apr_size_t) -1)
+
+
+/* Compare two UTF-8 strings, ignoring normalization, using buffers
+ * BUF1 and BUF2 for temporary storage. If either of LEN1 or LEN2 is
+ * SVN_UTF__UNKNOWN_LENGTH, assume the associated string is
+ * null-terminated; otherwise, consider the string only up to the
+ * given length.
+ *
+ * Return compare value in *RESULT.
+ */
+svn_error_t *
+svn_utf__normcmp(int *result,
+                 const char *str1, apr_size_t len1,
+                 const char *str2, apr_size_t len2,
+                 svn_membuf_t *buf1, svn_membuf_t *buf2);
+
+
+/* Pattern matching similar to the the SQLite LIKE and GLOB
+ * operators. PATTERN, KEY and ESCAPE must all point to UTF-8
+ * strings. Furthermore, ESCAPE, if provided, must be a character from
+ * the ASCII subset.
+ *
+ * If any of PATTERN_LEN, STRING_LEN or ESCAPE_LEN are
+ * SVN_UTF__UNKNOWN_LENGTH, assume the associated string is
+ * null-terminated; otherwise, consider the string only up to the
+ * given length.
+ *
+ * Use buffers PATTERN_BUF, STRING_BUF and TEMP_BUF for temporary storage.
+ *
+ * If SQL_LIKE is true, interpret PATTERN as a pattern used by the SQL
+ * LIKE operator and notice ESCAPE. Otherwise it's a Unix fileglob
+ * pattern, and ESCAPE must be NULL.
+ *
+ * Set *MATCH to the result of the comparison.
+*/
+svn_error_t *
+svn_utf__glob(svn_boolean_t *match,
+              const char *pattern, apr_size_t pattern_len,
+              const char *string, apr_size_t string_len,
+              const char *escape, apr_size_t escape_len,
+              svn_boolean_t sql_like,
+              svn_membuf_t *pattern_buf,
+              svn_membuf_t *string_buf,
+              svn_membuf_t *temp_buf);
+
+/* Return the version of the wrapped utf8proc library. */
+const char *
+svn_utf__utf8proc_version(void);
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/fsfs-format7/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_config.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/svn_config.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/svn_config.h Sat May 11 23:28:06 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. */

Modified: subversion/branches/fsfs-format7/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_error_codes.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/svn_error_codes.h Sat May 11 23:28:06 2013
@@ -1310,7 +1310,7 @@ SVN_ERROR_START
   /** @since New in 1.6. */
   SVN_ERRDEF(SVN_ERR_NO_APR_MEMCACHE,
              SVN_ERR_MISC_CATEGORY_START + 28,
-             "apr memcache library not available")
+             "APR memcache library not available")
 
   /** @since New in 1.6. */
   SVN_ERRDEF(SVN_ERR_ATOMIC_INIT_FAILURE,
@@ -1365,9 +1365,19 @@ SVN_ERROR_START
              SVN_ERR_MISC_CATEGORY_START + 38,
              "Atomic data storage is corrupt")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_UTF8PROC_ERROR,
+             SVN_ERR_MISC_CATEGORY_START + 39,
+             "utf8proc library error")
+
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_UTF8_GLOB,
+             SVN_ERR_MISC_CATEGORY_START + 40,
+             "Bad arguments to SQL operators GLOB or LIKE")
+
   /** @since New in 1.9. */
   SVN_ERRDEF(SVN_ERR_CORRUPT_PACKED_DATA,
-             SVN_ERR_MISC_CATEGORY_START + 39,
+             SVN_ERR_MISC_CATEGORY_START + 41,
              "Packed data stream is corrupt")
 
   /* command-line client errors */

Modified: subversion/branches/fsfs-format7/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_io.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/svn_io.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/svn_io.h Sat May 11 23:28:06 2013
@@ -182,9 +182,10 @@ svn_io_check_resolved_path(const char *p
  * may be @c NULL.  If @a file is @c NULL, the file will be created but not
  * open.
  *
- * If @a delete_when is #svn_io_file_del_on_close, then the @c APR_DELONCLOSE
- * flag will be used when opening the file.  The @c APR_BUFFERED flag will
- * always be used.
+ * The file will be deleted according to @a delete_when.  If that is
+ * #svn_io_file_del_on_pool_cleanup, it refers to @a result_pool.
+ *
+ * The @c APR_BUFFERED flag will always be used when opening the file.
  *
  * The first attempt will just append @a suffix.  If the result is not
  * a unique name, then subsequent attempts will append a dot,
@@ -248,8 +249,9 @@ svn_io_open_uniquely_named(apr_file_t **
  * be possible to atomically rename the resulting file due to cross-device
  * issues.)
  *
- * The file will be deleted according to @a delete_when.  If @a delete_when
- * is @c svn_io_file_del_on_close and @a file is @c NULL, the file will be
+ * The file will be deleted according to @a delete_when.  If that is
+ * #svn_io_file_del_on_pool_cleanup, it refers to @a result_pool.  If it
+ * is #svn_io_file_del_on_close and @a file is @c NULL, the file will be
  * deleted before this function returns.
  *
  * When passing @c svn_io_file_del_none please don't forget to eventually
@@ -993,7 +995,8 @@ svn_stream_open_writable(svn_stream_t **
  * be possible to atomically rename the resulting file due to cross-device
  * issues.)
  *
- * The file will be deleted according to @a delete_when.
+ * The file will be deleted according to @a delete_when.  If that is
+ * #svn_io_file_del_on_pool_cleanup, it refers to @a result_pool.
  *
  * Temporary allocations will be performed in @a scratch_pool.
  *

Modified: subversion/branches/fsfs-format7/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_repos.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/svn_repos.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/svn_repos.h Sat May 11 23:28:06 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;
 

Modified: subversion/branches/fsfs-format7/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_string.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/svn_string.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/svn_string.h Sat May 11 23:28:06 2013
@@ -415,9 +415,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

Modified: subversion/branches/fsfs-format7/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/include/svn_wc.h?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/include/svn_wc.h (original)
+++ subversion/branches/fsfs-format7/subversion/include/svn_wc.h Sat May 11 23:28:06 2013
@@ -2109,9 +2109,8 @@ typedef struct svn_wc_conflict_result_t
  * Allocate an #svn_wc_conflict_result_t structure in @a pool,
  * initialize and return it.
  *
- * Set the @c choice field of the structure to @a choice, and @c
- * merged_file to @a merged_file.  Set all other fields to their @c
- * _unknown, @c NULL or invalid value, respectively. Make only a shallow
+ * Set the @c choice field of the structure to @a choice, @c merged_file
+ * to @a merged_file, and @c save_merged to false.  Make only a shallow
  * copy of the pointer argument @a merged_file.
  *
  * @since New in 1.5.

Modified: subversion/branches/fsfs-format7/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_client/add.c?rev=1481454&r1=1481453&r2=1481454&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_client/add.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_client/add.c Sat May 11 23:28:06 2013
@@ -1131,7 +1131,7 @@ mkdir_urls(const apr_array_header_t *url
 
       if (*bname == '\0')
         return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
-                                 _("There is no valid uri above '%s'"),
+                                 _("There is no valid URI above '%s'"),
                                  common);
     }
   else
@@ -1158,7 +1158,7 @@ mkdir_urls(const apr_array_header_t *url
 
           if (*bname == '\0')
              return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
-                                      _("There is no valid uri above '%s'"),
+                                      _("There is no valid URI above '%s'"),
                                       common);
 
           for (i = 0; i < targets->nelts; i++)



Mime
View raw message