You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2012/12/31 21:35:20 UTC

svn commit: r1427238 [1/2] - in /subversion/branches/ev2-export: ./ build/generator/templates/ subversion/bindings/cxxhl/include/svncxxhl/ subversion/bindings/cxxhl/src/ subversion/bindings/cxxhl/tests/ subversion/include/ subversion/libsvn_client/ sub...

Author: hwright
Date: Mon Dec 31 20:35:19 2012
New Revision: 1427238

URL: http://svn.apache.org/viewvc?rev=1427238&view=rev
Log:
On the ev2-export branch:
Bring up-to-date with trunk.

Added:
    subversion/branches/ev2-export/tools/dev/fsfs-access-map.c
      - copied unchanged from r1427237, subversion/trunk/tools/dev/fsfs-access-map.c
Modified:
    subversion/branches/ev2-export/   (props changed)
    subversion/branches/ev2-export/CHANGES
    subversion/branches/ev2-export/build.conf
    subversion/branches/ev2-export/build/generator/templates/svn_locale.vcproj.ezt
    subversion/branches/ev2-export/build/generator/templates/svn_locale.vcxproj.ezt
    subversion/branches/ev2-export/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
    subversion/branches/ev2-export/subversion/bindings/cxxhl/src/exception.cpp
    subversion/branches/ev2-export/subversion/bindings/cxxhl/tests/test_exception.cpp
    subversion/branches/ev2-export/subversion/include/svn_io.h
    subversion/branches/ev2-export/subversion/include/svn_repos.h
    subversion/branches/ev2-export/subversion/libsvn_client/cat.c
    subversion/branches/ev2-export/subversion/libsvn_client/merge.c
    subversion/branches/ev2-export/subversion/libsvn_client/patch.c
    subversion/branches/ev2-export/subversion/libsvn_diff/diff_file.c
    subversion/branches/ev2-export/subversion/libsvn_diff/parse-diff.c
    subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/ev2-export/subversion/libsvn_fs_fs/tree.c
    subversion/branches/ev2-export/subversion/libsvn_repos/authz.c
    subversion/branches/ev2-export/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/ev2-export/subversion/libsvn_subr/cache_config.c
    subversion/branches/ev2-export/subversion/libsvn_subr/io.c
    subversion/branches/ev2-export/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/ev2-export/subversion/libsvn_subr/stream.c
    subversion/branches/ev2-export/subversion/libsvn_wc/diff_editor.c
    subversion/branches/ev2-export/subversion/svn/cl.h
    subversion/branches/ev2-export/subversion/svn/file-merge.c
    subversion/branches/ev2-export/subversion/svn/svn.c
    subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c
    subversion/branches/ev2-export/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/ev2-export/subversion/svnlook/svnlook.c
    subversion/branches/ev2-export/subversion/svnmucc/svnmucc.c
    subversion/branches/ev2-export/subversion/svnrdump/load_editor.c
    subversion/branches/ev2-export/subversion/svnserve/svnserve.c
    subversion/branches/ev2-export/subversion/svnsync/svnsync.c
    subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/depth_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/entries_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/history_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/info_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/log_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/patch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/relocate_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/resolved_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/revert_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/special_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/stat_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/svntest/main.py
    subversion/branches/ev2-export/subversion/tests/cmdline/switch_tests.py
    subversion/branches/ev2-export/subversion/tests/cmdline/update_tests.py
    subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/ev2-export/subversion/tests/libsvn_subr/named_atomic-test.c
    subversion/branches/ev2-export/subversion/tests/svn_test_main.c
    subversion/branches/ev2-export/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd
    subversion/branches/ev2-export/tools/dist/backport.pl
    subversion/branches/ev2-export/tools/server-side/fsfs-reorg.c
    subversion/branches/ev2-export/tools/server-side/fsfs-stats.c
    subversion/branches/ev2-export/tools/server-side/svnauthz-validate.c

Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1425775-1427237

Modified: subversion/branches/ev2-export/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/CHANGES?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/CHANGES (original)
+++ subversion/branches/ev2-export/CHANGES Mon Dec 31 20:35:19 2012
@@ -66,7 +66,7 @@ http://svn.apache.org/repos/asf/subversi
   - Client-side bugfixes:
     * fix crash with --username option on Windows (r1396285)
     * add missing attributes to "svn log -v --xml" output (r1398100)
-    * fix svn patch ignoring hunks after no trailing newline (r139917)
+    * fix svn patch ignoring hunks after no trailing newline (r1399174)
     * fix hang with ra_serf during error processing (r1403583)
     * ignore file externals with mergeinfo when merging (r1401915)
     * fix "svnmucc cp" segfault with a missing last argument (issue #4079)
@@ -564,6 +564,21 @@ the 1.6 release:  http://subversion.apac
     * fixed setting binary properties in JavaHL (issue #3770)
     * fix type mapping of svn_txdelta_window_t in python bindings (issue #3688)
 
+
+Version 1.6.20
+(04 Jan 2013, from /branches/1.6.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.6.20
+
+ User-visible changes
+  - Client- and server-side bugfixes:
+    * Fix typos in pt_BR, es and zh_TW translations (r1402417)
+
+  - Server-side bugfixes:
+    * add Vary: header to GET responses to improve cacheability (r1390653)
+    * fix fs_fs to cleanup after failed rep transmission (r1403964, et al)
+    * fix an assert with SVNAutoVersioning in mod_dav_svn (issue #4231)
+
+
 Version 1.6.19
 (10 Sep 2012, from /branches/1.6.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.6.19
@@ -579,6 +594,7 @@ http://svn.apache.org/repos/asf/subversi
   - Developer-visible changes:
     * fix the testsuite to avoid FAILs on APR hash order (r1230714, et al)
 
+
 Version 1.6.18
 (29 Mar 2012, from /branches/1.6.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.6.18

Modified: subversion/branches/ev2-export/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build.conf?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/build.conf (original)
+++ subversion/branches/ev2-export/build.conf Mon Dec 31 20:35:19 2012
@@ -1224,7 +1224,7 @@ libs = __ALL__
        ra-local-test
        svndiff-test vdelta-test
        entries-dump atomic-ra-revprop-change wc-lock-tester wc-incomplete-tester
-       diff diff3 diff4 fsfs-reorg fsfs-stats svn-bench
+       diff diff3 diff4 fsfs-reorg fsfs-stats fsfs-access-map svn-bench
        client-test
        conflict-data-test db-test pristine-store-test entries-compat-test
        op-depth-test dirent_uri-test wc-queries-test wc-test
@@ -1287,6 +1287,13 @@ sources = fsfs-stats.c
 install = tools
 libs = libsvn_delta libsvn_subr apr
 
+[fsfs-access-map]
+type = exe
+path = tools/dev
+sources = fsfs-access-map.c
+install = tools
+libs = libsvn_subr apr
+
 [diff]
 type = exe
 path = tools/diff
@@ -1321,7 +1328,7 @@ type = exe
 path = tools/server-side
 sources = svnauthz-validate.c
 install = tools
-libs = libsvn_repos libsvn_subr apr
+libs = libsvn_repos libsvn_fs libsvn_subr apr
 
 [svn-populate-node-origins-index]
 type = exe

Modified: subversion/branches/ev2-export/build/generator/templates/svn_locale.vcproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/templates/svn_locale.vcproj.ezt?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/templates/svn_locale.vcproj.ezt (original)
+++ subversion/branches/ev2-export/build/generator/templates/svn_locale.vcproj.ezt Mon Dec 31 20:35:19 2012
@@ -22,7 +22,7 @@
 	ProjectType="Visual C++"
 	Version="[version]"
 	Name="locale"
-	ProjectGUID="{18FA6D17-1EE7-43A2-BC2A-C2AF819CEEFB}"
+	ProjectGUID="[project_guid]"
 	Keyword="MakeFileProj">
 	<Platforms>
 [for platforms]		<Platform

Modified: subversion/branches/ev2-export/build/generator/templates/svn_locale.vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/build/generator/templates/svn_locale.vcxproj.ezt?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/build/generator/templates/svn_locale.vcxproj.ezt (original)
+++ subversion/branches/ev2-export/build/generator/templates/svn_locale.vcxproj.ezt Mon Dec 31 20:35:19 2012
@@ -27,7 +27,7 @@
 [end][end]  </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectName>locale</ProjectName>
-    <ProjectGuid>{18FA6D17-1EE7-43A2-BC2A-C2AF819CEEFB}</ProjectGuid>
+    <ProjectGuid>[project_guid]</ProjectGuid>
     <Keyword>MakeFileProj</Keyword>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

Modified: subversion/branches/ev2-export/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/cxxhl/include/svncxxhl/exception.hpp Mon Dec 31 20:35:19 2012
@@ -115,8 +115,10 @@ public:
   /** Used internally by the implementation. */
   static void throw_svn_error(svn_error_t*);
 
-private:
+protected:
   error(int error_code, detail::error_description* description) throw();
+
+private:
   std::vector<message> compile_messages(bool show_traces) const;
 
   int m_errno;                /**< The (SVN or APR) error code. */
@@ -125,7 +127,15 @@ private:
   detail::error_description* m_description;
 };
 
-class canceled : public error {};
+class cancelled : public error
+{
+  friend void error::throw_svn_error(svn_error_t*);
+
+protected:
+  cancelled(int error_code, detail::error_description* description) throw()
+    : error(error_code, description)
+    {}
+};
 
 } // namespace version_1_9_dev
 } // namespace cxxhl

Modified: subversion/branches/ev2-export/subversion/bindings/cxxhl/src/exception.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/cxxhl/src/exception.cpp?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/cxxhl/src/exception.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/cxxhl/src/exception.cpp Mon Dec 31 20:35:19 2012
@@ -162,6 +162,7 @@ error::error(int error_code, detail::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;
   try
     {
@@ -169,28 +170,41 @@ void error::throw_svn_error(svn_error_t*
       // the exception unwinder can free them if an allocation fails.
       // The private constructor does not increment the refcount
       // precisely for this reason.
+
+      shared_ptr nested;
+      shared_ptr* current = &nested;
+
+      for (svn_error_t* next = err->child; next; next = next->child)
+        {
+          description = detail::error_description::create(
+              next->message, next->file, next->line,
+              svn_error__is_tracing_link(next));
+          description->reference();
+          current->reset(new error(next->apr_err, description));
+          description = NULL;
+          current = &(*current)->m_nested;
+        }
+
+      const int apr_err = err->apr_err;
       description = detail::error_description::create(
           err->message, err->file, err->line,
           svn_error__is_tracing_link(err));
       description->reference();
-      error converted = error(err->apr_err, description);
-      description = NULL;
-
-      svn_error_t *prev = err;
-      error* current = &converted;
-      for (err = err->child; err; prev = err, err = err->child)
+      svn_error_clear(err);
+      if (throw_cancelled)
         {
-          svn_error_clear(prev);
-          description = detail::error_description::create(
-              err->message, err->file, err->line,
-              svn_error__is_tracing_link(err));
-          description->reference();
-          current->m_nested.reset(new error(err->apr_err, description));
+          cancelled converted = cancelled(apr_err, description);
+          description = NULL;
+          converted.m_nested = nested;
+          throw converted;
+        }
+      else
+        {
+          error converted = error(apr_err, description);
           description = NULL;
-          current = current->m_nested.get();
+          converted.m_nested = nested;
+          throw converted;
         }
-      svn_error_clear(prev);
-      throw converted;
     }
   catch (...)
     {
@@ -295,11 +309,11 @@ error::message_list error::compile_messa
     }
   catch (...)
     {
-      apr_pool_destroy(pool);
+      svn_pool_destroy(pool);
       throw;
     }
 
-  apr_pool_destroy(pool);
+  svn_pool_destroy(pool);
   return ml;
 }
 

Modified: subversion/branches/ev2-export/subversion/bindings/cxxhl/tests/test_exception.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/bindings/cxxhl/tests/test_exception.cpp?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/bindings/cxxhl/tests/test_exception.cpp (original)
+++ subversion/branches/ev2-export/subversion/bindings/cxxhl/tests/test_exception.cpp Mon Dec 31 20:35:19 2012
@@ -1,3 +1,24 @@
+/*
+ * ====================================================================
+ *    Licensed to the Apache Software Foundation (ASF) under one
+ *    or more contributor license agreements.  See the NOTICE file
+ *    distributed with this work for additional information
+ *    regarding copyright ownership.  The ASF licenses this file
+ *    to you under the Apache License, Version 2.0 (the
+ *    "License"); you may not use this file except in compliance
+ *    with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing,
+ *    software distributed under the License is distributed on an
+ *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *    KIND, either express or implied.  See the License for the
+ *    specific language governing permissions and limitations
+ *    under the License.
+ * ====================================================================
+ */
+
 #include <algorithm>
 #include <iomanip>
 #include <ios>
@@ -18,12 +39,52 @@ void trace(const svn::error::message& ms
               << msg.first << ':' << ' ';
   std::cout << msg.second << std::endl;
 }
+
+void traceall(const char *message, const svn::error& err)
+{
+  typedef svn::error::message_list message_list;
+  std::cout << message << std::endl;
+  std::cout << "Traced Messages:" << std::endl;
+  message_list 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);
+}
 } // anonymous namespace
 
-int main()
+
+bool test_cancel()
 {
-  apr_initialize();
+  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);
+    }
+  catch (const svn::cancelled& err)
+    {
+      traceall("Caught: CANCEL", err);
+      return true;
+    }
+  catch (const svn::error& err)
+    {
+      traceall("Caught: ERROR", err);
+      return false;
+    }
+  catch (...)
+    {
+      return false;
+    }
+  return false;
+}
 
+int test_error()
+{
   try
     {
       svn_error_t* err;
@@ -33,20 +94,36 @@ int main()
       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_create(SVN_ERR_CANCELLED, err, NULL);
       err = svn_error_trace(err);
       svn::error::throw_svn_error(err);
     }
+  catch (const svn::cancelled& err)
+    {
+      traceall("Caught: CANCEL", err);
+      return false;
+    }
   catch (const svn::error& err)
     {
-      typedef svn::error::message_list message_list;
-      std::cout << "Traced Messages:" << std::endl;
-      message_list 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);
+      traceall("Caught: ERROR", err);
+      return true;
     }
+  catch (...)
+    {
+      return false;
+    }
+  return false;
+}
+
+int main()
+{
+  apr_initialize();
+
+  const char *stat  = (test_cancel() ? "OK" : "ERROR");
+  std::cerr << "test_cancel .... " << stat << std::endl;
+
+  stat = (test_error() ? "OK" : "ERROR");
+  std::cerr << "test_error ..... " << stat << std::endl;
 
+  apr_terminate();
   return 0;
 }

Modified: subversion/branches/ev2-export/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_io.h?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_io.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_io.h Mon Dec 31 20:35:19 2012
@@ -1935,7 +1935,8 @@ svn_boolean_t
 svn_io_is_binary_data(const void *buf, apr_size_t len);
 
 
-/** Wrapper for apr_file_open().  @a fname is utf8-encoded. */
+/** Wrapper for apr_file_open().  @a fname is utf8-encoded.
+    Always passed flag | APR_BINARY to apr. */
 svn_error_t *
 svn_io_file_open(apr_file_t **new_file,
                  const char *fname,

Modified: subversion/branches/ev2-export/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/include/svn_repos.h?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/include/svn_repos.h (original)
+++ subversion/branches/ev2-export/subversion/include/svn_repos.h Mon Dec 31 20:35:19 2012
@@ -3187,6 +3187,17 @@ svn_repos_authz_read2(svn_authz_t **auth
 
 
 /**
+ * Read authz configuration data from @a stream into @a *authz_p,
+ * allocated in @a pool.
+ *
+ * @since New in 1.8
+ */
+svn_error_t *
+svn_repos_authz_parse(svn_authz_t **authz_p,
+                      svn_stream_t *stream, 
+                      apr_pool_t *pool);
+
+/**
  * Check whether @a user can access @a path in the repository @a
  * repos_name with the @a required_access.  @a authz lists the ACLs to
  * check against.  Set @a *access_granted to indicate if the requested

Modified: subversion/branches/ev2-export/subversion/libsvn_client/cat.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/cat.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/cat.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/cat.c Mon Dec 31 20:35:19 2012
@@ -103,7 +103,7 @@ svn_client__get_normalized_stream(svn_st
                                 scratch_pool));
       SVN_ERR(svn_wc_status3(&status, wc_ctx, local_abspath, scratch_pool,
                              scratch_pool));
-      if (status->text_status != svn_wc_status_normal)
+      if (status->node_status != svn_wc_status_normal)
         local_mod = TRUE;
     }
 

Modified: subversion/branches/ev2-export/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/merge.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/merge.c Mon Dec 31 20:35:19 2012
@@ -7348,7 +7348,7 @@ process_children_with_new_mergeinfo(merg
       svn_mergeinfo_t path_explicit_mergeinfo;
       svn_client__merge_path_t *new_child;
 
-      apr_pool_clear(iterpool);
+      svn_pool_clear(iterpool);
 
       /* Get the path's new explicit mergeinfo... */
       SVN_ERR(svn_client__get_wc_mergeinfo(&path_explicit_mergeinfo, NULL,
@@ -8231,7 +8231,7 @@ record_mergeinfo_for_added_subtrees(
       svn_mergeinfo_t parent_mergeinfo;
       svn_mergeinfo_t added_path_mergeinfo;
 
-      apr_pool_clear(iterpool);
+      svn_pool_clear(iterpool);
       dir_abspath = svn_dirent_dirname(added_abspath, iterpool);
 
       /* Grab the added path's explicit mergeinfo. */

Modified: subversion/branches/ev2-export/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_client/patch.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_client/patch.c Mon Dec 31 20:35:19 2012
@@ -915,7 +915,7 @@ init_patch_target(patch_target_t **patch
       if (target->kind_on_disk == svn_node_file)
         {
           SVN_ERR(svn_io_file_open(&target->file, target->local_abspath,
-                                   APR_READ | APR_BINARY | APR_BUFFERED,
+                                   APR_READ | APR_BUFFERED,
                                    APR_OS_DEFAULT, result_pool));
           SVN_ERR(svn_wc_text_modified_p2(&target->local_mods, wc_ctx,
                                           target->local_abspath, FALSE,

Modified: subversion/branches/ev2-export/subversion/libsvn_diff/diff_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_diff/diff_file.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_diff/diff_file.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_diff/diff_file.c Mon Dec 31 20:35:19 2012
@@ -122,7 +122,8 @@ datasource_to_index(svn_diff_datasource_
  * whatsoever.  If there is a number someone comes up with that has some
  * argumentation, let's use that.
  */
-/* If you change this number, update test_wrap() in diff-diff3-test.c */
+/* If you change this number, update test_norm_offset()
+   and test_identical_suffix() in diff-diff3-test.c */
 #define CHUNK_SHIFT 17
 #define CHUNK_SIZE (1 << CHUNK_SHIFT)
 
@@ -419,7 +420,7 @@ find_identical_prefix(svn_boolean_t *rea
         }
 
       is_match = TRUE;
-      for (delta = 0; delta < max_delta && is_match; delta += sizeof(apr_uintptr_t))
+      for (delta = 0; delta < max_delta; delta += sizeof(apr_uintptr_t))
         {
           apr_uintptr_t chunk = *(const apr_uintptr_t *)(file[0].curp + delta);
           if (contains_eol(chunk))
@@ -429,18 +430,25 @@ find_identical_prefix(svn_boolean_t *rea
             if (chunk != *(const apr_uintptr_t *)(file[i].curp + delta))
               {
                 is_match = FALSE;
-                delta -= sizeof(apr_uintptr_t);
                 break;
               }
+
+          if (! is_match)
+            break;
         }
 
-      /* We either found a mismatch or an EOL at or shortly behind curp+delta
-       * or we cannot proceed with chunky ops without exceeding endp.
-       * In any way, everything up to curp + delta is equal and not an EOL.
-       */
-      for (i = 0; i < file_len; i++)
-        file[i].curp += delta;
+      if (delta /* > 0*/)
+        {
+          /* We either found a mismatch or an EOL at or shortly behind curp+delta
+           * or we cannot proceed with chunky ops without exceeding endp.
+           * In any way, everything up to curp + delta is equal and not an EOL.
+           */
+          for (i = 0; i < file_len; i++)
+            file[i].curp += delta;
 
+          /* Skipped data without EOL markers, so last char was not a CR. */
+          had_cr = FALSE; 
+        }
 #endif
 
       *reached_one_eof = is_one_at_eof(file, file_len);
@@ -497,6 +505,7 @@ find_identical_prefix(svn_boolean_t *rea
  * The number 50 is more or less arbitrary, based on some real-world tests
  * with big files (and then doubling the required number to be on the safe
  * side). This has a negligible effect on the power of the optimization. */
+/* If you change this number, update test_identical_suffix() in diff-diff3-test.c */
 #ifndef SUFFIX_LINES_TO_KEEP
 #define SUFFIX_LINES_TO_KEEP 50
 #endif
@@ -519,7 +528,6 @@ find_identical_suffix(apr_off_t *suffix_
   apr_off_t min_file_size;
   int suffix_lines_to_keep = SUFFIX_LINES_TO_KEEP;
   svn_boolean_t is_match;
-  svn_boolean_t reached_prefix;
   apr_off_t lines = 0;
   svn_boolean_t had_cr;
   svn_boolean_t had_nl;
@@ -581,6 +589,7 @@ find_identical_suffix(apr_off_t *suffix_
   had_nl = FALSE;
   while (is_match)
     {
+      svn_boolean_t reached_prefix;
 #if SVN_UNALIGNED_ACCESS_IS_OK
       /* Initialize the minimum pointer positions. */
       const char *min_curp[4];
@@ -607,44 +616,60 @@ find_identical_suffix(apr_off_t *suffix_
       DECREMENT_POINTERS(file_for_suffix, file_len, pool);
 
 #if SVN_UNALIGNED_ACCESS_IS_OK
+      for (i = 0; i < file_len; i++)
+        min_curp[i] = file_for_suffix[i].buffer;
 
-      min_curp[0] = file_for_suffix[0].chunk == suffix_min_chunk0
-                  ? file_for_suffix[0].buffer + suffix_min_offset0 + 1
-                  : file_for_suffix[0].buffer + 1;
-      for (i = 1; i < file_len; i++)
-        min_curp[i] = file_for_suffix[i].buffer + 1;
+      /* If we are in the same chunk that contains the last part of the common
+         prefix, use the min_curp[0] pointer to make sure we don't get a
+         suffix that overlaps the already determined common prefix. */
+      if (file_for_suffix[0].chunk == suffix_min_chunk0)
+        min_curp[0] += suffix_min_offset0;
 
       /* Scan quickly by reading with machine-word granularity. */
       for (i = 0, can_read_word = TRUE; i < file_len; i++)
         can_read_word = can_read_word
-                        && (   file_for_suffix[i].curp - sizeof(apr_uintptr_t)
-                            >= min_curp[i]);
-      if (can_read_word)
-        {
-          do
-            {
-              apr_uintptr_t chunk;
-              for (i = 0; i < file_len; i++)
-                file_for_suffix[i].curp -= sizeof(apr_uintptr_t);
+                        && (  (file_for_suffix[i].curp + 1
+                                 - sizeof(apr_uintptr_t))
+                            > min_curp[i]);
+      while (can_read_word)
+        {
+          apr_uintptr_t chunk;
+
+          /* For each file curp is positioned at the current byte, but we
+             want to examine the current byte and the ones before the current
+             location as one machine word. */
 
-              chunk = *(const apr_uintptr_t *)(file_for_suffix[0].curp + 1);
-              if (contains_eol(chunk))
-                break;
+          chunk = *(const apr_uintptr_t *)(file_for_suffix[0].curp + 1
+                                             - sizeof(apr_uintptr_t));
+          if (contains_eol(chunk))
+            break;
+
+          for (i = 1, is_match = TRUE; i < file_len; i++)
+            is_match = is_match
+                       && (   chunk
+                           == *(const apr_uintptr_t *)
+                                    (file_for_suffix[i].curp + 1
+                                       - sizeof(apr_uintptr_t)));
 
-              for (i = 0, can_read_word = TRUE; i < file_len; i++)
-                can_read_word = can_read_word
-                                && (   file_for_suffix[i].curp - sizeof(apr_uintptr_t)
-                                    >= min_curp[i]);
-              for (i = 1, is_match = TRUE; i < file_len; i++)
-                is_match = is_match
-                           && (   chunk
-                               == *(const apr_uintptr_t *)(file_for_suffix[i].curp + 1));
-            } while (can_read_word && is_match);
+          if (! is_match)
+            break;
 
-            for (i = 0; i < file_len; i++)
-              file_for_suffix[i].curp += sizeof(apr_uintptr_t);
+          for (i = 0; i < file_len; i++)
+            {
+              file_for_suffix[i].curp -= sizeof(apr_uintptr_t);
+              can_read_word = can_read_word
+                              && (  (file_for_suffix[i].curp + 1
+                                       - sizeof(apr_uintptr_t))
+                                  > min_curp[i]);
+            }
+
+          /* We skipped some bytes, so there are no closing EOLs */
+          had_nl = FALSE;
+          had_cr = FALSE;
         }
 
+      /* The > min_curp[i] check leaves at least one final byte for checking
+         in the non block optimized case below. */
 #endif
 
       reached_prefix = file_for_suffix[0].chunk == suffix_min_chunk0
@@ -653,7 +678,8 @@ find_identical_suffix(apr_off_t *suffix_
       if (reached_prefix || is_one_at_bof(file_for_suffix, file_len))
         break;
 
-      for (i = 1, is_match = TRUE; i < file_len; i++)
+      is_match = TRUE;
+      for (i = 1; i < file_len; i++)
         is_match = is_match
                    && *file_for_suffix[0].curp == *file_for_suffix[i].curp;
     }
@@ -829,17 +855,24 @@ datasource_get_next_token(apr_uint32_t *
 
   last_chunk = offset_to_chunk(file->size);
 
-  if (curp == endp
-      && last_chunk == file->chunk)
+  /* Are we already at the end of a chunk? */
+  if (curp == endp)
     {
-      return SVN_NO_ERROR;
+      /* Are we at EOF */
+      if (last_chunk == file->chunk)
+        return SVN_NO_ERROR; /* EOF */
+
+      /* Or right before an identical suffix in the next chunk? */
+      if (file->chunk + 1 == file->suffix_start_chunk
+          && file->suffix_offset_in_chunk == 0)
+        return SVN_NO_ERROR;
     }
 
   /* Stop when we encounter the identical suffix. If suffix scanning was not
    * performed, suffix_start_chunk will be -1, so this condition will never
    * be true. */
   if (file->chunk == file->suffix_start_chunk
-      && curp - file->buffer == file->suffix_offset_in_chunk)
+      && (curp - file->buffer) == file->suffix_offset_in_chunk)
     return SVN_NO_ERROR;
 
   /* Allocate a new token, or fetch one from the "reusable tokens" list. */
@@ -856,6 +889,7 @@ datasource_get_next_token(apr_uint32_t *
   file_token->datasource = datasource;
   file_token->offset = chunk_to_offset(file->chunk)
                        + (curp - file->buffer);
+  file_token->norm_offset = file_token->offset;
   file_token->raw_length = 0;
   file_token->length = 0;
 
@@ -884,11 +918,21 @@ datasource_get_next_token(apr_uint32_t *
 
       length = endp - curp;
       file_token->raw_length += length;
-      svn_diff__normalize_buffer(&curp, &length,
-                                 &file->normalize_state,
-                                 curp, file_baton->options);
-      file_token->length += length;
-      h = svn__adler32(h, curp, length);
+      {
+        char *c = curp;
+
+        svn_diff__normalize_buffer(&c, &length,
+                                   &file->normalize_state,
+                                   curp, file_baton->options);
+        if (file_token->length == 0)
+          {
+            /* When we are reading the first part of the token, move the
+               normalized offset past leading ignored characters, if any. */
+            file_token->norm_offset += (c - curp);
+          }
+        file_token->length += length;
+        h = svn__adler32(h, c, length);
+      }
 
       curp = endp = file->buffer;
       file->chunk++;
@@ -897,6 +941,14 @@ datasource_get_next_token(apr_uint32_t *
       endp += length;
       file->endp = endp;
 
+      /* Issue #4283: Normally we should have checked for reaching the skipped
+         suffix here, but because we assume that a suffix always starts on a
+         line and token boundary we rely on catching the suffix earlier in this
+         function.
+
+         When changing things here, make sure the whitespace settings are
+         applied, or we mught not reach the exact suffix boundary as token
+         boundary. */
       SVN_ERR(read_chunk(file->file, file->path,
                          curp, length,
                          chunk_to_offset(file->chunk),
@@ -927,11 +979,12 @@ datasource_get_next_token(apr_uint32_t *
       svn_diff__normalize_buffer(&c, &length,
                                  &file->normalize_state,
                                  curp, file_baton->options);
-
-      file_token->norm_offset = file_token->offset;
       if (file_token->length == 0)
-        /* move past leading ignored characters */
-        file_token->norm_offset += (c - curp);
+        {
+          /* When we are reading the first part of the token, move the
+             normalized offset past leading ignored characters, if any. */
+          file_token->norm_offset += (c - curp);
+        }
 
       file_token->length += length;
 

Modified: subversion/branches/ev2-export/subversion/libsvn_diff/parse-diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_diff/parse-diff.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_diff/parse-diff.c Mon Dec 31 20:35:19 2012
@@ -1147,8 +1147,8 @@ svn_diff_open_patch_file(svn_patch_file_
   svn_patch_file_t *p;
 
   p = apr_palloc(result_pool, sizeof(*p));
-  SVN_ERR(svn_io_file_open(&p->apr_file, local_abspath,
-                           APR_READ | APR_BINARY, 0, result_pool));
+  SVN_ERR(svn_io_file_open(&p->apr_file, local_abspath, APR_READ,
+                           APR_OS_DEFAULT, result_pool));
   p->next_patch_offset = 0;
   *patch_file = p;
 

Modified: subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs_base/fs.c Mon Dec 31 20:35:19 2012
@@ -1124,7 +1124,7 @@ copy_db_file_safely(const char *src_dir,
   /* Open source file.  If it's missing and that's allowed, there's
      nothing more to do here. */
   err = svn_io_file_open(&s, file_src_path,
-                         (APR_READ | APR_LARGEFILE | APR_BINARY),
+                         (APR_READ | APR_LARGEFILE),
                          APR_OS_DEFAULT, pool);
   if (err && APR_STATUS_IS_ENOENT(err->apr_err) && allow_missing)
     {
@@ -1135,7 +1135,7 @@ copy_db_file_safely(const char *src_dir,
 
   /* Open destination file. */
   SVN_ERR(svn_io_file_open(&d, file_dst_path, (APR_WRITE | APR_CREATE |
-                                               APR_LARGEFILE | APR_BINARY),
+                                               APR_LARGEFILE),
                            APR_OS_DEFAULT, pool));
 
   /* Allocate our read/write buffer. */

Modified: subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs_fs/fs_fs.c Mon Dec 31 20:35:19 2012
@@ -7219,7 +7219,7 @@ choose_delta_base(representation_t **rep
       if (max_chain_length == 0)
         *rep = NULL;
 
-      apr_pool_destroy(sub_pool);
+      svn_pool_destroy(sub_pool);
     }
 
   /* verify that the reps don't form a degenerated '*/

Modified: subversion/branches/ev2-export/subversion/libsvn_fs_fs/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_fs_fs/tree.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_fs_fs/tree.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_fs_fs/tree.c Mon Dec 31 20:35:19 2012
@@ -319,7 +319,7 @@ auto_clear_dag_cache(fs_fs_dag_cache_t* 
 {
   if (cache->first_lock == NULL && cache->insertions > BUCKET_COUNT)
     {
-      apr_pool_clear(cache->pool);
+      svn_pool_clear(cache->pool);
 
       memset(cache->buckets, 0, sizeof(cache->buckets));
       cache->insertions = 0;

Modified: subversion/branches/ev2-export/subversion/libsvn_repos/authz.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_repos/authz.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_repos/authz.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_repos/authz.c Mon Dec 31 20:35:19 2012
@@ -751,6 +751,25 @@ static svn_boolean_t authz_validate_sect
   return TRUE;
 }
 
+
+/* Walk the configuration in AUTHZ looking for any errors. */
+static svn_error_t *
+authz_validate(svn_authz_t *authz, apr_pool_t *pool)
+{
+  struct authz_validate_baton baton = { 0 };
+
+  baton.err = SVN_NO_ERROR;
+  baton.config = authz->cfg;
+
+  /* Step through the entire rule file stopping on error. */
+  svn_config_enumerate_sections2(authz->cfg, authz_validate_section,
+                                 &baton, pool);
+  SVN_ERR(baton.err);
+
+  return SVN_NO_ERROR;
+}
+
+
 /* Retrieve the file at DIRENT (contained in a repo) then parse it as a config
  * file placing the result into CFG_P allocated in POOL.
  *
@@ -908,9 +927,6 @@ svn_repos__authz_read(svn_authz_t **auth
                       const char *repos_root, apr_pool_t *pool)
 {
   svn_authz_t *authz = apr_palloc(pool, sizeof(*authz));
-  struct authz_validate_baton baton = { 0 };
-
-  baton.err = SVN_NO_ERROR;
 
   /* Load the rule file */
   if (accept_urls)
@@ -918,12 +934,9 @@ svn_repos__authz_read(svn_authz_t **auth
                                   pool));
   else
     SVN_ERR(svn_config_read2(&authz->cfg, path, must_exist, TRUE, pool));
-  baton.config = authz->cfg;
 
-  /* Step through the entire rule file, stopping on error. */
-  svn_config_enumerate_sections2(authz->cfg, authz_validate_section,
-                                 &baton, pool);
-  SVN_ERR(baton.err);
+  /* Make sure there are no errors in the configuration. */
+  SVN_ERR(authz_validate(authz, pool));
 
   *authz_p = authz;
   return SVN_NO_ERROR;
@@ -943,6 +956,22 @@ svn_repos_authz_read2(svn_authz_t **auth
 }
 
 
+svn_error_t *
+svn_repos_authz_parse(svn_authz_t **authz_p, svn_stream_t *stream, 
+                      apr_pool_t *pool)
+{
+  svn_authz_t *authz = apr_palloc(pool, sizeof(*authz));
+
+  /* Parse the stream */
+  SVN_ERR(svn_config_parse(&authz->cfg, stream, TRUE, pool));
+
+  /* Make sure there are no errors in the configuration. */
+  SVN_ERR(authz_validate(authz, pool));
+
+  *authz_p = authz;
+  return SVN_NO_ERROR;
+}
+
 
 svn_error_t *
 svn_repos_authz_check_access(svn_authz_t *authz, const char *repos_name,

Modified: subversion/branches/ev2-export/subversion/libsvn_subr/cache-membuffer.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/cache-membuffer.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/cache-membuffer.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/cache-membuffer.c Mon Dec 31 20:35:19 2012
@@ -1973,7 +1973,7 @@ svn_membuffer_cache_get(void **value_p,
    */
   if (++cache->alloc_counter > ALLOCATIONS_PER_POOL_CLEAR)
     {
-      apr_pool_clear(cache->pool);
+      svn_pool_clear(cache->pool);
       cache->alloc_counter = 0;
     }
 
@@ -2004,7 +2004,7 @@ svn_membuffer_cache_set(void *cache_void
   cache->alloc_counter += 3;
   if (cache->alloc_counter > ALLOCATIONS_PER_POOL_CLEAR)
     {
-      apr_pool_clear(cache->pool);
+      svn_pool_clear(cache->pool);
       cache->alloc_counter = 0;
     }
 
@@ -2062,7 +2062,7 @@ svn_membuffer_cache_get_partial(void **v
 
   if (++cache->alloc_counter > ALLOCATIONS_PER_POOL_CLEAR)
     {
-      apr_pool_clear(cache->pool);
+      svn_pool_clear(cache->pool);
       cache->alloc_counter = 0;
     }
 

Modified: subversion/branches/ev2-export/subversion/libsvn_subr/cache_config.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/cache_config.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/cache_config.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/cache_config.c Mon Dec 31 20:35:19 2012
@@ -131,7 +131,7 @@ svn_cache__get_global_membuffer_cache(vo
         {
           /* Memory and error cleanup */
           svn_error_clear(err);
-          apr_pool_destroy(pool);
+          svn_pool_destroy(pool);
 
           /* Prevent future attempts to create the cache. However, an
            * existing cache instance (see next comment) remains valid.
@@ -155,7 +155,7 @@ svn_cache__get_global_membuffer_cache(vo
        */
       old_cache = apr_atomic_casptr((volatile void **)&cache, new_cache, NULL);
       if (old_cache != NULL)
-        apr_pool_destroy(pool);
+        svn_pool_destroy(pool);
     }
 
   return cache;

Modified: subversion/branches/ev2-export/subversion/libsvn_subr/io.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/io.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/io.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/io.c Mon Dec 31 20:35:19 2012
@@ -834,7 +834,7 @@ svn_io_copy_file(const char *src,
     return SVN_NO_ERROR;
 #endif
 
-  SVN_ERR(svn_io_file_open(&from_file, src, APR_READ | APR_BINARY,
+  SVN_ERR(svn_io_file_open(&from_file, src, APR_READ,
                            APR_OS_DEFAULT, pool));
 
   /* For atomicity, we copy to a tmp file and then rename the tmp
@@ -1536,7 +1536,7 @@ io_set_file_perms(const char *path,
 
           /* Get the perms for the original file so we'll have any other bits
            * that were already set (like the execute bits, for example). */
-          SVN_ERR(svn_io_file_open(&fd, path, APR_READ | APR_BINARY,
+          SVN_ERR(svn_io_file_open(&fd, path, APR_READ,
                                    APR_OS_DEFAULT, pool));
           SVN_ERR(merge_default_file_perms(fd, &perms_to_set, pool));
           SVN_ERR(svn_io_file_close(fd, pool));

Modified: subversion/branches/ev2-export/subversion/libsvn_subr/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/mergeinfo.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/mergeinfo.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/mergeinfo.c Mon Dec 31 20:35:19 2012
@@ -1763,7 +1763,7 @@ svn_mergeinfo_merge2(svn_mergeinfo_t mer
         {
           SVN_ERR(svn_rangelist_merge2(target, to_insert, result_pool,
                                        iterpool));
-          apr_pool_clear(iterpool);
+          svn_pool_clear(iterpool);
         }
       else
         apr_hash_set(mergeinfo, key, klen, to_insert);

Modified: subversion/branches/ev2-export/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_subr/stream.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_subr/stream.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_subr/stream.c Mon Dec 31 20:35:19 2012
@@ -847,7 +847,7 @@ svn_stream_open_readonly(svn_stream_t **
 {
   apr_file_t *file;
 
-  SVN_ERR(svn_io_file_open(&file, path, APR_READ | APR_BUFFERED | APR_BINARY,
+  SVN_ERR(svn_io_file_open(&file, path, APR_READ | APR_BUFFERED,
                            APR_OS_DEFAULT, result_pool));
   *stream = svn_stream_from_aprfile2(file, FALSE, result_pool);
 
@@ -866,7 +866,6 @@ svn_stream_open_writable(svn_stream_t **
   SVN_ERR(svn_io_file_open(&file, path,
                            APR_WRITE
                              | APR_BUFFERED
-                             | APR_BINARY
                              | APR_CREATE
                              | APR_EXCL,
                            APR_OS_DEFAULT, result_pool));

Modified: subversion/branches/ev2-export/subversion/libsvn_wc/diff_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/diff_editor.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_wc/diff_editor.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_wc/diff_editor.c Mon Dec 31 20:35:19 2012
@@ -1288,11 +1288,10 @@ add_directory(const char *path,
                       dir_pool);
   *child_baton = db;
 
-  /* Add this path to the parent directory's list of elements that
-     have been compared. */
-  apr_hash_set(pb->compared, apr_pstrdup(pb->pool, db->path),
-               APR_HASH_KEY_STRING, "");
-
+  /* Issue #3797: Don't add this filename to the parent directory's list of
+     elements that have been compared, to show local additions via the local
+     diff. The repository node is unrelated from the working copy version
+     (similar to not-present in the working copy) */
 
   return SVN_NO_ERROR;
 }
@@ -1438,10 +1437,10 @@ add_file(const char *path,
   fb = make_file_baton(path, TRUE, pb, file_pool);
   *file_baton = fb;
 
-  /* Add this filename to the parent directory's list of elements that
-     have been compared. */
-  apr_hash_set(pb->compared, apr_pstrdup(pb->pool, path),
-               APR_HASH_KEY_STRING, "");
+  /* Issue #3797: Don't add this filename to the parent directory's list of
+     elements that have been compared, to show local additions via the local
+     diff. The repository node is unrelated from the working copy version
+     (similar to not-present in the working copy) */
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/ev2-export/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/cl.h?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/cl.h (original)
+++ subversion/branches/ev2-export/subversion/svn/cl.h Mon Dec 31 20:35:19 2012
@@ -288,13 +288,13 @@ svn_opt_subcommand_t
   svn_cl__upgrade;
 
 
-/* See definition in main.c for documentation. */
+/* See definition in svn.c for documentation. */
 extern const svn_opt_subcommand_desc2_t svn_cl__cmd_table[];
 
-/* See definition in main.c for documentation. */
+/* See definition in svn.c for documentation. */
 extern const int svn_cl__global_options[];
 
-/* See definition in main.c for documentation. */
+/* See definition in svn.c for documentation. */
 extern const apr_getopt_option_t svn_cl__options[];
 
 

Modified: subversion/branches/ev2-export/subversion/svn/file-merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/file-merge.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/file-merge.c (original)
+++ subversion/branches/ev2-export/subversion/svn/file-merge.c Mon Dec 31 20:35:19 2012
@@ -862,13 +862,13 @@ svn_cl__merge_file(const char *base_path
                                    scratch_pool)));
 
   SVN_ERR(svn_io_file_open(&original_file, base_path,
-                           APR_READ|APR_BUFFERED|APR_BINARY,
+                           APR_READ | APR_BUFFERED,
                            APR_OS_DEFAULT, scratch_pool));
   SVN_ERR(svn_io_file_open(&modified_file, their_path,
-                           APR_READ|APR_BUFFERED|APR_BINARY,
+                           APR_READ | APR_BUFFERED,
                            APR_OS_DEFAULT, scratch_pool));
   SVN_ERR(svn_io_file_open(&latest_file, my_path,
-                           APR_READ|APR_BUFFERED|APR_BINARY,
+                           APR_READ | APR_BUFFERED,
                            APR_OS_DEFAULT, scratch_pool));
   SVN_ERR(svn_io_open_unique_file3(&merged_file, &merged_file_name,
                                    NULL, svn_io_file_del_none,

Modified: subversion/branches/ev2-export/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/svn.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/svn.c (original)
+++ subversion/branches/ev2-export/subversion/svn/svn.c Mon Dec 31 20:35:19 2012
@@ -1,5 +1,5 @@
 /*
- * main.c:  Subversion command line client.
+ * svn.c:  Subversion command line client main file.
  *
  * ====================================================================
  *    Licensed to the Apache Software Foundation (ASF) under one

Modified: subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c (original)
+++ subversion/branches/ev2-export/subversion/svnadmin/svnadmin.c Mon Dec 31 20:35:19 2012
@@ -1,5 +1,5 @@
 /*
- * main.c: Subversion server administration tool.
+ * svnadmin.c: Subversion server administration tool main file.
  *
  * ====================================================================
  *    Licensed to the Apache Software Foundation (ASF) under one

Modified: subversion/branches/ev2-export/subversion/svndumpfilter/svndumpfilter.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svndumpfilter/svndumpfilter.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svndumpfilter/svndumpfilter.c (original)
+++ subversion/branches/ev2-export/subversion/svndumpfilter/svndumpfilter.c Mon Dec 31 20:35:19 2012
@@ -1,5 +1,5 @@
 /*
- * main.c: Subversion dump stream filtering tool.
+ * svndumpfilter.c: Subversion dump stream filtering tool main file.
  *
  * ====================================================================
  *    Licensed to the Apache Software Foundation (ASF) under one

Modified: subversion/branches/ev2-export/subversion/svnlook/svnlook.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnlook/svnlook.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnlook/svnlook.c (original)
+++ subversion/branches/ev2-export/subversion/svnlook/svnlook.c Mon Dec 31 20:35:19 2012
@@ -1,5 +1,5 @@
 /*
- * main.c: Subversion server inspection tool.
+ * svnlook.c: Subversion server inspection tool main file.
  *
  * ====================================================================
  *    Licensed to the Apache Software Foundation (ASF) under one

Modified: subversion/branches/ev2-export/subversion/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnmucc/svnmucc.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnmucc/svnmucc.c (original)
+++ subversion/branches/ev2-export/subversion/svnmucc/svnmucc.c Mon Dec 31 20:35:19 2012
@@ -961,7 +961,7 @@ usage(apr_pool_t *pool, int exit_val)
       "  --no-auth-cache        : do not cache authentication tokens\n"
       "  --version              : print version information\n"),
                   stream, pool));
-  apr_pool_destroy(pool);
+  svn_pool_destroy(pool);
   exit(exit_val);
 }
 

Modified: subversion/branches/ev2-export/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnrdump/load_editor.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnrdump/load_editor.c (original)
+++ subversion/branches/ev2-export/subversion/svnrdump/load_editor.c Mon Dec 31 20:35:19 2012
@@ -501,7 +501,8 @@ get_shim_callbacks(struct revision_baton
 
 /* Acquire a lock (of sorts) on the repository associated with the
  * given RA SESSION. This lock is just a revprop change attempt in a
- * time-delay loop. This function is duplicated by svnsync in main.c.
+ * time-delay loop. This function is duplicated by svnsync in
+ * svnsync/svnsync.c
  *
  * ### TODO: Make this function more generic and
  * expose it through a header for use by other Subversion

Modified: subversion/branches/ev2-export/subversion/svnserve/svnserve.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnserve/svnserve.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnserve/svnserve.c (original)
+++ subversion/branches/ev2-export/subversion/svnserve/svnserve.c Mon Dec 31 20:35:19 2012
@@ -1,5 +1,5 @@
 /*
- * main.c :  Main control function for svnserve
+ * svnserve.c :  Main control function for svnserve
  *
  * ====================================================================
  *    Licensed to the Apache Software Foundation (ASF) under one

Modified: subversion/branches/ev2-export/subversion/svnsync/svnsync.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnsync/svnsync.c?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnsync/svnsync.c (original)
+++ subversion/branches/ev2-export/subversion/svnsync/svnsync.c Mon Dec 31 20:35:19 2012
@@ -330,7 +330,7 @@ lock_retry_func(void *baton,
 /* Acquire a lock (of sorts) on the repository associated with the
  * given RA SESSION. This lock is just a revprop change attempt in a
  * time-delay loop. This function is duplicated by svnrdump in
- * load_editor.c.
+ * svnrdump/load_editor.c
  */
 static svn_error_t *
 get_lock(const svn_string_t **lock_string_p,

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/authz_tests.py Mon Dec 31 20:35:19 2012
@@ -137,7 +137,7 @@ def broken_authz_file(sbox):
   exit_code, out, err = svntest.main.run_svn(1,
                                              "delete",
                                              sbox.repo_url + "/A",
-                                             "-m", "a log message");
+                                             "-m", "a log message")
   if out:
     raise svntest.verify.SVNUnexpectedStdout(out)
   if not err:

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/basic_tests.py Mon Dec 31 20:35:19 2012
@@ -1942,7 +1942,7 @@ def delete_keep_local(sbox):
   # Update working copy to check disk state still greek tree
   expected_disk = svntest.main.greek_state.copy()
   expected_output = svntest.wc.State(wc_dir, {})
-  expected_status.tweak(wc_rev = 2);
+  expected_status.tweak(wc_rev = 2)
 
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/commit_tests.py Mon Dec 31 20:35:19 2012
@@ -2921,8 +2921,8 @@ def commit_danglers(sbox):
 # dir/subdir should bump LastChangedRev of subdir in originating WC
 @XFail()
 @Issue(4203)
-def commit_moved_dir_with_nested_mod_in_subdir(sbox):
-  "commit of moved dir with nested mod in subdir"
+def last_changed_of_copied_subdir(sbox):
+  "last changed of copied subdir"
 
   sbox.build()
   wc_dir = sbox.wc_dir
@@ -3013,7 +3013,7 @@ test_list = [ None,
               commit_incomplete,
               commit_add_subadd,
               commit_danglers,
-              commit_moved_dir_with_nested_mod_in_subdir,
+              last_changed_of_copied_subdir,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/copy_tests.py Mon Dec 31 20:35:19 2012
@@ -2458,22 +2458,11 @@ def move_dir_back_and_forth(sbox):
   # Move the moved dir: D_moved back to its starting
   # location at A/D.
 
-  if svntest.main.wc_is_singledb(wc_dir):
-    # In single-db target is gone on-disk after it was moved away, so this
-    # move works ok
-    expected_err = []
-  else:
-    # In !SINGLE_DB the target of the copy exists on-dir, so svn tries
-    # to move the file below the deleted directory
-    expected_err = '.*Cannot copy to .*as it is scheduled for deletion'
-
-  svntest.actions.run_and_verify_svn(None, None, expected_err,
-                                     'mv', D_move_path, D_path)
-
-  if svntest.main.wc_is_singledb(wc_dir):
-    # Verify that the status indicates a replace with history
-    expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-    expected_status.add({
+  svntest.actions.run_and_verify_svn(None, None, [], 'mv', D_move_path, D_path)
+
+  # Verify that the status indicates a replace with history
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_status.add({
       'A/D'               : Item(status='R ', copied='+', wc_rev='-'),
       'A/D/G'             : Item(status='  ', copied='+', wc_rev='-'),
       'A/D/G/pi'          : Item(status='  ', copied='+', wc_rev='-'),
@@ -2484,8 +2473,8 @@ def move_dir_back_and_forth(sbox):
       'A/D/H/chi'         : Item(status='  ', copied='+', wc_rev='-'),
       'A/D/H/omega'       : Item(status='  ', copied='+', wc_rev='-'),
       'A/D/H/psi'         : Item(status='  ', copied='+', wc_rev='-'),
-      })
-    svntest.actions.run_and_verify_status(wc_dir, expected_status)
+  })
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 def copy_move_added_paths(sbox):
   "copy and move added paths without commits"
@@ -4364,9 +4353,9 @@ def copy_added_dir_with_copy(sbox):
   sbox.build(read_only=True)
   wc_dir = sbox.wc_dir
 
-  new_dir = sbox.ospath('NewDir');
-  new_dir2 = sbox.ospath('NewDir2');
-  new_dir3 = sbox.ospath('NewDir3');
+  new_dir = sbox.ospath('NewDir')
+  new_dir2 = sbox.ospath('NewDir2')
+  new_dir3 = sbox.ospath('NewDir3')
 
   # Alias for svntest.actions.run_and_verify_svn
   rav_svn = svntest.actions.run_and_verify_svn
@@ -4398,7 +4387,6 @@ def copy_added_dir_with_copy(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 
-@SkipUnless(svntest.main.is_posix_os)
 @Issue(3303)
 def copy_broken_symlink(sbox):
   """copy broken symlink"""
@@ -4408,14 +4396,14 @@ def copy_broken_symlink(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  new_symlink = sbox.ospath('new_symlink');
-  copied_symlink = sbox.ospath('copied_symlink');
-  os.symlink('linktarget', new_symlink)
+  new_symlink = sbox.ospath('new_symlink')
+  copied_symlink = sbox.ospath('copied_symlink')
 
   # Alias for svntest.actions.run_and_verify_svn
   rav_svn = svntest.actions.run_and_verify_svn
 
-  rav_svn(None, None, [], 'add', new_symlink)
+  sbox.simple_add_symlink('linktarget', 'new_symlink')
+
   rav_svn(None, None, [], 'cp', new_symlink, copied_symlink)
 
   # Check whether both new_symlink and copied_symlink are added to the

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/depth_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/depth_tests.py Mon Dec 31 20:35:19 2012
@@ -2084,9 +2084,9 @@ def excluded_path_update_operation(sbox)
     'A/B/E'            : Item(status='D '),
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
   expected_disk = svntest.main.greek_state.copy()
-  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
 
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
@@ -2124,8 +2124,8 @@ def excluded_path_update_operation(sbox)
   expected_output = svntest.wc.State(wc_dir, {
     'A/B'            : Item(status='D '),
     })
-  expected_status.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B');
-  expected_disk.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B');
+  expected_status.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B')
+  expected_disk.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B')
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -2158,8 +2158,8 @@ def excluded_path_update_operation(sbox)
   expected_output = svntest.wc.State(wc_dir, {
     'iota' : Item(status='D '),
     })
-  expected_status.remove('iota');
-  expected_disk.remove('iota');
+  expected_status.remove('iota')
+  expected_disk.remove('iota')
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -2202,9 +2202,9 @@ def excluded_path_misc_operation(sbox):
     'A/B/E'            : Item(status='D '),
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
   expected_disk = svntest.main.greek_state.copy()
-  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
 
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
@@ -2452,9 +2452,8 @@ def make_depth_tree_conflicts(sbox):
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('A/mu',
                        'A/B', 'A/B/lambda', 'A/B/E/alpha', 'A/B/E/beta',
-                       'A/D/gamma');
-  if svntest.main.wc_is_singledb(sbox.wc_dir):
-    expected_disk.remove('A/B/E', 'A/B/F')
+                       'A/D/gamma',
+                       'A/B/E', 'A/B/F')
 
   # This test is set XFail because this (correct) status cannot be
   # verified due to an "svn update" bug. The tree-conflict on A/B

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/diff_tests.py Mon Dec 31 20:35:19 2012
@@ -3336,12 +3336,12 @@ def diff_url_against_local_mods(sbox):
                                      'up')
 
   # In A, add, remove and change a file, and commit.
-  make_file_edit_del_add(A);
+  make_file_edit_del_add(A)
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'ci', '-m', 'committing A')
 
   # In A2, do the same changes but leave uncommitted.
-  make_file_edit_del_add(A2);
+  make_file_edit_del_add(A2)
 
   # Diff URL of A against working copy of A2. Output should be empty.
   expected_output = []
@@ -3352,7 +3352,6 @@ def diff_url_against_local_mods(sbox):
 #----------------------------------------------------------------------
 # Diff against old revision of the parent directory of a removed and
 # locally re-added file.
-@XFail()
 @Issue(3797)
 def diff_preexisting_rev_against_local_add(sbox):
   "diff -r1 of dir with removed-then-readded file"

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/entries_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/entries_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/entries_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/entries_tests.py Mon Dec 31 20:35:19 2012
@@ -185,11 +185,8 @@ def obstructed_entries(sbox):
   entries = svntest.main.run_entriesdump(D_path)
   check_names(entries, 'H')
 
-  if svntest.main.wc_is_singledb(wc_dir):
-    # Data is not missing in single-db
-    validate(entries['H'], revision=1)
-  else:
-    validate(entries['H'], revision=-1)
+  # Data is not missing in single-db
+  validate(entries['H'], revision=1)
 
   ### need to get svn_wc__db_read_info() to generate obstructed_add
 

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/history_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/history_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/history_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/history_tests.py Mon Dec 31 20:35:19 2012
@@ -64,7 +64,7 @@ def cat_traces_renames(sbox):
     'A/D/G/bloo' : Item(verb='Adding')
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/D/G/rho');
+  expected_status.remove('A/D/G/rho')
   expected_status.add({ 'A/D/G/bloo' :
                         Item(wc_rev=2, status='  ') })
 
@@ -87,7 +87,7 @@ def cat_traces_renames(sbox):
     'A/D/G/rho' : Item(verb='Adding')
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/D/G/pi');
+  expected_status.remove('A/D/G/pi')
   expected_status.tweak('A/D/G/rho', wc_rev=3)
   expected_status.add({ 'A/D/G/bloo' :
                         Item(wc_rev=2, status='  ') })

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/info_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/info_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/info_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/info_tests.py Mon Dec 31 20:35:19 2012
@@ -522,8 +522,65 @@ def binary_tree_conflict(sbox):
   }]
   svntest.actions.run_and_verify_info(expected_info, iota)
 
+def relpath_escaping(sbox):
+  "relpath escaping should be usable as-is"
 
+  sbox.build()
+  wc_dir = sbox.wc_dir
 
+  name = 'path with space, +, % and #'
+  name2 = 'path with %20'
+  sbox.simple_copy('iota', name)
+  sbox.simple_copy('iota', name2)
+  sbox.simple_commit()
+
+  testpath = sbox.ospath(name)
+
+  expected = {'Path' : re.escape(testpath),
+              'URL' : '.*/path.*with.*space.*',
+              'Relative URL' : '.*/path.*with.*space.*',
+             }
+             
+  svntest.actions.run_and_verify_info([expected], sbox.ospath(name))
+
+  info = svntest.actions.run_and_parse_info(sbox.ospath(name), sbox.ospath(name2))
+
+  # And now verify that the returned URL and relative url are usable
+
+  # Also test the local path (to help resolving the relative path) and an
+  # unescaped path which the client should automatically encode
+  svntest.actions.run_and_verify_svn(None, None, [], 'info',
+                                     info[0]['Relative URL'],
+                                     info[0]['URL'],
+                                     testpath,
+                                     '^/' + name,
+
+                                     info[1]['Relative URL'],
+                                     info[1]['URL'])
+
+  # And now do the same thing with a the file external handling
+  sbox.simple_propset('svn:externals',
+                        info[0]['Relative URL'] + " f1\n" +
+                        info[0]['URL'] + " f2\n" +
+                        '"^/' + name + "\" f3\n" +
+
+                        info[1]['Relative URL'] + " g1\n" +
+                        info[1]['URL'] + " g2\n",
+                      ''
+                     )
+
+  # And now we expect to see 3 file externals
+  expected_output = svntest.wc.State(wc_dir, {
+    'f1'                : Item(status='A '),
+    'f2'                : Item(status='A '),
+    'f3'                : Item(status='A '),
+
+    'g1'                : Item(status='A '),
+    'g2'                : Item(status='A '),
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output, None, None)
 
 ########################################################################
 # Run the tests
@@ -539,6 +596,7 @@ test_list = [ None,
               info_repos_root_url,
               info_show_exclude,
               binary_tree_conflict,
+              relpath_escaping,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py Mon Dec 31 20:35:19 2012
@@ -855,12 +855,7 @@ def lock_switched_files(sbox):
   expected_status.tweak('A/D/gamma', 'A/B/lambda', writelocked='K')
 
   # In WC-NG locks are kept per working copy, not per file
-  if svntest.main.wc_is_singledb(wc_dir):
-    # In single-db you see these files are locked locally
-    expected_status.tweak('A/B/E/alpha', 'iota', writelocked='K')
-  else:
-    # In multi-db you see these files are not locked in the right dir
-    expected_status.tweak('A/B/E/alpha', 'iota', writelocked='O')
+  expected_status.tweak('A/B/E/alpha', 'iota', writelocked='K')
 
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
@@ -1437,15 +1432,10 @@ def lock_twice_in_one_wc(sbox):
   os.chmod(mu2_path, 0700)
   svntest.main.file_append(mu2_path, "Updated text")
 
-  if svntest.main.wc_is_singledb(wc_dir):
-    # Commit will just succeed as the DB owns the lock. It's a user decision
-    # to commit the other target instead of the one originally locked
-    expected_err = []
-  else:
-    # Commit should fail because it is locked in the other location
-    expected_err = '.*(([Nn]o)|(Server)).*[lL]ock.*'
+  # Commit will just succeed as the DB owns the lock. It's a user decision
+  # to commit the other target instead of the one originally locked
 
-  svntest.actions.run_and_verify_svn(None, None, expected_err,
+  svntest.actions.run_and_verify_svn(None, None, [],
                                      'commit', mu2_path, '-m', '')
 
 #----------------------------------------------------------------------
@@ -1520,7 +1510,7 @@ def verify_path_escaping(sbox):
       'file #1'           : Item(status='  ', writelocked='K', wc_rev='2'),
       'file #2'           : Item(status='  ', writelocked='O', wc_rev='2'),
       'file #3'           : Item(status='  ', writelocked='B', wc_rev='2')
-    });
+    })
 
   # Make sure the file locking is reported correctly
   svntest.actions.run_and_verify_status(wc_dir, expected_status)

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/log_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/log_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/log_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/log_tests.py Mon Dec 31 20:35:19 2012
@@ -1006,7 +1006,7 @@ def log_xml_empty_date(sbox):
   # Create the revprop-change hook for this test
   svntest.actions.enable_revprop_changes(sbox.repo_dir)
 
-  date_re = re.compile('<date');
+  date_re = re.compile('<date')
 
   # Ensure that we get a date before we delete the property.
   exit_code, output, errput = svntest.actions.run_and_verify_svn(

Modified: subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1427238&r1=1427237&r2=1427238&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/merge_reintegrate_tests.py Mon Dec 31 20:35:19 2012
@@ -860,9 +860,9 @@ def reintegrate_fail_on_stale_source(sbo
   mu_path = os.path.join(A_path, "mu")
   svntest.main.file_append(mu_path, 'some text appended to mu\n')
   svntest.actions.run_and_verify_svn(None, None, [], 'commit',
-                                     '-m', 'a change to mu', mu_path);
+                                     '-m', 'a change to mu', mu_path)
   # Unmix the revisions in the working copy.
-  svntest.actions.run_and_verify_svn(None, None, [], 'update', wc_dir);
+  svntest.actions.run_and_verify_svn(None, None, [], 'update', wc_dir)
   # The merge --reintegrate succeeds but since there were no changes
   # on A_COPY after it was branched the only result is updated mergeinfo
   # on the reintegrate target.