You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/09/17 17:09:17 UTC

svn commit: r1703645 [1/3] - in /subversion/branches/reuse-ra-session: ./ build/generator/ build/generator/templates/ subversion/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_delta/ subversion/libsvn_diff/...

Author: ivan
Date: Thu Sep 17 15:09:12 2015
New Revision: 1703645

URL: http://svn.apache.org/r1703645
Log:
On the reuse-ra-session branch: Sync with trunk up to r1703640.

Removed:
    subversion/branches/reuse-ra-session/build/generator/gen_msvc_dsp.py
    subversion/branches/reuse-ra-session/build/generator/templates/msvc_dsp.ezt
    subversion/branches/reuse-ra-session/build/generator/templates/msvc_dsw.ezt
    subversion/branches/reuse-ra-session/build/generator/templates/svn_config.dsp.ezt
    subversion/branches/reuse-ra-session/build/generator/templates/svn_locale.dsp.ezt
    subversion/branches/reuse-ra-session/build/generator/templates/vcnet_vc7_sln.ezt
Modified:
    subversion/branches/reuse-ra-session/   (props changed)
    subversion/branches/reuse-ra-session/CHANGES
    subversion/branches/reuse-ra-session/COMMITTERS
    subversion/branches/reuse-ra-session/INSTALL
    subversion/branches/reuse-ra-session/build/generator/gen_vcnet_vcproj.py
    subversion/branches/reuse-ra-session/build/generator/gen_win.py
    subversion/branches/reuse-ra-session/configure.ac
    subversion/branches/reuse-ra-session/gen-make.py
    subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h
    subversion/branches/reuse-ra-session/subversion/include/svn_client.h
    subversion/branches/reuse-ra-session/subversion/include/svn_io.h
    subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c
    subversion/branches/reuse-ra-session/subversion/libsvn_client/resolved.c
    subversion/branches/reuse-ra-session/subversion/libsvn_delta/xdelta.c
    subversion/branches/reuse-ra-session/subversion/libsvn_diff/parse-diff.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/index.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/temp_serializer.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/transaction.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/tree.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/util.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/   (props changed)
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/fs_x.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/index.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/revprops.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/transaction.c
    subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/util.c
    subversion/branches/reuse-ra-session/subversion/libsvn_repos/repos.c
    subversion/branches/reuse-ra-session/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/checksum.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/deprecated.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/io.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/stream.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/sysinfo.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf8proc.c
    subversion/branches/reuse-ra-session/subversion/libsvn_subr/utf8proc/utf8proc.h
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/entries.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/wc_db_util.c
    subversion/branches/reuse-ra-session/subversion/libsvn_wc/workqueue.c
    subversion/branches/reuse-ra-session/subversion/mod_dav_svn/activity.c
    subversion/branches/reuse-ra-session/subversion/po/it.po
    subversion/branches/reuse-ra-session/subversion/svn/cl.h
    subversion/branches/reuse-ra-session/subversion/svn/conflict-callbacks.c
    subversion/branches/reuse-ra-session/subversion/svn/resolve-cmd.c
    subversion/branches/reuse-ra-session/subversion/svn_private_config.hw
    subversion/branches/reuse-ra-session/subversion/svnadmin/svnadmin.c
    subversion/branches/reuse-ra-session/subversion/svnbench/svnbench.c
    subversion/branches/reuse-ra-session/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/reuse-ra-session/subversion/svnfsfs/load-index-cmd.c
    subversion/branches/reuse-ra-session/subversion/svnmucc/svnmucc.c
    subversion/branches/reuse-ra-session/subversion/svnrdump/svnrdump.c
    subversion/branches/reuse-ra-session/subversion/svnserve/svnserve.c
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svnmucc_tests.py
    subversion/branches/reuse-ra-session/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_fs/fs-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_fs_x/fs-x-pack-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_subr/checksum-test.c
    subversion/branches/reuse-ra-session/subversion/tests/libsvn_subr/stream-test.c
    subversion/branches/reuse-ra-session/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
    subversion/branches/reuse-ra-session/tools/client-side/svn-mergeinfo-normalizer/logic.c
    subversion/branches/reuse-ra-session/tools/dev/unix-build/Makefile.svn
    subversion/branches/reuse-ra-session/tools/dev/x509-parser.c

Propchange: subversion/branches/reuse-ra-session/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 17 15:09:12 2015
@@ -94,4 +94,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1501802-1702502
+/subversion/trunk:1501802-1703640

Modified: subversion/branches/reuse-ra-session/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/CHANGES?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/CHANGES (original)
+++ subversion/branches/reuse-ra-session/CHANGES Thu Sep 17 15:09:12 2015
@@ -1,3 +1,31 @@
+Version 1.9.2
+(30 Sep 2015, from /branches/1.9.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.9.2
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * svn: fix crash when saving credentials in kwallet (r1700740, r1700951)
+    * checkout/update: fix "access denied" error on Windows (r1701064 et al)
+    * update: fix crash when updating a conflicted tree (r1702198, r1702200)
+    * commit: fix possible crash (r1702231)
+    * ra_serf: do not crash on unexpected 'X-SVN-VR-Base' headers (r1702288)
+    * merge: fix crash when merging to a local add (r1702299 et al)
+    * svnmucc: fix error during propset+put for existing file (r1702467 et al)
+    * update: fix crash without .svn/tmp folder (r1701838, r1702203)
+    * checkout: remove unnecessary I/O operation (r1701638)
+    * merge: fix possible crash (r1701997)
+    * update: fix crash with some of the incoming deletes (r1702247)
+    * upgrade: fix crash for pre-1.3 wc with externals (r1702218 et al)
+    * revert: fix crash when reverting the root of a move (r1702237 et al)
+    * svn: do not crash upon specific database corruptions (r1702974, r1702991)
+
+  - Server-side bugfixes:
+    * fix reporting for empty representations in svnfsfs stats (r1698312 et al)
+
+ Developer-visible changes:
+  - API changes:
+    * disable unsupported operations for standard streams (r1701633 et al)
+
 Version 1.9.1
 (02 Sep 2015, from /branches/1.9.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.9.1

Modified: subversion/branches/reuse-ra-session/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/COMMITTERS?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/COMMITTERS [UTF-8] (original)
+++ subversion/branches/reuse-ra-session/COMMITTERS [UTF-8] Thu Sep 17 15:09:12 2015
@@ -164,7 +164,8 @@ Commit access for specific areas:
      humbedooh   Daniel Gruno <hu...@apache.org>         (svnpubsub)
       prabhugs   Prabhu Gnana Sundar <pp...@gmail.com>   (verify-keep-going)
         schabi   Markus Schaber <sc...@apache.org>          (testsuite)
-           gbg   Gabriela Gibson <ga...@gmail.com> (gtest) 
+           gbg   Gabriela Gibson <ga...@gmail.com> (gtest)
+      luke1410   Stefan Hett <lu...@gmx.de>               (doc)
 
   Translation of message files:
 

Modified: subversion/branches/reuse-ra-session/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/INSTALL?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/INSTALL (original)
+++ subversion/branches/reuse-ra-session/INSTALL Thu Sep 17 15:09:12 2015
@@ -22,7 +22,7 @@ Contents:
        E. Building the Latest Source under Windows
 
    III. BUILDING A SUBVERSION SERVER
-       A. Setting Up Apache
+       A. Setting Up Apache Httpd
        B. Making and Installing the Subversion Server
        C. Configuring Apache for Subversion
        D. Running and Testing
@@ -199,48 +199,6 @@ I.    INTRODUCTION
       Apache Portable Runtime (APR) and the APR Utility (APR-util)
       libraries.
 
-
-        ****************************************************************
-        **       IMPORTANT ISSUE ABOUT APR VERSIONS:  READ THIS       **
-        **       IF UPGRADING FROM MUCH OLDER SUBVERSION              **
-        ****************************************************************
-        |                                                              |
-        | APR 0.9.X and 1.X are binary-incompatible.                   |
-        |                                                              |
-        | This means:                                                  |
-        |                                                              |
-        |   - if you are already using Subversion with APR 0.9.X, and  |
-        |     then upgrade your libapr to 1.X without rebuilding       |
-        |     Subversion, things will break and segfault.              |
-        |                                                              |
-        |   - if your Subversion server libraries are linked to one    |
-        |     version of APR, but your Apache server is linked to a    |
-        |     different version, things will break and segfault.       |
-        |                                                              |
-        | Subversion distribution dependencies:                        |
-        | -------------------------------------                        |
-        |                                                              |
-        | For a long time, Subversion's main distribution contained    |
-        | APR and APR-UTIL (both 0.9.x), plus a few other things that  |
-        | we couldn't count on the installation system having.  But    |
-        | nowadays, Subversion's requirements are no longer exotic,    |
-        | and so our main distribution contains just the Subversion    |
-        | source code itself -- people compiling Subversion are        |
-        | expected to either have the APR libraries already installed  |
-        | on their system, or to be capable of fetching them easily.   |
-        |                                                              |
-        | Note that it's *perfectly* safe to use APR 1.X from the      |
-        | beginning.  In fact, we recommend it.  If you're building    |
-        | Subversion for the first time, there's no compatibility      |
-        | issue to worry about, so grab the latest version of APR.     |
-        |                                                              |
-        | If you already have a Subversion installation using APR      |
-        | 0.9.x, it's still possible to move to APR 1.X safely.  Just  |
-        | be sure to recompile Subversion (and Apache httpd if         |
-        | necessary) after upgrading APR!                              |
-        |______________________________________________________________|
-
-
       If you do not have a pre-installed APR and APR-util, you will need
       to get these yourself:
 
@@ -716,27 +674,21 @@ II.   INSTALLATION
 
 
   D.  Installing from a Zip or Installer File under Windows
-      --------------------------------------------------------
+      -----------------------------------------------------
 
       Of all the ways of getting a Subversion client, this is the
-      easiest.  Download a Zip (*.zip) or self-extracting installer
-      (*-setup.exe) file from:
+      easiest.  Download a Zip or self-extracting installer via:
 
-      http://subversion.apache.org/packages#windows
+      http://subversion.apache.org/packages.html#windows
 
-      For a Zip file, run your unzipping utility (WinZIP, ZipGenius,
-      UltimateZIP, FreeZIP, whatever) and extract the DLLs and EXEs to
-      a directory of your choice. Included in the download is the SVN
-      client, the SVNADMIN administration tool, and the SVNLOOK
-      reporting tool.
-
-      Note that if you need support for non-English locales you'll have
-      to set the APR_ICONV_PATH environment variable to the path of the
-      iconv directory in the folder that contains the Subversion install.
-
-      You may also want to add the bin directory in the Subversion folder
-      to your PATH environment variable so as to not have to use the full
-      path when running Subversion commands.
+      For a Zip file extract the DLLs and EXEs to a directory of your
+      choice. Included in the download are among other tools the SVN
+      client, the SVNADMIN administration tool and the SVNLOOK reporting
+      tool.
+
+      You may want to add the bin directory in the Subversion folder to your
+      PATH environment variable so as to not have to use the full path when
+      running Subversion commands.
 
       To test the installation, open a DOS box (run either "cmd" or
       "command" from the Start menu's "Run..." menu option), change to
@@ -755,58 +707,41 @@ II.   INSTALLATION
 
   E.1 Prerequisites
 
-      * Visual Studio 6 and service pack. It can be built with later versions
-        of Visual Studio (Visual Studio.NET 2005-2015, Visual C++ Express
-        2005-2010, Visual Studio Express 2012-2013 and Visual Studio Community
-        2013-2015) but these instructions assume VS6.
-      * A recent Windows SDK. (Not needed with Visual Studio 2005 and later)
-        If you are using Visual Studio 6, you need the latest SDK which
-        is compatible with VC6, which is the one from February 2003.
-        You can get it from MSDN:
-        https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk
+      * Microsoft Visual Studio. Any recent (2005+) version containing the
+        Visual C++ component will work (E.g. Professional, Express, Community
+        Edition). Make sure you enable C++ support during setup.
       * Python 2.7 or higher, downloaded from http://www.python.org/ which is
         used to generate the project files.
         Note that Python 3.x is not supported (yet).
-      * Perl 5.8 or higher from http://www.activestate.com/
+      * Perl 5.8 or higher from http://www.perl.org/get.html
       * Awk (from http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe) is
-        needed to compile Apache or APR.  Note that this is the actual awk
-        program, not an installer - just rename it to awk.exe and it is
-        ready to use.
+        needed to compile Apache or APR without using CMake.  Note that this
+        is the actual awk program, not an installer - just rename it to
+        awk.exe and it is ready to use.
       * Apache apr, apr-util, and optionally apr-iconv libraries, version
-        1.3 or later. Included in both the Subversion dependencies ZIP file
-        and the Apache 2 source zip.  If you are building from a Subversion
+        1.3 or later (1.2 for apr-iconv). If you are building from a Subversion
         checkout and have not downloaded Apache 2, then get these 3 libraries
         from http://www.apache.org/dist/apr/.
       * SQLite 3.7.12 or higher from http://www.sqlite.org/download.html
-      * ZLib 1.2 or higher is required and is included in the Subversion
-        dependencies zip file or can be obtained from http://www.zlib.net/
-      * Either a Subversion client binary from http://subversion.apache.org/ to
-        do the initial checkout of the Subversion source or the zip file
-        source distribution. See the section "Bootstrapping from a Zip or
-        Installer File under Windows" above for more.
-      * A means of unpacking the files, e.g., WinZIP or similar.
+        (3.8.0 or higher recommended)
+      * ZLib 1.2 or higher is required and can be obtained from
+        http://www.zlib.net/
+      * Either a Subversion client binary from
+        http://subversion.apache.org/packages.html to do the initial checkout
+        of the Subversion source or the zip file source distribution.
 
       Additional Options
 
-      * [Optional] Apache 2 source, downloaded from
+      * [Optional] Apache Httpd 2 source, downloaded from
         http://httpd.apache.org/download.cgi, these instructions assume
         version 2.0.58.  This is only needed for building the Subversion
         server Apache modules.  ### FIXME Apache 2.2 or greater required.
-      * [Optional] Apache 2 msi install file, also from
-        http://httpd.apache.org/download.cgi (required for running the
-        tests).  Only needed for testing the server dso modules and if
-        you are using Visual Studio 6.
-        Note that if you are not using Visual Studio 6 (and you want to
-        run and test the server modules) then you must rebuild Apache
-        from source -- do not use the stock MSI since mixing C runtime
-        libraries is not supported.
-      * [Optional] Berkeley DB for backend support of the server
-        components -- versions 4.3.27 and 4.4.20 are available from
-        http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688
-        as db-4.3.27-win32.zip and db-4.4.20-win32.zip.
+      * [Optional] Berkeley DB for backend support of the server components
+        are available from
+        http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html
+        (Version 4.4.20 or in specific cases some higher version recommended)
         For more information see Section I.C.7.
-      * [Optional] Openssl 0.9.7f or higher can be obtained from
-        http://www.openssl.org/source/openssl-0.9.7f.tar.gz
+      * [Optional] Openssl can be obtained from http://www.openssl.org/source/
       * [Optional] A modified version of GNU libintl, called
         svn-win32-libintl.zip, can be used for displaying localized
         messages. Available at:
@@ -816,9 +751,6 @@ II.   INSTALLATION
         binaries from http://gnuwin32.sourceforge.net/. You'll need the
         binaries (gettext-0.14.1-bin.zip) and dependencies
         (gettext-0.14.1-dep.zip).
-      * [Optional] An assembler, e.g., MASM32 from http://www.masm32.com/
-        or nasm which is available from
-        http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D
 
   E.2 Notes
 
@@ -844,32 +776,14 @@ II.   INSTALLATION
         installer to register environment variables or run VCVARS32.BAT
         before building anything.  If you are using a newer Visual Studio,
         use the 'Visual Studio 20xx Command Prompt' on the Start menu.
-      * Install and register a recent Windows Core SDK if you are using
-        Visual Studio 6. This is a quote from the Microsoft February 2003
-        SDK documentation:
-
-       "To register the SDK bin, include, and library directories with
-        Microsoft Visual Studio® version 6.0 and Visual Studio .NET,
-        click Start, point to All Programs, point to Microsoft Platform
-        SDK February 2003, point to Visual Studio Registration, and then
-        click Register PSDK Directories with Visual Studio. This
-        registration process places the SDK bin, include, and library
-        directories at the beginning of the search paths, which ensures
-        that the latest headers and libraries are used when building
-        applications in the IDE. Note that for Visual Studio 6.0
-        integration to succeed, Visual Studio 6.0 must run at least once
-        before you select Register PSDK Directories with Visual
-        Studio. Also note that when this option is run, the IDEs should
-        not be running."
-
-      * Install Python and add it to your path
+      * Install Python and add it to your path      
       * Install Perl (it should add itself to the path)
+        ### Subversion doesn't need perl. Only some dependencies need it
+            (openssl and some apr scripts)
       * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add
         the directory containing it (e.g. SVN\awk) to the path.
-      * [Optional] Install Apache 2 using the msi file if you are going to test
-        the server dso modules and are using Visual Studio 6.  You must build
-        and install it from source if you are not using Visual Studio 6 and
-        want to build and/or test the server modules.
+        ### Subversion doesn't need awk. Only some dependencies need it
+            (some apr scripts)
       * [Optional] If you checked out Subversion from the repository and want
         to build Subversion with http/https access support then install the
         Apache Serf sources into SVN\src-trunk\serf.
@@ -888,6 +802,7 @@ II.   INSTALLATION
         SVN\src-trunk\db4-win32\include, and all the import libraries to
         SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in
         your path.
+        ### Just use --with-serf instead of the hardcoded path
 
       * [Optional] If you want to build the server modules, extract Apache
         source into SVN\httpd-2.x.x.
@@ -900,21 +815,22 @@ II.   INSTALLATION
           - Extract the apr, apr-util and apr-iconv directories from the
             srclib folder in the Apache httpd source into SVN\apr,
             SVN\apr-util, and SVN\apr-iconv respectively.
+        ### Just use --with-apr, etc. instead of the hardcoded paths
       * Extract the ZLib sources into SVN\zlib if you are not using the zlib
         included in the dependencies zip file.
+        ### Just use --with-zlib instead of the hardcoded path
       * [Optional] If you want secure connection (https) client support extract
         openssl into SVN\openssl-x.x.x
+        ### And pass the path to both serf and gen-make.py
       * [Optional] If you want localized message support, extract
         svn-win32-libintl.zip into SVN\svn-win32-libintl and extract
         gettext-x.x.x-bin.zip and gettext-x.x.x-dep.zip into
         SVN\gettext-x.x.x-bin.
-        Add SVN\gettext-x.x.x-bin\bin to your path.
-      * [Optional] Extract MASM32 (only the ML.EXE and ML.ERR files) into
-        SVN\asm (or extract nasm into SVN\asm) and put it in your path.
-      * Download the SQLite amalgemation from
+        Add SVN\gettext-x.x.x-bin\bin to your path.        
+      * Download the SQLite amalgamation from
         http://www.sqlite.org/download.html
-        and extract it into SVN\sqlite-amalgemation.
-        See I.C.12 for alternatives to using the amalgemation package.
+        and extract it into SVN\sqlite-amalgamation.
+        See I.C.12 for alternatives to using the amalgamation package.
 
   E.4 Building the Binaries
 
@@ -961,14 +877,8 @@ II.   INSTALLATION
 
       This step is only required for building the server dso modules.
 
-      The Subversion gen-make.py script must be run before building Apache or
-      Apache and Subversion will be running incompatible versions of apr.
+      ### FIXME Apache 2.2 or greater required. Old build instructions for VC6.
 
-      C:>cd src-%DIR%
-      C:>python gen-make.py -t dsp --with-httpd=..\httpd-2.0.58
-         --with-berkeley-db=db4-win32 --with-openssl=..\openssl-0.9.7f
-         --with-zlib=..\zlib --with-libintl=..\svn-win32-libintl
-      C:>cd ..
       C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2
       C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release"
 
@@ -1018,32 +928,19 @@ II.   INSTALLATION
         the APR libraries; the options are --with-apr, --with-apr-util and
         --with-apr-iconv.
       * If you would like a debug build substitute Debug for Release in
-        the msdev/msbuild commands.
+        the devenv/msbuild commands.
       * There have been rumors that Subversion on Win32 can be built
         using the latest cygwin, you probably don't want the zip file source
         distribution though. ymmv.
-      * The /USEENV switch to msdev makes it take notice of the INCLUDE and
-        LIB environment variables, it also makes it ignore its own lib and
-        include settings so you need to have the Windows SDK lib and include
-        directories in the LIB and INCLUDE environment variables.  Do *not*
-        use this switch when starting up the msdev Visual environment.  If you
-        wish to build in the Visual environment the SDK lib and include
-        directories must be in the Tools/Options/Directories settings (if you
-        followed the 'Register the SDK with Visual Studio 6' instructions
-        above this has been done for you).
-      * If you are using Visual Studio later than VC6 change -t dsw into
-        -t vcproj and add the --vsnet-version=20xx option on the gen-make.py
-        command.
-        In this case you will also have to distribute the C runtime dll with
-        the binaries.  Also, since Apache/APR do not provide .vcproj files,
-        you will need to convert the Apache/APR .dsp files to .vcproj files
-        with Visual Studio before building -- just open the Apache .dsw file
-        and answer 'Yes To All' when the conversion dialog pops up, or you
-        can open the individual .dsp files and convert them one at a time.
+      * You will also have to distribute the C runtime dll with the binaries.
+        Also, since Apache/APR do not provide .vcproj files, you will need to
+        convert the Apache/APR .dsp files to .vcproj files with Visual Studio
+        before building -- just open the Apache .dsw file and answer 'Yes To
+        All' when the conversion dialog pops up, or you can open the individual
+        .dsp files and convert them one at a time.
         The Apache/APR projects required by Subversion are:
         apr-util\libaprutil.dsp, apr\libapr.dsp,
         apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp,
-        apr-util\uri\gen_uri_delims.dsp (for APR 0.9.x),
         apr-iconv\ccs\libapriconv_ccs_modules.dsp, and
         apr-iconv\ces\libapriconv_ces_modules.dsp.
       * If the server dso modules are being built and tested Apache must not
@@ -1055,23 +952,12 @@ II.   INSTALLATION
       gen-make.py will already have been run. If the source is from the zip
       file, Apache 2 has not been built so gen-make.py must be run:
 
-      C:>python gen-make.py -t dsp --with-berkeley-db=db4-win32
-          --with-openssl=..\openssl-0.9.7f --with-zlib=..\zlib
+      C:>python gen-make.py --vsnet-version=20xx --with-berkeley-db=db4-win32
+          --with-openssl=..\openssl --with-zlib=..\zlib
           --with-libintl=..\svn-win32-libintl
 
       Then build subversion:
 
-      C:>msdev subversion_msvc.dsw /USEENV /MAKE "__ALL_TESTS__ - Win32 Release"
-      C:>cd ..
-
-      Or, with Visual C++.NET 2005 or C++ Express 2005:
-
-      C:>devenv subversion_vcnet.sln /build "Release" /project "__ALL_TESTS__"
-      C:>cd ..
-
-      Or, with Visual C++.NET 2008+, C++ Express 2008+, Studio Express 2012+ or
-      Studio Community 2013+:
-
       C:>msbuild subversion_vcnet.sln /t:__ALL_TESTS__ /p:Configuration=Release
       C:>cd ..
 
@@ -1163,39 +1049,19 @@ III.  BUILDING A SUBVERSION SERVER
       svnserve instead, jump right to section E for a quick explanation.
 
 
-  A.  Setting Up Apache
-      -----------------
+  A.  Setting Up Apache Httpd
+      -----------------------
 
-      1.  Obtaining and Installing Apache 2
+      1.  Obtaining and Installing Apache Httpd 2
 
       Subversion tries to compile against the latest released version
-      of Apache httpd 2.X.  The easiest thing for you to do is download
+      of Apache httpd 2.2+.  The easiest thing for you to do is download
       a source tarball of the latest release and unpack that.
 
-
-        ****************************************************************
-        **    IMPORTANT ISSUE ABOUT APACHE VERSIONS:  READ THIS.      **
-        **                                                            **
-        ****************************************************************
-        |                                                              |
-        | First, be sure to read the APR version warning box, back in  |
-        | section I.C.1, which explains that APR 0.9.x and 1.X are     |
-        | binary-incompatible.                                         |
-        |                                                              |
-        |    Apache HTTPD 2.0 uses APR 0.9.x.                          |
-        |    Apache HTTPD 2.2 uses APR 1.2.x.                          |
-        |                                                              |
-        | We recommend using the latest Apache.  However, whatever     |
-        | version you choose, you *must* ensure that Subversion        |
-        | and Apache are using the same version of APR.  If you don't, |
-        | things will segfault and break.                              |
-        |______________________________________________________________|
-
-
-      If you have questions about the Apache httpd 2.0 build, please consult
+      If you have questions about the Apache httpd 2.2 build, please consult
       the httpd install documentation:
 
-          http://httpd.apache.org/docs-2.0/install.html
+          http://httpd.apache.org/docs-2.2/install.html
 
       At the top of the httpd tree:
 
@@ -1241,7 +1107,7 @@ III.  BUILDING A SUBVERSION SERVER
       ---------------------------------------------------------
 
       Go back into your subversion working copy and run ./autogen.sh if
-      you need to.  Then, assuming Apache httpd 2.0 is installed in the
+      you need to.  Then, assuming Apache httpd 2.2 is installed in the
       standard location, run:
 
           $ ./configure
@@ -1251,7 +1117,7 @@ III.  BUILDING A SUBVERSION SERVER
       look for other libsvn_*.so libraries on your system.
 
       If you see a warning message that the build of mod_dav_svn is
-      being skipped, this may be because you have Apache httpd 2.X
+      being skipped, this may be because you have Apache httpd 2.x
       installed in a non-standard location.  You can use the
       "--with-apxs=" option to locate the apxs script:
 
@@ -1278,8 +1144,8 @@ III.  BUILDING A SUBVERSION SERVER
       Section II.E explains how to build the server on Windows.
 
 
-  C.  Configuring Apache for Subversion
-      ---------------------------------
+  C.  Configuring Apache Httpd for Subversion
+      ---------------------------------------
 
       The following section is an abbreviated version of the
       information in the Subversion Book
@@ -1293,7 +1159,7 @@ III.  BUILDING A SUBVERSION SERVER
       /usr/local/apache2/conf/httpd.conf to reflect your setup.
       At a minimum you should look at the User, Group and ServerName
       directives.  Full details on setting up apache can be found at:
-      http://httpd.apache.org/docs-2.0/
+      http://httpd.apache.org/docs-2.2/
 
       First, your httpd.conf needs to load the mod_dav_svn module.
       If you pass --enable-mod-activation to Subversion's configure,
@@ -1347,6 +1213,7 @@ III.  BUILDING A SUBVERSION SERVER
                  Require group svn_readers
              </Limit>
 
+      ### FIXME Tutorials section refers to old 2.0 docs
       These are only a few simple examples.  For a complete tutorial
       on Apache access control, please consider taking a look at the
       tutorials found under "Security" on the following page:
@@ -1373,7 +1240,7 @@ III.  BUILDING A SUBVERSION SERVER
 
       NOTE: If you are unfamiliar with an Apache directive, or not exactly
       sure about what it does, don't hesitate to look it up in the
-      documentation: http://httpd.apache.org/docs-2.0/mod/directives.html.
+      documentation: http://httpd.apache.org/docs-2.2/mod/directives.html.
 
       NOTE: Make sure that the user 'nobody' (or whatever UID the
       httpd process runs as) has permission to read and write the

Modified: subversion/branches/reuse-ra-session/build/generator/gen_vcnet_vcproj.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/build/generator/gen_vcnet_vcproj.py?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/build/generator/gen_vcnet_vcproj.py (original)
+++ subversion/branches/reuse-ra-session/build/generator/gen_vcnet_vcproj.py Thu Sep 17 15:09:12 2015
@@ -55,18 +55,6 @@ class Generator(gen_win.WinGeneratorBase
 
       target.proj_name = target.name
 
-  def get_external_project(self, target, proj_ext):
-    "Link project files: prefer vcproj's, but if don't exist, try dsp's."
-    vcproj = gen_win.WinGeneratorBase.get_external_project(self, target,
-                                                           proj_ext)
-    if vcproj and not os.path.exists(vcproj):
-      dspproj = gen_win.WinGeneratorBase.get_external_project(self, target,
-                                                              'dsp')
-      if os.path.exists(dspproj):
-        return dspproj
-
-    return vcproj
-
   def write_project(self, target, fname, depends):
     "Write a Project (.vcproj/.vcxproj)"
 
@@ -294,7 +282,4 @@ class Generator(gen_win.WinGeneratorBase
       'guids' : guidvals,
       }
 
-    if self.vs_version == '2002' or self.vs_version == '2003':
-      self.write_with_template('subversion_vcnet.sln', 'templates/vcnet_vc7_sln.ezt', data)
-    else:
-      self.write_with_template('subversion_vcnet.sln', 'templates/vcnet_sln.ezt', data)
+    self.write_with_template('subversion_vcnet.sln', 'templates/vcnet_sln.ezt', data)

Modified: subversion/branches/reuse-ra-session/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/build/generator/gen_win.py?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/build/generator/gen_win.py (original)
+++ subversion/branches/reuse-ra-session/build/generator/gen_win.py Thu Sep 17 15:09:12 2015
@@ -547,9 +547,7 @@ class WinGeneratorBase(gen_win_dependenc
             and target.external_project):
       return None
 
-    if target.external_project[:5] == 'serf/' and 'serf' in self._libraries:
-      path = self.serf_path + target.external_project[4:]
-    elif target.external_project.find('/') != -1:
+    if target.external_project.find('/') != -1:
       path = target.external_project
     else:
       path = os.path.join(self.projfilesdir, target.external_project)

Modified: subversion/branches/reuse-ra-session/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/configure.ac?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/configure.ac (original)
+++ subversion/branches/reuse-ra-session/configure.ac Thu Sep 17 15:09:12 2015
@@ -1506,7 +1506,7 @@ AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
 
 # ==== Miscellaneous bits ====================================================
 
-AC_CHECK_HEADERS([stdbool.h inttypes.h])
+AC_CHECK_HEADERS([stdbool.h stdint.h])
 
 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
 ### I think we get this flag from APR, so the fix probably belongs there

Modified: subversion/branches/reuse-ra-session/gen-make.py
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/gen-make.py?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/gen-make.py (original)
+++ subversion/branches/reuse-ra-session/gen-make.py Thu Sep 17 15:09:12 2015
@@ -206,9 +206,8 @@ def _usage_exit(err=None):
   print("           Use static openssl")
   print("")
   print("  --vsnet-version=VER")
-  print("           generate for VS.NET version VER (2002, 2003, 2005, 2008,")
-  print("           2010, 2012, 2013 or 2015)")
-  print("           [only valid in combination with '-t vcproj']")
+  print("           generate for VS.NET version VER (2005-2015 or 9.0-14.0)")
+  print("           [implies '-t vcproj']")
   print("")
   print(" -D NAME[=value]")
   print("           define NAME macro during compilation")
@@ -304,6 +303,8 @@ if __name__ == '__main__':
       skip = 1
     elif opt == '-t':
       gentype = val
+    elif opt == '--vsnet-version':
+      gentype = 'vcproj'
     else:
       if opt == '--with-httpd':
         rest.add('--with-apr', os.path.join(val, 'srclib', 'apr'),

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h Thu Sep 17 15:09:12 2015
@@ -204,9 +204,13 @@ svn_utf__glob(svn_boolean_t *match,
               svn_membuf_t *string_buf,
               svn_membuf_t *temp_buf);
 
-/* Return the version of the wrapped utf8proc library. */
+/* Return the compiled version of the wrapped utf8proc library. */
 const char *
-svn_utf__utf8proc_version(void);
+svn_utf__utf8proc_compiled_version(void);
+
+/* Return the runtime version of the wrapped utf8proc library. */
+const char *
+svn_utf__utf8proc_runtime_version(void);
 
 /* Convert an UTF-16 (or UCS-2) string to UTF-8, returning the pointer
  * in RESULT. If BIG_ENDIAN is set, then UTF16STR is big-endian;

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_client.h?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_client.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_client.h Thu Sep 17 15:09:12 2015
@@ -4386,10 +4386,10 @@ typedef enum svn_client_conflict_option_
   svn_client_conflict_option_undefined = -1, /* for private use only */
   svn_client_conflict_option_postpone = 0,
   svn_client_conflict_option_base_text,
-  svn_client_conflict_option_incoming_new_text,
+  svn_client_conflict_option_incoming_text,
   svn_client_conflict_option_working_text,
-  svn_client_conflict_option_incoming_new_text_for_conflicted_hunks_only,
-  svn_client_conflict_option_working_text_for_conflicted_hunks_only,
+  svn_client_conflict_option_incoming_text_where_conflicted,
+  svn_client_conflict_option_working_text_where_conflicted,
   svn_client_conflict_option_merged_text,
   svn_client_conflict_option_unspecified
   /* Values derived from svn_wc_conflict_choice_t end here. */
@@ -4451,37 +4451,6 @@ svn_client_conflict_from_wc_description2
   apr_pool_t *scratch_pool);
 
 /**
- * Callback for svn_client_conflict_walk_conflicts();
- * 
- * @since New in 1.10.
- */
-typedef svn_error_t *(svn_client_conflict_walk_func_t)(
-  void *baton,
-  svn_client_conflict_t *conflict,
-  apr_pool_t *scratch_pool);
-
-/**
- * Walk all conflicts within the specified @a depth of @a local_abspath.
- * Pass each conflict found during the walk to the @conflict_walk_func
- * callback, along with @a conflict_walk_func_baton.
- * Use cancellation and notification support provided by client context @a ctx.
- * 
- * This callback may choose to resolve the conflict. If the act of resolving
- * a conflict creates new conflicts within the walked working copy (as might
- * be the case for some tree conflicts), the callback will be invoked for each
- * such new conflict as well.
- * 
- * @since New in 1.10.
- */
-svn_error_t *
-svn_client_conflict_walk(const char *local_abspath,
-                         svn_depth_t depth,
-                         svn_client_conflict_walk_func_t conflict_walk_func,
-                         void *conflict_walk_func_baton,
-                         svn_client_ctx_t *ctx,
-                         apr_pool_t *scratch_pool);
-
-/**
 * Indicate the types of conflicts present on the working copy node
 * described by @a conflict. Any output argument may be @c NULL if
 * the caller is not interested in the status of a particular type.

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_io.h?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_io.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_io.h Thu Sep 17 15:09:12 2015
@@ -1102,11 +1102,29 @@ svn_stream_from_aprfile(apr_file_t *file
                         apr_pool_t *pool);
 
 /** Set @a *in to a generic stream connected to stdin, allocated in
- * @a pool.  The stream and its underlying APR handle will be closed
- * when @a pool is cleared or destroyed.
+ * @a pool.  If @a buffered is set, APR buffering will be enabled.
+ * The stream and its underlying APR handle will be closed when @a pool
+ * is cleared or destroyed.
+ *
+ * @note APR buffering will try to fill the whole internal buffer before
+ *       serving read requests.  This may be inappropriate for interactive
+ *       applications where stdin will not deliver any more data unless
+ *       the application processed the data already received.
+ *
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_stream_for_stdin2(svn_stream_t **in,
+                      svn_boolean_t buffered,
+                      apr_pool_t *pool);
+
+/** Similar to svn_stream_for_stdin2(), but with buffering being disabled.
  *
  * @since New in 1.7.
+ *
+ * @deprecated Provided for backward compatibility with the 1.9 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_stream_for_stdin(svn_stream_t **in,
                      apr_pool_t *pool);
@@ -1157,18 +1175,6 @@ svn_stream_t *
 svn_stream_from_string(const svn_string_t *str,
                        apr_pool_t *pool);
 
-/** Return a generic read-only stream that forwards data from @a inner but
- * uses buffering for efficiency.  Allocate the stream in @a result_pool.
- *
- * @note The returned stream has no support for writing nor mark and seek
- * even if @a inner does support those functions.
- *
- * @since New in 1.10.
- */
-svn_stream_t *
-svn_stream_wrap_buffered_read(svn_stream_t *inner,
-                              apr_pool_t *result_pool);
-
 /** Return a generic stream which implements buffered reads and writes.
  *  The stream will preferentially store data in-memory, but may use
  *  disk storage as backup if the amount of data is large.
@@ -2300,14 +2306,30 @@ svn_io_file_write_full(apr_file_t *file,
  * If @a copy_perms_path is not NULL, copy the permissions applied on @a
  * @a copy_perms_path on the temporary file before renaming.
  *
- * @note This function uses advanced file control operations to flush buffers
- * to disk that aren't always accessible and can be very expensive. Avoid
- * using this function in cases where the file should just work on any
- * network filesystem.
+ * If @a flush_to_disk is non-zero, do not return until the node has
+ * actually been written on the disk.
  *
- * @since New in 1.9.
+ * @note The flush to disk operation can be very expensive on systems
+ * that implement flushing on all IO layers, like Windows. Please use
+ * @a flush_to_disk flag only for critical data.
+ *
+ * @since New in 1.10.
  */
 svn_error_t *
+svn_io_write_atomic2(const char *final_path,
+                     const void *buf,
+                     apr_size_t nbytes,
+                     const char *copy_perms_path,
+                     svn_boolean_t flush_to_disk,
+                     apr_pool_t *scratch_pool);
+
+/** Similar to svn_io_write_atomic2(), but with @a flush_to_disk set
+* to @c TRUE.
+*
+* @deprecated Provided for backward compatibility with the 1.9 API
+*/
+SVN_DEPRECATED
+svn_error_t *
 svn_io_write_atomic(const char *final_path,
                     const void *buf,
                     apr_size_t nbytes,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c Thu Sep 17 15:09:12 2015
@@ -11650,9 +11650,6 @@ open_reintegrate_source_and_target(svn_r
   SVN_ERR(open_target_wc(&target, target_abspath,
                          FALSE, FALSE, FALSE,
                          ctx, scratch_pool, scratch_pool));
-  SVN_ERR(svn_client_open_ra_session2(target_ra_session_p,
-                                      target->loc.url, target->abspath,
-                                      ctx, result_pool, scratch_pool));
   if (! target->loc.url)
     return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL,
                              _("Can't reintegrate into '%s' because it is "
@@ -11661,6 +11658,10 @@ open_reintegrate_source_and_target(svn_r
                              svn_dirent_local_style(target->abspath,
                                                     scratch_pool));
 
+  SVN_ERR(svn_client_open_ra_session2(target_ra_session_p,
+                                      target->loc.url, target->abspath,
+                                      ctx, result_pool, scratch_pool));
+
   SVN_ERR(svn_client__ra_session_from_path2(
             source_ra_session_p, &source_loc,
             source_path_or_url, NULL, source_peg_revision, source_peg_revision,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/resolved.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/resolved.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/resolved.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/resolved.c Thu Sep 17 15:09:12 2015
@@ -223,16 +223,16 @@ conflict_option_id_to_wc_conflict_choice
       case svn_client_conflict_option_base_text:
         return svn_wc_conflict_choose_base;
 
-      case svn_client_conflict_option_incoming_new_text:
+      case svn_client_conflict_option_incoming_text:
         return svn_wc_conflict_choose_theirs_full;
 
       case svn_client_conflict_option_working_text:
         return svn_wc_conflict_choose_mine_full;
 
-      case svn_client_conflict_option_incoming_new_text_for_conflicted_hunks_only:
+      case svn_client_conflict_option_incoming_text_where_conflicted:
         return svn_wc_conflict_choose_theirs_conflict;
 
-      case svn_client_conflict_option_working_text_for_conflicted_hunks_only:
+      case svn_client_conflict_option_working_text_where_conflicted:
         return svn_wc_conflict_choose_mine_conflict;
 
       case svn_client_conflict_option_merged_text:
@@ -319,8 +319,7 @@ conflict_get_internal(svn_client_conflic
             (*conflict)->prop_conflicts = apr_hash_make(result_pool);
           svn_hash_sets((*conflict)->prop_conflicts, desc->property_name, desc);
         }
-      else
-        add_legacy_desc_to_conflict(desc, *conflict, result_pool);
+      add_legacy_desc_to_conflict(desc, *conflict, result_pool);
     }
 
   return SVN_NO_ERROR;
@@ -348,125 +347,6 @@ svn_client_conflict_from_wc_description2
                                                result_pool, scratch_pool));
 }
 
-/* Baton type for conflict_resolver_func(). */
-struct conflict_resolver_baton_t {
-
-  svn_client_conflict_walk_func_t *conflict_walk_func;
-  void *conflict_walk_func_baton;
-  svn_client_ctx_t *ctx;
-};
-
-/* Implements svn_wc_conflict_resolver_func2_t for now because
- * libsvn_wc does not support our new conflict type yet. */
-static svn_error_t *
-conflict_resolver_func(svn_wc_conflict_result_t **result,
-                       const svn_wc_conflict_description2_t *description,
-                       void *baton,
-                       apr_pool_t *result_pool,
-                       apr_pool_t *scratch_pool)
-{
-  struct conflict_resolver_baton_t *b = baton;
-  svn_client_conflict_t *conflict;
-  const char *local_abspath;
-  svn_client_conflict_option_id_t resolution;
-  svn_wc_conflict_choice_t conflict_choice;
-
-  local_abspath = description->local_abspath;
-  SVN_ERR(svn_client_conflict_get(&conflict, local_abspath, b->ctx,
-                                  scratch_pool, scratch_pool));
-
-  SVN_ERR(b->conflict_walk_func(b->conflict_walk_func_baton,
-                                conflict, scratch_pool));
-
-  /* Evaluate the conflict callback result based on which kind
-   * of conflict libsvn_wc has given us. */
-  resolution = svn_client_conflict_option_undefined;
-  if (description->kind == svn_wc_conflict_kind_text)
-    resolution = conflict->resolution_text;
-  else if (description->kind == svn_wc_conflict_kind_tree)
-    resolution = conflict->resolution_tree;
-  else if (description->kind == svn_wc_conflict_kind_property)
-    {
-      svn_client_conflict_option_t *option;
-
-      option = svn_hash_gets(conflict->resolved_props,
-                             description->property_name);
-      if (option == NULL)
-        return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
-                                 _("No resolution provided for conflicted "
-                                   "property '%s' on path '%s'"),
-                                 description->property_name,
-                                 svn_dirent_local_style(local_abspath,
-                                                        scratch_pool));
-
-      resolution = svn_client_conflict_option_get_id(option);
-      conflict_choice = conflict_option_id_to_wc_conflict_choice(resolution);
-      *result = svn_wc_create_conflict_result(conflict_choice, NULL,
-                                              result_pool);
-      if (resolution == svn_client_conflict_option_merged_text)
-        (*result)->merged_value = option->type_data.prop.merged_propval;
-        
-      return SVN_NO_ERROR;
-    }
-  else
-    return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
-                             _("Unknown legacy conflict kind '%d'"),
-                             description->kind);
-
-  if (resolution == svn_client_conflict_option_undefined)
-    return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
-                             _("No resolution for conflicted path '%s'"),
-                             svn_dirent_local_style(local_abspath,
-                                                    scratch_pool));
-
-  conflict_choice = conflict_option_id_to_wc_conflict_choice(resolution);
-  *result = svn_wc_create_conflict_result(conflict_choice, NULL, result_pool);
-
-  return SVN_NO_ERROR;
-}
-
-svn_error_t *
-svn_client_conflict_walk(const char *local_abspath,
-                         svn_depth_t depth,
-                         svn_client_conflict_walk_func_t conflict_walk_func,
-                         void *conflict_walk_func_baton,
-                         svn_client_ctx_t *ctx,
-                         apr_pool_t *scratch_pool)
-{
-  struct conflict_resolver_baton_t b;
-  const char *lock_abspath;
-  svn_error_t *err;
-
-  b.conflict_walk_func = conflict_walk_func;
-  b.conflict_walk_func_baton = conflict_walk_func_baton;
-  b.ctx = ctx;
-
-  SVN_ERR(svn_wc__acquire_write_lock_for_resolve(&lock_abspath, ctx->wc_ctx,
-                                                 local_abspath,
-                                                 scratch_pool, scratch_pool));
-  /* ### TODO: svn_wc__resolve_conflicts() should be changed to support
-   * ### iteration without relying on svn_wc_conflict_resolver_func2_t */
-  err = svn_wc__resolve_conflicts(ctx->wc_ctx, local_abspath,
-                                  depth,
-                                  TRUE /* resolve_text */,
-                                  "" /* resolve_prop (ALL props) */,
-                                  TRUE /* resolve_tree */,
-                                  svn_wc_conflict_choose_unspecified,
-                                  conflict_resolver_func, &b,
-                                  ctx->cancel_func, ctx->cancel_baton,
-                                  ctx->notify_func2, ctx->notify_baton2,
-                                  scratch_pool);
-
-  err = svn_error_compose_create(err, svn_wc__release_write_lock(ctx->wc_ctx,
-                                                                 lock_abspath,
-                                                                 scratch_pool));
-  svn_io_sleep_for_timestamps(local_abspath, scratch_pool);
-
-  
-
-  return SVN_NO_ERROR;
-}
-
 void
 svn_client_conflict_option_set_merged_propval(
   svn_client_conflict_option_t *option,
@@ -608,7 +488,7 @@ static const svn_client_conflict_option_
   },
 
   {
-    svn_client_conflict_option_incoming_new_text,
+    svn_client_conflict_option_incoming_text,
     N_("accept incoming version of entire file"),
     NULL,
     resolve_text_conflict
@@ -622,14 +502,14 @@ static const svn_client_conflict_option_
   },
 
   {
-    svn_client_conflict_option_incoming_new_text_for_conflicted_hunks_only,
+    svn_client_conflict_option_incoming_text_where_conflicted,
     N_("accept incoming version of all text conflicts in file"),
     NULL,
     resolve_text_conflict
   },
 
   {
-    svn_client_conflict_option_working_text_for_conflicted_hunks_only,
+    svn_client_conflict_option_working_text_where_conflicted,
     N_("accept working copy version of all text conflicts in file"),
     NULL,
     resolve_text_conflict
@@ -648,7 +528,7 @@ static const svn_client_conflict_option_
   },
 
   {
-    svn_client_conflict_option_incoming_new_text,
+    svn_client_conflict_option_incoming_text,
     N_("accept incoming version of binary file"),
     NULL,
     resolve_text_conflict
@@ -674,7 +554,7 @@ static const svn_client_conflict_option_
   },
 
   {
-    svn_client_conflict_option_incoming_new_text,
+    svn_client_conflict_option_incoming_text,
     N_("accept incoming version of entire property value"),
     NULL,
     resolve_prop_conflict

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_delta/xdelta.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_delta/xdelta.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_delta/xdelta.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_delta/xdelta.c Thu Sep 17 15:09:12 2015
@@ -111,7 +111,7 @@ struct block
   apr_uint32_t adlersum;
 
 /* Even in 64 bit systems, store only 32 bit offsets in our hash table
-   (our delta window size much much smaller then 4GB).
+   (our delta window size much much smaller than 4GB).
    That reduces the hash table size by 50% from 32to 16KB
    and makes it easier to fit into the CPU's L1 cache. */
   apr_uint32_t pos;    /* NO_POSITION -> block is not used */

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_diff/parse-diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_diff/parse-diff.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_diff/parse-diff.c Thu Sep 17 15:09:12 2015
@@ -919,7 +919,7 @@ enum parse_state
 {
    state_start,           /* initial */
    state_git_diff_seen,   /* diff --git */
-   state_git_tree_seen,   /* a tree operation, rather then content change */
+   state_git_tree_seen,   /* a tree operation, rather than content change */
    state_git_minus_seen,  /* --- /dev/null; or --- a/ */
    state_git_plus_seen,   /* +++ /dev/null; or +++ a/ */
    state_move_from_seen,  /* rename from foo.c */

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/fs_fs.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/fs_fs.c Thu Sep 17 15:09:12 2015
@@ -622,8 +622,8 @@ svn_fs_fs__write_format(svn_fs_t *fs,
     }
   else
     {
-      SVN_ERR(svn_io_write_atomic(path, sb->data, sb->len,
-                                  NULL /* copy_perms_path */, pool));
+      SVN_ERR(svn_io_write_atomic2(path, sb->data, sb->len,
+                                   NULL /* copy_perms_path */, TRUE, pool));
     }
 
   /* And set the perms to make it read only */
@@ -1857,9 +1857,9 @@ svn_fs_fs__set_uuid(svn_fs_t *fs,
 
   /* We use the permissions of the 'current' file, because the 'uuid'
      file does not exist during repository creation. */
-  SVN_ERR(svn_io_write_atomic(uuid_path, contents->data, contents->len,
-                              svn_fs_fs__path_current(fs, pool) /* perms */,
-                              pool));
+  SVN_ERR(svn_io_write_atomic2(uuid_path, contents->data, contents->len,
+                               svn_fs_fs__path_current(fs, pool) /* perms */,
+                               TRUE, pool));
 
   fs->uuid = apr_pstrdup(fs->pool, uuid);
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/index.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/index.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/index.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/index.c Thu Sep 17 15:09:12 2015
@@ -251,7 +251,7 @@ static svn_error_t *
 packed_stream_read(svn_fs_fs__packed_number_stream_t *stream)
 {
   unsigned char buffer[MAX_NUMBER_PREFETCH];
-  apr_size_t read = 0;
+  apr_size_t bytes_read = 0;
   apr_size_t i;
   value_position_pair_t *target;
   apr_off_t block_start = 0;
@@ -273,33 +273,34 @@ packed_stream_read(svn_fs_fs__packed_num
    * boundaries.  This shall prevent jumping back and forth between two
    * blocks because the extra data was not actually request _now_.
    */
-  read = sizeof(buffer);
+  bytes_read = sizeof(buffer);
   block_left = stream->block_size - (stream->next_offset - block_start);
-  if (block_left >= 10 && block_left < read)
-    read = (apr_size_t)block_left;
+  if (block_left >= 10 && block_left < bytes_read)
+    bytes_read = (apr_size_t)block_left;
 
   /* Don't read beyond the end of the file section that belongs to this
    * index / stream. */
-  read = (apr_size_t)MIN(read, stream->stream_end - stream->next_offset);
+  bytes_read = (apr_size_t)MIN(bytes_read,
+                               stream->stream_end - stream->next_offset);
 
-  err = apr_file_read(stream->file, buffer, &read);
+  err = apr_file_read(stream->file, buffer, &bytes_read);
   if (err && !APR_STATUS_IS_EOF(err))
     return stream_error_create(stream, err,
       _("Can't read index file '%s' at offset 0x%s"));
 
   /* if the last number is incomplete, trim it from the buffer */
-  while (read > 0 && buffer[read-1] >= 0x80)
-    --read;
+  while (bytes_read > 0 && buffer[bytes_read-1] >= 0x80)
+    --bytes_read;
 
   /* we call read() only if get() requires more data.  So, there must be
    * at least *one* further number. */
-  if SVN__PREDICT_FALSE(read == 0)
+  if SVN__PREDICT_FALSE(bytes_read == 0)
     return stream_error_create(stream, err,
       _("Unexpected end of index file %s at offset 0x%s"));
 
   /* parse file buffer and expand into stream buffer */
   target = stream->buffer;
-  for (i = 0; i < read;)
+  for (i = 0; i < bytes_read;)
     {
       if (buffer[i] < 0x80)
         {
@@ -558,13 +559,13 @@ read_uint64_from_proto_index(apr_file_t
                              apr_pool_t *scratch_pool)
 {
   apr_byte_t buffer[sizeof(*value_p)];
-  apr_size_t read;
+  apr_size_t bytes_read;
 
   /* Read the full 8 bytes or our 64 bit value, unless we hit EOF.
    * Assert that we never read partial values. */
   SVN_ERR(svn_io_file_read_full2(proto_index, buffer, sizeof(buffer),
-                                 &read, eof, scratch_pool));
-  SVN_ERR_ASSERT((eof && *eof) || read == sizeof(buffer));
+                                 &bytes_read, eof, scratch_pool));
+  SVN_ERR_ASSERT((eof && *eof) || bytes_read == sizeof(buffer));
 
   /* If we did not hit EOF, reconstruct the uint64 value and return it. */
   if (!eof || !*eof)

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/temp_serializer.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/temp_serializer.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/temp_serializer.c Thu Sep 17 15:09:12 2015
@@ -599,7 +599,7 @@ svn_fs_fs__serialize_properties(void **d
   /* create our auxiliary data structure */
   properties.count = apr_hash_count(hash);
   properties.keys = apr_palloc(pool, sizeof(const char*) * (properties.count + 1));
-  properties.values = apr_palloc(pool, sizeof(const char*) * properties.count);
+  properties.values = apr_palloc(pool, sizeof(const svn_string_t *) * properties.count);
 
   /* populate it with the hash entries */
   for (hi = apr_hash_first(pool, hash), i=0; hi; hi = apr_hash_next(hi), ++i)

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/transaction.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/transaction.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/transaction.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/transaction.c Thu Sep 17 15:09:12 2015
@@ -968,10 +968,10 @@ get_and_increment_txn_key_body(void *bat
 
   /* Increment the key and add a trailing \n to the string so the
      txn-current file has a newline in it. */
-  SVN_ERR(svn_io_write_atomic(txn_current_filename, new_id_str,
-                              line_length + 1,
-                              txn_current_filename /* copy_perms path */,
-                              pool));
+  SVN_ERR(svn_io_write_atomic2(txn_current_filename, new_id_str,
+                               line_length + 1,
+                               txn_current_filename /* copy_perms path */,
+                               TRUE, pool));
 
   return SVN_NO_ERROR;
 }
@@ -1485,6 +1485,7 @@ svn_fs_fs__set_entry(svn_fs_t *fs,
     = svn_fs_fs__path_txn_node_children(fs, parent_noderev->id, pool);
   apr_file_t *file;
   svn_stream_t *out;
+  svn_filesize_t filesize;
   fs_fs_data_t *ffd = fs->fsap_data;
   apr_pool_t *subpool = svn_pool_create(pool);
 
@@ -1515,8 +1516,6 @@ svn_fs_fs__set_entry(svn_fs_t *fs,
     }
   else
     {
-      const svn_io_dirent2_t *dirent;
-
       /* The directory rep is already mutable, so just open it for append. */
       SVN_ERR(svn_io_file_open(&file, filename, APR_WRITE | APR_APPEND,
                                APR_OS_DEFAULT, subpool));
@@ -1531,11 +1530,11 @@ svn_fs_fs__set_entry(svn_fs_t *fs,
           const char *key
             = svn_fs_fs__id_unparse(parent_noderev->id, subpool)->data;
           svn_boolean_t found;
-          svn_filesize_t filesize;
+          svn_filesize_t cached_filesize;
 
           /* Get the file size that corresponds to the cached contents
            * (if any). */
-          SVN_ERR(svn_cache__get_partial((void **)&filesize, &found,
+          SVN_ERR(svn_cache__get_partial((void **)&cached_filesize, &found,
                                          ffd->txn_dir_cache, key,
                                          svn_fs_fs__extract_dir_filesize,
                                          NULL, subpool));
@@ -1544,10 +1543,9 @@ svn_fs_fs__set_entry(svn_fs_t *fs,
            * If not, we need to drop the cache entry. */
           if (found)
             {
-              SVN_ERR(svn_io_stat_dirent2(&dirent, filename, FALSE, FALSE,
-                                          subpool, subpool));
+              SVN_ERR(svn_io_file_size_get(&filesize, file, subpool));
 
-              if (filesize != dirent->filesize)
+              if (cached_filesize != filesize)
                 SVN_ERR(svn_cache__set(ffd->txn_dir_cache, key, NULL,
                                        subpool));
             }
@@ -1571,6 +1569,12 @@ svn_fs_fs__set_entry(svn_fs_t *fs,
     }
 
   /* Flush APR buffers. */
+  SVN_ERR(svn_io_file_flush(file, subpool));
+
+  /* Obtain final file size to update txn_dir_cache. */
+  SVN_ERR(svn_io_file_size_get(&filesize, file, subpool));
+
+  /* Close file. */
   SVN_ERR(svn_io_file_close(file, subpool));
   svn_pool_clear(subpool);
 
@@ -1582,13 +1586,9 @@ svn_fs_fs__set_entry(svn_fs_t *fs,
           svn_fs_fs__id_unparse(parent_noderev->id, subpool)->data;
       replace_baton_t baton;
 
-      const svn_io_dirent2_t *dirent;
-      SVN_ERR(svn_io_stat_dirent2(&dirent, filename, FALSE, FALSE,
-                                  subpool, subpool));
-
       baton.name = name;
       baton.new_entry = NULL;
-      baton.txn_filesize = dirent->filesize;
+      baton.txn_filesize = filesize;
 
       if (id)
         {
@@ -1715,7 +1715,7 @@ allocate_item_index(apr_uint64_t *item_i
       char buffer[SVN_INT64_BUFFER_SIZE] = { 0 };
       svn_boolean_t eof = FALSE;
       apr_size_t to_write;
-      apr_size_t read;
+      apr_size_t bytes_read;
       apr_off_t offset = 0;
 
       /* read number, increment it and write it back to disk */
@@ -1724,8 +1724,8 @@ allocate_item_index(apr_uint64_t *item_i
                          APR_READ | APR_WRITE | APR_CREATE | APR_BUFFERED,
                          APR_OS_DEFAULT, pool));
       SVN_ERR(svn_io_file_read_full2(file, buffer, sizeof(buffer)-1,
-                                     &read, &eof, pool));
-      if (read)
+                                     &bytes_read, &eof, pool));
+      if (bytes_read)
         SVN_ERR(svn_cstring_atoui64(item_index, buffer));
       else
         *item_index = SVN_FS_FS__ITEM_INDEX_FIRST_USER;
@@ -2836,7 +2836,7 @@ validate_root_noderev(svn_fs_t *fs,
 
      Normally (rev == root_noderev->predecessor_count), but here we
      use a more roundabout check that should only trigger on new instances
-     of the corruption, rather then trigger on each and every new commit
+     of the corruption, rather than trigger on each and every new commit
      to a repository that has triggered the bug somewhere in its root
      noderev's history.
    */

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/tree.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/tree.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/tree.c Thu Sep 17 15:09:12 2015
@@ -3273,6 +3273,14 @@ typedef struct fs_history_data_t
 
   /* FALSE until the first call to svn_fs_history_prev(). */
   svn_boolean_t is_interesting;
+
+  /* If not SVN_INVALID_REVISION, we know that the next copy operation
+     is at this revision. */
+  svn_revnum_t next_copy;
+
+  /* If not NULL, this is the noderev ID of PATH@REVISION. */
+  const svn_fs_id_t *current_id;
+
 } fs_history_data_t;
 
 static svn_fs_history_t *
@@ -3282,6 +3290,8 @@ assemble_history(svn_fs_t *fs,
                  svn_boolean_t is_interesting,
                  const char *path_hint,
                  svn_revnum_t rev_hint,
+                 svn_revnum_t next_copy,
+                 const svn_fs_id_t *current_id,
                  apr_pool_t *pool);
 
 
@@ -3308,7 +3318,8 @@ fs_node_history(svn_fs_history_t **histo
 
   /* Okay, all seems well.  Build our history object and return it. */
   *history_p = assemble_history(root->fs, path, root->rev, FALSE, NULL,
-                                SVN_INVALID_REVNUM, result_pool);
+                                SVN_INVALID_REVNUM, SVN_INVALID_REVNUM,
+                                NULL, result_pool);
   return SVN_NO_ERROR;
 }
 
@@ -3609,10 +3620,50 @@ history_prev(svn_fs_history_t **prev_his
   svn_boolean_t reported = fhd->is_interesting;
   svn_revnum_t copyroot_rev;
   const char *copyroot_path;
+  const svn_fs_id_t *pred_id = NULL;
 
   /* Initialize our return value. */
   *prev_history = NULL;
 
+  /* When following history, there tend to be long sections of linear
+     history where there are no copies at PATH or its parents.  Within
+     these sections, we only need to follow the node history. */
+  if (   SVN_IS_VALID_REVNUM(fhd->next_copy)
+      && revision > fhd->next_copy
+      && fhd->current_id)
+    {
+      /* We know the last reported node (CURRENT_ID) and the NEXT_COPY
+         revision is somewhat further in the past. */
+      node_revision_t *noderev;
+      assert(reported);
+
+      /* Get the previous node change.  If there is none, then we already
+         reported the initial addition and this history traversal is done. */
+      SVN_ERR(svn_fs_fs__get_node_revision(&noderev, fs, fhd->current_id,
+                                           scratch_pool, scratch_pool));
+      if (! noderev->predecessor_id)
+        return SVN_NO_ERROR;
+
+      /* If the previous node change is younger than the next copy, it is
+         part of the linear history section. */
+      commit_rev = svn_fs_fs__id_rev(noderev->predecessor_id);
+      if (commit_rev > fhd->next_copy)
+        {
+          /* Within the linear history, simply report all node changes and
+             continue with the respective predecessor. */
+          *prev_history = assemble_history(fs, noderev->created_path,
+                                           commit_rev, TRUE, NULL,
+                                           SVN_INVALID_REVNUM,
+                                           fhd->next_copy,
+                                           noderev->predecessor_id,
+                                           result_pool);
+
+          return SVN_NO_ERROR;
+        }
+
+     /* We hit a copy. Fall back to the standard code path. */
+    }
+
   /* If our last history report left us hints about where to pickup
      the chase, then our last report was on the destination of a
      copy.  If we are crossing copies, start from those locations,
@@ -3651,7 +3702,9 @@ history_prev(svn_fs_history_t **prev_his
              need now to do so) ... */
           *prev_history = assemble_history(fs, commit_path,
                                            commit_rev, TRUE, NULL,
-                                           SVN_INVALID_REVNUM, result_pool);
+                                           SVN_INVALID_REVNUM,
+                                           SVN_INVALID_REVNUM, NULL,
+                                           result_pool);
           return SVN_NO_ERROR;
         }
       else
@@ -3659,8 +3712,6 @@ history_prev(svn_fs_history_t **prev_his
           /* ... or we *have* reported on this revision, and must now
              progress toward this node's predecessor (unless there is
              no predecessor, in which case we're all done!). */
-          const svn_fs_id_t *pred_id;
-
           SVN_ERR(svn_fs_fs__dag_get_predecessor_id(&pred_id, node));
           if (! pred_id)
             return SVN_NO_ERROR;
@@ -3731,12 +3782,18 @@ history_prev(svn_fs_history_t **prev_his
         retry = TRUE;
 
       *prev_history = assemble_history(fs, path, dst_rev, ! retry,
-                                       src_path, src_rev, result_pool);
+                                       src_path, src_rev,
+                                       SVN_INVALID_REVNUM, NULL,
+                                       result_pool);
     }
   else
     {
+      /* We know the next copy revision.  If we are not at the copy rev
+         itself, we will also know the predecessor node ID and the next
+         invocation will use the optimized "linear history" code path. */
       *prev_history = assemble_history(fs, commit_path, commit_rev, TRUE,
-                                       NULL, SVN_INVALID_REVNUM, result_pool);
+                                       NULL, SVN_INVALID_REVNUM,
+                                       copyroot_rev, pred_id, result_pool);
     }
 
   return SVN_NO_ERROR;
@@ -3767,10 +3824,12 @@ fs_history_prev(svn_fs_history_t **prev_
       if (! fhd->is_interesting)
         prev_history = assemble_history(fs, "/", fhd->revision,
                                         1, NULL, SVN_INVALID_REVNUM,
+                                        SVN_INVALID_REVNUM, NULL,
                                         result_pool);
       else if (fhd->revision > 0)
         prev_history = assemble_history(fs, "/", fhd->revision - 1,
                                         1, NULL, SVN_INVALID_REVNUM,
+                                        SVN_INVALID_REVNUM, NULL,
                                         result_pool);
     }
   else
@@ -3830,6 +3889,8 @@ assemble_history(svn_fs_t *fs,
                  svn_boolean_t is_interesting,
                  const char *path_hint,
                  svn_revnum_t rev_hint,
+                 svn_revnum_t next_copy,
+                 const svn_fs_id_t *current_id,
                  apr_pool_t *pool)
 {
   svn_fs_history_t *history = apr_pcalloc(pool, sizeof(*history));
@@ -3840,6 +3901,8 @@ assemble_history(svn_fs_t *fs,
   fhd->path_hint = path_hint ? svn_fs__canonicalize_abspath(path_hint, pool)
                              : NULL;
   fhd->rev_hint = rev_hint;
+  fhd->next_copy = next_copy;
+  fhd->current_id = current_id ? svn_fs_fs__id_copy(current_id, pool) : NULL;
   fhd->fs = fs;
 
   history->vtable = &history_vtable;

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/util.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/util.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_fs/util.c Thu Sep 17 15:09:12 2015
@@ -435,8 +435,9 @@ svn_fs_fs__write_min_unpacked_rev(svn_fs
 
   final_path = svn_fs_fs__path_min_unpacked_rev(fs, scratch_pool);
 
-  SVN_ERR(svn_io_write_atomic(final_path, buf, len + 1,
-                              final_path /* copy_perms */, scratch_pool));
+  SVN_ERR(svn_io_write_atomic2(final_path, buf, len + 1,
+                               final_path /* copy_perms */, TRUE,
+                               scratch_pool));
 
   return SVN_NO_ERROR;
 }
@@ -517,8 +518,8 @@ svn_fs_fs__write_current(svn_fs_t *fs,
     }
 
   name = svn_fs_fs__path_current(fs, pool);
-  SVN_ERR(svn_io_write_atomic(name, buf, strlen(buf),
-                              name /* copy_perms_path */, pool));
+  SVN_ERR(svn_io_write_atomic2(name, buf, strlen(buf),
+                               name /* copy_perms_path */, TRUE, pool));
 
   return SVN_NO_ERROR;
 }

Propchange: subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 17 15:09:12 2015
@@ -93,4 +93,4 @@
 /subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639,1546002-1546110
 /subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
 /subversion/trunk/subversion/libsvn_fs_fs:1415133-1596500,1596567,1597414,1597989,1598273,1599140,1600872,1601633,1603485-1603487,1603499,1603605,1604128,1604188,1604413-1604414,1604416-1604417,1604421,1604442,1604700,1604717,1604720,1604726,1604755,1604794,1604802,1604824,1604836,1604844,1604902-1604903,1604911,1604925,1604933,1604947,1605059-1605060,1605064-1605065,1605068,1605071-1605073,1605075,1605123,1605188-1605189,1605191,1605197,1605444,1605633,1606132,1606142,1606144,1606514,1606526,1606528,1606551,1606554,1606564,1606598-1606599,1606656,1606658,1606662,1606744,1606840,1607085,1607572,1612407,1612810,1613339,1613872,1614611,1615348,1615351-1615352,1615356,1616338-1616339,1616613,1617586,1617688,1618138,1618151,1618153,1618226,1618641,1618653,1618662,1619068,1619358,1619413,1619769,1619774,1620602,1620909,1620912,1620928,1620930,1621275,1621635,1622931,1622937,1622942,1622946,1622959-1622960,1622963,1622987,1623007,1623368,1623373,1623377,1623379,1623381,1623398,1623402,162
 4011,1624265,1624512,1626246,1626871,1626873,1626886,1627497-1627498,1627502,1627947-1627949,1627966,1628083,1628093,1628158-1628159,1628161,1628392-1628393,1628415,1628427,1628676,1628738,1628762,1628764,1629854-1629855,1629857,1629865,1629873,1629875,1629879,1630067,1630070,1631049-1631051,1631075,1631115,1631171,1631180,1631185-1631186,1631196-1631197,1631239-1631240,1631548,1631550,1631563,1631567,1631588,1631598,1632646,1632776,1632849,1632851-1632853,1632856-1632857,1632868,1632908,1632926,1633232,1633617-1633618,1634872,1634875,1634879-1634880,1634920,1636478,1636483,1636629,1636644,1637184,1637186,1637330,1637358,1637363,1637393,1639319,1639322,1639335,1639348,1639352,1639355,1639358,1639414,1639419,1639426,1639430,1639436,1639440,1639549,1640061-1640062,1640197,1640915,1640966,1641013,1643139,1643233,1645567,1646021,1646712,1646716,1647537,1647540-1647541,1647820,1647905,1648230,1648238,1648241-1648243,1648253,1648272,1648532,1648537-1648539,1648542,1648591,1648612,1653608,
 1658482
-/subversion/trunk/subversion/libsvn_fs_x:1414756-1702502
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1703640

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/fs_x.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/fs_x.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/fs_x.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/fs_x.c Thu Sep 17 15:09:12 2015
@@ -198,8 +198,9 @@ svn_fs_x__write_format(svn_fs_t *fs,
     }
   else
     {
-      SVN_ERR(svn_io_write_atomic(path, sb->data, sb->len,
-                                  NULL /* copy_perms_path */, scratch_pool));
+      SVN_ERR(svn_io_write_atomic2(path, sb->data, sb->len,
+                                   NULL /* copy_perms_path */,
+                                   TRUE, scratch_pool));
     }
 
   /* And set the perms to make it read only */
@@ -1070,10 +1071,10 @@ svn_fs_x__set_uuid(svn_fs_t *fs,
 
   /* We use the permissions of the 'current' file, because the 'uuid'
      file does not exist during repository creation. */
-  SVN_ERR(svn_io_write_atomic(uuid_path, contents->data, contents->len,
-                              /* perms */
-                              svn_fs_x__path_current(fs, scratch_pool),
-                              scratch_pool));
+  SVN_ERR(svn_io_write_atomic2(uuid_path, contents->data, contents->len,
+                               /* perms */
+                               svn_fs_x__path_current(fs, scratch_pool),
+                               TRUE, scratch_pool));
 
   fs->uuid = apr_pstrdup(fs->pool, uuid);
   ffd->instance_id = apr_pstrdup(fs->pool, instance_id);

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/index.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/index.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/index.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/index.c Thu Sep 17 15:09:12 2015
@@ -251,7 +251,7 @@ static svn_error_t *
 packed_stream_read(svn_fs_x__packed_number_stream_t *stream)
 {
   unsigned char buffer[MAX_NUMBER_PREFETCH];
-  apr_size_t read = 0;
+  apr_size_t bytes_read = 0;
   apr_size_t i;
   value_position_pair_t *target;
   apr_off_t block_start = 0;
@@ -273,33 +273,34 @@ packed_stream_read(svn_fs_x__packed_numb
    * boundaries.  This shall prevent jumping back and forth between two
    * blocks because the extra data was not actually request _now_.
    */
-  read = sizeof(buffer);
+  bytes_read = sizeof(buffer);
   block_left = stream->block_size - (stream->next_offset - block_start);
-  if (block_left >= 10 && block_left < read)
-    read = (apr_size_t)block_left;
+  if (block_left >= 10 && block_left < bytes_read)
+    bytes_read = (apr_size_t)block_left;
 
   /* Don't read beyond the end of the file section that belongs to this
    * index / stream. */
-  read = (apr_size_t)MIN(read, stream->stream_end - stream->next_offset);
+  bytes_read = (apr_size_t)MIN(bytes_read,
+                               stream->stream_end - stream->next_offset);
 
-  err = apr_file_read(stream->file, buffer, &read);
+  err = apr_file_read(stream->file, buffer, &bytes_read);
   if (err && !APR_STATUS_IS_EOF(err))
     return stream_error_create(stream, err,
       _("Can't read index file '%s' at offset 0x%"));
 
   /* if the last number is incomplete, trim it from the buffer */
-  while (read > 0 && buffer[read-1] >= 0x80)
-    --read;
+  while (bytes_read > 0 && buffer[bytes_read-1] >= 0x80)
+    --bytes_read;
 
   /* we call read() only if get() requires more data.  So, there must be
    * at least *one* further number. */
-  if SVN__PREDICT_FALSE(read == 0)
+  if SVN__PREDICT_FALSE(bytes_read == 0)
     return stream_error_create(stream, err,
       _("Unexpected end of index file %s at offset 0x%"));
 
   /* parse file buffer and expand into stream buffer */
   target = stream->buffer;
-  for (i = 0; i < read;)
+  for (i = 0; i < bytes_read;)
     {
       if (buffer[i] < 0x80)
         {
@@ -505,13 +506,13 @@ read_uint64_from_proto_index(apr_file_t
                              apr_pool_t *scratch_pool)
 {
   apr_byte_t buffer[sizeof(*value_p)];
-  apr_size_t read;
+  apr_size_t bytes_read;
 
   /* Read the full 8 bytes or our 64 bit value, unless we hit EOF.
    * Assert that we never read partial values. */
   SVN_ERR(svn_io_file_read_full2(proto_index, buffer, sizeof(buffer),
-                                 &read, eof, scratch_pool));
-  SVN_ERR_ASSERT((eof && *eof) || read == sizeof(buffer));
+                                 &bytes_read, eof, scratch_pool));
+  SVN_ERR_ASSERT((eof && *eof) || bytes_read == sizeof(buffer));
 
   /* If we did not hit EOF, reconstruct the uint64 value and return it. */
   if (!eof || !*eof)

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/revprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/revprops.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/revprops.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/revprops.c Thu Sep 17 15:09:12 2015
@@ -305,8 +305,8 @@ svn_fs_x__reset_revprop_generation_file(
    * the current format.  This ensures consistent on-disk state for new
    * format repositories. */
   SVN_ERR(checkedsummed_number(&buffer, 0, scratch_pool, scratch_pool));
-  SVN_ERR(svn_io_write_atomic(path, buffer->data, buffer->len, NULL,
-                              scratch_pool));
+  SVN_ERR(svn_io_write_atomic2(path, buffer->data, buffer->len, NULL,
+                               TRUE, scratch_pool));
 
   /* ffd->revprop_generation_file will be re-opened on demand. */
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/transaction.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/transaction.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/transaction.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/transaction.c Thu Sep 17 15:09:12 2015
@@ -1557,7 +1557,7 @@ allocate_item_index(apr_uint64_t *item_i
   char buffer[SVN_INT64_BUFFER_SIZE] = { 0 };
   svn_boolean_t eof = FALSE;
   apr_size_t to_write;
-  apr_size_t read;
+  apr_size_t bytes_read;
   apr_off_t offset = 0;
 
   /* read number */
@@ -1568,8 +1568,8 @@ allocate_item_index(apr_uint64_t *item_i
                             | APR_CREATE | APR_BUFFERED,
                             APR_OS_DEFAULT, scratch_pool));
   SVN_ERR(svn_io_file_read_full2(file, buffer, sizeof(buffer)-1,
-                                  &read, &eof, scratch_pool));
-  if (read)
+                                  &bytes_read, &eof, scratch_pool));
+  if (bytes_read)
     SVN_ERR(svn_cstring_atoui64(item_index, buffer));
   else
     *item_index = SVN_FS_X__ITEM_INDEX_FIRST_USER;
@@ -2839,7 +2839,7 @@ validate_root_noderev(svn_fs_t *fs,
 
      Normally (rev == root_noderev->predecessor_count), but here we
      use a more roundabout check that should only trigger on new instances
-     of the corruption, rather then trigger on each and every new commit
+     of the corruption, rather than trigger on each and every new commit
      to a repository that has triggered the bug somewhere in its root
      noderev's history.
    */

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/util.c?rev=1703645&r1=1703644&r2=1703645&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/util.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_fs_x/util.c Thu Sep 17 15:09:12 2015
@@ -549,8 +549,9 @@ svn_fs_x__write_min_unpacked_rev(svn_fs_
 
   final_path = svn_fs_x__path_min_unpacked_rev(fs, scratch_pool);
 
-  SVN_ERR(svn_io_write_atomic(final_path, buf, len + 1,
-                              final_path /* copy_perms */, scratch_pool));
+  SVN_ERR(svn_io_write_atomic2(final_path, buf, len + 1,
+                               final_path /* copy_perms */, TRUE,
+                               scratch_pool));
 
   return SVN_NO_ERROR;
 }