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)