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

svn commit: r1704320 [1/4] - in /subversion/branches/move-tracking-2: ./ build/ build/generator/ build/generator/templates/ subversion/ subversion/bindings/javahl/native/jniwrapper/ subversion/include/ subversion/include/private/ subversion/libsvn_clie...

Author: julianfoad
Date: Mon Sep 21 15:26:27 2015
New Revision: 1704320

URL: http://svn.apache.org/viewvc?rev=1704320&view=rev
Log:
On the 'move-tracking-2' branch: catch up to trunk@1704317.

Removed:
    subversion/branches/move-tracking-2/build/generator/gen_msvc_dsp.py
    subversion/branches/move-tracking-2/build/generator/templates/msvc_dsp.ezt
    subversion/branches/move-tracking-2/build/generator/templates/msvc_dsw.ezt
    subversion/branches/move-tracking-2/build/generator/templates/svn_config.dsp.ezt
    subversion/branches/move-tracking-2/build/generator/templates/svn_locale.dsp.ezt
    subversion/branches/move-tracking-2/build/generator/templates/vcnet_vc7_sln.ezt
Modified:
    subversion/branches/move-tracking-2/   (props changed)
    subversion/branches/move-tracking-2/CHANGES   (contents, props changed)
    subversion/branches/move-tracking-2/COMMITTERS   (contents, props changed)
    subversion/branches/move-tracking-2/INSTALL   (contents, props changed)
    subversion/branches/move-tracking-2/Makefile.in   (contents, props changed)
    subversion/branches/move-tracking-2/build/   (props changed)
    subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py
    subversion/branches/move-tracking-2/build/generator/gen_win.py
    subversion/branches/move-tracking-2/build/run_tests.py
    subversion/branches/move-tracking-2/configure.ac   (contents, props changed)
    subversion/branches/move-tracking-2/gen-make.py   (contents, props changed)
    subversion/branches/move-tracking-2/subversion/   (props changed)
    subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp   (props changed)
    subversion/branches/move-tracking-2/subversion/include/private/svn_utf_private.h
    subversion/branches/move-tracking-2/subversion/include/svn_client.h
    subversion/branches/move-tracking-2/subversion/include/svn_diff.h
    subversion/branches/move-tracking-2/subversion/include/svn_io.h
    subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c
    subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c
    subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c
    subversion/branches/move-tracking-2/subversion/libsvn_diff/binary_diff.c
    subversion/branches/move-tracking-2/subversion/libsvn_diff/parse-diff.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/index.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/temp_serializer.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/transaction.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/util.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/dag_cache.h   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_x.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/index.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/revprops.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/transaction.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/util.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/commit.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/options.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c
    subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/cache-null.c   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_subr/checksum.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/io.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/utf.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/utf8proc/utf8proc.h
    subversion/branches/move-tracking-2/subversion/libsvn_wc/wc_db.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/workqueue.c
    subversion/branches/move-tracking-2/subversion/mod_dav_svn/activity.c
    subversion/branches/move-tracking-2/subversion/svn/cl.h
    subversion/branches/move-tracking-2/subversion/svn/conflict-callbacks.c
    subversion/branches/move-tracking-2/subversion/svn/resolve-cmd.c
    subversion/branches/move-tracking-2/subversion/svn/svn.c
    subversion/branches/move-tracking-2/subversion/svn_private_config.hw
    subversion/branches/move-tracking-2/subversion/svnadmin/svnadmin.c
    subversion/branches/move-tracking-2/subversion/svnbench/null-export-cmd.c
    subversion/branches/move-tracking-2/subversion/svnbench/svnbench.c
    subversion/branches/move-tracking-2/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/move-tracking-2/subversion/svnfsfs/load-index-cmd.c
    subversion/branches/move-tracking-2/subversion/svnmucc/svnmucc.c
    subversion/branches/move-tracking-2/subversion/svnrdump/svnrdump.c
    subversion/branches/move-tracking-2/subversion/svnserve/svnserve.c
    subversion/branches/move-tracking-2/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/patch_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py
    subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_repos/repos-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/checksum-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c
    subversion/branches/move-tracking-2/tools/   (props changed)
    subversion/branches/move-tracking-2/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
    subversion/branches/move-tracking-2/tools/client-side/bash_completion
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.c
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/logic.c
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c
    subversion/branches/move-tracking-2/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
    subversion/branches/move-tracking-2/tools/dev/unix-build/Makefile.svn
    subversion/branches/move-tracking-2/tools/dev/x509-parser.c
    subversion/branches/move-tracking-2/win-tests.py   (contents, props changed)

Propchange: subversion/branches/move-tracking-2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -93,4 +93,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1606692-1702602
+/subversion/trunk:1606692-1704317

Modified: subversion/branches/move-tracking-2/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/CHANGES?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/CHANGES (original)
+++ subversion/branches/move-tracking-2/CHANGES Mon Sep 21 15:26:27 2015
@@ -1,3 +1,36 @@
+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)
+    * svn: show utf8proc version in svn --version --verbose (r1702533, r1702891)
+
+  - Server-side bugfixes:
+    * fix reporting for empty representations in svnfsfs stats (r1698312 et al)
+
+ Developer-visible changes:
+  - General:
+    * fix svnfsfs_tests.py in fsfs-v4 and fsfs-v6 modes (r1700215 et al)
+
+  - 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

Propchange: subversion/branches/move-tracking-2/CHANGES
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -86,4 +86,4 @@
 /subversion/branches/verify-at-commit/CHANGES:1462039-1462408
 /subversion/branches/verify-keep-going/CHANGES:1439280-1546110
 /subversion/branches/wc-collate-path/CHANGES:1402685-1480384
-/subversion/trunk/CHANGES:1606692-1701347
+/subversion/trunk/CHANGES:1606692-1704317

Modified: subversion/branches/move-tracking-2/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/COMMITTERS?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/COMMITTERS [UTF-8] (original)
+++ subversion/branches/move-tracking-2/COMMITTERS [UTF-8] Mon Sep 21 15:26:27 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:
 

Propchange: subversion/branches/move-tracking-2/COMMITTERS
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/COMMITTERS:1462039-1462408
 /subversion/branches/verify-keep-going/COMMITTERS:1439280-1546110
 /subversion/branches/wc-collate-path/COMMITTERS:1402685-1480384
-/subversion/trunk/COMMITTERS:1606692-1666945
+/subversion/trunk/COMMITTERS:1606692-1704317

Modified: subversion/branches/move-tracking-2/INSTALL
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/INSTALL?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/INSTALL (original)
+++ subversion/branches/move-tracking-2/INSTALL Mon Sep 21 15:26:27 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 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
+        openssl into SVN\openssl
+        ### 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
 
@@ -944,7 +860,7 @@ II.   INSTALLATION
 
       OpenSSL
 
-      C:>cd openssl-0.9.7f
+      C:>cd openssl
       C:>perl Configure VC-WIN32
   [*] C:>call ms\do_masm
       C:>nmake -f ms\ntdll.mak
@@ -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 msbuild command.
       * 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

Propchange: subversion/branches/move-tracking-2/INSTALL
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -87,4 +87,4 @@
 /subversion/branches/verify-at-commit/INSTALL:1462039-1462408
 /subversion/branches/verify-keep-going/INSTALL:1439280-1546110
 /subversion/branches/wc-collate-path/INSTALL:1402685-1480384
-/subversion/trunk/INSTALL:1606692-1697326
+/subversion/trunk/INSTALL:1606692-1704317

Modified: subversion/branches/move-tracking-2/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/Makefile.in?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/Makefile.in (original)
+++ subversion/branches/move-tracking-2/Makefile.in Mon Sep 21 15:26:27 2015
@@ -519,7 +519,6 @@ check-all-javahl: check-apache-javahl ch
 #  will perform only basic tests (likewise for other tests).
 check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $(TEST_DEPS) @BDB_TEST_DEPS@
 	@if test "$(PYTHON)" != "none"; then                                 \
-	  flags="--verbose";                                                 \
 	  if test "$(CLEANUP)" != ""; then                                   \
 	    flags="--cleanup $$flags";                                       \
 	  fi;                                                                \

Propchange: subversion/branches/move-tracking-2/Makefile.in
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -86,4 +86,4 @@
 /subversion/branches/verify-at-commit/Makefile.in:1462039-1462408
 /subversion/branches/verify-keep-going/Makefile.in:1439280-1546110
 /subversion/branches/wc-collate-path/Makefile.in:1402685-1480384
-/subversion/trunk/Makefile.in:1606692-1692852
+/subversion/trunk/Makefile.in:1606692-1704317

Propchange: subversion/branches/move-tracking-2/build/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/build:1462039-1462408
 /subversion/branches/verify-keep-going/build:1439280-1546110
 /subversion/branches/wc-collate-path/build:1402685-1480384
-/subversion/trunk/build:1606692-1702602
+/subversion/trunk/build:1606692-1704317

Modified: subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py (original)
+++ subversion/branches/move-tracking-2/build/generator/gen_vcnet_vcproj.py Mon Sep 21 15:26:27 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/move-tracking-2/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/generator/gen_win.py?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/generator/gen_win.py (original)
+++ subversion/branches/move-tracking-2/build/generator/gen_win.py Mon Sep 21 15:26:27 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/move-tracking-2/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/run_tests.py?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/run_tests.py (original)
+++ subversion/branches/move-tracking-2/build/run_tests.py Mon Sep 21 15:26:27 2015
@@ -46,6 +46,7 @@ separated list of test numbers; the defa
 
 import os, sys
 import re
+import logging
 import optparse, subprocess, imp, threading, traceback, exceptions
 from datetime import datetime
 
@@ -181,7 +182,8 @@ class TestHarness:
     # ### Support --repos-template
     if self.opts.list_tests is not None:
       cmdline.append('--list')
-    if self.opts.verbose is not None:
+    if (self.opts.set_log_level is not None
+        and self.opts.set_log_level <= logging.DEBUG):
       cmdline.append('--verbose')
     if self.opts.cleanup is not None:
       cmdline.append('--cleanup')
@@ -204,8 +206,6 @@ class TestHarness:
     cmdline = ['--srcdir=%s' % self.srcdir]
     if self.opts.list_tests is not None:
       cmdline.append('--list')
-    if self.opts.verbose is not None:
-      cmdline.append('--verbose')
     if self.opts.cleanup is not None:
       cmdline.append('--cleanup')
     if self.opts.parallel is not None:
@@ -693,11 +693,17 @@ class TestHarness:
 
 
 def create_parser():
+  def set_log_level(option, opt, value, parser, level=None):
+    if level is None:
+      level = value
+    parser.values.set_log_level = getattr(logging, level, None) or int(level)
+
   parser = optparse.OptionParser(usage=__doc__);
 
   parser.add_option('-l', '--list', action='store_true', dest='list_tests',
                     help='Print test doc strings instead of running them')
-  parser.add_option('-v', '--verbose', action='store_true',
+  parser.add_option('-v', '--verbose', action='callback',
+                    callback=set_log_level, callback_args=(logging.DEBUG, ),
                     help='Print binary command-lines')
   parser.add_option('-c', '--cleanup', action='store_true',
                     help='Clean up after successful tests')
@@ -735,7 +741,8 @@ def create_parser():
   parser.add_option('--mode-filter', action='store', dest='mode_filter',
                     default='ALL',
                     help='Limit tests to those with type specified (e.g. XFAIL)')
-  parser.add_option('--set-log-level', action='store',
+  parser.add_option('--set-log-level', action='callback', type='str',
+                    callback=set_log_level,
                     help="Set log level (numerically or symbolically). " +
                          "Symbolic levels are: CRITICAL, ERROR, WARNING, " +
                          "INFO, DEBUG")
@@ -753,6 +760,8 @@ def create_parser():
                     help='Use sqlite exclusive locking for working copies')
   parser.add_option('--memcached-server', action='store',
                     help='Use memcached server at specified URL (FSFS only)')
+
+  parser.set_defaults(set_log_level=None)
   return parser
 
 def main():

Modified: subversion/branches/move-tracking-2/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/configure.ac?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/configure.ac (original)
+++ subversion/branches/move-tracking-2/configure.ac Mon Sep 21 15:26:27 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

Propchange: subversion/branches/move-tracking-2/configure.ac
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/configure.ac:1462039-1462408
 /subversion/branches/verify-keep-going/configure.ac:1439280-1546110
 /subversion/branches/wc-collate-path/configure.ac:1402685-1480384
-/subversion/trunk/configure.ac:1606692-1692852
+/subversion/trunk/configure.ac:1606692-1704317

Modified: subversion/branches/move-tracking-2/gen-make.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/gen-make.py?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/gen-make.py (original)
+++ subversion/branches/move-tracking-2/gen-make.py Mon Sep 21 15:26:27 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'),

Propchange: subversion/branches/move-tracking-2/gen-make.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -87,4 +87,4 @@
 /subversion/branches/verify-at-commit/gen-make.py:1462039-1462408
 /subversion/branches/verify-keep-going/gen-make.py:1439280-1546110
 /subversion/branches/wc-collate-path/gen-make.py:1402685-1480384
-/subversion/trunk/gen-make.py:1606692-1674752
+/subversion/trunk/gen-make.py:1606692-1704317

Propchange: subversion/branches/move-tracking-2/subversion/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 21 15:26:27 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/subversion:1462039-1462408
 /subversion/branches/verify-keep-going/subversion:1439280-1546110
 /subversion/branches/wc-collate-path/subversion:1402685-1480384
-/subversion/trunk/subversion:1606692-1702602
+/subversion/trunk/subversion:1606692-1704317

Propchange: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_utf_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_utf_private.h?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_utf_private.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_utf_private.h Mon Sep 21 15:26:27 2015
@@ -204,10 +204,11 @@ 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_compiled_version(void);
 
+/* Return the runtime version of the wrapped utf8proc library. */
 const char *
 svn_utf__utf8proc_runtime_version(void);
 

Modified: subversion/branches/move-tracking-2/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_client.h?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_client.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_client.h Mon Sep 21 15:26:27 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/move-tracking-2/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_diff.h?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_diff.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_diff.h Mon Sep 21 15:26:27 2015
@@ -1212,6 +1212,13 @@ typedef struct svn_prop_patch_t {
 } svn_prop_patch_t;
 
 /**
+ * A binary patch representation. This basically describes replacing one
+ * exact binary representation with another one.
+ *
+ * @since new in 1.10. */
+typedef struct svn_diff_binary_patch_t svn_diff_binary_patch_t;
+
+/**
  * Data type to manage parsing of patches.
  * API users should not allocate structures of this type directly.
  *
@@ -1249,6 +1256,12 @@ typedef struct svn_patch_t {
    * @since New in 1.9. */
   svn_mergeinfo_t mergeinfo;
   svn_mergeinfo_t reverse_mergeinfo;
+
+  /**
+   * Declares that there is a binary conflict and contains the information
+   * to apply it as parsed from the file.
+   * @since New in 1.10. */
+  svn_diff_binary_patch_t *binary_patch;
 } svn_patch_t;
 
 /** An opaque type representing an open patch file.

Modified: subversion/branches/move-tracking-2/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_io.h?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_io.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_io.h Mon Sep 21 15:26:27 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/move-tracking-2/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c Mon Sep 21 15:26:27 2015
@@ -496,12 +496,12 @@ display_prop_diffs(const apr_array_heade
     }
 
   SVN_ERR(svn_stream_printf_from_utf8(outstream, encoding, scratch_pool,
-                                      _("%sProperty changes on: %s%s"),
+                                      APR_EOL_STR
+                                      "Property changes on: %s"
                                       APR_EOL_STR,
                                       use_git_diff_format
                                             ? repos_relpath1
-                                            : index_path,
-                                      APR_EOL_STR));
+                                            : index_path));
 
   SVN_ERR(svn_stream_printf_from_utf8(outstream, encoding, scratch_pool,
                                       SVN_DIFF__UNDER_STRING APR_EOL_STR));
@@ -708,6 +708,8 @@ diff_content_changed(svn_boolean_t *wrot
                SVN_DIFF__EQUAL_STRING APR_EOL_STR,
                index_path));
 
+      *wrote_header = TRUE;
+
       /* ### Print git diff headers. */
 
       if (dwi->use_git_diff_format)
@@ -986,6 +988,23 @@ diff_file_added(const char *relpath,
   apr_hash_t *left_props;
   apr_array_header_t *prop_changes;
 
+  if (dwi->no_diff_added)
+    {
+      const char *index_path = relpath;
+
+      if (dwi->ddi.anchor)
+        index_path = svn_dirent_join(dwi->ddi.anchor, relpath,
+                                     scratch_pool);
+
+      SVN_ERR(svn_stream_printf_from_utf8(dwi->outstream,
+                dwi->header_encoding, scratch_pool,
+                "Index: %s (added)" APR_EOL_STR
+                SVN_DIFF__EQUAL_STRING APR_EOL_STR,
+                index_path));
+      wrote_header = TRUE;
+      return SVN_NO_ERROR;
+    }
+
   /* During repos->wc diff of a copy revision numbers obtained
    * from the working copy are always SVN_INVALID_REVNUM. */
   if (copyfrom_source && !dwi->show_copies_as_adds)
@@ -1009,22 +1028,7 @@ diff_file_added(const char *relpath,
 
   SVN_ERR(svn_prop_diffs(&prop_changes, right_props, left_props, scratch_pool));
 
-  if (dwi->no_diff_added)
-    {
-      const char *index_path = relpath;
-
-      if (dwi->ddi.anchor)
-        index_path = svn_dirent_join(dwi->ddi.anchor, relpath,
-                                     scratch_pool);
-
-      SVN_ERR(svn_stream_printf_from_utf8(dwi->outstream,
-                dwi->header_encoding, scratch_pool,
-                "Index: %s (added)" APR_EOL_STR
-                SVN_DIFF__EQUAL_STRING APR_EOL_STR,
-                index_path));
-      wrote_header = TRUE;
-    }
-  else if (copyfrom_source && right_file)
+  if (copyfrom_source && right_file)
     SVN_ERR(diff_content_changed(&wrote_header, relpath,
                                  left_file, right_file,
                                  copyfrom_source->revision,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c Mon Sep 21 15:26:27 2015
@@ -2349,17 +2349,47 @@ files_same_p(svn_boolean_t *same,
     {
       svn_stream_t *mine_stream;
       svn_stream_t *older_stream;
-      svn_opt_revision_t working_rev = { svn_opt_revision_working, { 0 } };
+      svn_string_t *special = svn_hash_gets(working_props, SVN_PROP_SPECIAL);
+      svn_string_t *eol_style = svn_hash_gets(working_props, SVN_PROP_EOL_STYLE);
+      svn_string_t *keywords = svn_hash_gets(working_props, SVN_PROP_KEYWORDS);
 
       /* Compare the file content, translating 'mine' to 'normal' form. */
-      if (svn_prop_get_value(working_props, SVN_PROP_SPECIAL) != NULL)
+      if (special != NULL)
         SVN_ERR(svn_subst_read_specialfile(&mine_stream, mine_abspath,
                                            scratch_pool, scratch_pool));
       else
-        SVN_ERR(svn_client__get_normalized_stream(&mine_stream, wc_ctx,
-                                                  mine_abspath, &working_rev,
-                                                  FALSE, TRUE, NULL, NULL,
-                                                  scratch_pool, scratch_pool));
+        SVN_ERR(svn_stream_open_readonly(&mine_stream, mine_abspath,
+                                         scratch_pool, scratch_pool));
+
+      if (!special && (eol_style || keywords))
+        {
+          apr_hash_t *kw = NULL;
+          const char *eol = NULL;
+          svn_subst_eol_style_t style;
+
+          /* We used to use svn_client__get_normalized_stream() here, but
+             that doesn't work in 100% of the cases because it doesn't
+             convert EOLs to the repository form; just to '\n'.
+           */
+
+          if (eol_style)
+            {
+              svn_subst_eol_style_from_value(&style, &eol, eol_style->data);
+
+              if (style == svn_subst_eol_style_native)
+                eol = SVN_SUBST_NATIVE_EOL_STR;
+              else if (style != svn_subst_eol_style_fixed
+                       && style != svn_subst_eol_style_none)
+                return svn_error_create(SVN_ERR_IO_UNKNOWN_EOL, NULL, NULL);
+            }
+
+          if (keywords)
+            SVN_ERR(svn_subst_build_keywords3(&kw, keywords->data, "", "",
+                                              "", 0, "", scratch_pool));
+
+          mine_stream = svn_subst_stream_translated(
+            mine_stream, eol, FALSE, kw, FALSE, scratch_pool);
+        }
 
       SVN_ERR(svn_stream_open_readonly(&older_stream, older_abspath,
                                        scratch_pool, scratch_pool));

Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/resolved.c Mon Sep 21 15:26:27 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/move-tracking-2/subversion/libsvn_diff/binary_diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_diff/binary_diff.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_diff/binary_diff.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_diff/binary_diff.c Mon Sep 21 15:26:27 2015
@@ -192,28 +192,26 @@ svn_diff_output_binary(svn_stream_t *out
 
   SVN_ERR(svn_stream_puts(output_stream, "GIT binary patch" APR_EOL_STR));
 
-  /* ### git would first calculate if a git-delta original->latest would be
-         shorter than the zipped data. For now lets assume that it is not
-         and just dump the literal data */
-  SVN_ERR(write_literal(original_full,
-                        svn_stream_from_aprfile2(original_apr, FALSE, subpool),
+  /* ### git would first calculate if a git-delta latest->original would be
+  shorter than the zipped data. For now lets assume that it is not
+  and just dump the literal data */
+  SVN_ERR(write_literal(latest_full,
+                        svn_stream_from_aprfile2(latest_apr, FALSE, subpool),
                         output_stream,
                         cancel_func, cancel_baton,
                         scratch_pool));
   svn_pool_clear(subpool);
   SVN_ERR(svn_stream_puts(output_stream, APR_EOL_STR));
 
-  /* ### git would first calculate if a git-delta latest->original would be
-         shorter than the zipped data. For now lets assume that it is not
-         and just dump the literal data */
-  SVN_ERR(write_literal(latest_full,
-                        svn_stream_from_aprfile2(latest_apr, FALSE, subpool),
+  /* ### git would first calculate if a git-delta original->latest would be
+  shorter than the zipped data. For now lets assume that it is not
+  and just dump the literal data */
+  SVN_ERR(write_literal(original_full,
+                        svn_stream_from_aprfile2(original_apr, FALSE, subpool),
                         output_stream,
                         cancel_func, cancel_baton,
                         scratch_pool));
   svn_pool_destroy(subpool);
 
-  SVN_ERR(svn_stream_puts(output_stream, APR_EOL_STR));
-
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_diff/parse-diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_diff/parse-diff.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_diff/parse-diff.c Mon Sep 21 15:26:27 2015
@@ -82,6 +82,24 @@ struct svn_diff_hunk_t {
   svn_linenum_t trailing_context;
 };
 
+struct svn_diff_binary_patch_t {
+  /* The patch this hunk belongs to. */
+  svn_patch_t *patch;
+
+  /* APR file handle to the patch file this hunk came from. */
+  apr_file_t *apr_file;
+
+  /* Offsets inside APR_FILE representing the location of the patch */
+  apr_off_t src_start;
+  apr_off_t src_end;
+  svn_filesize_t src_filesize; /* Expanded/final size */
+
+  /* Offsets inside APR_FILE representing the location of the patch */
+  apr_off_t dst_start;
+  apr_off_t dst_end;
+  svn_filesize_t dst_filesize; /* Expanded/final size */
+};
+
 void
 svn_diff_hunk_reset_diff_text(svn_diff_hunk_t *hunk)
 {
@@ -917,16 +935,17 @@ compare_hunks(const void *a, const void
 /* Possible states of the diff header parser. */
 enum parse_state
 {
-   state_start,           /* initial */
-   state_git_diff_seen,   /* diff --git */
-   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 */
-   state_copy_from_seen,  /* copy from foo.c */
-   state_minus_seen,      /* --- foo.c */
-   state_unidiff_found,   /* valid start of a regular unidiff header */
-   state_git_header_found /* valid start of a --git diff header */
+   state_start,             /* initial */
+   state_git_diff_seen,     /* diff --git */
+   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 */
+   state_copy_from_seen,    /* copy from foo.c */
+   state_minus_seen,        /* --- foo.c */
+   state_unidiff_found,     /* valid start of a regular unidiff header */
+   state_git_header_found,  /* valid start of a --git diff header */
+   state_binary_patch_found /* valid start of binary patch */
 };
 
 /* Data type describing a valid state transition of the parser. */
@@ -1234,6 +1253,18 @@ git_deleted_file(enum parse_state *new_s
   return SVN_NO_ERROR;
 }
 
+/* Parse the 'GIT binary patch' header */
+static svn_error_t *
+binary_patch_start(enum parse_state *new_state, char *line, svn_patch_t *patch,
+             apr_pool_t *result_pool, apr_pool_t *scratch_pool)
+{
+  patch->operation = svn_diff_op_modified;
+
+  *new_state = state_binary_patch_found;
+  return SVN_NO_ERROR;
+}
+
+
 /* Add a HUNK associated with the property PROP_NAME to PATCH. */
 static svn_error_t *
 add_property_hunk(svn_patch_t *patch, const char *prop_name,
@@ -1346,29 +1377,134 @@ parse_hunks(svn_patch_t *patch, apr_file
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+parse_binary_patch(svn_patch_t *patch, apr_file_t *apr_file,
+                   apr_pool_t *result_pool, apr_pool_t *scratch_pool)
+{
+  apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+  apr_off_t pos, last_line;
+  svn_stringbuf_t *line;
+  svn_boolean_t eof = FALSE;
+  svn_diff_binary_patch_t *bpatch = apr_pcalloc(result_pool, sizeof(*bpatch));
+  svn_boolean_t in_blob = FALSE;
+  svn_boolean_t in_dst = FALSE;
+
+  patch->operation = svn_diff_op_modified;
+  patch->prop_patches = apr_hash_make(result_pool);
+
+  pos = 0;
+  SVN_ERR(svn_io_file_seek(apr_file, APR_CUR, &pos, scratch_pool));
+
+  while (!eof)
+    {
+      last_line = pos;
+      SVN_ERR(svn_io_file_readline(apr_file, &line, NULL, &eof, APR_SIZE_MAX,
+                               iterpool, iterpool));
+
+      /* Update line offset for next iteration. */
+      pos = 0;
+      SVN_ERR(svn_io_file_seek(apr_file, APR_CUR, &pos, iterpool));
+
+      if (in_blob)
+        {
+          char c = line->data[0];
+
+          /* 66 = len byte + (52/4*5) chars */
+          if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') 
+              && line->len <= 66
+              && !strchr(line->data, ':')
+              && !strchr(line->data, ' '))
+            {
+              /* One more blop line */
+              if (in_dst)
+                bpatch->dst_end = pos;
+              else
+                bpatch->src_end = pos;
+            }
+          else if (svn_stringbuf_first_non_whitespace(line) < line->len
+                   && !(in_dst && bpatch->dst_start < last_line))
+            {
+              break; /* Bad patch */
+            }
+          else if (in_dst)
+            {
+              patch->binary_patch = bpatch; /* SUCCESS! */
+              break; 
+            }
+          else
+            {
+              in_blob = FALSE;
+              in_dst = TRUE;
+            }
+        }
+      else if (starts_with(line->data, "literal "))
+        {
+          apr_uint64_t expanded_size;
+          svn_error_t *err = svn_cstring_strtoui64(&expanded_size,
+                                                   &line->data[8],
+                                                   0, APR_UINT64_MAX, 10);
+
+          if (err)
+            {
+              svn_error_clear(err);
+              break;
+            }
+
+          if (in_dst)
+            {
+              bpatch->dst_start = pos;
+              bpatch->dst_filesize = expanded_size;
+            }
+          else
+            {
+              bpatch->src_start = pos;
+              bpatch->src_filesize = expanded_size;
+            }
+          in_blob = TRUE;
+        }
+      else
+        break; /* We don't support GIT deltas (yet) */
+    }
+  svn_pool_destroy(iterpool);
+
+  if (!eof)
+    /* Rewind to the start of the line just read, so subsequent calls
+     * don't end up skipping the line. It may contain a patch or hunk header.*/
+    SVN_ERR(svn_io_file_seek(apr_file, APR_SET, &last_line, scratch_pool));
+  else if (in_dst
+           && ((bpatch->dst_end > bpatch->dst_start) || !bpatch->dst_filesize))
+    {
+      patch->binary_patch = bpatch; /* SUCCESS */
+    }
+
+  return SVN_NO_ERROR;
+}
+
 /* State machine for the diff header parser.
  * Expected Input   Required state          Function to call */
 static struct transition transitions[] =
 {
-  {"--- ",          state_start,            diff_minus},
-  {"+++ ",          state_minus_seen,       diff_plus},
+  {"--- ",              state_start,            diff_minus},
+  {"+++ ",              state_minus_seen,       diff_plus},
 
-  {"diff --git",    state_start,            git_start},
-  {"--- a/",        state_git_diff_seen,    git_minus},
-  {"--- a/",        state_git_tree_seen,    git_minus},
-  {"--- /dev/null", state_git_tree_seen,    git_minus},
-  {"+++ b/",        state_git_minus_seen,   git_plus},
-  {"+++ /dev/null", state_git_minus_seen,   git_plus},
+  {"diff --git",        state_start,            git_start},
+  {"--- a/",            state_git_diff_seen,    git_minus},
+  {"--- a/",            state_git_tree_seen,    git_minus},
+  {"--- /dev/null",     state_git_tree_seen,    git_minus},
+  {"+++ b/",            state_git_minus_seen,   git_plus},
+  {"+++ /dev/null",     state_git_minus_seen,   git_plus},
 
-  {"rename from ",  state_git_diff_seen,    git_move_from},
-  {"rename to ",    state_move_from_seen,   git_move_to},
+  {"rename from ",      state_git_diff_seen,    git_move_from},
+  {"rename to ",        state_move_from_seen,   git_move_to},
 
-  {"copy from ",    state_git_diff_seen,    git_copy_from},
-  {"copy to ",      state_copy_from_seen,   git_copy_to},
+  {"copy from ",        state_git_diff_seen,    git_copy_from},
+  {"copy to ",          state_copy_from_seen,   git_copy_to},
 
-  {"new file ",     state_git_diff_seen,    git_new_file},
+  {"new file ",         state_git_diff_seen,    git_new_file},
 
-  {"deleted file ", state_git_diff_seen,    git_deleted_file},
+  {"deleted file ",     state_git_diff_seen,    git_deleted_file},
+
+  {"GIT binary patch",  state_git_diff_seen,    binary_patch_start},
 };
 
 svn_error_t *
@@ -1433,7 +1569,9 @@ svn_diff_parse_next_patch(svn_patch_t **
             }
         }
 
-      if (state == state_unidiff_found || state == state_git_header_found)
+      if (state == state_unidiff_found
+          || state == state_git_header_found
+          || state == state_binary_patch_found)
         {
           /* We have a valid diff header, yay! */
           break;
@@ -1487,8 +1625,17 @@ svn_diff_parse_next_patch(svn_patch_t **
       patch = NULL;
     }
   else
-    SVN_ERR(parse_hunks(patch, patch_file->apr_file, ignore_whitespace,
-                        result_pool, iterpool));
+    {
+      if (state == state_binary_patch_found)
+        {
+          SVN_ERR(parse_binary_patch(patch, patch_file->apr_file,
+                                     result_pool, iterpool));
+          /* And fall through in property parsing */
+        }
+
+      SVN_ERR(parse_hunks(patch, patch_file->apr_file, ignore_whitespace,
+                          result_pool, iterpool));
+    }
 
   svn_pool_destroy(iterpool);
 
@@ -1496,7 +1643,7 @@ svn_diff_parse_next_patch(svn_patch_t **
   SVN_ERR(svn_io_file_seek(patch_file->apr_file, APR_CUR,
                            &patch_file->next_patch_offset, scratch_pool));
 
-  if (patch)
+  if (patch && patch->hunks)
     {
       /* Usually, hunks appear in the patch sorted by their original line
        * offset. But just in case they weren't parsed in this order for

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c Mon Sep 21 15:26:27 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/move-tracking-2/subversion/libsvn_fs_fs/index.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/index.c?rev=1704320&r1=1704319&r2=1704320&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/index.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/index.c Mon Sep 21 15:26:27 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)