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 2017/08/24 08:39:33 UTC

svn commit: r1806005 [1/4] - in /subversion/branches/shelve: ./ build/ build/ac-macros/ build/generator/ notes/ notes/api-errata/1.10/ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_delta/ subversion/libsvn_...

Author: julianfoad
Date: Thu Aug 24 08:39:31 2017
New Revision: 1806005

URL: http://svn.apache.org/viewvc?rev=1806005&view=rev
Log:
On the 'shelve' branch: Catch up with trunk@1806000.

Added:
    subversion/branches/shelve/build/ac-macros/lz4.m4
      - copied unchanged from r1806000, subversion/trunk/build/ac-macros/lz4.m4
    subversion/branches/shelve/build/ac-macros/utf8proc.m4
      - copied unchanged from r1806000, subversion/trunk/build/ac-macros/utf8proc.m4
    subversion/branches/shelve/notes/api-errata/1.10/
      - copied from r1806000, subversion/trunk/notes/api-errata/1.10/
    subversion/branches/shelve/subversion/libsvn_ra_serf/stream_bucket.c
      - copied unchanged from r1806000, subversion/trunk/subversion/libsvn_ra_serf/stream_bucket.c
    subversion/branches/shelve/subversion/libsvn_subr/compress_lz4.c
      - copied unchanged from r1806000, subversion/trunk/subversion/libsvn_subr/compress_lz4.c
    subversion/branches/shelve/subversion/libsvn_subr/compress_zlib.c
      - copied unchanged from r1806000, subversion/trunk/subversion/libsvn_subr/compress_zlib.c
    subversion/branches/shelve/subversion/libsvn_subr/encode.c
      - copied unchanged from r1806000, subversion/trunk/subversion/libsvn_subr/encode.c
    subversion/branches/shelve/subversion/libsvn_subr/lz4/lz4internal.h
      - copied unchanged from r1806000, subversion/trunk/subversion/libsvn_subr/lz4/lz4internal.h
    subversion/branches/shelve/subversion/libsvn_subr/utf8proc/utf8proc_internal.h
      - copied unchanged from r1806000, subversion/trunk/subversion/libsvn_subr/utf8proc/utf8proc_internal.h
    subversion/branches/shelve/subversion/tests/cmdline/externals_tests_data/
      - copied from r1806000, subversion/trunk/subversion/tests/cmdline/externals_tests_data/
    subversion/branches/shelve/tools/hook-scripts/CVE-2017-9800-pre-commit.py
      - copied unchanged from r1806000, subversion/trunk/tools/hook-scripts/CVE-2017-9800-pre-commit.py
Removed:
    subversion/branches/shelve/subversion/libsvn_subr/compress.c
    subversion/branches/shelve/subversion/libsvn_subr/lz4/lz4.h
    subversion/branches/shelve/subversion/libsvn_subr/utf8proc/utf8proc.h
    subversion/branches/shelve/tools/dist/collect_sigs.py
    subversion/branches/shelve/tools/dist/download-release.sh
Modified:
    subversion/branches/shelve/   (props changed)
    subversion/branches/shelve/CHANGES
    subversion/branches/shelve/Makefile.in
    subversion/branches/shelve/aclocal.m4
    subversion/branches/shelve/build.conf
    subversion/branches/shelve/build/ac-macros/kwallet.m4
    subversion/branches/shelve/build/generator/gen_base.py
    subversion/branches/shelve/build/generator/gen_win.py
    subversion/branches/shelve/build/generator/gen_win_dependencies.py
    subversion/branches/shelve/build/run_tests.py
    subversion/branches/shelve/configure.ac
    subversion/branches/shelve/notes/resolve-moves
    subversion/branches/shelve/notes/ssh-tricks
    subversion/branches/shelve/subversion/include/private/svn_io_private.h
    subversion/branches/shelve/subversion/include/private/svn_wc_private.h
    subversion/branches/shelve/subversion/include/svn_checksum.h
    subversion/branches/shelve/subversion/include/svn_client.h
    subversion/branches/shelve/subversion/include/svn_dav.h
    subversion/branches/shelve/subversion/include/svn_delta.h
    subversion/branches/shelve/subversion/include/svn_error_codes.h
    subversion/branches/shelve/subversion/include/svn_io.h
    subversion/branches/shelve/subversion/include/svn_ra_svn.h
    subversion/branches/shelve/subversion/libsvn_client/conflicts.c
    subversion/branches/shelve/subversion/libsvn_client/export.c
    subversion/branches/shelve/subversion/libsvn_client/import.c
    subversion/branches/shelve/subversion/libsvn_client/merge.c
    subversion/branches/shelve/subversion/libsvn_delta/cancel.c
    subversion/branches/shelve/subversion/libsvn_delta/default_editor.c
    subversion/branches/shelve/subversion/libsvn_delta/svndiff.c
    subversion/branches/shelve/subversion/libsvn_delta/text_delta.c
    subversion/branches/shelve/subversion/libsvn_fs_base/fs.c
    subversion/branches/shelve/subversion/libsvn_fs_fs/fs.h
    subversion/branches/shelve/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/shelve/subversion/libsvn_fs_fs/transaction.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/blame.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/commit.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/get_file.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/options.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/shelve/subversion/libsvn_ra_serf/replay.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/serf.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/update.c
    subversion/branches/shelve/subversion/libsvn_ra_serf/util.c
    subversion/branches/shelve/subversion/libsvn_ra_svn/client.c
    subversion/branches/shelve/subversion/libsvn_ra_svn/editorp.c
    subversion/branches/shelve/subversion/libsvn_ra_svn/protocol
    subversion/branches/shelve/subversion/libsvn_repos/repos.c
    subversion/branches/shelve/subversion/libsvn_subr/checksum.c
    subversion/branches/shelve/subversion/libsvn_subr/config_file.c
    subversion/branches/shelve/subversion/libsvn_subr/dirent_uri.c
    subversion/branches/shelve/subversion/libsvn_subr/fnv1a.c
    subversion/branches/shelve/subversion/libsvn_subr/fnv1a.h
    subversion/branches/shelve/subversion/libsvn_subr/lz4/lz4.c
    subversion/branches/shelve/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/shelve/subversion/libsvn_subr/stream.c
    subversion/branches/shelve/subversion/libsvn_subr/utf8proc.c
    subversion/branches/shelve/subversion/libsvn_subr/utf8proc/utf8proc.c
    subversion/branches/shelve/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/shelve/subversion/libsvn_wc/deprecated.c
    subversion/branches/shelve/subversion/libsvn_wc/translate.c
    subversion/branches/shelve/subversion/libsvn_wc/wc.h
    subversion/branches/shelve/subversion/mod_dav_svn/repos.c
    subversion/branches/shelve/subversion/mod_dav_svn/version.c
    subversion/branches/shelve/subversion/svn/cl.h
    subversion/branches/shelve/subversion/svn/cleanup-cmd.c
    subversion/branches/shelve/subversion/svn/conflict-callbacks.c
    subversion/branches/shelve/subversion/svn/merge-cmd.c
    subversion/branches/shelve/subversion/svn/notify.c
    subversion/branches/shelve/subversion/svn/svn.c
    subversion/branches/shelve/subversion/svnserve/serve.c
    subversion/branches/shelve/subversion/tests/cmdline/davautocheck.sh
    subversion/branches/shelve/subversion/tests/cmdline/export_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/externals_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    subversion/branches/shelve/subversion/tests/cmdline/merge_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/mod_authz_svn_tests.py   (props changed)
    subversion/branches/shelve/subversion/tests/cmdline/patch_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/stat_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/svntest/main.py
    subversion/branches/shelve/subversion/tests/cmdline/svntest/mergetrees.py
    subversion/branches/shelve/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/branches/shelve/subversion/tests/cmdline/update_tests.py
    subversion/branches/shelve/subversion/tests/libsvn_client/conflicts-test.c
    subversion/branches/shelve/subversion/tests/libsvn_delta/random-test.c
    subversion/branches/shelve/subversion/tests/libsvn_fs_fs/fs-fs-private-test.c
    subversion/branches/shelve/subversion/tests/libsvn_subr/   (props changed)
    subversion/branches/shelve/subversion/tests/libsvn_subr/checksum-test.c
    subversion/branches/shelve/subversion/tests/libsvn_subr/dirent_uri-test.c
    subversion/branches/shelve/subversion/tests/libsvn_subr/mergeinfo-test.c
    subversion/branches/shelve/subversion/tests/libsvn_subr/utf-test.c
    subversion/branches/shelve/tools/buildbot/slaves/svn-x64-macosx/svnbuild.sh
    subversion/branches/shelve/tools/client-side/bash_completion
    subversion/branches/shelve/tools/dev/unix-build/Makefile.svn
    subversion/branches/shelve/tools/dist/checksums.py
    subversion/branches/shelve/tools/dist/dist.sh
    subversion/branches/shelve/tools/dist/release.py
    subversion/branches/shelve/tools/dist/templates/rc-release-ann.ezt
    subversion/branches/shelve/tools/dist/templates/stable-news.ezt
    subversion/branches/shelve/tools/dist/templates/stable-release-ann.ezt
    subversion/branches/shelve/win-tests.py

Propchange: subversion/branches/shelve/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug 24 08:39:31 2017
@@ -98,4 +98,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1801593-1802151
+/subversion/trunk:1801593-1806000

Modified: subversion/branches/shelve/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/CHANGES?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/CHANGES (original)
+++ subversion/branches/shelve/CHANGES Thu Aug 24 08:39:31 2017
@@ -23,24 +23,22 @@ the 1.9 release:  https://subversion.apa
     * Add '--search' option support to 'svnbench null-list' (r1767202)
     * New '-M' option for 'svnlook tree' (r1708222)
     * New '--skip-unchanged' option for 'svnsync copy-revprops' (r1692655)
-    * Raise additional text merge conflicts in several corner cases (r1731699)
     * 'svn log --search' is now case-insensitive (r1731300)
     * 'svn log --search' now ignores diacriticals when matching words (r1735614)
     * Improved performance of server-side log processing (r1732768, r1731656)
-    * Less processing time and memory usage in diff3 implementation (r1731659)
+    * diff3: Reduce processing time and memory usage (r1731659)
     * ra_serf: Adjustments for serf versions with HTTP/2 support (r1716400)
-    * ra_serf: Use svndiff1 for sending deltas during commit (r1704317, -613)
-    * Make 'svn patch' parse binary diffs in git-style patches (r1703925)
+    * ra_serf: Send svndiff1 deltas during commit (r1704317, r1704613, r1791290)
+    * 'svn patch': Parse binary diffs in git-style patches (r1703925)
     * 'svnadmin info' now reports latest revision in the repository (r1697953)
-    * Various performance-related tweaks were made in ra_svn (r1694490)
+    * ra_svn: Various performance-related tweaks (r1694490)
     * Optimize svndiff parser (r1685063)
-    * Stop showing uninteresting deletions in 'svn status' without -v (r1664533)
-    * Use SHA-1 checksums to check if working copy files are modified (r1759233)
+    * 'svn status' without -v: Stop showing uninteresting deletions (r1664533)
     * Save a few cycles in svn_stringbuf_set() (r1759177)
-    * Use the Unicode Windows API (r1756193)
-    * Distinguish out-of-memory error from abort() on Windows (r1724784, -809)
-    * Explicitly release file locks on Windows (r1702089)
-    * Correctly check result from LoadLibrary() call on Windows (r1755983)
+    * windows: Use the Unicode Windows API (r1756193)
+    * windows: Distinguish out-of-memory error from abort() (r1724784, -809)
+    * windows: Explicitly release file locks (r1702089)
+    * windows: Correctly check result from LoadLibrary() call (r1755983)
     * Remove Windows-specific slowdown during pristine cleanup (r1701641)
     * FSFS: Optionally cache node properties without full-text cache (r1723715)
     * FSFS: Open transaction's proto revision in write-only mode (r1759135)
@@ -56,6 +54,8 @@ the 1.9 release:  https://subversion.apa
     * FSFS: Reduce I/O overhead during history traversal (r1703237)
     * FSFS: Use native Windows API to guarantee data is flushed (r1701053)
     * FSFS: Warn if a possible rep-cache SHA1 collision is detected (r1674673)
+    * FSFS: Optimize revprop cache filling strategy under high load (r1795324)
+    * FSFS: New "verify-before-commit" fsfs.conf option (r1795351)
     * FSFS/FSX: Chunked read support for changed paths lists (r1746026, -4987)
     * FSFS/FSX: Several improvements made to cache implementation (r1694489)
     * FSX: Add checksums to packed revprop manifests and files (r1713132, -9717)
@@ -66,21 +66,26 @@ the 1.9 release:  https://subversion.apa
     * FSX: Reduce number of fsync operations (r1711354 et al)
     * mod_dav_svn: Improve performance and memory usage of PROPFIND (r1721732)
     * mod_dav_svn: Show process-id on Windows in /svn-status page (r1718567)
-    * mod_dav_svn: Advertise svndiff1 support to clients (r1704891)
+    * mod_dav_svn: Advertise svndiff1 support to clients (r1704891, r1791285)
     * mod_dav_svn: Remove disk I/O to TMPDIR during first commit (r1716240)
     * svnsync: Fix assertion failure with up-to-date repositories (r1727140)
     * ra_serf: Parallel requests for text and property changes (r1716575)
     * svnserve: Remove disk I/O to TMPDIR during first commit (r1716240)
-    * Optimize 'svn blame' a bit (r1711666)
+    * 'svn blame': Optimize a bit on the server side (r1711666)
     * Triple performance of URI escaping (r1710099, -103)
-    * Make 'svn diff --git' show diffs of symlinks like git and hg (r1706372)
-    * Make 'svn patch' capable of handling git-like symlink changes (r1706446)
-    * Improve detection of additions and deletions in 'svn patch' (r1706623)
-    * Make 'svn diff --git' produce 'rename from/to' headers (r1706855)
-    * Make 'svn diff --git' produce proper mode headers (r1706041)
-    * Make 'svn patch' handle zero-byte files vs deleted files (r1705856)
+    * 'svn diff --git': Show diffs of symlinks like git and hg (r1706372)
+    * 'svn patch': Capable of handling git-like symlink changes (r1706446)
+    * 'svn patch': Improve detection of additions and deletions (r1706623)
+    * 'svn diff --git': Produce 'rename from/to' headers (r1706855)
+    * 'svn diff --git': Produce proper mode headers (r1706041)
+    * 'svn patch': Handle zero-byte files vs deleted files (r1705856)
     * Evaluate 'old mode' and 'new mode' lines from git-syle diffs (r1705391)
-    * Enable buffered stdin for svnrdump and svndumpfilter (r1703074)
+    * svnrdump, svndumpfilter: Enable buffered stdin (r1703074)
+    * ra_serf: Receive svndiff1 and gzip compressed deltas (r1781282, -3, -4)
+    * 'svn lock', 'svn unlock': Take the -q option (r1796288)
+    * svnadmin: 'lock', 'unlock', 'rmlocks': Take the -q option (r1796406)
+    * New svndiff2 binary delta format using lz4 compression (r1801938, et al)
+    * gpg-agent: Support gpg ≥2.1.13 and unset GPG_AGENT_INFO (r1795087)
   - Client-side bugfixes:
     * ra_serf: Fix segfault when running over HTTP v1 (r1766089)
     * ra_serf: Keep small svndiffs in memory during commit (r1724455)
@@ -88,40 +93,45 @@ the 1.9 release:  https://subversion.apa
     * ra_serf: Work around a bug in serf bucket handling (r1714806)
     * Raise a malfunction instead of segfaulting with corrupt wc.db (r1749887)
     * Fix check for unversioned obstructions blocking file externals (r1735932)
-    * Fix behaviour of 'svn patch' if a reject file can't be created (r1725948)
-    * Describe adds and removes in 'svn patch' reject file headers (r1707034)
-    * Make 'svn patch' detect recorded moves that are already applied (r1706893)
-    * Make 'svn patch' detect already applied patches in edge cases (r1706687)
-    * Fix handling of missing trailing context in 'svn patch' (issue #4609)
-    * Fix interaction of moves and property changes in 'svn patch' (r1706875)
-    * Fix 'svn patch' output for reordered hunks (issue #4533)
-    * Prevent 'svn patch' from overwriting existing reject files (r1706600)
-    * Improve handling of added properties in 'svn patch' (r1706598)
-    * Improve handling of rejected file deletions in 'svn patch' (r1706221)
-    * Fix 'svn patch --dry-run' with replaced files (r1706217)
-    * Fix 'svn patch' applying prop changes which should conflict (r1705733)
-    * Fix duplicate 'svn patch' notifications when adding directories (r1704883)
-    * Fix duplicate notifications when patching svn:executable prop (r1706078)
-    * Fix 'svn patch' notifications when adding/removing properties (r1705698)
-    * Make 'svn patch' handle already applied property patches (r1705692)
-    * Change some 'svn patch' notifications to 'U' instead of 'G' (r1706693)
-    * Don't create new file if git-style patch indicates modification (r1706005)
-    * Make diff parser parse any properties following svn:mergeinfo (r1706825)
-    * Fix potential unbounded memory usage in patch parser (r1705979)
-    * Fix problems with --git diffs applied in reverse (r1704854, -88)
-    * Fix file permission modes in --git diffs to match git and hg (r1695384)
+    * 'svn patch' bugfixes:
+      + Fix behaviour if a reject file can't be created (r1725948)
+      + Describe adds and removes in reject file headers (r1707034)
+      + Detect recorded moves that are already applied (r1706893)
+      + Detect already applied patches in edge cases (r1706687)
+      + Fix handling of missing trailing context (issue #4609)
+      + Fix interaction of moves and property changes (r1706875)
+      + Fix output for reordered hunks (issue #4533)
+      + Prevent from overwriting existing reject files (r1706600)
+      + Improve handling of added properties (r1706598)
+      + Improve handling of rejected file deletions (r1706221)
+      + Fix --dry-run with replaced files (r1706217)
+      + Fix applying prop changes which should conflict (r1705733)
+      + Fix duplicate notifications when adding directories (r1704883)
+      + Fix duplicate notifications when patching svn:executable prop (r1706078)
+      + Fix notifications when adding/removing properties (r1705698)
+      + Make handle already applied property patches (r1705692)
+      + Change some notifications to 'U' instead of 'G' (r1706693)
+      + Don't create file if git-style patch indicates modification (r1706005)
+      + Parse any properties following svn:mergeinfo (r1706825)
+      + Fix potential unbounded memory usage in parser (r1705979)
+      + Fix problems with --git diffs applied in reverse (r1704854, -88)
+      + Fix removal of EOL if final patch context line has no EOL (#4315)
+    * 'svn diff --git': Fix file permission modes to match git and hg (r1695384)
     * Fix a problem with relocating some externals (r1723385)
     * Fix 'svn diff URL@REV WC' wrongly looks up URL@HEAD (issue #4597)
     * Fix 'svn diff --no-diff-added' shows properties as added (issue #4596)
     * Properly raise text merge conflicts with file externals (r1680245) 
-    * Fix 'svn diff ' with local directories marked incomplete (r1674413 et al)
+    * Fix 'svn diff' with local directories marked incomplete (r1674413 et al)
     * ra_svn/ra_serf: Make negative log limits work as documented (r1665530)
-    * Eliminate unnecessary URL reparenting over ra_svn (r1779611, -17)
+    * ra_svn: Eliminate unnecessary URL reparenting (r1779611, r1779611)
     * Handle invalid revision numbers consistently across RA layers (r1665328)
     * Handle commits to revs > HEAD consistently across RA layers (r1664698)
     * Eliminate one client/server roundtrip from checkouts of HEAD (r1779620)
     * Expose some error messages generated by github's SVN server (r1707164)
-    * Make 'svnfsfs stats' show average lengths of delta chains (r1705739)
+    * 'svnfsfs stats': Show average lengths of delta chains (r1705739)
+    * svnmucc: Fix crash during application teardown (r1795727)
+    * Fix assertion when exporting a working copy containing relative externals
+      (r1802316)
   - Server-side bugfixes:
     * Fix checksum validation error due to data eviction from cache (r1781694)
     * FSFS pack: Use unbuffered file streams in a couple of places (r1759405)
@@ -132,6 +142,10 @@ the 1.9 release:  https://subversion.apa
     * FSFS: Make handling of revprop size information more resilient (r1716784)
     * FSFS: Don't re-parse a directory which just got committed (r1706679)
     * FSFS: Handle some known quirks in committed node revisions (r1673875)
+    * FSFS format 7: Verify item types more thoroughly (r1796160)
+    * FSFS: Fix false positive "Not a directory" error involving file moved and
+      replaced by dir (issue #4677)
+    * FSFS: Fix crash accessing revprops with --memory-cache-size=0 (r1795164)
     * mod_dav_svn: Omit Cache-Control HTTP header for HEAD URLs (issue #4514)
     * mod_dav_svn: Reduced memory consumption for DAV merge responses (r1727790)
     * mod_dav_svn: Don't set a Last-Modified header in GET responses (r1724790)
@@ -140,12 +154,22 @@ the 1.9 release:  https://subversion.apa
     * Fix insertion of very large items into the membuffer cache (r1717337, -8)
     * Fix capacity check of the membuffer cache's prefix pool (r1714356)
     * Prevent paths containing newlines from being committed (r1662585)
+    * 'svnfsfs stats': Fix false positive checksum errors reading old revisions
+      (r1785904)
+    * svnadmin, svnfsfs: Detect invalid arguments to -M (r1787023, r1787045)
+    * svnlook, svnserve: Detect invalid arguments to -M (r1787023, r1787045)
+    * svnadmin: Output locked paths in canonical form (r1796420)
+    * svnadmin: Output locked paths correctly encoded (r1797122)
+    * svn: propdel, propset: Transcode property names on output (r1797186)
   - Client-side and server-side bugfixes:
     * Fix integer overflow check with >= 1G mergeinfo ranges per path (r1714380)
     * Fix integer overflow checks on WoW64 platforms (r1714372)
     * Fix bug with canonicalizing Window-specific drive-relative URL (r1692262)
     * In file:// URLs, allow '\' directly after Windows drive letter (r1692259)
     * Fix segfault with recursive configuration value definitions (issue #4543)
+    * FSFS: Improve error messages when DAG lookup fails (r1795120)
+    * Transcode command-line arguments to UTF-8 (r1797190, r1797362, et al)
+    * Fix segfault on x509 certificate with empty name (r1798157)
   - Other tool improvements and bugfixes:
     * New svn-mergeinfo-normalizer tool (r1695992 et al)
     * Allow configuring mailer.py to use SMTP SSL (r1777846)
@@ -153,21 +177,24 @@ the 1.9 release:  https://subversion.apa
     * svn-vendor.py: Minor enhancements, mostly in treating symlinks (r1732669)
     * bash_completion: Implement much better URL completion (r1701494)
     * bash_completion: Complete arguments to 'svn info --show-item' (r1698276)
+    * bash_completion: Add 1.10 options (r1802196)
+    * fsfs-stats: Following rename to svnfsfs in r1594860, install a wrapper
+      for compatibility (r1802032)
 
  Developer-visible changes:
   - General:
-    * Removed support for building with Visual Studio 6.0 (r1703419)
+    * windows: Removed support for building with Visual Studio 6.0 (r1703419)
     * Fix .py scripts throughout the source tree for Python 3 (r1741723 et al)
     * Support memcached on Windows with APR-util 1.3 or later (r1674626 et al)
     * Don't require GNU-specific sed(1) extensions during the build (r1693159)
-    * Make get-deps.sh download Googlemock and Googletest from GitHub (r1746303)
-    * Add autodetection for 'zlibstat.lib' on Windows (r1783704)
-    * Compile libsvn_fs_* as DLLs on Windows (r1696758, -83)
-    * Silence compile-time deprecation warnings with SASL on Mac OS X (r1739649)
+    * get-deps.sh: download Googlemock and Googletest from GitHub (r1746303)
+    * windows: Add autodetection for 'zlibstat.lib' (r1783704)
+    * windows: Compile libsvn_fs_* as DLLs (r1696758, -83)
+    * OS X: Silence compile-time deprecation warnings with SASL (r1739649)
     * 'make check GLOBAL_SCHEDULER=1' will run many tests in parallel (r1716399)
-    * New '--enable-apache-whitelist' configure script option (r1732294)
-    * Support 'configure --enable-runtime-module-search' on OS X (r1677273)
-    * Allow tests to be run over HTTP/2 (r1710707)
+    * unix: New '--enable-apache-whitelist' configure script option (r1732294)
+    * OS X: Support 'configure --enable-runtime-module-search' (r1677273)
+    * tests: Allow tests to be run over HTTP/2 (r1710707)
     * Add basic tests for svn_xml_parser_t API (r1765214)
     * Unbreak the test suite on Python 3 (r1743034, -81, et al)
     * Make the test suite work when checked out of a git repository (r1771118)
@@ -178,11 +205,22 @@ the 1.9 release:  https://subversion.apa
     * Add INSTALL instructions for building with OpenSSL 1.1.0 (r1778313)
     * Improved INSTALL instructions for Windows (r1703470, -2, -3, -4, et al)
     * Updated INSTALL instructions (r1691712)
+    * windows: Support Visual Studio 2017 (r1786653, r1786669)
+    * gnome-keyring: Support libsecret in preference to libgnome-keyring
+      (r1798004)
+    * kwallet: Support KDE 5 in preference to KDE 4 (r1798731)
+    * Rename cxxhl bindings 'make tests' to avoid confusion with 'make test'
+      (r1800849)
+    * 'make check': Allow testing with FSFS compression (r1801936)
+    * svnserveautocheck.sh: Support out-of-tree builds when running a single
+      test file (r1802081)
+    * Distribution artifacts now prepared with swig 3.0.10 (r1802135)
   - API changes:
     * New svn_client_conflict_* API functions for the new conflict resolver.
     * New svn_repos_fs_get_mergeinfo2() with streamy access (r1780810 et al)
     * New streamy svn_repos_get_logs5() API function (r1730389, -1163)
     * New streamy svn_fs_paths_changed3() API function (r1727822, r1745055)
+    * New svn_client_list4() API function (r1767186)
     * New svn_ra_list() API function (r1767190)
     * New svn_repos_list() API function (r1765088)
     * New svn_stream_contents_checksum() API function (r1755486, -6651)
@@ -194,8 +232,10 @@ the 1.9 release:  https://subversion.apa
     * New svn_stream_for_stdin2() API function (r1702983)
     * New svn_io_file_rename2() API function (r1701017)
     * New svn_error_quick_wrapf() API function (r1662668)
+    * New svn_repos_path_change_t type (r1802114)
+    * New svn_repos_log_entry_t type (r1802114)
     * svn_repos_parse_dumpstream3() now accepts NULL pointers (r1700180)
-    * Fix (svnserve|dav)autocheck when time is only a built-in (r1665652)
+    * Fix svnserveautocheck&davautocheck when time is only a built-in (r1665652)
   - Bindings:
     * Configure the swig bindings only if swig has been enabled (r1751167)
     * Error if 'configure --with-swig' is used and swig is not found (r1700844)
@@ -205,6 +245,32 @@ the 1.9 release:  https://subversion.apa
     * JavaHL: Correct some JNIEntry method names (r1706738)
     * Allow swig bindings scripts to configure the FSFS cache (r1709922)
     * Disable some swig wrappers that aren't working (r1700966)
+    * JavaHL: Make StringArray nullable (r1785429)
+    * JavaHL: Add missing exception checks (r1801108)
+
+
+Version 1.9.7
+(10 Aug 2017, from /branches/1.9.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.9.7
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * Fix arbitrary code execution vulnerability CVE-2017-9800
+        See <https://subversion.apache.org/security/CVE-2017-9800-advisory.txt>
+        for details.
+
+  - Server-side bugfixes:
+    (none)
+
+  - Bindings bugfixes:
+    (none)
+
+ Developer-visible changes:
+  - General:
+    (none)
+
+  - API changes:
+    (none)
 
 
 Version 1.9.6
@@ -1179,6 +1245,30 @@ http://svn.apache.org/repos/asf/subversi
     * javahl: allow compiling with a C++11 compiler (r1684412)
 
 
+Version 1.8.19
+(10 Aug 2017, from /branches/1.8.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.8.19
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * Fix arbitrary code execution vulnerability CVE-2017-9800
+        See <https://subversion.apache.org/security/CVE-2017-9800-advisory.txt>
+        for details.
+
+  - Server-side bugfixes:
+    (none)
+
+  - Bindings bugfixes:
+    (none)
+
+ Developer-visible changes:
+  - General:
+    (none)
+
+  - API changes:
+    (none)
+
+
 Version 1.8.18
 (10 Jul 2017, from /branches/1.8.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.8.18

Modified: subversion/branches/shelve/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/Makefile.in?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/Makefile.in (original)
+++ subversion/branches/shelve/Makefile.in Thu Aug 24 08:39:31 2017
@@ -54,6 +54,8 @@ SVN_SERF_LIBS = @SVN_SERF_LIBS@
 SVN_SQLITE_LIBS = @SVN_SQLITE_LIBS@
 SVN_XML_LIBS = @SVN_XML_LIBS@
 SVN_ZLIB_LIBS = @SVN_ZLIB_LIBS@
+SVN_LZ4_LIBS = @SVN_LZ4_LIBS@
+SVN_UTF8PROC_LIBS = @SVN_UTF8PROC_LIBS@
 
 LIBS = @LIBS@
 
@@ -130,7 +132,8 @@ INCLUDES = -I$(top_srcdir)/subversion/in
            @SVN_DB_INCLUDES@ @SVN_GNOME_KEYRING_INCLUDES@ \
            @SVN_KWALLET_INCLUDES@ @SVN_MAGIC_INCLUDES@ \
            @SVN_SASL_INCLUDES@ @SVN_SERF_INCLUDES@ @SVN_SQLITE_INCLUDES@ \
-           @SVN_XML_INCLUDES@ @SVN_ZLIB_INCLUDES@
+           @SVN_XML_INCLUDES@ @SVN_ZLIB_INCLUDES@ @SVN_LZ4_INCLUDES@ \
+           @SVN_UTF8PROC_INCLUDES@
 
 APACHE_INCLUDES = @APACHE_INCLUDES@
 APACHE_LIBEXECDIR = $(DESTDIR)@APACHE_LIBEXECDIR@
@@ -200,7 +203,9 @@ LT_COMPILE_CXX_NOWARN = $(LIBTOOL) $(LTC
 LT_EXECUTE = $(LIBTOOL) $(LTFLAGS) --mode=execute `for f in $(abs_builddir)/subversion/*/*.la; do echo -dlopen $$f; done`
 
 # special compilation for files destined for mod_dav_svn
-COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CMODEFLAGS) $(CPPFLAGS) $(CFLAGS) $(CMAINTAINERFLAGS) $(LT_CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c
+COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CMODEFLAGS) $(CPPFLAGS) $(CFLAGS) $(CMAINTAINERFLAGS) $(LT_CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c -shared
+COMPILE_SHARED_ONLY_LIB = $(LT_COMPILE) -o $@ -c -shared
+COMPILE_SHARED_ONLY_CXX_LIB = $(LT_COMPILE_CXX) -o $@ -c -shared
 
 # special compilation for files destined for libsvn_swig_* (e.g. swigutil_*.c)
 COMPILE_SWIG_PY = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(CPPFLAGS) $(LT_CFLAGS) -DSWIGPYTHON $(SWIG_PY_INCLUDES) $(INCLUDES) -o $@ -c
@@ -262,11 +267,9 @@ LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mo
 LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
 
 # special link rule for mod_dav_svn
-LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS)
+LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared
 
 # Special LDFLAGS for some libraries
-libsvn_auth_gnome_keyring_LDFLAGS = @libsvn_auth_gnome_keyring_LDFLAGS@
-libsvn_auth_kwallet_LDFLAGS = @libsvn_auth_kwallet_LDFLAGS@
 libsvn_client_LDFLAGS = @libsvn_client_LDFLAGS@
 libsvn_delta_LDFLAGS = @libsvn_delta_LDFLAGS@
 libsvn_diff_LDFLAGS = @libsvn_diff_LDFLAGS@
@@ -281,6 +284,10 @@ libsvn_ra_svn_LDFLAGS = @libsvn_ra_svn_L
 libsvn_repos_LDFLAGS = @libsvn_repos_LDFLAGS@
 libsvn_subr_LDFLAGS = @libsvn_subr_LDFLAGS@
 libsvn_wc_LDFLAGS = @libsvn_wc_LDFLAGS@
+shared_only_LDFLAGS = @shared_only_LDFLAGS@
+
+LINK_SHARED_ONLY_LIB = $(LINK_LIB) $(shared_only_LDFLAGS) -shared
+LINK_SHARED_ONLY_CXX_LIB = $(LINK_CXX_LIB) $(shared_only_LDFLAGS) -shared
 
 # Compilation of SWIG-generated C source code
 COMPILE_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(LT_CFLAGS) $(CPPFLAGS) $(SWIG_PY_INCLUDES) -prefer-pic -c -o $@
@@ -1001,7 +1008,7 @@ INSTALL_EXTRA_TOOLS=\
     ln -sf $(bindir)/svnbench$(EXEEXT) $(DESTDIR)$(toolsdir)/svn-bench$(EXEEXT); \
   fi; \
   printf '\043\041/bin/sh\n%s\n' \
-    'exec $(bindir)/svnfsfs stats $${2:+"-M"} $$2 $$1' \
+    'exec $(bindir)/svnfsfs stats $${2:+"-M"} $${2:+"$$2"} "$$1"' \
     > $(DESTDIR)$(toolsdir)/fsfs-stats$(EXEEXT) && \
   chmod +x $(DESTDIR)$(toolsdir)/fsfs-stats$(EXEEXT)
 # \043\041 is a "#!".  It's written this way because gmake and bmake disagree on

Modified: subversion/branches/shelve/aclocal.m4
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/aclocal.m4?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/aclocal.m4 (original)
+++ subversion/branches/shelve/aclocal.m4 Thu Aug 24 08:39:31 2017
@@ -44,8 +44,10 @@ sinclude(build/ac-macros/serf.m4)
 sinclude(build/ac-macros/sqlite.m4)
 sinclude(build/ac-macros/swig.m4)
 sinclude(build/ac-macros/zlib.m4)
+sinclude(build/ac-macros/lz4.m4)
 sinclude(build/ac-macros/kwallet.m4)
 sinclude(build/ac-macros/libsecret.m4)
+sinclude(build/ac-macros/utf8proc.m4)
 sinclude(build/ac-macros/macosx.m4)
 
 # Include the libtool macros

Modified: subversion/branches/shelve/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/build.conf?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/build.conf (original)
+++ subversion/branches/shelve/build.conf Thu Aug 24 08:39:31 2017
@@ -47,7 +47,7 @@ private-includes =
         subversion/bindings/javahl/native/jniwrapper/jni_*.hpp
         tools/dev/svnmover/linenoise/linenoise.h
         tools/dev/svnmover/linenoise/linenoise.c
-        subversion/libsvn_subr/utf8proc/utf8proc.h
+        subversion/libsvn_subr/utf8proc/utf8proc_internal.h
         subversion/libsvn_subr/utf8proc/utf8proc.c
         subversion/libsvn_subr/utf8proc/utf8proc_data.c
 private-built-includes =
@@ -224,7 +224,7 @@ manpages = subversion/svnmucc/svnmucc.1
 # Support for GNOME Keyring
 [libsvn_auth_gnome_keyring]
 description = Subversion GNOME Keyring Library
-type = lib
+type = shared-only-lib
 install = gnome-keyring-lib
 path = subversion/libsvn_auth_gnome_keyring
 libs = libsvn_subr apr gnome-keyring
@@ -232,7 +232,7 @@ libs = libsvn_subr apr gnome-keyring
 # Support for KWallet
 [libsvn_auth_kwallet]
 description = Subversion KWallet Library
-type = lib
+type = shared-only-cxx-lib
 install = kwallet-lib
 path = subversion/libsvn_auth_kwallet
 libs = libsvn_subr apr kwallet
@@ -371,7 +371,7 @@ type = lib
 install = fsmod-lib
 path = subversion/libsvn_subr
 sources = *.c lz4/*.c
-libs = aprutil apriconv apr xml zlib apr_memcache sqlite magic intl
+libs = aprutil apriconv apr xml zlib apr_memcache sqlite magic intl lz4 utf8proc
 msvc-libs = kernel32.lib advapi32.lib shfolder.lib ole32.lib
             crypt32.lib version.lib
 msvc-export = 
@@ -1483,6 +1483,14 @@ type = lib
 external-lib = $(SVN_ZLIB_LIBS)
 msvc-static = yes
 
+[lz4]
+type = lib
+external-lib = $(SVN_LZ4_LIBS)
+
+[utf8proc]
+type = lib
+external-lib = $(SVN_UTF8PROC_LIBS)
+
 [apr_memcache]
 type = lib
 external-lib = $(SVN_APR_MEMCACHE_LIBS)

Modified: subversion/branches/shelve/build/ac-macros/kwallet.m4
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/build/ac-macros/kwallet.m4?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/build/ac-macros/kwallet.m4 (original)
+++ subversion/branches/shelve/build/ac-macros/kwallet.m4 Thu Aug 24 08:39:31 2017
@@ -25,8 +25,10 @@ dnl
 AC_DEFUN(SVN_LIB_KWALLET,
 [
   AC_ARG_WITH(kwallet,
-    [AS_HELP_STRING([[--with-kwallet[=PATH]]],
-                    [Enable use of KWallet (KDE 5 or 4) for auth credentials])],
+    [AS_HELP_STRING([[--with-kwallet[=PATH|INCDIR:LIBDIR]]],
+                    [Enable use of KWallet (KDE 5 or 4) for auth credentials.
+                     PATH is the KDE install path, alternatively INCDIR:LIBDIR
+                     are the header and library install paths. ])],
                     [svn_lib_kwallet="$withval"],
                     [svn_lib_kwallet=no])
 
@@ -63,11 +65,22 @@ AC_DEFUN(SVN_LIB_KWALLET,
                   if test -f "$KDE_CONFIG" && test -x "$KDE_CONFIG"; then
                     AC_MSG_RESULT([yes])
                   else
-                    KDE_CONFIG=""
-                    AC_MSG_RESULT([no])
+                    if echo "$svn_lib_kwallet" | $EGREP ":" > /dev/null; then
+                      AC_MSG_RESULT([unneeded])
+                      KDE_CONFIG="unneeded"
+                      kde_incdir=["`echo "$svn_lib_kwallet" | $SED -e "s/:.*//"`"]
+                      kde_libdir=["`echo "$svn_lib_kwallet" | $SED -e "s/.*://"`"]
+                    else
+                      AC_MSG_RESULT([no])
+                      KDE_CONFIG=""
+                    fi
                   fi
                 else
                   AC_PATH_PROG(KDE_CONFIG, $kde_config_name)
+                  if test -n "$KDE_CONFIG"; then
+                    kde_incdir="`$KDE_CONFIG --install include`"
+                    kde_libdir="`$KDE_CONFIG --install lib`"
+                  fi
                 fi
                 if test -n "$KDE_CONFIG"; then
                   if test $kde_config_name = "kf5-config"; then
@@ -77,6 +90,8 @@ AC_DEFUN(SVN_LIB_KWALLET,
                   old_CXXFLAGS="$CXXFLAGS"
                   old_LDFLAGS="$LDFLAGS"
                   old_LIBS="$LIBS"
+                  dnl --std=c++11 may be required
+                  CXXFLAGS="$CXXFLAGS $CXXMODEFLAGS"
                   AC_MSG_CHECKING([for KWallet])
                   for d in [`$PKG_CONFIG --cflags $qt_pkg_config_names`]; do
                     if test -n ["`echo "$d" | $EGREP -- '^-D[^[:space:]]*'`"]; then
@@ -84,7 +99,6 @@ AC_DEFUN(SVN_LIB_KWALLET,
                     fi
                   done
                   qt_include_dirs="`$PKG_CONFIG --cflags-only-I $qt_pkg_config_names`"
-                  kde_incdir="`$KDE_CONFIG --install include`"
                   for kde_inc_name in $kde_inc_names; do
                     kde_kwallet_includes="$kde_kwallet_includes -I$kde_incdir/$kde_inc_name"
                   done
@@ -94,7 +108,6 @@ AC_DEFUN(SVN_LIB_KWALLET,
                   CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES -fPIC"
                   LIBS="$LIBS $SVN_KWALLET_LIBS"
                   qt_lib_dirs="`$PKG_CONFIG --libs-only-L $qt_pkg_config_names`"
-                  kde_libdir="`$KDE_CONFIG --install lib`"
                   LDFLAGS="$old_LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($qt_lib_dirs -L$kde_libdir)`"
                   AC_LANG(C++)
                   AC_LINK_IFELSE([AC_LANG_SOURCE([[

Modified: subversion/branches/shelve/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/build/generator/gen_base.py?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/build/generator/gen_base.py (original)
+++ subversion/branches/shelve/build/generator/gen_base.py Thu Aug 24 08:39:31 2017
@@ -288,7 +288,7 @@ class GeneratorBase:
             '  { %d, "%s" },' % (num, val),
           ])
 
-       # Remove ',' for c89 compatibility
+      # Remove ',' for c89 compatibility
       lines[-1] = lines[-1][0:-1]
 
       lines.extend([
@@ -296,7 +296,14 @@ class GeneratorBase:
           '',
         ])
 
-    write_struct('svn__errno', errno.errorcode.items())
+    # errno names can vary depending on the Python, and possibly the
+    # OS, version and they are not even used by normal release builds
+    # so omit them from the tarball. We always want the struct itself
+    # so that SVN_DEBUG builds still compile and it needs a dummy
+    # entry to avoid a zero-sized array.
+    write_struct('svn__errno',
+                 [(0, "success")] if self.release_mode
+                                  else errno.errorcode.items())
 
     # Fetch and write apr_errno.h codes.
     aprerr = []
@@ -719,6 +726,22 @@ class TargetApacheMod(TargetLib):
     self.compile_cmd = '$(COMPILE_APACHE_MOD)'
     self.link_cmd = '$(LINK_APACHE_MOD)'
 
+class TargetSharedOnlyLib(TargetLib):
+
+  def __init__(self, name, options, gen_obj):
+    TargetLib.__init__(self, name, options, gen_obj)
+
+    self.compile_cmd = '$(COMPILE_SHARED_ONLY_LIB)'
+    self.link_cmd = '$(LINK_SHARED_ONLY_LIB)'
+
+class TargetSharedOnlyCxxLib(TargetLib):
+
+  def __init__(self, name, options, gen_obj):
+    TargetLib.__init__(self, name, options, gen_obj)
+
+    self.compile_cmd = '$(COMPILE_SHARED_ONLY_CXX_LIB)'
+    self.link_cmd = '$(LINK_SHARED_ONLY_CXX_LIB)'
+
 class TargetRaModule(TargetLib):
   pass
 
@@ -1031,6 +1054,8 @@ _build_types = {
   'ra-module': TargetRaModule,
   'fs-module': TargetFsModule,
   'apache-mod': TargetApacheMod,
+  'shared-only-lib': TargetSharedOnlyLib,
+  'shared-only-cxx-lib': TargetSharedOnlyCxxLib,
   'javah' : TargetJavaHeaders,
   'java' : TargetJavaClasses,
   'i18n' : TargetI18N,

Modified: subversion/branches/shelve/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/build/generator/gen_win.py?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/build/generator/gen_win.py (original)
+++ subversion/branches/shelve/build/generator/gen_win.py Thu Aug 24 08:39:31 2017
@@ -79,11 +79,15 @@ class WinGeneratorBase(gen_win_dependenc
 
     # Print list of identified libraries
     printed = []
-    for lib in sorted(self._libraries.values(), key = lambda s: s.name):
+    for lib in sorted(self._libraries.values(),
+                      key = lambda s: (s.internal, s.name)):
       if lib.name in printed:
         continue
       printed.append(lib.name)
-      print('Found %s %s' % (lib.name, lib.version))
+      if lib.internal:
+        print('Using bundled %s %s' % (lib.name, lib.version))
+      else:
+        print('Found %s %s' % (lib.name, lib.version))
 
     #Make some files for the installer so that we don't need to
     #require sed or some other command to do it

Modified: subversion/branches/shelve/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/build/generator/gen_win_dependencies.py?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/build/generator/gen_win_dependencies.py (original)
+++ subversion/branches/shelve/build/generator/gen_win_dependencies.py Thu Aug 24 08:39:31 2017
@@ -51,7 +51,7 @@ class SVNCommonLibrary:
   def __init__(self, name, include_dirs, lib_dir, lib_name, version=None,
                debug_lib_dir=None, debug_lib_name=None, dll_dir=None,
                dll_name=None, debug_dll_dir=None, debug_dll_name=None,
-               defines=[], forced_includes=[], extra_bin=[]):
+               defines=[], forced_includes=[], extra_bin=[], internal=False):
     self.name = name
     if include_dirs:
       self.include_dirs = include_dirs if isinstance(include_dirs, list) \
@@ -90,6 +90,7 @@ class SVNCommonLibrary:
       self.debug_dll_name = dll_name
 
     self.extra_bin = extra_bin
+    self.internal = internal
 
 class GenDependenciesBase(gen_base.GeneratorBase):
   """This intermediate base class exists to be instantiated by win-tests.py,
@@ -305,6 +306,8 @@ class GenDependenciesBase(gen_base.Gener
     self._find_apr_util_etc()
     self._find_zlib()
     self._find_sqlite(show_warnings)
+    self._find_lz4()
+    self._find_utf8proc()
 
     # Optional dependencies
     self._find_httpd(show_warnings)
@@ -1446,6 +1449,57 @@ class GenDependenciesBase(gen_base.Gener
                                                  dll_name=dll_name,
                                                  defines=defines)
 
+  def _find_lz4(self):
+    "Find the LZ4 library"
+
+    # For now, we always use the internal (bundled) library.
+    version_file_path = os.path.join('subversion', 'libsvn_subr',
+                                     'lz4', 'lz4internal.h')
+    txt = open(version_file_path).read()
+
+    vermatch = re.search(r'^\s*#define\s+LZ4_VERSION_MAJOR\s+(\d+)',
+                         txt, re.M)
+    major = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+LZ4_VERSION_MINOR\s+(\d+)',
+                         txt, re.M)
+    minor = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+LZ4_VERSION_RELEASE\s+(\d+)',
+                         txt, re.M)
+    rel = vermatch.group(1)
+
+    lz4_version = '%d.%d.%s' % (major, minor, rel)
+    self._libraries['lz4'] = SVNCommonLibrary('lz4', None, None, None,
+                                              lz4_version, internal=True,
+                                              defines=['SVN_INTERNAL_LZ4'])
+
+  def _find_utf8proc(self):
+    "Find the Utf8proc library"
+
+    # For now, we always use the internal (bundled) library.
+    version_file_path = os.path.join('subversion', 'libsvn_subr',
+                                     'utf8proc', 'utf8proc_internal.h')
+    txt = open(version_file_path).read()
+
+    vermatch = re.search(r'^\s*#define\s+UTF8PROC_VERSION_MAJOR\s+(\d+)',
+                         txt, re.M)
+    major = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+UTF8PROC_VERSION_MINOR\s+(\d+)',
+                         txt, re.M)
+    minor = int(vermatch.group(1))
+
+    vermatch = re.search(r'^\s*#define\s+UTF8PROC_VERSION_PATCH\s+(\d+)',
+                         txt, re.M)
+    patch = int(vermatch.group(1))
+
+    utf8proc_version = '%d.%d.%d' % (major, minor, patch)
+    self._libraries['utf8proc'] = SVNCommonLibrary('utf8proc', None, None,
+                                                   None, utf8proc_version,
+                                                   internal=True,
+                                        defines=['SVN_INTERNAL_UTF8PROC'])
+
 # ============================================================================
 # This is a cut-down and modified version of code from:
 #   subversion/subversion/bindings/swig/python/svn/core.py

Modified: subversion/branches/shelve/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/build/run_tests.py?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/build/run_tests.py (original)
+++ subversion/branches/shelve/build/run_tests.py Thu Aug 24 08:39:31 2017
@@ -33,7 +33,7 @@
             [--httpd-version=<version>] [--httpd-whitelist=<version>]
             [--config-file=<file>] [--ssl-cert=<file>]
             [--exclusive-wc-locks] [--memcached-server=<url:port>]
-            [--fsfs-compression=<n>]
+            [--fsfs-compression=<type>]
             <abs_srcdir> <abs_builddir>
             <prog ...>
 
@@ -276,8 +276,8 @@ class TestHarness:
       cmdline.append('--exclusive-wc-locks')
     if self.opts.memcached_server is not None:
       cmdline.append('--memcached-server=%s' % self.opts.memcached_server)
-    if self.opts.fsfs_compression_level is not None:
-      cmdline.append('--fsfs-compression=%d' % self.opts.fsfs_compression_level)
+    if self.opts.fsfs_compression is not None:
+      cmdline.append('--fsfs-compression=%s' % self.opts.fsfs_compression)
 
     self.py_test_cmdline = cmdline
 
@@ -1026,9 +1026,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.add_option('--fsfs-compression', action='store', type='int',
-                    dest="fsfs_compression_level",
-                    help='Set compression level (for fsfs)')
+  parser.add_option('--fsfs-compression', action='store', type='str',
+                    help='Set compression type (for fsfs)')
 
   parser.set_defaults(set_log_level=None)
   return parser

Modified: subversion/branches/shelve/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/configure.ac?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/configure.ac (original)
+++ subversion/branches/shelve/configure.ac Thu Aug 24 08:39:31 2017
@@ -1005,6 +1005,7 @@ if test "$enable_disallowing_of_undefine
     for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
       eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
     done
+    shared_only_LDFLAGS="-Wl,--no-undefined"
   else
     AC_MSG_RESULT([no])
     if test "$enable_disallowing_of_undefined_references" = "yes"; then
@@ -1012,8 +1013,6 @@ if test "$enable_disallowing_of_undefine
     fi
   fi
 fi
-AC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS])
-AC_SUBST([libsvn_auth_kwallet_LDFLAGS])
 AC_SUBST([libsvn_client_LDFLAGS])
 AC_SUBST([libsvn_delta_LDFLAGS])
 AC_SUBST([libsvn_diff_LDFLAGS])
@@ -1028,6 +1027,7 @@ AC_SUBST([libsvn_ra_svn_LDFLAGS])
 AC_SUBST([libsvn_repos_LDFLAGS])
 AC_SUBST([libsvn_subr_LDFLAGS])
 AC_SUBST([libsvn_wc_LDFLAGS])
+AC_SUBST([shared_only_LDFLAGS])
 
 
 AC_ARG_ENABLE(maintainer-mode,
@@ -1216,6 +1216,10 @@ AS_HELP_STRING([--with-editor=PATH],
 
 SVN_LIB_Z
 
+SVN_LZ4
+
+SVN_UTF8PROC
+
 MOD_ACTIVATION=""
 AC_ARG_ENABLE(mod-activation,
 AS_HELP_STRING([--enable-mod-activation],

Modified: subversion/branches/shelve/notes/resolve-moves
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/notes/resolve-moves?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/notes/resolve-moves (original)
+++ subversion/branches/shelve/notes/resolve-moves Thu Aug 24 08:39:31 2017
@@ -144,8 +144,9 @@ The repos-path@rev is for the conflict v
 appeared in the working copy at the time the conflict was flagged.
 
 To determine whether path@old-rev was moved to another path-moved@new-rev,
-SVN must find path-moved@new-rev, and it must find a chain of moves which
-starts at path@old-rev and ends at path-moved@new-rev.
+SVN must look for a chain of moves which starts at path@old-rev and ends at
+new-rev. If a single such chain is found, then the final path-moved@new-rev
+is known.
 
 To do this, SVN scans all revisions between old-rev and new-rev and
 detects any moves within them. Moves of the same node are linked together
@@ -162,7 +163,17 @@ The repository location of the conflict
 cannot be found in the working copy ("local missing").
 
 To find such missing nodes, SVN must first find all moves in the entire
-history of the parent directory of the conflict victim.
+history of the parent directory of the conflict victim. Additionally,
+in the case of a merge operation, SVN must also find all moves in the
+history of the parent directory of path@old-rev, all the way up to the
+common ancestor of the root of the merge operation. This is because such
+moves might not have been applied to the target branch (working copy),
+for instance when cherry-picking a file modification, after the file has
+been moved on the source branch (see example at the end of this section).
+
+### jcorvel: Maybe this additional search for moves on the source branch
+             (in case of a merge operation) can be optional? Only do it if
+             the moves found in the first search don't suffice?
 
 For each such move it checks whether the moved node is related to the known
 node at path@old-rev, or, if that does not exist, path@new-rev, by tracing
@@ -184,6 +195,34 @@ a path-wise closest node to the conflict
 If no such node can be found, SVN assumes that the conflict victim was
 deleted instead of moved.
 
+=== Missing conflict victim due to skipped move in merge source history ===
+
+This can typically happen when cherry-picking a revision with a file
+modification, where this file has been moved on the source branch of the
+merge (and this move was not applied to the target branch):
+
+In r1, create directory A with file mu:
+  Changed paths:
+     A /A
+     A /A/mu
+
+In r2, directory A is copied to A1 (branched):
+  Changed paths:
+     A /A1 (from /A:1)
+
+In r3, A/mu is moved:
+  Changed paths:
+     D /A/mu
+     A /A/mu-moved (from /A/mu:2)
+
+In r4, A/mu-moved is edited:
+  Changed paths:
+     M /A/mu-moved
+
+If we now want to cherry-pick r4 from /A to a working copy of /A1, we get a
+tree conflict because mu-moved is missing. The relevant move we need to
+resolve this happened on /A, in r3.
+
 == Determining which, if any, moves apply ==
 
 Next, SVN must determine whether any moves found between old-rev and

Modified: subversion/branches/shelve/notes/ssh-tricks
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/notes/ssh-tricks?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/notes/ssh-tricks (original)
+++ subversion/branches/shelve/notes/ssh-tricks Thu Aug 24 08:39:31 2017
@@ -15,7 +15,7 @@ not work with password authentication.
 the client's key-pair is used only for access to svnserve; if you want
 to retain general shell access to the host, create a second, dedicated
 key-pair for Subversion access and (assuming a Unix client) set the
-environment variable SVN_SSH to "ssh -i /path/to/private/key/file".
+environment variable SVN_SSH to "ssh -i /path/to/private/key/file --".
 
 The basic idea
 --------------

Modified: subversion/branches/shelve/subversion/include/private/svn_io_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/private/svn_io_private.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/private/svn_io_private.h (original)
+++ subversion/branches/shelve/subversion/include/private/svn_io_private.h Thu Aug 24 08:39:31 2017
@@ -127,6 +127,13 @@ svn_stream__install_get_info(apr_finfo_t
                              apr_int32_t wanted,
                              apr_pool_t *scratch_pool);
 
+/* Internal version of svn_stream_from_aprfile2() supporting the
+   additional TRUNCATE_ON_SEEK argument. */
+svn_stream_t *
+svn_stream__from_aprfile(apr_file_t *file,
+                         svn_boolean_t disown,
+                         svn_boolean_t truncate_on_seek,
+                         apr_pool_t *pool);
 
 #if defined(WIN32)
 

Modified: subversion/branches/shelve/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/private/svn_wc_private.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/shelve/subversion/include/private/svn_wc_private.h Thu Aug 24 08:39:31 2017
@@ -2070,6 +2070,17 @@ svn_wc__read_conflict_descriptions2_t(co
                                       apr_pool_t *result_pool,
                                       apr_pool_t *scratch_pool);
 
+/* Internal version of svn_wc_translated_stream(), accepting a working
+   copy context. */
+svn_error_t *
+svn_wc__translated_stream(svn_stream_t **stream,
+                          svn_wc_context_t *wc_ctx,
+                          const char *local_abspath,
+                          const char *versioned_abspath,
+                          apr_uint32_t flags,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/shelve/subversion/include/svn_checksum.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_checksum.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_checksum.h (original)
+++ subversion/branches/shelve/subversion/include/svn_checksum.h Thu Aug 24 08:39:31 2017
@@ -223,6 +223,15 @@ svn_checksum_ctx_create(svn_checksum_kin
                         apr_pool_t *pool);
 
 /**
+ * Reset an existing checksum @a ctx to initial state.
+ * @see svn_checksum_ctx_create()
+ *
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_checksum_ctx_reset(svn_checksum_ctx_t *ctx);
+
+/**
  * Update the checksum represented by @a ctx, with @a len bytes starting at
  * @a data.
  *

Modified: subversion/branches/shelve/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_client.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_client.h (original)
+++ subversion/branches/shelve/subversion/include/svn_client.h Thu Aug 24 08:39:31 2017
@@ -1975,7 +1975,7 @@ typedef svn_error_t *(*svn_client_import
  * on @a url if @a url is already under versioned control, or the nearest parents
  * of @a path which are already under version control if not.
  *
- * If @a ignore_unknown_node_types is @c FALSE, ignore files of which the
+ * If @a ignore_unknown_node_types is @c TRUE, ignore files of which the
  * node type is unknown, such as device files and pipes.
  *
  * If @a filter_callback is non-NULL, call it for each node that isn't ignored
@@ -6251,8 +6251,7 @@ svn_client_revprop_list(apr_hash_t **pro
  * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
  * for URLs or #svn_opt_revision_working for WC targets.
  *
- * @a revision is the revision that should be exported, which is only used
- * when exporting from a repository.
+ * @a revision is the revision that should be exported.
  *
  * @a peg_revision and @a revision must not be @c NULL.
  *

Modified: subversion/branches/shelve/subversion/include/svn_dav.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_dav.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_dav.h (original)
+++ subversion/branches/shelve/subversion/include/svn_dav.h Thu Aug 24 08:39:31 2017
@@ -404,6 +404,15 @@ extern "C" {
 #define SVN_DAV_NS_DAV_SVN_SVNDIFF2\
             SVN_DAV_PROP_NS_DAV "svn/svndiff2"
 
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) sends the result
+ * checksum in the response to a successful PUT request.
+ *
+ * @since New in 1.10.
+ */
+#define SVN_DAV_NS_DAV_SVN_PUT_RESULT_CHECKSUM\
+            SVN_DAV_PROP_NS_DAV "svn/put-result-checksum"
+
 /** @} */
 
 /** @} */

Modified: subversion/branches/shelve/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_delta.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_delta.h (original)
+++ subversion/branches/shelve/subversion/include/svn_delta.h Thu Aug 24 08:39:31 2017
@@ -330,6 +330,18 @@ typedef svn_error_t *
 typedef const unsigned char *
 (*svn_txdelta_md5_digest_fn_t)(void *baton);
 
+/** A typedef for a function that opens an #svn_txdelta_stream_t object,
+ * allocated in @a result_pool.  @a baton is provided by the caller.
+ * Any temporary allocations may be performed in @a scratch_pool.
+ *
+ * @since New in 1.10.
+ */
+typedef svn_error_t *
+(*svn_txdelta_stream_open_func_t)(svn_txdelta_stream_t **txdelta_stream,
+                                  void *baton,
+                                  apr_pool_t *result_pool,
+                                  apr_pool_t *scratch_pool);
+
 /** Create and return a generic text delta stream with @a baton, @a
  * next_window and @a md5_digest.  Allocate the new stream in @a
  * pool.
@@ -546,6 +558,20 @@ svn_txdelta_to_svndiff(svn_stream_t *out
                        svn_txdelta_window_handler_t *handler,
                        void **handler_baton);
 
+/** Return a readable generic stream which will produce svndiff-encoded
+ * text delta from the delta stream @a txstream.  @a svndiff_version and
+ * @a compression_level are same as in svn_txdelta_to_svndiff3().
+ *
+ * Allocate the stream in @a pool.
+ *
+ * @since New in 1.10.
+ */
+svn_stream_t *
+svn_txdelta_to_svndiff_stream(svn_txdelta_stream_t *txstream,
+                              int svndiff_version,
+                              int compression_level,
+                              apr_pool_t *pool);
+
 /** Return a writable generic stream which will parse svndiff-format
  * data into a text delta, invoking @a handler with @a handler_baton
  * whenever a new window is ready.
@@ -1117,6 +1143,35 @@ typedef struct svn_delta_editor_t
   svn_error_t *(*abort_edit)(void *edit_baton,
                              apr_pool_t *scratch_pool);
 
+  /** Apply a text delta stream, yielding the new revision of a file.
+   *
+   * @a file_baton indicates the file we're creating or updating, and the
+   * ancestor file on which it is based; it is the baton set by some
+   * prior @c add_file or @c open_file callback.
+   *
+   * @a open_func is a function that opens a #svn_txdelta_stream_t object.
+   * @a open_baton is provided by the caller.
+   *
+   * @a base_checksum is the hex MD5 digest for the base text against
+   * which the delta is being applied; it is ignored if NULL, and may
+   * be ignored even if not NULL.  If it is not ignored, it must match
+   * the checksum of the base text against which svndiff data is being
+   * applied; if it does not, @c apply_textdelta_stream call which detects
+   * the mismatch will return the error SVN_ERR_CHECKSUM_MISMATCH
+   * (if there is no base text, there may still be an error if
+   * @a base_checksum is neither NULL nor the hex MD5 checksum of the
+   * empty string).
+   *
+   * Any temporary allocations may be performed in @a scratch_pool.
+   */
+  svn_error_t *(*apply_textdelta_stream)(
+    const struct svn_delta_editor_t *editor,
+    void *file_baton,
+    const char *base_checksum,
+    svn_txdelta_stream_open_func_t open_func,
+    void *open_baton,
+    apr_pool_t *scratch_pool);
+
   /* Be sure to update svn_delta_get_cancellation_editor() and
    * svn_delta_default_editor() if you add a new callback here. */
 } svn_delta_editor_t;

Modified: subversion/branches/shelve/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_error_codes.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/shelve/subversion/include/svn_error_codes.h Thu Aug 24 08:39:31 2017
@@ -1667,6 +1667,11 @@ SVN_ERROR_START
              SVN_ERR_RA_SERF_CATEGORY_START + 3,
              "While handling serf response:")
 
+  /** @since New in 1.10. */
+  SVN_ERRDEF(SVN_ERR_RA_SERF_STREAM_BUCKET_READ_ERROR,
+             SVN_ERR_RA_SERF_CATEGORY_START + 4,
+             "Can't read from stream")
+
   /* malfunctions such as assertion failures */
 
   SVN_ERRDEF(SVN_ERR_ASSERTION_FAIL,

Modified: subversion/branches/shelve/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_io.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_io.h (original)
+++ subversion/branches/shelve/subversion/include/svn_io.h Thu Aug 24 08:39:31 2017
@@ -1248,7 +1248,8 @@ svn_stream_compressed(svn_stream_t *stre
  * The @a stream passed into this function is closed when the created
  * stream is closed.
  *
- * @since New in 1.6.
+ * @since New in 1.6.  Since 1.10, the resulting stream supports reset
+ * via stream_stream_reset().
  */
 svn_stream_t *
 svn_stream_checksummed2(svn_stream_t *stream,
@@ -1384,6 +1385,14 @@ svn_stream_reset(svn_stream_t *stream);
 svn_boolean_t
 svn_stream_supports_mark(svn_stream_t *stream);
 
+/** Returns @c TRUE if the generic @a stream supports svn_stream_reset().
+ *
+ * @see svn_stream_reset()
+ * @since New in 1.10.
+ */
+svn_boolean_t
+svn_stream_supports_reset(svn_stream_t *stream);
+
 /** Set a @a mark at the current position of a generic @a stream,
  * which can later be sought back to using svn_stream_seek().
  * The @a mark is allocated in @a pool.

Modified: subversion/branches/shelve/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/include/svn_ra_svn.h?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/shelve/subversion/include/svn_ra_svn.h Thu Aug 24 08:39:31 2017
@@ -49,6 +49,7 @@ extern "C" {
 /** Currently-defined capabilities. */
 #define SVN_RA_SVN_CAP_EDIT_PIPELINE "edit-pipeline"
 #define SVN_RA_SVN_CAP_SVNDIFF1 "svndiff1"
+#define SVN_RA_SVN_CAP_SVNDIFF2_ACCEPTED "accepts-svndiff2"
 #define SVN_RA_SVN_CAP_ABSENT_ENTRIES "absent-entries"
 /* maps to SVN_RA_CAPABILITY_COMMIT_REVPROPS: */
 #define SVN_RA_SVN_CAP_COMMIT_REVPROPS "commit-revprops"

Modified: subversion/branches/shelve/subversion/libsvn_client/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/libsvn_client/conflicts.c?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/libsvn_client/conflicts.c (original)
+++ subversion/branches/shelve/subversion/libsvn_client/conflicts.c Thu Aug 24 08:39:31 2017
@@ -2072,6 +2072,7 @@ conflict_tree_get_details_local_missing(
   const char *old_repos_relpath;
   const char *new_repos_relpath;
   const char *parent_repos_relpath;
+  svn_revnum_t parent_peg_rev;
   svn_revnum_t old_rev;
   svn_revnum_t new_rev;
   svn_revnum_t deleted_rev;
@@ -2094,7 +2095,7 @@ conflict_tree_get_details_local_missing(
    * deleted the node. */
   deleted_basename = svn_dirent_basename(conflict->local_abspath,
                                          scratch_pool);
-  SVN_ERR(svn_wc__node_get_repos_info(NULL, &parent_repos_relpath,
+  SVN_ERR(svn_wc__node_get_repos_info(&parent_peg_rev, &parent_repos_relpath,
                                       NULL, NULL,
                                       ctx->wc_ctx,
                                       svn_dirent_dirname(
@@ -2122,8 +2123,7 @@ conflict_tree_get_details_local_missing(
   SVN_ERR(find_revision_for_suspected_deletion(
             &deleted_rev, &deleted_rev_author, &replacing_node_kind, &moves,
             conflict, deleted_basename, parent_repos_relpath,
-            old_rev < new_rev ? new_rev : old_rev, 0,
-            related_repos_relpath, related_peg_rev,
+            parent_peg_rev, 0, related_repos_relpath, related_peg_rev,
             ctx, conflict->pool, scratch_pool));
 
   if (deleted_rev == SVN_INVALID_REVNUM)
@@ -4158,6 +4158,7 @@ conflict_tree_get_details_incoming_delet
       if (old_rev < new_rev)
         {
           const char *parent_repos_relpath;
+          svn_revnum_t parent_peg_rev;
           svn_revnum_t deleted_rev;
           const char *deleted_rev_author;
           svn_node_kind_t replacing_node_kind;
@@ -4166,7 +4167,8 @@ conflict_tree_get_details_incoming_delet
           svn_revnum_t related_peg_rev;
 
           /* The update operation went forward in history. */
-          SVN_ERR(svn_wc__node_get_repos_info(NULL, &parent_repos_relpath,
+          SVN_ERR(svn_wc__node_get_repos_info(&parent_peg_rev,
+                                              &parent_repos_relpath,
                                               NULL, NULL,
                                               ctx->wc_ctx,
                                               svn_dirent_dirname(
@@ -4194,8 +4196,8 @@ conflict_tree_get_details_incoming_delet
                     &deleted_rev, &deleted_rev_author, &replacing_node_kind,
                     &moves, conflict,
                     svn_dirent_basename(conflict->local_abspath, scratch_pool),
-                    parent_repos_relpath,
-                    new_rev, new_kind == svn_node_none ? 0 : old_rev,
+                    parent_repos_relpath, parent_peg_rev,
+                    new_kind == svn_node_none ? 0 : old_rev,
                     related_repos_relpath, related_peg_rev,
                     ctx, conflict->pool, scratch_pool));
           if (deleted_rev == SVN_INVALID_REVNUM)
@@ -5917,58 +5919,6 @@ filter_props(apr_hash_t *props, apr_pool
     }
 }
 
-/* Get KEYWORDS for LOCAL_ABSPATH.
- * WC_CTX is a context for the working copy the patch is applied to.
- * Use RESULT_POOL for allocations of fields in TARGET.
- * Use SCRATCH_POOL for all other allocations. */
-static svn_error_t *
-get_keywords(apr_hash_t **keywords,
-             svn_wc_context_t *wc_ctx,
-             const char *local_abspath,
-             apr_pool_t *result_pool,
-             apr_pool_t *scratch_pool)
-{
-  apr_hash_t *props;
-  svn_string_t *keywords_val;
-
-  *keywords = NULL;
-  SVN_ERR(svn_wc_prop_list2(&props, wc_ctx, local_abspath,
-                            scratch_pool, scratch_pool));
-  keywords_val = svn_hash_gets(props, SVN_PROP_KEYWORDS);
-  if (keywords_val)
-    {
-      svn_revnum_t changed_rev;
-      apr_time_t changed_date;
-      const char *rev_str;
-      const char *author;
-      const char *url;
-      const char *repos_root_url;
-      const char *repos_relpath;
-
-      SVN_ERR(svn_wc__node_get_changed_info(&changed_rev,
-                                            &changed_date,
-                                            &author, wc_ctx,
-                                            local_abspath,
-                                            scratch_pool,
-                                            scratch_pool));
-      rev_str = apr_psprintf(scratch_pool, "%ld", changed_rev);
-      SVN_ERR(svn_wc__node_get_repos_info(NULL, &repos_relpath, &repos_root_url,
-                                          NULL,
-                                          wc_ctx, local_abspath,
-                                          scratch_pool, scratch_pool));
-      url = svn_path_url_add_component2(repos_root_url, repos_relpath,
-                                        scratch_pool);
-
-      SVN_ERR(svn_subst_build_keywords3(keywords,
-                                        keywords_val->data,
-                                        rev_str, url, repos_root_url,
-                                        changed_date,
-                                        author, result_pool));
-    }
-
-  return SVN_NO_ERROR;
-}
-
 /* Implements conflict_option_resolve_func_t. */
 static svn_error_t *
 resolve_merge_incoming_added_file_text_update(
@@ -5986,11 +5936,9 @@ resolve_merge_incoming_added_file_text_u
   const char *working_file_tmp_abspath;
   svn_stream_t *working_file_stream;
   svn_stream_t *working_file_tmp_stream;
-  svn_stream_t *normalized_stream;
   apr_hash_t *working_props;
   apr_array_header_t *propdiffs;
   svn_error_t *err;
-  apr_hash_t *keywords;
 
   local_abspath = svn_client_conflict_get_local_abspath(conflict);
 
@@ -6003,16 +5951,12 @@ resolve_merge_incoming_added_file_text_u
                                  svn_io_file_del_none,
                                  scratch_pool, scratch_pool));
 
-  /* Copy the working file to temporary storage. */
-  SVN_ERR(svn_stream_open_readonly(&working_file_stream, local_abspath,
-                                   scratch_pool, scratch_pool));
-  SVN_ERR(get_keywords(&keywords, ctx->wc_ctx, local_abspath,
-                       scratch_pool, scratch_pool));
-  normalized_stream = svn_subst_stream_translated(working_file_stream,
-                                                  "\n", TRUE,
-                                                  keywords, FALSE,
-                                                  scratch_pool);
-  SVN_ERR(svn_stream_copy3(normalized_stream, working_file_tmp_stream,
+  /* Copy the detranslated working file to temporary storage. */
+  SVN_ERR(svn_wc__translated_stream(&working_file_stream, ctx->wc_ctx,
+                                    local_abspath, local_abspath,
+                                    SVN_WC_TRANSLATE_TO_NF,
+                                    scratch_pool, scratch_pool));
+  SVN_ERR(svn_stream_copy3(working_file_stream, working_file_tmp_stream,
                            ctx->cancel_func, ctx->cancel_baton,
                            scratch_pool));
 
@@ -6254,10 +6198,8 @@ resolve_merge_incoming_added_file_replac
   const char *wc_tmpdir;
   svn_stream_t *working_file_tmp_stream;
   const char *working_file_tmp_abspath;
-  svn_stream_t *normalized_stream;
   svn_stream_t *working_file_stream;
   apr_hash_t *working_props;
-  apr_hash_t *keywords;
   svn_error_t *err;
   svn_wc_merge_outcome_t merge_content_outcome;
   svn_wc_notify_state_t merge_props_outcome;
@@ -6275,16 +6217,12 @@ resolve_merge_incoming_added_file_replac
                                  svn_io_file_del_on_pool_cleanup,
                                  scratch_pool, scratch_pool));
 
-  /* Copy the working file to temporary storage. */
-  SVN_ERR(svn_stream_open_readonly(&working_file_stream, local_abspath,
-                                   scratch_pool, scratch_pool));
-  SVN_ERR(get_keywords(&keywords, ctx->wc_ctx, local_abspath,
-                       scratch_pool, scratch_pool));
-  normalized_stream = svn_subst_stream_translated(working_file_stream,
-                                                  "\n", TRUE,
-                                                  keywords, FALSE,
-                                                  scratch_pool);
-  SVN_ERR(svn_stream_copy3(normalized_stream, working_file_tmp_stream,
+  /* Copy the detranslated working file to temporary storage. */
+  SVN_ERR(svn_wc__translated_stream(&working_file_stream, ctx->wc_ctx,
+                                    local_abspath, local_abspath,
+                                    SVN_WC_TRANSLATE_TO_NF,
+                                    scratch_pool, scratch_pool));
+  SVN_ERR(svn_stream_copy3(working_file_stream, working_file_tmp_stream,
                            ctx->cancel_func, ctx->cancel_baton,
                            scratch_pool));
 
@@ -7746,8 +7684,6 @@ resolve_incoming_move_file_text_merge(sv
     {
       svn_stream_t *working_stream;
       svn_stream_t *incoming_stream;
-      svn_stream_t *normalized_stream;
-      apr_hash_t *keywords;
 
       /* Create a temporary copy of the working file in repository-normal form.
        * Set up this temporary file to be automatically removed. */
@@ -7758,21 +7694,14 @@ resolve_incoming_move_file_text_merge(sv
       if (err)
         goto unlock_wc;
 
-      err = svn_stream_open_readonly(&working_stream, local_abspath,
-                                     scratch_pool, scratch_pool);
+      err = svn_wc__translated_stream(&working_stream, ctx->wc_ctx,
+                                      local_abspath, local_abspath,
+                                      SVN_WC_TRANSLATE_TO_NF,
+                                      scratch_pool, scratch_pool);
       if (err)
         goto unlock_wc;
 
-      err = get_keywords(&keywords, ctx->wc_ctx, local_abspath,
-                         scratch_pool, scratch_pool);
-      if (err)
-        goto unlock_wc;
-
-      normalized_stream = svn_subst_stream_translated(working_stream,
-                                                      "\n", TRUE,
-                                                      keywords, FALSE,
-                                                      scratch_pool);
-      err = svn_stream_copy3(normalized_stream, incoming_stream,
+      err = svn_stream_copy3(working_stream, incoming_stream,
                              NULL, NULL, /* no cancellation */
                              scratch_pool);
       if (err)
@@ -7782,8 +7711,6 @@ resolve_incoming_move_file_text_merge(sv
     {
       svn_stream_t *incoming_stream;
       svn_stream_t *move_target_stream;
-      svn_stream_t *normalized_stream;
-      apr_hash_t *keywords;
 
       /* Set aside the current move target file. This is required to apply
        * the move, and only then perform a three-way text merge between
@@ -7798,21 +7725,14 @@ resolve_incoming_move_file_text_merge(sv
       if (err)
         goto unlock_wc;
 
-      err = svn_stream_open_readonly(&move_target_stream, moved_to_abspath,
-                                     scratch_pool, scratch_pool);
-      if (err)
-        goto unlock_wc;
-
-      err = get_keywords(&keywords, ctx->wc_ctx, moved_to_abspath,
-                         scratch_pool, scratch_pool);
+      err = svn_wc__translated_stream(&move_target_stream, ctx->wc_ctx,
+                                      moved_to_abspath, moved_to_abspath,
+                                      SVN_WC_TRANSLATE_TO_NF,
+                                      scratch_pool, scratch_pool);
       if (err)
         goto unlock_wc;
 
-      normalized_stream = svn_subst_stream_translated(move_target_stream,
-                                                      "\n", TRUE,
-                                                      keywords, FALSE,
-                                                      scratch_pool);
-      err = svn_stream_copy3(normalized_stream, incoming_stream,
+      err = svn_stream_copy3(move_target_stream, incoming_stream,
                              NULL, NULL, /* no cancellation */
                              scratch_pool);
       if (err)

Modified: subversion/branches/shelve/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve/subversion/libsvn_client/export.c?rev=1806005&r1=1806004&r2=1806005&view=diff
==============================================================================
--- subversion/branches/shelve/subversion/libsvn_client/export.c (original)
+++ subversion/branches/shelve/subversion/libsvn_client/export.c Thu Aug 24 08:39:31 2017
@@ -1148,7 +1148,7 @@ get_editor_ev2(const svn_delta_editor_t
 }
 
 static svn_error_t *
-export_file_ev2(const char *from_path_or_url,
+export_file_ev2(const char *from_url,
                 const char *to_path,
                 struct edit_baton *eb,
                 svn_client__pathrev_t *loc,
@@ -1156,23 +1156,21 @@ export_file_ev2(const char *from_path_or
                 svn_boolean_t overwrite,
                 apr_pool_t *scratch_pool)
 {
-  svn_boolean_t from_is_url = svn_path_is_url(from_path_or_url);
   apr_hash_t *props;
   svn_stream_t *tmp_stream;
   svn_node_kind_t to_kind;
 
+  SVN_ERR_ASSERT(svn_path_is_url(from_url));
+
   if (svn_path_is_empty(to_path))
     {
-      if (from_is_url)
-        to_path = svn_uri_basename(from_path_or_url, scratch_pool);
-      else
-        to_path = svn_dirent_basename(from_path_or_url, NULL);
+      to_path = svn_uri_basename(from_url, scratch_pool);
       eb->root_path = to_path;
     }
   else
     {
-      SVN_ERR(append_basename_if_dir(&to_path, from_path_or_url,
-                                     from_is_url, scratch_pool));
+      SVN_ERR(append_basename_if_dir(&to_path, from_url,
+                                     TRUE, scratch_pool));
       eb->root_path = to_path;
     }
 
@@ -1204,7 +1202,7 @@ export_file_ev2(const char *from_path_or
 }
 
 static svn_error_t *
-export_file(const char *from_path_or_url,
+export_file(const char *from_url,
             const char *to_path,
             struct edit_baton *eb,
             svn_client__pathrev_t *loc,
@@ -1216,20 +1214,18 @@ export_file(const char *from_path_or_url
   apr_hash_index_t *hi;
   struct file_baton *fb = apr_pcalloc(scratch_pool, sizeof(*fb));
   svn_node_kind_t to_kind;
-  svn_boolean_t from_is_url = svn_path_is_url(from_path_or_url);
+
+  SVN_ERR_ASSERT(svn_path_is_url(from_url));
 
   if (svn_path_is_empty(to_path))
     {
-      if (from_is_url)
-        to_path = svn_uri_basename(from_path_or_url, scratch_pool);
-      else
-        to_path = svn_dirent_basename(from_path_or_url, NULL);
+      to_path = svn_uri_basename(from_url, scratch_pool);
       eb->root_path = to_path;
     }
   else
     {
-      SVN_ERR(append_basename_if_dir(&to_path, from_path_or_url,
-                                     from_is_url, scratch_pool));
+      SVN_ERR(append_basename_if_dir(&to_path, from_url,
+                                     TRUE, scratch_pool));
       eb->root_path = to_path;
     }
 
@@ -1288,7 +1284,7 @@ export_file(const char *from_path_or_url
 }
 
 static svn_error_t *
-export_directory(const char *from_path_or_url,
+export_directory(const char *from_url,
                  const char *to_path,
                  struct edit_baton *eb,
                  svn_client__pathrev_t *loc,
@@ -1307,6 +1303,8 @@ export_directory(const char *from_path_o
   void *report_baton;
   svn_node_kind_t kind;
 
+  SVN_ERR_ASSERT(svn_path_is_url(from_url));
+
   if (!ENABLE_EV2_IMPL)
     SVN_ERR(get_editor_ev1(&export_editor, &edit_baton, eb, ctx,
                            scratch_pool, scratch_pool));
@@ -1355,7 +1353,7 @@ export_directory(const char *from_path_o
 
       SVN_ERR(svn_dirent_get_absolute(&to_abspath, to_path, scratch_pool));
       SVN_ERR(svn_client__export_externals(eb->externals,
-                                           from_path_or_url,
+                                           from_url,
                                            to_abspath, eb->repos_root_url,
                                            depth, native_eol,
                                            ignore_keywords,
@@ -1402,8 +1400,12 @@ svn_client_export5(svn_revnum_t *result_
       svn_client__pathrev_t *loc;
       svn_ra_session_t *ra_session;
       svn_node_kind_t kind;
+      const char *from_url;
       struct edit_baton *eb = apr_pcalloc(pool, sizeof(*eb));
 
+      SVN_ERR(svn_client_url_from_path2(&from_url, from_path_or_url,
+                                        ctx, pool, pool));
+
       /* Get the RA connection. */
       SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &loc,
                                                 from_path_or_url, NULL,
@@ -1428,15 +1430,15 @@ svn_client_export5(svn_revnum_t *result_
       if (kind == svn_node_file)
         {
           if (!ENABLE_EV2_IMPL)
-            SVN_ERR(export_file(from_path_or_url, to_path, eb, loc, ra_session,
+            SVN_ERR(export_file(from_url, to_path, eb, loc, ra_session,
                                 overwrite, pool));
           else
-            SVN_ERR(export_file_ev2(from_path_or_url, to_path, eb, loc,
+            SVN_ERR(export_file_ev2(from_url, to_path, eb, loc,
                                     ra_session, overwrite, pool));
         }
       else if (kind == svn_node_dir)
         {
-          SVN_ERR(export_directory(from_path_or_url, to_path,
+          SVN_ERR(export_directory(from_url, to_path,
                                    eb, loc, ra_session, overwrite,
                                    ignore_externals, ignore_keywords, depth,
                                    native_eol, ctx, pool));