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));