You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pr...@apache.org on 2013/06/11 18:08:42 UTC

svn commit: r1491857 [1/3] - in /subversion/branches/verify-keep-going: ./ build/generator/ build/generator/templates/ subversion/bindings/cxxhl/include/ subversion/bindings/cxxhl/include/svncxxhl/ subversion/bindings/cxxhl/src/ subversion/bindings/cxx...

Author: prabhugs
Date: Tue Jun 11 16:08:40 2013
New Revision: 1491857

URL: http://svn.apache.org/r1491857
Log:
Syncing up with the trunk. Merge of r1488970 through r1491841 from trunk into verify-keep-going branch.

Added:
    subversion/branches/verify-keep-going/subversion/libsvn_subr/utf8proc/utf8proc.c
      - copied unchanged from r1491841, subversion/trunk/subversion/libsvn_subr/utf8proc/utf8proc.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/utf8proc/utf8proc_data.c
      - copied unchanged from r1491841, subversion/trunk/subversion/libsvn_subr/utf8proc/utf8proc_data.c
    subversion/branches/verify-keep-going/subversion/tests/cmdline/svntest/mergetrees.py
      - copied unchanged from r1491841, subversion/trunk/subversion/tests/cmdline/svntest/mergetrees.py
Removed:
    subversion/branches/verify-keep-going/subversion/libsvn_subr/utf8proc/utf8proc.c.inline
    subversion/branches/verify-keep-going/subversion/libsvn_subr/utf8proc/utf8proc_data.c.inline
    subversion/branches/verify-keep-going/subversion/tests/cmdline/utf8_tests.py
Modified:
    subversion/branches/verify-keep-going/   (props changed)
    subversion/branches/verify-keep-going/CHANGES
    subversion/branches/verify-keep-going/INSTALL
    subversion/branches/verify-keep-going/build.conf
    subversion/branches/verify-keep-going/build/generator/gen_win.py
    subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcproj.ezt
    subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcxproj.ezt
    subversion/branches/verify-keep-going/configure.ac
    subversion/branches/verify-keep-going/get-deps.sh
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp
    subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp
    subversion/branches/verify-keep-going/subversion/bindings/swig/perl/native/Client.pm
    subversion/branches/verify-keep-going/subversion/include/private/svn_cache.h
    subversion/branches/verify-keep-going/subversion/include/private/svn_ra_svn_private.h
    subversion/branches/verify-keep-going/subversion/include/private/svn_string_private.h
    subversion/branches/verify-keep-going/subversion/include/private/svn_wc_private.h
    subversion/branches/verify-keep-going/subversion/libsvn_client/commit.c
    subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c
    subversion/branches/verify-keep-going/subversion/libsvn_client/patch.c
    subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/caching.c
    subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/locks.c
    subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c
    subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c
    subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/marshal.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/cache-memcache.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/cache.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/dirent_uri.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/io.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/string.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/types.c
    subversion/branches/verify-keep-going/subversion/libsvn_subr/utf8proc.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/adm_ops.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/crop.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/deprecated.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/externals.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/update_editor.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/util.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.h
    subversion/branches/verify-keep-going/subversion/libsvn_wc/workqueue.c
    subversion/branches/verify-keep-going/subversion/mod_dav_svn/lock.c
    subversion/branches/verify-keep-going/subversion/mod_dav_svn/version.c
    subversion/branches/verify-keep-going/subversion/svn/conflict-callbacks.c
    subversion/branches/verify-keep-going/subversion/svn/file-merge.c
    subversion/branches/verify-keep-going/subversion/svn/svn.c
    subversion/branches/verify-keep-going/subversion/tests/cmdline/autoprop_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/blame_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/commit_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/history_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/lock_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/log_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_authz_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/mergeinfo_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/resolve_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/revert_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/stat_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/switch_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/update_tests.py
    subversion/branches/verify-keep-going/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/verify-keep-going/tools/dev/build-svn-deps-win.pl
    subversion/branches/verify-keep-going/tools/dev/unix-build/Makefile.svn
    subversion/branches/verify-keep-going/tools/server-side/svnpubsub/svnpubsub/server.py
    subversion/branches/verify-keep-going/win-tests.py

Propchange: subversion/branches/verify-keep-going/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1488970-1491841

Modified: subversion/branches/verify-keep-going/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/CHANGES?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/CHANGES (original)
+++ subversion/branches/verify-keep-going/CHANGES Tue Jun 11 16:08:40 2013
@@ -125,7 +125,6 @@ http://svn.apache.org/repos/asf/subversi
     * support ipv6 in URLs (e.g. http://[::1]/svn/repos) (r1454047)
     * conflict resolver now iterates paths in a sorted order (r1461820)
     * mod_dav_svn does keyword expansion with 'kw=1' query arg (r1466055)
-    * add support for custom keyword definitions (issue #890)
 
   - Minor new features and improvements (server-side):
     * improve performance of config file parsing (r1344347 et al)

Modified: subversion/branches/verify-keep-going/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/INSTALL?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/INSTALL (original)
+++ subversion/branches/verify-keep-going/INSTALL Tue Jun 11 16:08:40 2013
@@ -306,7 +306,7 @@ I.    INTRODUCTION
       newer. The autogen.sh script knows about that.
 
 
-      5.  Serf library 1.2 or newer (http://code.google.com/p/serf/) (OPTIONAL)
+      5.  Serf library 1.2.1 or newer (OPTIONAL)
 
       If you want your client to be able to speak to an Apache
       server (via a http:// or https:// URL), you must link against
@@ -320,6 +320,9 @@ I.    INTRODUCTION
 
       instead.
 
+      Serf can be obtained via your system's package distribution
+      system or directly from http://code.google.com/p/serf/.
+
       For more information on serf and Subversion's ra_serf, see the file
       subversion/libsvn_ra_serf/README.
 

Modified: subversion/branches/verify-keep-going/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build.conf?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build.conf (original)
+++ subversion/branches/verify-keep-going/build.conf Tue Jun 11 16:08:40 2013
@@ -41,8 +41,8 @@ private-includes =
         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
+        subversion/libsvn_subr/utf8proc/utf8proc.c
+        subversion/libsvn_subr/utf8proc/utf8proc_data.c
 private-built-includes =
         subversion/svn_private_config.h
         subversion/libsvn_fs_fs/rep-cache-db.h

Modified: subversion/branches/verify-keep-going/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/generator/gen_win.py?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/generator/gen_win.py (original)
+++ subversion/branches/verify-keep-going/build/generator/gen_win.py Tue Jun 11 16:08:40 2013
@@ -207,6 +207,11 @@ class GeneratorBase(gen_base.GeneratorBa
     # Initialize parent
     gen_base.GeneratorBase.__init__(self, fname, verfname, options)
 
+    # These files will be excluded from the build when they're not
+    # explicitly listed as project sources.
+    self._excluded_from_build = frozenset(self.private_includes
+                                          + self.private_built_includes)
+
     # Find Berkeley DB
     self._find_bdb()
 
@@ -514,6 +519,7 @@ class WinGeneratorBase(GeneratorBase):
         cbuild = None
         ctarget = None
         cdesc = None
+        cignore = None
         if isinstance(target, gen_base.TargetJavaHeaders):
           classes = self.path(target.classes)
           if self.junit_path is not None:
@@ -548,9 +554,18 @@ class WinGeneratorBase(GeneratorBase):
         if quote_path and '-' in rsrc:
           rsrc = '"%s"' % rsrc
 
+        if (not isinstance(source, gen_base.SourceFile)
+            and cbuild is None and ctarget is None and cdesc is None
+            and source in self._excluded_from_build):
+          # Make sure include dependencies are excluded from the build.
+          # This is an 'orrible 'ack that relies on the source being a
+          # string if it's an include dependency, or a SourceFile object
+          # otherwise.
+          cignore = 'yes'
+
         sources.append(ProjectItem(path=rsrc, reldir=reldir, user_deps=[],
                                    custom_build=cbuild, custom_target=ctarget,
-                                   custom_desc=cdesc,
+                                   custom_desc=cdesc, ignored = cignore,
                                    extension=os.path.splitext(rsrc)[1]))
 
     if isinstance(target, gen_base.TargetJavaClasses) and target.jar:
@@ -1448,7 +1463,7 @@ class WinGeneratorBase(GeneratorBase):
   def _find_serf(self):
     "Check if serf and its dependencies are available"
 
-    minimal_serf_version = (1, 2, 0)
+    minimal_serf_version = (1, 2, 1)
     self.serf_lib = None
     if self.serf_path and os.path.exists(self.serf_path):
       if self.openssl_path and os.path.exists(self.openssl_path):
@@ -1641,6 +1656,7 @@ class WinGeneratorBase(GeneratorBase):
 class ProjectItem:
   "A generic item class for holding sources info, config info, etc for a project"
   def __init__(self, **kw):
+    self.ignored = None
     vars(self).update(kw)
 
 # ============================================================================

Modified: subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcproj.ezt?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcproj.ezt (original)
+++ subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcproj.ezt Tue Jun 11 16:08:40 2013
@@ -121,9 +121,15 @@
 		<Filter
 			Name="Source Files"
 			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
-[for sources][is sources.extension ".h"][else]		<File
+[for sources][is sources.extension ".h"][else][is sources.extension ".hpp"][else]		<File
 			RelativePath="[sources.path]">
-[if-any sources.custom_build][for platforms][for configs]
+[if-any sources.ignored][for platforms][for configs]			<FileConfiguration
+				Name="[configs.name]|[platforms]"
+				ExcludedFromBuild="TRUE">
+				<Tool
+					Name="VCCustomBuildTool"/>
+			</FileConfiguration>
+[end][end][else][if-any sources.custom_build][for platforms][for configs]
 			<FileConfiguration
 				Name="[configs.name]|[platforms]">
 				<Tool
@@ -142,9 +148,9 @@
 					ObjectFile="$(IntDir)/[sources.reldir]/"
 					ProgramDataBaseFileName="$(IntDir)/[sources.reldir]/[target.proj_name]-[sources.reldir].pdb"/>
 			</FileConfiguration>
-[end][end][end]
+[end][end][end][end]
 		</File>
-[end][end]
+[end][end][end]
 [is target_type "2"]		<File RelativePath="..\empty.c"/>[end]
         </Filter>
 		<Filter
@@ -153,7 +159,10 @@
 [for sources][is sources.extension ".h"]
 		<File
 			RelativePath="[sources.path]" />
-[end][end]
+[else][is sources.extension ".hpp"]
+		<File
+			RelativePath="[sources.path]" />
+[end][end][end]
         </Filter>
 	</Files>
 	<Globals>

Modified: subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcxproj.ezt?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/branches/verify-keep-going/build/generator/templates/vcnet_vcxproj.ezt Tue Jun 11 16:08:40 2013
@@ -94,20 +94,21 @@
 [end][end]    </ResourceCompile>
   </ItemGroup>
 [end]  <ItemGroup>
-[for sources][is sources.extension ".h"][else][if-any sources.custom_build]    <CustomBuild Include="[sources.path]">
+[for sources][is sources.extension ".h"][else][is sources.extension ".hpp"][else][if-any sources.custom_build]    <CustomBuild Include="[sources.path]">
       <FileType>Document</FileType>
 [for configs][for platforms]      <Command Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">[sources.custom_build]</Command>
       <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">[for sources.user_deps][sources.user_deps];[end]%(AdditionalInputs)</AdditionalInputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">[sources.custom_target];%(Outputs)</Outputs>
 [if-any sources.custom_desc]<Message Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">[sources.custom_desc]</Message>
 [end][end][end]    </CustomBuild>
-[else][is sources.extension ".c"]    <ClCompile Include="[sources.path]" />
-[else][is sources.extension ".cpp"]    <ClCompile Include="[sources.path]" />
+[else][is sources.extension ".c"][if-any sources.ignored]    <None Include="[sources.path]" />[else]    <ClCompile Include="[sources.path]" />[end]
+[else][is sources.extension ".cpp"][if-any sources.ignored]    <None Include="[sources.path]" />[else]    <ClCompile Include="[sources.path]" />[end]
 [else]    <None Include="[sources.path]" />
-[end][end][end][end][end]  </ItemGroup>
+[end][end][end][end][end][end]  </ItemGroup>
   <ItemGroup>
 [for sources][is sources.extension ".h"]    <ClInclude Include="[sources.path]" />
-[end][end]  </ItemGroup>
+[else][is sources.extension ".hpp"]    <ClInclude Include="[sources.path]" />
+[end][end][end]  </ItemGroup>
   <ItemGroup>
 [for depends]    <ProjectReference Include="[depends.path]">
       <Project>[depends.guid]</Project>

Modified: subversion/branches/verify-keep-going/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/configure.ac?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/configure.ac (original)
+++ subversion/branches/verify-keep-going/configure.ac Tue Jun 11 16:08:40 2013
@@ -125,7 +125,7 @@ dnl Search for pkg-config
 AC_PATH_PROG(PKG_CONFIG, pkg-config)
 
 dnl Search for serf
-SVN_LIB_SERF(1,2,0)
+SVN_LIB_SERF(1,2,1)
 
 if test "$svn_lib_serf" = "yes"; then
   AC_DEFINE([SVN_HAVE_SERF], 1,

Modified: subversion/branches/verify-keep-going/get-deps.sh
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/get-deps.sh?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/get-deps.sh (original)
+++ subversion/branches/verify-keep-going/get-deps.sh Tue Jun 11 16:08:40 2013
@@ -33,7 +33,7 @@
 
 APR_VERSION=${APR_VERSION:-"1.4.6"}
 APU_VERSION=${APU_VERSION:-"1.5.1"}
-SERF_VERSION=${SERF_VERSION:-"1.2.0"}
+SERF_VERSION=${SERF_VERSION:-"1.2.1"}
 ZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
 SQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"}
 GTEST_VERSION=${GTEST_VERSION:-"1.6.0"}

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl.hpp Tue Jun 11 16:08:40 2013
@@ -32,6 +32,6 @@
 #include "svncxxhl/exception.hpp"
 #include "svncxxhl/tristate.hpp"
 
-namespace svn = ::subversion::cxxhl::version_1_9_dev;
+namespace SVN = ::apache::subversion::cxxhl;
 
 #endif  // SVN_CXXHL_HPP

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp Tue Jun 11 16:08:40 2013
@@ -28,64 +28,76 @@
 #ifndef SVN_CXXHL_COMPAT_HPP
 #define SVN_CXXHL_COMPAT_HPP
 
-// Configuration test: std::shared_ptr<>
+// Configuration test: std::shared_ptr<> and friends
 // Currently detects: clang++, g++, msvc-2010+
-#ifndef SVN_CXXHL_HAVE_STD_SHARED_PTR
+#ifndef SVN_CXXHL_HAVE_STD_SMART_PTRS
 #  if   (defined(__clang__) && __cplusplus >= 201103L) \
      || (defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__)) \
      || (defined(_MSC_VER) && _MSC_VER >= 1600)
-#    define SVN_CXXHL_HAVE_STD_SHARED_PTR
+#    define SVN_CXXHL_HAVE_STD_SMART_PTRS
 #  endif  // config test: std::shared_ptr<>
-#endif  // SVN_CXXHL_HAVE_STD_SHARED_PTR
+#endif  // SVN_CXXHL_HAVE_STD_SMART_PTRS
 
-// Configuration test: std::tr1::shared_ptr<>
+// Configuration test: std::tr1::shared_ptr<> and friends
 // Currently detects: clang++, g++
-#ifndef SVN_CXXHL_HAVE_STD_SHARED_PTR
-#  ifndef SVN_CXXHL_HAVE_STD_TR1_SHARED_PTR
+#ifndef SVN_CXXHL_HAVE_STD_SMART_PTRS
+#  ifndef SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS
 #    if   defined(__GNUC__) \
        && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1)
-#      define SVN_CXXHL_HAVE_STD_TR1_SHARED_PTR
+#      define SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS
 #    endif  // config test: std::tr1::shared_ptr<>
-#  endif  // SVN_CXXHL_HAVE_STD_TR1_SHARED_PTR
-#endif  // SVN_CXXHL_HAVE_STD_SHARED_PTR
+#  endif  // SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS
+#endif  // SVN_CXXHL_HAVE_STD_SMART_PTRS
 
 
-#if defined(SVN_CXXHL_HAVE_STD_SHARED_PTR)
+#if defined(SVN_CXXHL_HAVE_STD_SMART_PTRS)
 
 #include <memory>
+namespace apache {
 namespace subversion {
 namespace cxxhl {
 namespace compat {
+using std::weak_ptr;
 using std::shared_ptr;
+using std::enable_shared_from_this;
 } // namespace compat
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache
 
-#elif defined(SVN_CXXHL_HAVE_STD_TR1_SHARED_PTR)
+#elif defined(SVN_CXXHL_HAVE_STD_TR1_SMART_PTRS)
 
 #include <tr1/memory>
+namespace apache {
 namespace subversion {
 namespace cxxhl {
 namespace compat {
+using std::tr1::weak_ptr;
 using std::tr1::shared_ptr;
+using std::tr1::enable_shared_from_this;
 } // namespace compat
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache
 
 #else
-// We need shared_ptr<> from somewhere. If we cannot find it in ::std
-// given known compiler characteristics, then try boost as a last
-// resort.
+// We need smart pointers from somewhere. If we cannot find them in
+// ::std given known compiler characteristics, then try Boost as a
+// last resort.
 
 #include <boost/shared_ptr.hpp>
+namespace apache {
 namespace subversion {
 namespace cxxhl {
 namespace compat {
+using boost::weak_ptr;
 using boost::shared_ptr;
+using boost::enable_shared_from_this;
 } // namespace compat
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache
 
-#endif  // SVN_CXXHL_HAVE_STD_SHARED_PTR
+#endif  // SVN_CXXHL_HAVE_STD_SMART_PTRS
 
 #endif  // SVN_CXXHL_COMPAT_HPP

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp Tue Jun 11 16:08:40 2013
@@ -38,6 +38,7 @@
 // Forward declaration of implementation-specific structure
 struct svn_error_t;
 
+namespace apache {
 namespace subversion {
 namespace cxxhl {
 
@@ -45,22 +46,20 @@ namespace compat {} // Announce the comp
 
 namespace detail {
 // Forward declaration of implementation-specific structure
-class error_description;
+class ErrorDescription;
 } // namespace detail
 
-namespace version_1_9_dev {
-
-class error : public std::exception
+class Error : public std::exception
 {
 public:
-  typedef compat::shared_ptr<error> shared_ptr;
+  typedef compat::shared_ptr<Error> shared_ptr;
 
-  error(const char* description, int error_code);
-  error(const char* description, int error_code, shared_ptr nested_error);
+  Error(const char* description, int error_code);
+  Error(const char* description, int error_code, shared_ptr nested_error);
 
-  error(const error& that) throw();
-  error& operator=(const error& that) throw();
-  virtual ~error() throw();
+  Error(const Error& that) throw();
+  Error& operator=(const Error& that) throw();
+  virtual ~Error() throw();
 
   /**
    * Returns the error code associated with the exception.
@@ -83,18 +82,18 @@ public:
    * describes the location in the source code where the error was
    * generated from.
    */
-  typedef std::pair<int, std::string> message;
+  typedef std::pair<int, std::string> Message;
 
   /**
    * The list of messages associated with an error.
    */
-  typedef std::vector<message> message_list;
+  typedef std::vector<Message> MessageList;
 
   /**
    * Returns the complete list of error messages, including those from
    * nested exceptions.
    */
-  virtual message_list messages() const
+  virtual MessageList messages() const
     {
       return compile_messages(false);
     }
@@ -106,7 +105,7 @@ public:
    * Traceback is only available if the Subversion libraries were
    * compiled with tracing enabled.
    */
-  virtual message_list traced_messages() const
+  virtual MessageList traced_messages() const
     {
       return compile_messages(true);
     }
@@ -116,29 +115,29 @@ public:
   static void throw_svn_error(svn_error_t*);
 
 protected:
-  error(int error_code, detail::error_description* description) throw();
+  Error(int error_code, detail::ErrorDescription* description) throw();
 
 private:
-  std::vector<message> compile_messages(bool show_traces) const;
+  MessageList compile_messages(bool show_traces) const;
 
   int m_errno;                /**< The (SVN or APR) error code. */
   shared_ptr m_nested;        /**< Optional pointer to nessted error. */
   /** Error description and trace location information. */
-  detail::error_description* m_description;
+  detail::ErrorDescription* m_description;
 };
 
-class cancelled : public error
+class Cancelled : public Error
 {
-  friend void error::throw_svn_error(svn_error_t*);
+  friend void Error::throw_svn_error(svn_error_t*);
 
 protected:
-  cancelled(int error_code, detail::error_description* description) throw()
-    : error(error_code, description)
+  Cancelled(int error_code, detail::ErrorDescription* description) throw()
+    : Error(error_code, description)
     {}
 };
 
-} // namespace version_1_9_dev
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache
 
 #endif  // SVN_CXXHL_EXCEPTION_HPP

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp Tue Jun 11 16:08:40 2013
@@ -28,37 +28,37 @@
 #ifndef SVN_CXXHL_TRISTATE_HPP
 #define SVN_CXXHL_TRISTATE_HPP
 
+namespace apache {
 namespace subversion {
 namespace cxxhl {
-namespace version_1_9_dev {
 
-class tristate
+class Tristate
 {
 public:
-  static const tristate TRUE;
-  static const tristate FALSE;
-  static const tristate UNKNOWN;
+  static const Tristate TRUE;
+  static const Tristate FALSE;
+  static const Tristate UNKNOWN;
 
-  tristate(const tristate& that) throw()
+  Tristate(const Tristate& that) throw()
     : m_value(that.m_value)
     {}
 
-  bool operator==(const tristate& that) const throw()
+  bool operator==(const Tristate& that) const throw()
     { return m_value == that.m_value; }
 
-  bool operator!=(const tristate& that) const throw()
+  bool operator!=(const Tristate& that) const throw()
     { return !(*this == that); }
 
   bool known() const throw()
     { return *this != UNKNOWN; }
 
 private:
-  explicit tristate(short int value) throw();
+  explicit Tristate(short int value) throw();
   short int m_value;
 };
 
-} // namespace version_1_9_dev
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache
 
 #endif  // SVN_CXXHL_TRISTATE_HPP

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/exception.cpp Tue Jun 11 16:08:40 2013
@@ -37,23 +37,24 @@
 #undef TRUE
 #undef FALSE
 
+namespace apache {
 namespace subversion {
 namespace cxxhl {
 
 namespace detail {
 
-class error_description
+class ErrorDescription
 {
 public:
-  static error_description* create(const char* message,
-                                   const char *loc_file, long loc_line,
-                                   bool trace_link)
+  static ErrorDescription* create(const char* message,
+                                  const char *loc_file, long loc_line,
+                                  bool trace_link)
     {
       bool empty_message = (message == NULL);
       const std::size_t length = (empty_message ? 0 : std::strlen(message));
-      void *memblock = ::operator new(length + sizeof(error_description));
+      void *memblock = ::operator new(length + sizeof(ErrorDescription));
 
-      error_description* description = new(memblock) error_description(
+      ErrorDescription* description = new(memblock) ErrorDescription(
           loc_file, loc_line, trace_link, empty_message);
       if (length)
         std::memcpy(description->m_message, message, length);
@@ -61,23 +62,23 @@ public:
       return description;
     }
 
-  static error_description* create(const char* message)
+  static ErrorDescription* create(const char* message)
     {
       return create(message, NULL, 0, false);
     }
 
-  error_description* reference() throw()
+  ErrorDescription* reference() throw()
     {
       if (this)
         svn_atomic_inc(&m_refcount);
       return this;
     }
 
-  error_description* dereference() throw()
+  ErrorDescription* dereference() throw()
     {
       if (this && 0 == svn_atomic_dec(&m_refcount))
         {
-          this->~error_description();
+          this->~ErrorDescription();
           ::operator delete(this, std::nothrow);
           return NULL;
         }
@@ -90,8 +91,8 @@ public:
   bool trace() const throw() { return m_trace; }
 
 private:
-  error_description(const char *loc_file, long loc_line,
-                    bool trace_link, bool empty_message) throw()
+  ErrorDescription(const char *loc_file, long loc_line,
+                   bool trace_link, bool empty_message) throw()
     : m_loc_file(loc_file),
       m_loc_line(loc_line),
       m_trace(trace_link),
@@ -99,7 +100,7 @@ private:
       m_refcount(0)
     {}
 
-  ~error_description() throw() {}
+  ~ErrorDescription() throw() {}
 
   const char* m_loc_file;
   long m_loc_line;
@@ -113,27 +114,25 @@ private:
 } // namespace detail
 
 
-namespace version_1_9_dev {
-
-error::error(const char* description, int error_code)
+Error::Error(const char* description, int error_code)
   : m_errno(error_code),
-    m_description(detail::error_description::create(description)->reference())
+    m_description(detail::ErrorDescription::create(description)->reference())
 {}
 
-error::error(const char* description, int error_code,
-             error::shared_ptr nested_error)
+Error::Error(const char* description, int error_code,
+             Error::shared_ptr nested_error)
   : m_errno(error_code),
     m_nested(nested_error),
-    m_description(detail::error_description::create(description)->reference())
+    m_description(detail::ErrorDescription::create(description)->reference())
 {}
 
-error::error(const error& that) throw()
+Error::Error(const Error& that) throw()
   : m_errno(that.m_errno),
     m_nested(that.m_nested),
     m_description(that.m_description->reference())
 {}
 
-error& error::operator=(const error& that) throw()
+Error& Error::operator=(const Error& that) throw()
 {
   if (this == &that)
     return *this;
@@ -141,29 +140,28 @@ error& error::operator=(const error& tha
   // This in-place destroy+copy implementation of the assignment
   // operator is safe because both the destructor and the copy
   // constructor do not throw exceptions.
-  this->~error();
-  return *new(this) error(that);
+  this->~Error();
+  return *new(this) Error(that);
 }
 
-error::~error() throw()
+Error::~Error() throw()
 {
   m_description->dereference();
 }
 
-const char* error::what() const throw()
+const char* Error::what() const throw()
 {
   return m_description->what();
 }
 
-error::error(int error_code, detail::error_description* description) throw()
+Error::Error(int error_code, detail::ErrorDescription* description) throw()
   : m_errno(error_code),
     m_description(description)
 {}
 
-void error::throw_svn_error(svn_error_t* err)
+void Error::throw_svn_error(svn_error_t* err)
 {
-  const bool throw_cancelled = (err->apr_err == SVN_ERR_CANCELLED);
-  detail::error_description* description = NULL;
+  detail::ErrorDescription* description = NULL;
   try
     {
       // Be very careful when creating the error descriptions, so that
@@ -174,33 +172,36 @@ void error::throw_svn_error(svn_error_t*
       shared_ptr nested;
       shared_ptr* current = &nested;
 
+      bool cancelled = (err->apr_err == SVN_ERR_CANCELLED);
       for (svn_error_t* next = err->child; next; next = next->child)
         {
-          description = detail::error_description::create(
+          description = detail::ErrorDescription::create(
               next->message, next->file, next->line,
               svn_error__is_tracing_link(next));
           description->reference();
-          current->reset(new error(next->apr_err, description));
+          current->reset(new Error(next->apr_err, description));
           description = NULL;
           current = &(*current)->m_nested;
+          if (next->apr_err == SVN_ERR_CANCELLED)
+            cancelled = true;
         }
 
       const int apr_err = err->apr_err;
-      description = detail::error_description::create(
+      description = detail::ErrorDescription::create(
           err->message, err->file, err->line,
           svn_error__is_tracing_link(err));
       description->reference();
       svn_error_clear(err);
-      if (throw_cancelled)
+      if (cancelled)
         {
-          cancelled converted = cancelled(apr_err, description);
+          Cancelled converted = Cancelled(apr_err, description);
           description = NULL;
           converted.m_nested = nested;
           throw converted;
         }
       else
         {
-          error converted = error(apr_err, description);
+          Error converted = Error(apr_err, description);
           description = NULL;
           converted.m_nested = nested;
           throw converted;
@@ -215,8 +216,8 @@ void error::throw_svn_error(svn_error_t*
 
 
 namespace {
-void handle_one_error(error::message_list& ml, bool show_traces,
-                      int error_code, detail::error_description* descr,
+void handle_one_error(Error::MessageList& ml, bool show_traces,
+                      int error_code, detail::ErrorDescription* descr,
                       apr_pool_t* pool)
 {
   if (show_traces && descr->file())
@@ -234,8 +235,20 @@ void handle_one_error(error::message_lis
         buffer << file_utf8 << ':' << descr->line();
       else
         buffer << "svn:<undefined>";
-      buffer << ": (apr_err=" << error_code << ')';
-      ml.push_back(error::message(0, buffer.str()));
+      if (descr->trace())
+        buffer << ',';
+      else
+        {
+#ifdef SVN_DEBUG
+          if (const char *const symbolic_name =
+              svn_error_symbolic_name(error_code))
+            //if (symbolic_name)
+            buffer << ": (apr_err=" << symbolic_name << ')';
+          else
+#endif
+            buffer << ": (apr_err=" << error_code << ')';
+        }
+      ml.push_back(Error::Message(0, buffer.str()));
     }
 
   if (descr->trace())
@@ -264,22 +277,22 @@ void handle_one_error(error::message_lis
             }
         }
     }
-  ml.push_back(error::message(error_code, std::string(description)));
+  ml.push_back(Error::Message(error_code, std::string(description)));
 }
 } // anonymous namespace
 
-error::message_list error::compile_messages(bool show_traces) const
+Error::MessageList Error::compile_messages(bool show_traces) const
 {
   // Determine the maximum size of the returned list
-  message_list::size_type max_length = 0;
-  for (const error* err = this; err; err = err->m_nested.get())
+  MessageList::size_type max_length = 0;
+  for (const Error* err = this; err; err = err->m_nested.get())
     {
       if (show_traces && m_description->file())
         ++max_length;                   // We will display an error location
       if (!m_description->trace())
         ++max_length;                   // Traces do not emit a message line
     }
-  message_list ml;
+  MessageList ml;
   ml.reserve(max_length);
 
   // This vector holds a list of all error codes that we've printed
@@ -291,7 +304,7 @@ error::message_list error::compile_messa
   apr_pool_create(&pool, NULL);
   try
     {
-      for (const error* err = this; err; err = err->m_nested.get())
+      for (const Error* err = this; err; err = err->m_nested.get())
         {
           if (!err->m_description->what())
             {
@@ -317,6 +330,6 @@ error::message_list error::compile_messa
   return ml;
 }
 
-} // namespace version_1_9_dev
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/src/tristate.cpp Tue Jun 11 16:08:40 2013
@@ -27,18 +27,18 @@
 #undef TRUE
 #undef FALSE
 
+namespace apache {
 namespace subversion {
 namespace cxxhl {
-namespace version_1_9_dev {
 
-tristate::tristate(short value) throw()
+Tristate::Tristate(short value) throw()
     : m_value(value)
 {}
 
-const tristate tristate::TRUE = tristate(svn_tristate_true);
-const tristate tristate::FALSE = tristate(svn_tristate_false);
-const tristate tristate::UNKNOWN = tristate(svn_tristate_unknown);
+const Tristate Tristate::TRUE = Tristate(svn_tristate_true);
+const Tristate Tristate::FALSE = Tristate(svn_tristate_false);
+const Tristate Tristate::UNKNOWN = Tristate(svn_tristate_unknown);
 
-} // namespace version_1_9_dev
 } // namespace cxxhl
 } // namespace subversion
+} // namespace apache

Modified: subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/cxxhl/tests/test_exception.cpp Tue Jun 11 16:08:40 2013
@@ -20,6 +20,7 @@
  */
 
 #include <algorithm>
+#include <cstdio>
 #include <iomanip>
 #include <ios>
 #include <iostream>
@@ -30,7 +31,7 @@
 #include "svn_error.h"
 
 namespace {
-void trace(const svn::error::message& msg)
+void trace(const SVN::Error::Message& msg)
 {
   std::cout << "    ";
   if (msg.first)
@@ -40,17 +41,48 @@ void trace(const svn::error::message& ms
   std::cout << msg.second << std::endl;
 }
 
-void traceall(const char *message, const svn::error& err)
+void traceall(const char *message, const SVN::Error& err)
 {
-  typedef svn::error::message_list message_list;
+  typedef SVN::Error::MessageList MessageList;
   std::cout << message << std::endl;
   std::cout << "Traced Messages:" << std::endl;
-  message_list ml = err.traced_messages();
+  MessageList ml = err.traced_messages();
   std::for_each(ml.begin(), ml.end(), trace);
   std::cout << "Just Messages:" << std::endl;
   ml = err.messages();
   std::for_each(ml.begin(), ml.end(), trace);
 }
+
+void tracecheck(svn_error_t* err)
+{
+  std::cout << "C-API handler:" << std::endl;
+  svn_handle_error2(err, stdout, false, "    test_exception");
+  svn_error_clear(err);
+}
+
+svn_error_t* make_cancel_test_error()
+{
+  svn_error_t* err;
+  err = svn_error_create(SVN_ERR_CANCELLED, NULL, NULL);
+  err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
+  err = svn_error_trace(err);
+  err = svn_error_create(SVN_ERR_TEST_FAILED, err, "original message");
+  err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
+  err = svn_error_trace(err);
+  return err;
+}
+
+svn_error_t* make_error_test_error()
+{
+  svn_error_t* err;
+  err = svn_error_create(SVN_ERR_TEST_FAILED, NULL, "original message");
+  err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
+  err = svn_error_trace(err);
+  err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
+  err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
+  err = svn_error_trace(err);
+  return err;
+}
 } // anonymous namespace
 
 
@@ -58,22 +90,18 @@ bool test_cancel()
 {
   try
     {
-      svn_error_t* err;
-      err = svn_error_create(SVN_ERR_TEST_FAILED, NULL, "original message");
-      err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
-      err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
-      err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
-      err = svn_error_trace(err);
-      svn::error::throw_svn_error(err);
+      SVN::Error::throw_svn_error(make_cancel_test_error());
     }
-  catch (const svn::cancelled& err)
+  catch (const SVN::Cancelled& err)
     {
-      traceall("Caught: CANCEL", err);
+      traceall("Caught: CANCELLED", err);
+      tracecheck(make_cancel_test_error());
       return true;
     }
-  catch (const svn::error& err)
+  catch (const SVN::Error& err)
     {
       traceall("Caught: ERROR", err);
+      tracecheck(make_cancel_test_error());
       return false;
     }
   catch (...)
@@ -87,24 +115,18 @@ int test_error()
 {
   try
     {
-      svn_error_t* err;
-      err = svn_error_create(SVN_ERR_TEST_FAILED, NULL, "original message");
-      err = svn_error_create(SVN_ERR_BASE, err, "wrapper message");
-      err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
-      err = svn_error_create(SVN_ERR_CANCELLED, err, NULL);
-      err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
-      err = svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, err, NULL);
-      err = svn_error_trace(err);
-      svn::error::throw_svn_error(err);
+      SVN::Error::throw_svn_error(make_error_test_error());
     }
-  catch (const svn::cancelled& err)
+  catch (const SVN::Cancelled& err)
     {
-      traceall("Caught: CANCEL", err);
+      traceall("Caught: CANCELLED", err);
+      tracecheck(make_error_test_error());
       return false;
     }
-  catch (const svn::error& err)
+  catch (const SVN::Error& err)
     {
       traceall("Caught: ERROR", err);
+      tracecheck(make_error_test_error());
       return true;
     }
   catch (...)

Modified: subversion/branches/verify-keep-going/subversion/bindings/swig/perl/native/Client.pm
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/bindings/swig/perl/native/Client.pm?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/bindings/swig/perl/native/Client.pm (original)
+++ subversion/branches/verify-keep-going/subversion/bindings/swig/perl/native/Client.pm Tue Jun 11 16:08:40 2013
@@ -131,16 +131,17 @@ to an array of them.
 
 =item $revision
 
-This specifies a revision in the subversion repository.  You can specify a
+This specifies a revision in the Subversion repository.  You can specify a
 revision in several ways.  The easiest and most obvious is to directly
 provide the revision number.  You may also use the strings (aka revision
 keywords) 'HEAD', 'BASE', 'COMMITTED', and 'PREV' which have the same
 meanings as in the command line client.  When referencing a working copy
 you can use the string 'WORKING" to reference the BASE plus any local
-modifications.  undef may be used to specify an unspecified revision.
-Finally you may pass a date by specifying the date inside curly braces
+modifications.  C<undef> may be used to specify an unspecified revision.
+You may alos pass a date by specifying the date inside curly braces
 '{}'.  The date formats accepted are the same as the command line client
-accepts.
+accepts. Finally a C<_p_svn_opt_revision_t> object is accepted
+(which may have been returned by some Subversion function).
 
 =item $recursive $nonrecursive.
 
@@ -564,48 +565,113 @@ operation, invoking $receiver on each ch
  };
  $client->info( 'foo/bar.c', undef, 'WORKING', $receiver, 0 );
 
-=item $client-E<gt>log($targets, $start, $end, $discover_changed_paths, $strict_node_history, \&log_receiver, $pool);
+=item $client-E<gt>log5($targets, $peg_revision, $revision_ranges, $limit, $discover_changed_paths, $strict_node_history, $include_merged_revisions, $revprops, \&log_entry_receiver, $pool);
 
-Invoke the log_receiver subroutine on each log_message from $start to $end in
-turn, inclusive (but will never invoke receiver on a given log message more
+Invoke C<log_entry_receiver> on each log message from
+each revision range in C<$revision_ranges> in turn,
+inclusive (but never invoke C<log_entry_receiver> on a given log message more
 than once).
 
-$targets is a reference to an array containing all the paths or URLs for
-which the log messages are desired.  The log_receiver is only invoked on
-messages whose revisions involved a change to some path in $targets.
+C<$targets> is a reference to an array of either a URL followed by zero 
+or more relative paths, or 1 working copy path, for which log
+messages are desired. If the array contains only a single element
+you may set C<$targets> to this element instead.
+C<log_entry_receiver> is invoked only on messages whose
+revisions involved a change to some path in C<$targets>.
+
+C<$peg_revision> indicates in which revision C<$targets> are valid. 
+If C<$peg_revision> is C<undef>, it defaults to 'HEAD'
+for URLs or 'WORKING' for WC paths.
+
+C<$revision_ranges> is either a single I<revision range> or a reference
+to an array of them. A I<revision range> may be specified
+as a reference to a two-element array C<[$start, $end]>
+of L<$revision|/$revision>s or a 
+L<SVN::Core::svn_opt_revision_range_t|SVN::Core/svn_opt_revision_range_t> 
+object. Examples:
+
+  $revision_ranges = ['HEAD', 1];
+  $revision_ranges = [[2, 3], [5, 8], [13, 21]];
+
+If C<$limit> is non-zero only invoke C<log_entry_receiver> 
+on the first C<$limit> logs.
+
+If C<$discover_changed_paths> is true, then the I<changed_paths2> field 
+in the C<$log_entry> argument to C<log_entry_receiver> will be
+populated on each invocation.  I<Note:> The I<text_modified> and
+I<props_modified> fields of the I<changed_paths2> structure may have the value
+C<$SVN::Tristate::unknown> if the repository does not report that information.
+
+If C<$strict_node_history> is true, copy history (if any exists) will
+not be traversed while harvesting revision logs for each target.
+
+If C<$include_merged_revisions> is true, log information for revisions
+which have been merged to C<$targets> will also be returned.
+
+If C<$revprops> is C<undef>, retrieve all revision properties.
+Otherwise C<$revpros> should be a reference to an array of
+property names and only these properties will be retrieved
+(i.e. none if the array is empty).
+
+Use C<$pool> for any temporary allocation.
+
+Calls the notify subroutine with a C<$SVN::Wc::Notify::Action::skip> 
+signal on any unversioned C<$targets>.
+
+The C<log_entry_receiver> takes the following arguments:
+C<$log_entry, $pool>.  C<$log_entry> is a 
+L<SVN::Core::svn_log_entry_t|SVN::Core/svn_log_entry_t> object.
+
+=item $client-E<gt>log4($targets, $peg_revision, $start, $end, $limit, $discover_changed_paths, $strict_node_history, $include_merged_revisions, $revprops, \&log_entry_receiver, $pool);
+
+Similar to C<$client-E<gt>log5()>, 
+but takes explicit C<$start> and C<$end> parameters
+instead of C<$revision_ranges>.
+
+Deprecated.
+
+=item $client-E<gt>log3($targets, $peg_revision, $start, $end, $limit, $discover_changed_paths, $strict_node_history, \&log_message_receiver, $pool);
+
+Similar to C<$client-E<gt>log4()>, but using C<log_message_receiver>
+instead of C<log_entry_receiver>.  Also, C<$include_merged_revisions> 
+is false and C<$revprops> is [qw( svn:author svn:date and svn:log )].
+
+The C<log_message_receiver> takes the following arguments:
+C<$changed_paths, $revision, $author, $date, $message, $pool>.
+It is called once for each log C<$message> from the C<$revision>
+on C<$date> by C<$author>.  C<$author>, C<$date> or C<$message> 
+may be C<undef>.
+
+If C<$changed_paths> is defined it references a hash with the keys
+every path committed in C<$revision>; the values are 
+L<SVN::Core::svn_log_changed_path_t|SVN::Core/svn_log_changed_path_t>
+objects.
+
+Deprecated.
+
+=item $client-E<gt>log2($targets, $start, $end, $limit, $discover_changed_paths, $strict_node_history, \&log_message_receiver, $pool);
 
-If $discover_changed_paths is set, then the changed_paths argument to the
-log_receiver routine will be passed on each invocation.
+Similar to C<$client-E<gt>log3()>, but with C<$peg_revision> set to C<undef>.
 
-If $strict_node_history is set, copy history (if any exists) will not be
-traversed while harvesting revision logs for each target.
+Deprecated.
 
-If $start or $end is undef the arp_err code will be set to:
-$SVN::Error::CLIENT_BAD_REVISION.
+=item $client-E<gt>log($targets, $start, $end, $discover_changed_paths, $strict_node_history, \&log_message_receiver, $pool);
 
-Special case for repositories at revision 0:
+Similar to C<$client-E<gt>log2()>, but with C<$limit> set to 0.
 
-If $start is 'HEAD' and $end is 1, then handle an empty (no revisions)
+I<Special case for repositories at revision 0:>
+If C<$start> is 'HEAD' and C<$end> is 1, then handle an empty (no revisions)
 repository specially: instead of erroring because requested revision 1
-when the highest revision is 0, just invoke $log_receiver on revision 0,
-passing undef to changed paths and empty strings for the author and date.
-This is because that particular combination of $start and $end usually indicates
+when the highest revision is 0, just invoke 
+C<log_message_receiver> on revision 0,
+passing C<undef> to C<$changed_paths> and empty strings for the author and date.
+This is because that particular combination of C<$start> 
+and C<$end> usually indicates
 the common case of log invocation; the user wants to see all log messages from
 youngest to oldest, where the oldest commit is revision 1.  That works fine,
 except there are no commits in the repository, hence this special case.
 
-Calls the notify subroutine with a $SVN::Wc::Notify::Action::skip signal on any
-unversioned targets.
-
-The log_receiver takes the following arguments:
-$changed_paths, $revision, $author, $date, $message, $pool
-
-It is called once for each log $message from the $revision
-on $date by $author.  $author, $date or $message may be undef.
-
-If $changed_paths is defined it references a hash with the keys
-every path committed in $revision; the values are svn_log_changed_path_t
-objects.
+Deprecated.
 
 =item $client-E<gt>ls($target, $revision, $recursive, $pool);
 
@@ -1719,14 +1785,6 @@ for more details.
 
 =item $client-E<gt>list2(...)
 
-=item $client-E<gt>log2(...)
-
-=item $client-E<gt>log3(...)
-
-=item $client-E<gt>log4(...)
-
-=item $client-E<gt>log5(...)
-
 =item $client-E<gt>ls2(...)
 
 =item $client-E<gt>ls3(...)

Modified: subversion/branches/verify-keep-going/subversion/include/private/svn_cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/private/svn_cache.h?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/private/svn_cache.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/private/svn_cache.h Tue Jun 11 16:08:40 2013
@@ -173,6 +173,12 @@ typedef struct svn_cache__info_t
    * May be 0 if that information is not available.
    */
   apr_uint64_t total_entries;
+
+  /** Number of index buckets with the given number of entries.
+   * Bucket sizes larger than the array will saturate into the
+   * highest array index.
+   */
+  apr_uint64_t histogram[32];
 } svn_cache__info_t;
 
 /**
@@ -461,13 +467,16 @@ svn_cache__get_info(svn_cache__t *cache,
 
 /**
  * Return the information given in @a info formatted as a multi-line string.
- * Allocations take place in @a result_pool.
+ * If @a access_only has been set, size and fill-level statistics will be
+ * omitted.  Allocations take place in @a result_pool.
  */
 svn_string_t *
 svn_cache__format_info(const svn_cache__info_t *info,
+                       svn_boolean_t access_only,
                        apr_pool_t *result_pool);
 
-/* Access the process-global (singleton) membuffer cache. The first call
+/**
+ * Access the process-global (singleton) membuffer cache. The first call
  * will automatically allocate the cache using the current cache config.
  * NULL will be returned if the desired cache size is 0.
  *
@@ -476,6 +485,13 @@ svn_cache__format_info(const svn_cache__
 struct svn_membuffer_t *
 svn_cache__get_global_membuffer_cache(void);
 
+/**
+ * Return total access and size stats over all membuffer caches as they
+ * share the underlying data buffer.  The result will be allocated in POOL.
+ */
+svn_cache__info_t *
+svn_cache__membuffer_get_global_info(apr_pool_t *pool);
+
 /** @} */
 
 

Modified: subversion/branches/verify-keep-going/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/private/svn_ra_svn_private.h?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/private/svn_ra_svn_private.h Tue Jun 11 16:08:40 2013
@@ -835,7 +835,7 @@ svn_ra_svn__write_cmd_finish_replay(svn_
  */
 
 /**
- * @defgroup svn_data sending data structures over ra_svn
+ * @defgroup svn_send_data sending data structures over ra_svn
  * @{
  */
 
@@ -880,6 +880,30 @@ svn_ra_svn__write_data_log_entry(svn_ra_
 /**
  * @}
  */
+
+/**
+ * @defgroup svn_read_data reading data structures from ra_svn
+ * @{
+ */
+
+/** Take the data tuple ITEMS received over ra_svn and convert it to the
+ * a changed path (as part of receiving a log entry).
+ *
+ * @see svn_log_changed_path2_t for a description of the output parameters.
+ */
+svn_error_t *
+svn_ra_svn__read_data_log_changed_entry(const apr_array_header_t *items,
+                                        svn_string_t **cpath,
+                                        const char **action,
+                                        const char **copy_path,
+                                        svn_revnum_t *copy_rev,
+                                        const char **kind_str,
+                                        apr_uint64_t *text_mods,
+                                        apr_uint64_t *prop_mods);
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/verify-keep-going/subversion/include/private/svn_string_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/private/svn_string_private.h?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/private/svn_string_private.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/private/svn_string_private.h Tue Jun 11 16:08:40 2013
@@ -142,7 +142,7 @@ svn__strtoff(apr_off_t *offset, const ch
  * want to test for a more specific value range anyway.
  */
 unsigned long
-svn__strtoul(const char *buffer, char **end);
+svn__strtoul(const char *buffer, const char **end);
 
 /** Number of chars needed to represent signed (19 places + sign + NUL) or
  * unsigned (20 places + NUL) integers as strings.

Modified: subversion/branches/verify-keep-going/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/include/private/svn_wc_private.h?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/verify-keep-going/subversion/include/private/svn_wc_private.h Tue Jun 11 16:08:40 2013
@@ -370,7 +370,11 @@ svn_wc__cd2_to_cd(const svn_wc_conflict_
 /*
  * Convert from svn_wc_status3_t to svn_wc_status2_t.
  * Allocate the result in RESULT_POOL.
+ *
+ * Deprecated because svn_wc_status2_t is deprecated and the only
+ * calls are from other deprecated functions.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc__status2_from_3(svn_wc_status2_t **status,
                        const svn_wc_status3_t *old_status,

Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/commit.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/commit.c Tue Jun 11 16:08:40 2013
@@ -240,6 +240,13 @@ post_process_commit_item(svn_wc_committe
   remove_lock = (! keep_locks && (item->state_flags
                                        & SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN));
 
+  /* When the node was deleted (or replaced), we need to always remove the 
+     locks, as they're invalidated on the server. We cannot honor the 
+     SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN flag here because it does not tell
+     us whether we have locked children. */
+  if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
+    remove_lock = TRUE;
+
   return svn_wc_queue_committed3(queue, wc_ctx, item->path,
                                  loop_recurse, item->incoming_prop_changes,
                                  remove_lock, !keep_changelists,

Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c Tue Jun 11 16:08:40 2013
@@ -12307,6 +12307,12 @@ find_automatic_merge(svn_client__pathrev
   SVN_ERR(svn_client__get_youngest_common_ancestor(
             &s_t->yca, s_t->source, &s_t->target->loc, s_t->source_ra_session,
             ctx, result_pool, result_pool));
+  if (! s_t->yca)
+    return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL,
+                             _("'%s@%ld' must be ancestrally related to "
+                               "'%s@%ld'"),
+                             s_t->source->url, s_t->source->rev,
+                             s_t->target->loc.url, s_t->target->loc.rev);
 
   /* Find the latest revision of A synced to B and the latest
    * revision of B synced to A.

Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/patch.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/patch.c Tue Jun 11 16:08:40 2013
@@ -2815,10 +2815,13 @@ check_ancestor_delete(const char *delete
 {
   struct can_delete_baton_t cb;
   svn_error_t *err;
+  apr_array_header_t *ignores;
   apr_pool_t *iterpool = svn_pool_create(scratch_pool);
 
   const char *dir_abspath = svn_dirent_dirname(deleted_target, scratch_pool);
 
+  SVN_ERR(svn_wc_get_default_ignores(&ignores, ctx->config, scratch_pool));
+
   while (svn_dirent_is_child(apply_root, dir_abspath, iterpool))
     {
       svn_pool_clear(iterpool);
@@ -2828,7 +2831,7 @@ check_ancestor_delete(const char *delete
       cb.targets_info = targets_info;
 
       err = svn_wc_walk_status(ctx->wc_ctx, dir_abspath, svn_depth_infinity,
-                               TRUE, FALSE, FALSE, NULL,
+                               TRUE, FALSE, FALSE, ignores,
                                can_delete_callback, &cb,
                                ctx->cancel_func, ctx->cancel_baton,
                                iterpool);

Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/caching.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/caching.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/caching.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/caching.c Tue Jun 11 16:08:40 2013
@@ -210,9 +210,10 @@ dump_cache_statistics(void *baton_void)
                                          TRUE,
                                          baton->pool);
 
-  if (! err)
+  /* skip unused caches */
+  if (! err && (info.gets > 0 || info.sets > 0))
     {
-      text_stats = svn_cache__format_info(&info, baton->pool);
+      text_stats = svn_cache__format_info(&info, TRUE, baton->pool);
       lines = svn_cstring_split(text_stats->data, "\n", FALSE, baton->pool);
 
       for (i = 0; i < lines->nelts; ++i)
@@ -233,6 +234,29 @@ dump_cache_statistics(void *baton_void)
 
   return result;
 }
+
+static apr_status_t
+dump_global_cache_statistics(void *baton_void)
+{
+  apr_pool_t *pool = baton_void;
+
+  svn_cache__info_t *info = svn_cache__membuffer_get_global_info(pool);
+  svn_string_t *text_stats = svn_cache__format_info(info, FALSE, pool);
+  apr_array_header_t *lines = svn_cstring_split(text_stats->data, "\n",
+                                                FALSE, pool);
+
+  int i;
+  for (i = 0; i < lines->nelts; ++i)
+    {
+      const char *line = APR_ARRAY_IDX(lines, i, const char *);
+#ifdef SVN_DEBUG
+      SVN_DBG(("%s\n", line));
+#endif
+    }
+
+  return APR_SUCCESS;
+}
+
 #endif /* SVN_DEBUG_CACHE_DUMP_STATS */
 
 /* This function sets / registers the required callbacks for a given
@@ -369,6 +393,18 @@ svn_fs_fs__initialize_caches(svn_fs_t *f
 
   membuffer = svn_cache__get_global_membuffer_cache();
 
+#ifdef SVN_DEBUG_CACHE_DUMP_STATS
+
+  /* schedule printing the global access statistics upon pool cleanup,
+    * i.e. end of FSFS session.
+    */
+  if (membuffer)
+    apr_pool_cleanup_register(pool,
+                              pool,
+                              dump_global_cache_statistics,
+                              apr_pool_cleanup_null);
+#endif
+
   /* Make the cache for revision roots.  For the vast majority of
    * commands, this is only going to contain a few entries (svnadmin
    * dump/verify is an exception here), so to reduce overhead let's

Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c Tue Jun 11 16:08:40 2013
@@ -484,6 +484,7 @@ path_and_offset_of(apr_file_t *file, apr
 
 
 
+
 /* Functions for working with shared transaction data. */
 
 /* Return the transaction object for transaction TXN_ID from the
@@ -2238,10 +2239,10 @@ get_cached_node_revision_body(node_revis
     }
   else
     {
-      pair_cache_key_t key = { 0 };
-
+      pair_cache_key_t key;
       key.revision = svn_fs_fs__id_rev(id);
       key.second = svn_fs_fs__id_offset(id);
+
       SVN_ERR(svn_cache__get((void **) noderev_p,
                             is_cached,
                             ffd->node_revision_cache,
@@ -2267,10 +2268,10 @@ set_cached_node_revision_body(node_revis
 
   if (ffd->node_revision_cache && !svn_fs_fs__id_txn_id(id))
     {
-      pair_cache_key_t key = { 0 };
-
+      pair_cache_key_t key;
       key.revision = svn_fs_fs__id_rev(id);
       key.second = svn_fs_fs__id_offset(id);
+
       return svn_cache__set(ffd->node_revision_cache,
                             &key,
                             noderev_p,
@@ -3242,7 +3243,7 @@ ensure_revprop_timeout(svn_fs_t *fs)
 }
 
 /* Create an error object with the given MESSAGE and pass it to the
-   WARNING member of FS. */
+   WARNING member of FS. Clears UNDERLYING_ERR. */
 static void
 log_revprop_cache_init_warning(svn_fs_t *fs,
                                svn_error_t *underlying_err,
@@ -3315,9 +3316,9 @@ typedef struct revprop_generation_fixup_
 /* If the revprop generation has an odd value, it means the original writer
    of the revprop got killed. We don't know whether that process as able
    to change the revprop data but we assume that it was. Therefore, we
-   increase the generation in that case to basically invalidate everyones
+   increase the generation in that case to basically invalidate everyone's
    cache content.
-   Execute this onlx while holding the write lock to the repo in baton->FFD.
+   Execute this only while holding the write lock to the repo in baton->FFD.
  */
 static svn_error_t *
 revprop_generation_fixup(void *void_baton,
@@ -3525,10 +3526,10 @@ parse_revprop(apr_hash_t **properties,
   if (has_revprop_cache(fs, pool))
     {
       fs_fs_data_t *ffd = fs->fsap_data;
-      pair_cache_key_t key = { 0 };
-
+      pair_cache_key_t key;
       key.revision = revision;
       key.second = generation;
+
       SVN_ERR(svn_cache__set(ffd->revprop_cache, &key, *properties,
                              scratch_pool));
     }
@@ -3652,7 +3653,7 @@ parse_packed_revprops(svn_fs_t *fs,
   svn_string_t *compressed
       = svn_stringbuf__morph_into_string(revprops->packed_revprops);
   svn_stringbuf_t *uncompressed = svn_stringbuf_create_empty(pool);
-  SVN_ERR(svn__decompress(compressed, uncompressed, 0x1000000));
+  SVN_ERR(svn__decompress(compressed, uncompressed, APR_SIZE_MAX));
 
   /* read first revision number and number of revisions in the pack */
   stream = svn_stream_from_stringbuf(uncompressed, scratch_pool);
@@ -3828,7 +3829,7 @@ get_revision_proplist(apr_hash_t **propl
   if (has_revprop_cache(fs, pool))
     {
       svn_boolean_t is_cached;
-      pair_cache_key_t key = { 0 };
+      pair_cache_key_t key;
 
       SVN_ERR(read_revprop_generation(&generation, fs, pool));
 
@@ -4926,7 +4927,6 @@ get_combined_window(svn_stringbuf_t **re
 {
   apr_pool_t *pool, *new_pool, *window_pool;
   int i;
-  svn_txdelta_window_t *window;
   apr_array_header_t *windows;
   svn_stringbuf_t *source, *buf = rb->base_window;
   struct rep_state *rs;
@@ -4939,6 +4939,8 @@ get_combined_window(svn_stringbuf_t **re
   windows = apr_array_make(window_pool, 0, sizeof(svn_txdelta_window_t *));
   for (i = 0; i < rb->rs_list->nelts; ++i)
     {
+      svn_txdelta_window_t *window;
+
       rs = APR_ARRAY_IDX(rb->rs_list, i, struct rep_state *);
       SVN_ERR(read_delta_window(&window, rb->chunk_index, rs, window_pool));
 
@@ -4954,6 +4956,7 @@ get_combined_window(svn_stringbuf_t **re
   pool = svn_pool_create(rb->pool);
   for (--i; i >= 0; --i)
     {
+      svn_txdelta_window_t *window;
 
       rs = APR_ARRAY_IDX(rb->rs_list, i, struct rep_state *);
       window = APR_ARRAY_IDX(windows, i, svn_txdelta_window_t *);
@@ -5183,12 +5186,12 @@ read_representation(svn_stream_t **conte
   else
     {
       fs_fs_data_t *ffd = fs->fsap_data;
-      pair_cache_key_t fulltext_cache_key = { 0 };
+      pair_cache_key_t fulltext_cache_key;
       svn_filesize_t len = rep->expanded_size ? rep->expanded_size : rep->size;
       struct rep_read_baton *rb;
-
       fulltext_cache_key.revision = rep->revision;
       fulltext_cache_key.second = rep->offset;
+
       if (ffd->fulltext_cache && SVN_IS_VALID_REVNUM(rep->revision)
           && fulltext_size_is_cachable(ffd, len))
         {
@@ -5357,10 +5360,10 @@ svn_fs_fs__try_process_file_contents(svn
   if (rep)
     {
       fs_fs_data_t *ffd = fs->fsap_data;
-      pair_cache_key_t fulltext_cache_key = { 0 };
-
+      pair_cache_key_t fulltext_cache_key;
       fulltext_cache_key.revision = rep->revision;
       fulltext_cache_key.second = rep->offset;
+
       if (ffd->fulltext_cache && SVN_IS_VALID_REVNUM(rep->revision)
           && fulltext_size_is_cachable(ffd, rep->expanded_size))
         {
@@ -5664,10 +5667,10 @@ svn_fs_fs__get_proplist(apr_hash_t **pro
     {
       fs_fs_data_t *ffd = fs->fsap_data;
       representation_t *rep = noderev->prop_rep;
-      pair_cache_key_t key = { 0 };
-
+      pair_cache_key_t key;
       key.revision = rep->revision;
       key.second = rep->offset;
+
       if (ffd->properties_cache && SVN_IS_VALID_REVNUM(rep->revision))
         {
           svn_boolean_t is_cached;
@@ -7089,7 +7092,12 @@ choose_delta_base(representation_t **rep
                   svn_boolean_t props,
                   apr_pool_t *pool)
 {
+  /* The zero-based index (counting from the "oldest" end), along NODEREVs line
+   * predecessors, of the node-rev we will use as delta base. */
   int count;
+  /* The length of the linear part of a delta chain.  (Delta chains use
+   * skip-delta bits for the high-order bits and are linear in the low-order
+   * bits.) */
   int walk;
   node_revision_t *base;
   fs_fs_data_t *ffd = fs->fsap_data;
@@ -7161,7 +7169,7 @@ choose_delta_base(representation_t **rep
   /* return a suitable base representation */
   *rep = props ? base->prop_rep : base->data_rep;
 
-  /* if we encountered a shared rep, it's parent chain may be different
+  /* if we encountered a shared rep, its parent chain may be different
    * from the node-rev parent chain. */
   if (*rep && maybe_shared_rep)
     {
@@ -7209,7 +7217,6 @@ choose_delta_base(representation_t **rep
       svn_pool_destroy(sub_pool);
     }
 
-  /* verify that the reps don't form a degenerated '*/
   return SVN_NO_ERROR;
 }
 
@@ -7327,7 +7334,7 @@ rep_write_get_baton(struct rep_write_bat
   return SVN_NO_ERROR;
 }
 
-/* For the hash REP->SHA1, try to find an already existing representation
+/* For REP->SHA1_CHECKSUM, try to find an already existing representation
    in FS and return it in *OUT_REP.  If no such representation exists or
    if rep sharing has been disabled for FS, NULL will be returned.  Since
    there may be new duplicate representations within the same uncommitted

Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/locks.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/locks.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/locks.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/locks.c Tue Jun 11 16:08:40 2013
@@ -214,29 +214,26 @@ static svn_error_t *
 determine_error(svn_ra_serf__handler_t *handler,
                 svn_error_t *err)
 {
-    {
-      apr_status_t errcode;
+  apr_status_t errcode;
 
-      if (handler->sline.code == 423)
-        errcode = SVN_ERR_FS_PATH_ALREADY_LOCKED;
-      else if (handler->sline.code == 403)
-        errcode = SVN_ERR_RA_DAV_FORBIDDEN;
-      else
-        return err;
-
-      /* Client-side or server-side error already. Return it.  */
-      if (err != NULL)
-        return err;
-
-      /* The server did not send us a detailed human-readable error.
-         Provide a generic error.  */
-      err = svn_error_createf(errcode, NULL,
-                              _("Lock request failed: %d %s"),
-                              handler->sline.code,
-                              handler->sline.reason);
-    }
+  if (err)
+    return err;
 
-  return err;
+  if (handler->sline.code == 200 || handler->sline.code == 207)
+    return SVN_NO_ERROR;
+  else if (handler->sline.code == 423)
+    errcode = SVN_ERR_FS_PATH_ALREADY_LOCKED;
+  else if (handler->sline.code == 403)
+    errcode = SVN_ERR_RA_DAV_FORBIDDEN;
+  else
+    errcode = SVN_ERR_RA_DAV_REQUEST_FAILED;
+
+  /* The server did not send us a detailed human-readable error.
+     Provide a generic error.  */
+  return svn_error_createf(errcode, NULL,
+                           _("Lock request failed: %d %s"),
+                           handler->sline.code,
+                           handler->sline.reason ? handler->sline.reason : "");
 }
 
 
@@ -406,7 +403,7 @@ svn_ra_serf__get_lock(svn_ra_session_t *
   lock_ctx->handler = handler;
 
   err = svn_ra_serf__context_run_one(handler, pool);
-  err = determine_error(handler, err);
+  err = svn_error_trace(determine_error(handler, err));
 
   if (handler->sline.code == 404)
     {
@@ -497,7 +494,7 @@ svn_ra_serf__lock(svn_ra_session_t *ra_s
       lock_ctx->handler = handler;
 
       err = svn_ra_serf__context_run_one(handler, iterpool);
-      err = determine_error(handler, err);
+      err = svn_error_trace(determine_error(handler, err));
 
       if (lock_func)
         new_err = lock_func(lock_baton, lock_ctx->path, TRUE, lock_ctx->lock,

Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h Tue Jun 11 16:08:40 2013
@@ -50,8 +50,8 @@ extern "C" {
 
 
 /* Enforce the minimum version of serf. */
-#if !SERF_VERSION_AT_LEAST(0, 7, 1)
-#error Please update your version of serf to at least 0.7.1.
+#if !SERF_VERSION_AT_LEAST(1, 2, 1)
+#error Please update your version of serf to at least 1.2.1.
 #endif
 
 /** Use this to silence compiler warnings about unused parameters. */

Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c Tue Jun 11 16:08:40 2013
@@ -373,10 +373,8 @@ conn_setup(apr_socket_t *sock,
         {
           conn->ssl_context = serf_bucket_ssl_encrypt_context_get(*read_bkt);
 
-#if SERF_VERSION_AT_LEAST(1,0,0)
           serf_ssl_set_hostname(conn->ssl_context,
                                 conn->session->session_url.hostname);
-#endif
 
           serf_ssl_client_cert_provider_set(conn->ssl_context,
                                             svn_ra_serf__handle_client_cert,
@@ -642,7 +640,6 @@ setup_serf_req(serf_request_t *request,
 {
   serf_bucket_alloc_t *allocator = serf_request_get_alloc(request);
 
-#if SERF_VERSION_AT_LEAST(1, 1, 0)
   svn_spillbuf_t *buf;
 
   if (session->http10 && body_bkt != NULL)
@@ -665,7 +662,6 @@ setup_serf_req(serf_request_t *request,
                                                request_pool,
                                                scratch_pool);
     }
-#endif
 
   /* Create a request bucket.  Note that this sucker is kind enough to
      add a "Host" header for us.  */
@@ -674,7 +670,6 @@ setup_serf_req(serf_request_t *request,
 
   /* Set the Content-Length value. This will also trigger an HTTP/1.0
      request (rather than the default chunked request).  */
-#if SERF_VERSION_AT_LEAST(1, 1, 0)
   if (session->http10)
     {
       if (body_bkt == NULL)
@@ -682,7 +677,6 @@ setup_serf_req(serf_request_t *request,
       else
         serf_bucket_request_set_CL(*req_bkt, svn_spillbuf__get_size(buf));
     }
-#endif
 
   *hdrs_bkt = serf_bucket_request_get_headers(*req_bkt);
 
@@ -696,10 +690,10 @@ setup_serf_req(serf_request_t *request,
       serf_bucket_headers_setn(*hdrs_bkt, "Content-Type", content_type);
     }
 
-#if SERF_VERSION_AT_LEAST(1, 1, 0)
   if (session->http10)
+    {
       serf_bucket_headers_setn(*hdrs_bkt, "Connection", "keep-alive");
-#endif
+    }
 
   if (accept_encoding)
     {

Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c Tue Jun 11 16:08:40 2013
@@ -1597,8 +1597,7 @@ static svn_error_t *ra_svn_log(svn_ra_se
               if (elt->kind != SVN_RA_SVN_LIST)
                 return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
                                         _("Changed-path entry not a list"));
-              SVN_ERR(svn_ra_svn__parse_tuple(elt->u.list, iterpool,
-                                              "sw(?cr)?(?c?BB)",
+              SVN_ERR(svn_ra_svn__read_data_log_changed_entry(elt->u.list,
                                               &cpath, &action, &copy_path,
                                               &copy_rev, &kind_str,
                                               &text_mods, &prop_mods));

Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/marshal.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/marshal.c?rev=1491857&r1=1491856&r2=1491857&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/marshal.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/marshal.c Tue Jun 11 16:08:40 2013
@@ -1025,7 +1025,6 @@ static svn_error_t *read_item(svn_ra_svn
 {
   char c = first_char;
   apr_uint64_t val;
-  svn_stringbuf_t *str;
   svn_ra_svn_item_t *listitem;
 
   if (++level >= ITEM_NESTING_LIMIT)
@@ -2423,3 +2422,161 @@ svn_ra_svn__write_data_log_entry(svn_ra_
   
   return SVN_NO_ERROR;
 }
+
+/* If condition COND is not met, return a "malformed network data" error.
+ */
+#define CHECK_PROTOCOL_COND(cond)\
+  if (!(cond)) \
+    return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL, \
+                            _("Malformed network data"));
+
+/* In *RESULT, return the SVN-style string at index IDX in tuple ITEMS.
+ */
+static svn_error_t *
+svn_ra_svn__read_string(const apr_array_header_t *items,
+                        int idx,
+                        svn_string_t **result)
+{
+  svn_ra_svn_item_t *elt = &APR_ARRAY_IDX(items, idx, svn_ra_svn_item_t);
+  CHECK_PROTOCOL_COND(elt->kind == SVN_RA_SVN_STRING);
+  *result = elt->u.string;
+    
+  return SVN_NO_ERROR;
+}
+
+/* In *RESULT, return the C-style string at index IDX in tuple ITEMS.
+ */
+static svn_error_t *
+svn_ra_svn__read_cstring(const apr_array_header_t *items,
+                         int idx,
+                         const char **result)
+{
+  svn_ra_svn_item_t *elt = &APR_ARRAY_IDX(items, idx, svn_ra_svn_item_t);
+  CHECK_PROTOCOL_COND(elt->kind == SVN_RA_SVN_STRING);
+  *result = elt->u.string->data;
+    
+  return SVN_NO_ERROR;
+}
+
+/* In *RESULT, return the word at index IDX in tuple ITEMS.
+ */
+static svn_error_t *
+svn_ra_svn__read_word(const apr_array_header_t *items,
+                      int idx,
+                      const char **result)
+{
+  svn_ra_svn_item_t *elt = &APR_ARRAY_IDX(items, idx, svn_ra_svn_item_t);
+  CHECK_PROTOCOL_COND(elt->kind == SVN_RA_SVN_WORD);
+  *result = elt->u.word;
+   
+  return SVN_NO_ERROR;
+}
+
+/* In *RESULT, return the revision at index IDX in tuple ITEMS.
+ */
+static svn_error_t *
+svn_ra_svn__read_revision(const apr_array_header_t *items,
+                          int idx,
+                          svn_revnum_t *result)
+{
+  svn_ra_svn_item_t *elt = &APR_ARRAY_IDX(items, idx, svn_ra_svn_item_t);
+  CHECK_PROTOCOL_COND(elt->kind == SVN_RA_SVN_NUMBER);
+  *result = (svn_revnum_t)elt->u.number;
+    
+  return SVN_NO_ERROR;
+}
+
+/* In *RESULT, return the boolean at index IDX in tuple ITEMS.
+ */
+static svn_error_t *
+svn_ra_svn__read_boolean(const apr_array_header_t *items,
+                         int idx,
+                         apr_uint64_t *result)
+{
+  svn_ra_svn_item_t *elt = &APR_ARRAY_IDX(items, idx, svn_ra_svn_item_t);
+  CHECK_PROTOCOL_COND(elt->kind == SVN_RA_SVN_WORD);
+  if (elt->u.word[0] == 't' && strcmp(elt->u.word, "true") == 0)
+    *result = TRUE;
+  else if (strcmp(elt->u.word, "false") == 0)
+    *result = FALSE;
+  else
+    CHECK_PROTOCOL_COND(FALSE);
+    
+  return SVN_NO_ERROR;
+}
+
+/* In *RESULT, return the tuple at index IDX in tuple ITEMS.
+ */
+static svn_error_t *
+svn_ra_svn__read_list(const apr_array_header_t *items,
+                      int idx,
+                      const apr_array_header_t **result)
+{
+  svn_ra_svn_item_t *elt  = &APR_ARRAY_IDX(items, idx, svn_ra_svn_item_t);
+  CHECK_PROTOCOL_COND(elt->kind == SVN_RA_SVN_LIST);
+
+  *result = elt->u.list;
+  return SVN_NO_ERROR;
+}
+
+/* Verify the tuple ITEMS contains at least MIN and at most MAX elements.
+ */
+static svn_error_t *
+svn_ra_svn__read_check_array_size(const apr_array_header_t *items,
+                                  int min,
+                                  int max)
+{
+  CHECK_PROTOCOL_COND(items->nelts >= min && items->nelts <= max);
+  return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_ra_svn__read_data_log_changed_entry(const apr_array_header_t *items,
+                                        svn_string_t **cpath,
+                                        const char **action,
+                                        const char **copy_path,
+                                        svn_revnum_t *copy_rev,
+                                        const char **kind_str,
+                                        apr_uint64_t *text_mods,
+                                        apr_uint64_t *prop_mods)
+{
+  const apr_array_header_t *sub_items;
+
+  /* initialize optional values */
+  *copy_path = NULL;
+  *copy_rev = SVN_INVALID_REVNUM;
+  *kind_str = NULL;
+  *text_mods = SVN_RA_SVN_UNSPECIFIED_NUMBER;
+  *prop_mods = SVN_RA_SVN_UNSPECIFIED_NUMBER;
+
+  /* top-level elements (mandatory) */
+  SVN_ERR(svn_ra_svn__read_check_array_size(items, 3, 4));
+  SVN_ERR(svn_ra_svn__read_string(items, 0, cpath));
+  SVN_ERR(svn_ra_svn__read_word(items, 1, action));
+
+  /* first sub-structure (mandatory) */
+  SVN_ERR(svn_ra_svn__read_list(items, 2, &sub_items));
+  if (sub_items->nelts)
+    {
+      SVN_ERR(svn_ra_svn__read_check_array_size(sub_items, 2, 2));
+      SVN_ERR(svn_ra_svn__read_cstring(sub_items, 0, copy_path));
+      SVN_ERR(svn_ra_svn__read_revision(sub_items, 1, copy_rev));
+    }
+
+  /* second sub-structure (optional) */
+  if (items->nelts == 4)
+    {
+      SVN_ERR(svn_ra_svn__read_list(items, 3, &sub_items));
+      SVN_ERR(svn_ra_svn__read_check_array_size(sub_items, 0, 3));
+
+      switch (sub_items->nelts)
+        {
+          case 3 : SVN_ERR(svn_ra_svn__read_boolean(sub_items, 2, prop_mods));
+          case 2 : SVN_ERR(svn_ra_svn__read_boolean(sub_items, 1, text_mods));
+          case 1 : SVN_ERR(svn_ra_svn__read_cstring(sub_items, 0, kind_str));
+          default: break;
+        }
+    }
+
+  return SVN_NO_ERROR;
+}