Author: julianfoad
Date: Tue Jan  2 09:47:16 2018
New Revision: 1819798

URL: http://svn.apache.org/viewvc?rev=1819798&view=rev
Log:
On the 'shelve-checkpoint' branch: catch up with trunk@1819797.

Added:
    subversion/branches/shelve-checkpoint/notes/api-errata/1.10/ra001.txt
      - copied unchanged from r1819797, 
subversion/trunk/notes/api-errata/1.10/ra001.txt
    subversion/branches/shelve-checkpoint/tools/dist/edit-N-log-messages
      - copied unchanged from r1819797, 
subversion/trunk/tools/dist/edit-N-log-messages
Removed:
    subversion/branches/shelve-checkpoint/build/generator/util/executable.py
Modified:
    subversion/branches/shelve-checkpoint/   (props changed)
    subversion/branches/shelve-checkpoint/CHANGES
    subversion/branches/shelve-checkpoint/INSTALL
    subversion/branches/shelve-checkpoint/NOTICE
    subversion/branches/shelve-checkpoint/build/ac-macros/lz4.m4
    subversion/branches/shelve-checkpoint/build/ac-macros/utf8proc.m4
    subversion/branches/shelve-checkpoint/build/generator/gen_base.py
    subversion/branches/shelve-checkpoint/build/generator/swig/__init__.py
    
subversion/branches/shelve-checkpoint/build/generator/swig/checkout_swig_header.py
    
subversion/branches/shelve-checkpoint/build/generator/swig/external_runtime.py
    
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/t/3client.t
    
subversion/branches/shelve-checkpoint/subversion/include/private/svn_subr_private.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_io.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_types.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/patch.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/low_level.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/pack.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/   (props 
changed)
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/changes.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/low_level.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/pack.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/transaction.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_ra_serf/list.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_ra_svn/protocol
    subversion/branches/shelve-checkpoint/subversion/libsvn_repos/list.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/compress_lz4.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/config_file.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/io.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/object_pool.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/stream.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/sysinfo.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/version.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db.c
    subversion/branches/shelve-checkpoint/subversion/svn/cl.h
    subversion/branches/shelve-checkpoint/subversion/svn/conflict-callbacks.c
    subversion/branches/shelve-checkpoint/subversion/svn/list-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svn/notify.c
    subversion/branches/shelve-checkpoint/subversion/svn/svn.c
    subversion/branches/shelve-checkpoint/subversion/svnbench/svnbench.c
    subversion/branches/shelve-checkpoint/subversion/svnfsfs/load-index-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svnmucc/svnmucc.c
    subversion/branches/shelve-checkpoint/subversion/svnrdump/svnrdump.c
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/basic_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/main.py
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_client/conflicts-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_repos/authz-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_repos/dump-load-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/config-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/config-test.cfg
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/mergeinfo-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/priority-queue-test.c
    
subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
    
subversion/branches/shelve-checkpoint/tools/client-side/svnconflict/svnconflict.c
    subversion/branches/shelve-checkpoint/tools/dev/svnmover/svnmover.c
    subversion/branches/shelve-checkpoint/tools/dev/unix-build/Makefile.svn
    subversion/branches/shelve-checkpoint/tools/dist/backport.pl
    subversion/branches/shelve-checkpoint/tools/dist/release.py

Propchange: subversion/branches/shelve-checkpoint/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan  2 09:47:16 2018
@@ -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-1818270
+/subversion/trunk:1801593-1819797

Modified: subversion/branches/shelve-checkpoint/CHANGES
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/CHANGES?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/CHANGES (original)
+++ subversion/branches/shelve-checkpoint/CHANGES Tue Jan  2 09:47:16 2018
@@ -14,11 +14,14 @@ the 1.9 release:  https://subversion.apa
   - Major new features:
     * Better interactive conflict resolution for tree conflicts (r1687489 et 
al)
     * New and improved implementation of path-based authorization (r1776832)
+    * New experimental 'svn shelve' command (r1815228 et al)
   - Minor new features and improvements:
     * svnbench: Show wall-clock time when done (r1703383)
     * svnbench: Show number of bytes transferred across the network (r1710586)
     * svnbench: Actually evaluate the '--with-no-revprops' option (r1709593)
     * New 'svnadmin dump' options to include/exclude paths (r1811992)
+    * New 'svnadmin load' options to include/exclude paths (r1811992 et al)
+    * New '--normalize-props` option for 'svnadmin dump'(r1807836 et al)
     * New 'svnadmin load-revprops' subcommand (r1694191)
     * New 'svnadmin dump-revprops' subcommand (r1694225)
     * New '--no-flush-to-disk' option for 'svnadmin load' (r1736357, -7357)
@@ -36,6 +39,8 @@ the 1.9 release:  https://subversion.apa
     * diff3: Reduce processing time and memory usage (r1731659)
     * ra_serf: Adjustments for serf versions with HTTP/2 support (r1716400)
     * ra_serf: Send svndiff1 deltas during commit (r1704317, r1704613, 
r1791290)
+    * ra_serf: Stream svndiff deltas w/o creating temporary files (r1803143 et 
al)
+    * ra_serf: Don't necessarily request full MERGE reponses (r1806017 et al)
     * 'svn patch': Parse binary diffs in git-style patches (r1703925)
     * 'svnadmin info' now reports latest revision in the repository (r1697953)
     * ra_svn: Various performance-related tweaks (r1694490)
@@ -63,6 +68,7 @@ the 1.9 release:  https://subversion.apa
     * 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: New format 8 with various performance improvements (r1801940 et al)
     * 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)
@@ -78,26 +84,34 @@ the 1.9 release:  https://subversion.apa
     * 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)
-    * 'svn blame': Optimize a bit on the server side (r1711666)
     * Triple performance of URI escaping (r1710099, -103)
+    * 'svn blame': Optimize a bit on the server side (r1711666)
+    * 'svn cleanup': Add --vacuum-pristines option (r1802787 et al)
     * '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 patch': Handle zero-byte files vs deleted files (r1705856)
     * '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)
+    * 'svn lock', 'svn unlock': Take the -q option (r1796288)
+    * 'svn help': improved wording and consistency (r1802989 et al)
+    * 'svn': Add a new '--accept recommended' option. (r1805623)
+    * 'svn': --non-interactive uses recommended tree conflict resolution 
(r1805620)
     * Evaluate 'old mode' and 'new mode' lines from git-syle diffs (r1705391)
     * 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)
+    * Add 'http-compression=auto' client config option as default (r1803899 et 
al)
+    * Speed up processing of mergeinfo (r1802470 et al)
+    * Check for invalid 'xt' fields in x509 certs (r1809290)
   - Client-side bugfixes:
     * ra_serf: Fix segfault when running over HTTP v1 (r1766089)
     * ra_serf: Keep small svndiffs in memory during commit (r1724455)
     * ra_serf: Improve error messages related to lock operations (r1716450)
     * ra_serf: Work around a bug in serf bucket handling (r1714806)
+    * ra_serf: Fix lock token handling for file-path commits (r1815799 et al)
     * Raise a malfunction instead of segfaulting with corrupt wc.db (r1749887)
     * Fix check for unversioned obstructions blocking file externals (r1735932)
     * 'svn patch' bugfixes:
@@ -124,6 +138,7 @@ the 1.9 release:  https://subversion.apa
       + 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)
+    * 'svn diff --git': added/deleted filenames are never /dev/null (issue 
#4689)
     * 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)
@@ -131,6 +146,7 @@ the 1.9 release:  https://subversion.apa
     * Fix 'svn diff' with local directories marked incomplete (r1674413 et al)
     * ra_svn/ra_serf: Make negative log limits work as documented (r1665530)
     * ra_svn: Eliminate unnecessary URL reparenting (r1779611, r1779611)
+    * ra_svn: Use svndiff2 deltas when supported on both ends (r1803269 et al)
     * 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)
@@ -153,6 +169,7 @@ the 1.9 release:  https://subversion.apa
     * 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)
+    * FSFS: Fix issue #4623 for FSFS. (r1813794 et al)
     * 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)
@@ -161,13 +178,16 @@ 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)
+    * Fix for properties: Null updates break last-changed-revision (issue 
#4700)
     * 'svnfsfs stats': Fix false positive checksum errors reading old revisions
       (r1785904)
+    * 'svnfsfs stats': Fix support for pre-v4 FSFS repositories. (r1816966)
     * 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)
+    * svnserve: Make use-sasl=true a fatal error in SASL-less builds. 
(r1803188)
   - 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)
@@ -177,7 +197,9 @@ the 1.9 release:  https://subversion.apa
     * 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:
+    * Fix segfault with invalid URLs in svn:externals (r1803471)
+    * Windows: Failure to write files might remain undetected (r1806014)
+- Other tool improvements and bugfixes:
     * New svn-mergeinfo-normalizer tool (r1695992 et al)
     * Allow configuring mailer.py to use SMTP SSL (r1777846)
     * svnmucc can now delete directories with deleted children (issue #4666)
@@ -187,6 +209,8 @@ the 1.9 release:  https://subversion.apa
     * bash_completion: Add 1.10 options (r1802196)
     * fsfs-stats: Following rename to svnfsfs in r1594860, install a wrapper
       for compatibility (r1802032)
+    * Drop support for upgrading working copies created with Subversion 1.7
+      (r1807584 et al)
 
  Developer-visible changes:
   - General:
@@ -197,11 +221,16 @@ the 1.9 release:  https://subversion.apa
     * 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)
+    * windows: Allow building against OpenSSL 1.1.0 (r1814724 et al)
     * OS X: Silence compile-time deprecation warnings with SASL (r1739649)
+    * OS X: Silence ranlib warnings about disabled WIN32 code (r1809792)
     * 'make check GLOBAL_SCHEDULER=1' will run many tests in parallel 
(r1716399)
     * 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)
+    * tests: httpd compile-time and run-time version may differ (r1808955 et 
al)
+    * tests: Add pre-cooked repos for all FSFS versions. (r1816402 et al)
+    * tests: Add FSFS_DIR_DELTIFICATION option. (r1813897)
     * 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)
@@ -216,12 +245,19 @@ the 1.9 release:  https://subversion.apa
     * gnome-keyring: Support libsecret in preference to libgnome-keyring
       (r1798004)
     * kwallet: Support KDE 5 in preference to KDE 4 (r1798731)
+    * kwallet: Fix KDE5 support with clang 3.8 (r1802536 et al)
+    * kwallet: Add --with-kwallet=INCDIR:LIBDIR build option (r1802646)
     * 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)
+    * SQLite: Use https:// links to download amalgamation sources (r1817043)
+    * Create reproducible tarballs (r1804618 et al)
+    * Disable static builds of the apache and auth provider modules (r1802612)
+    * utf8proc: Update to version 2.1.0 (r1809090 et al)
+    * utf8proc: Build against the system library by default (r1803210 et al)
   - 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)
@@ -241,7 +277,10 @@ the 1.9 release:  https://subversion.apa
     * New svn_error_quick_wrapf() API function (r1662668)
     * New svn_repos_path_change_t type (r1802114)
     * New svn_repos_log_entry_t type (r1802114)
+    * New svn_cstring_join2() API (r1806041)
+    * New svn_txdelta_to_svndiff_stream() API (r1803140 et al)
     * svn_repos_parse_dumpstream3() now accepts NULL pointers (r1700180)
+    * Return resettable streams from svn_stream_checksummed2(). (r1804807)
     * Fix svnserveautocheck&davautocheck when time is only a built-in 
(r1665652)
   - Bindings:
     * Configure the swig bindings only if swig has been enabled (r1751167)
@@ -254,6 +293,8 @@ the 1.9 release:  https://subversion.apa
     * Disable some swig wrappers that aren't working (r1700966)
     * JavaHL: Make StringArray nullable (r1785429)
     * JavaHL: Add missing exception checks (r1801108)
+    * Ruby: Fix handling of NULL MD5 digests (r1811786)
+    * Ruby: Detect versions up to 2.4 (r1806570)
 
 
 Version 1.9.7

Modified: subversion/branches/shelve-checkpoint/INSTALL
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/INSTALL?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/INSTALL (original)
+++ subversion/branches/shelve-checkpoint/INSTALL Tue Jan  2 09:47:16 2018
@@ -527,6 +527,19 @@ I.    INTRODUCTION
 
       $ ./get-dep.sh gmock
 
+      22. LZ4 (OPTIONAL)
+
+      Subversion uses LZ4 compression libary version r129 or above. Configure
+      will attempt to locate the system library by default using pkg-config
+      and known paths.
+
+      If it is installed in a non-standard location, then use:
+
+        --with-lz4=/path/to/liblz4
+
+      If configure should use the version bundled with the sources, use:
+        --with-lz4=internal
+
   D. Documentation
 
       The primary documentation for Subversion is the free book

Modified: subversion/branches/shelve-checkpoint/NOTICE
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/NOTICE?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/NOTICE (original)
+++ subversion/branches/shelve-checkpoint/NOTICE Tue Jan  2 09:47:16 2018
@@ -1,5 +1,5 @@
 Apache Subversion
-Copyright 2017 The Apache Software Foundation
+Copyright 2018 The Apache Software Foundation
 
 This product includes software developed by many people, and distributed
 under Contributor License Agreements to The Apache Software Foundation

Modified: subversion/branches/shelve-checkpoint/build/ac-macros/lz4.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/ac-macros/lz4.m4?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/ac-macros/lz4.m4 (original)
+++ subversion/branches/shelve-checkpoint/build/ac-macros/lz4.m4 Tue Jan  2 
09:47:16 2018
@@ -28,7 +28,15 @@ AC_DEFUN(SVN_LZ4,
   AC_ARG_WITH([lz4],
     [AS_HELP_STRING([--with-lz4=PREFIX|internal],
                     [look for lz4 in PREFIX or use the internal code])],
-    [lz4_prefix="$withval"],
+    [
+      if test "$withval" = internal; then
+        lz4_prefix=internal
+      elif test "$withval" = yes; then
+        lz4_prefix=std
+      else
+        lz4_prefix="$withval"
+      fi
+    ],
     [lz4_prefix=std])
 
   if test "$lz4_prefix" = "internal"; then
@@ -42,28 +50,36 @@ AC_DEFUN(SVN_LZ4,
       SVN_LZ4_PREFIX
     fi
     if test "$lz4_found" != "yes"; then
-      AC_MSG_ERROR([Subversion requires LZ4])
+      AC_MSG_ERROR([Subversion requires LZ4 >= r129, or use 
--with-lz4=internal])
     fi
   fi
   AC_SUBST(SVN_LZ4_INCLUDES)
   AC_SUBST(SVN_LZ4_LIBS)
 ])
 
+dnl LZ4 changed versioning schemes after r131, the next version being 1.7.3, so
+dnl we need to check for both schemes.  We can't use "--atleast-version=1.7.3"
+dnl because that will result in a >= 1 check for the older versioning scheme.
+dnl Instead, fallback to --max-version=3 if the old scheme fails.  This gives a
+dnl little room for major version changes, but won't falsely identify old
+dnl versions as supported.
 AC_DEFUN(SVN_LZ4_STD,
 [
   if test -n "$PKG_CONFIG"; then
     AC_MSG_CHECKING([for lz4 library via pkg-config])
-    if $PKG_CONFIG liblz4 --exists; then
+    if $PKG_CONFIG liblz4 --atleast-version=129 || $PKG_CONFIG liblz4 
--max-version=3; then
       AC_MSG_RESULT([yes])
       lz4_found=yes
       SVN_LZ4_INCLUDES=`$PKG_CONFIG liblz4 --cflags`
       SVN_LZ4_LIBS=`$PKG_CONFIG liblz4 --libs`
       SVN_LZ4_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($SVN_LZ4_LIBS)`"
+    else
+      AC_MSG_RESULT([no])
     fi
-  else
+  fi
+  if test "$lz4_found" != "yes"; then
     AC_MSG_NOTICE([lz4 configuration without pkg-config])
-    AC_CHECK_LIB(lz4, LZ4_decompress_safe, [
-      AC_MSG_RESULT([yes])
+    AC_CHECK_LIB(lz4, LZ4_compress_default, [
       lz4_found=yes
       SVN_LZ4_LIBS="-llz4"
     ])
@@ -77,8 +93,7 @@ AC_DEFUN(SVN_LZ4_PREFIX,
   CPPFLAGS="$CPPFLAGS -I$lz4_prefix/include"
   save_ldflags="$LDFLAGS"
   LDFLAGS="$LDFLAGS -L$lz4_prefix/lib"
-  AC_CHECK_LIB(lz4, LZ4_decompress_safe, [
-    AC_MSG_RESULT([yes])
+  AC_CHECK_LIB(lz4, LZ4_compress_default, [
     lz4_found=yes
     SVN_LZ4_INCLUDES="-I$lz4_prefix/include"
     SVN_LZ4_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS(-L$lz4_prefix/lib)` -llz4"

Modified: subversion/branches/shelve-checkpoint/build/ac-macros/utf8proc.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/ac-macros/utf8proc.m4?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/ac-macros/utf8proc.m4 (original)
+++ subversion/branches/shelve-checkpoint/build/ac-macros/utf8proc.m4 Tue Jan  
2 09:47:16 2018
@@ -28,7 +28,15 @@ AC_DEFUN(SVN_UTF8PROC,
   AC_ARG_WITH([utf8proc],
     [AS_HELP_STRING([--with-utf8proc=PREFIX|internal],
                     [look for utf8proc in PREFIX or use the internal code])],
-    [utf8proc_prefix="$withval"],
+    [
+      if test "$withval" = internal; then
+        utf8proc_prefix=internal
+      elif test "$withval" = yes; then
+        utf8proc_prefix=std
+      else
+        utf8proc_prefix="$withval"
+      fi
+    ],
     [utf8proc_prefix=std])
 
   if test "$utf8proc_prefix" = "internal"; then
@@ -53,7 +61,6 @@ AC_DEFUN(SVN_UTF8PROC_STD,
 [
   AC_MSG_NOTICE([utf8proc configuration without pkg-config])
   AC_CHECK_LIB(utf8proc, utf8proc_version, [
-    AC_MSG_RESULT([yes])
      utf8proc_found=yes
      SVN_UTF8PROC_LIBS="-lutf8proc"
   ])
@@ -67,7 +74,6 @@ AC_DEFUN(SVN_UTF8PROC_PREFIX,
   save_ldflags="$LDFLAGS"
   LDFLAGS="$LDFLAGS -L$utf8proc_prefix/lib"
   AC_CHECK_LIB(utf8proc, utf8proc_version, [
-    AC_MSG_RESULT([yes])
     utf8proc_found=yes
     SVN_UTF8PROC_INCLUDES="-I$utf8proc_prefix/include"
     SVN_UTF8PROC_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS(-L$utf8proc_prefix/lib)` 
-lutf8proc"

Modified: subversion/branches/shelve-checkpoint/build/generator/gen_base.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/generator/gen_base.py?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/generator/gen_base.py (original)
+++ subversion/branches/shelve-checkpoint/build/generator/gen_base.py Tue Jan  
2 09:47:16 2018
@@ -331,7 +331,8 @@ class GeneratorBase:
                                '\n'.join(lines))
 
   def errno_filter(self, codes):
-    return codes
+    # list() to force the generator under python3
+    return list(codes)
 
   class FileSectionOptionEnum(object):
     # These are accessed via getattr() later on

Modified: subversion/branches/shelve-checkpoint/build/generator/swig/__init__.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/generator/swig/__init__.py?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/generator/swig/__init__.py 
(original)
+++ subversion/branches/shelve-checkpoint/build/generator/swig/__init__.py Tue 
Jan  2 09:47:16 2018
@@ -25,7 +25,7 @@
 import os
 import re
 import shutil
-import generator.util.executable as _exec
+import subprocess
 from generator.gen_base import _collect_paths
 try:
   # Python >=3.0
@@ -59,14 +59,19 @@ class Generator:
 
     # Calculate SWIG paths
     self.swig_path = swig_path
-    self.swig_libdir = _exec.output([self.swig_path, "-swiglib"], strip=1)
+    if os.access(self.swig_path, os.X_OK):
+      # ### TODO: What's the reason for this os.access() check?  It was added
+      # ### in r873265 (== r33191).
+      self.swig_libdir = subprocess.check_output([self.swig_path, 
"-swiglib"]).strip()
+    else:
+      self.swig_libdir = None
 
   _swigVersion = None
   def version(self):
     """Get the version number of SWIG"""
 
     if not self._swigVersion:
-      swig_version = _exec.output([self.swig_path, "-version"])
+      swig_version = subprocess.check_output([self.swig_path, "-version"])
       m = re.search("Version (\d+).(\d+).(\d+)", swig_version)
       if m:
         self._swigVersion = tuple(map(int, m.groups()))

Modified: 
subversion/branches/shelve-checkpoint/build/generator/swig/checkout_swig_header.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/generator/swig/checkout_swig_header.py?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/build/generator/swig/checkout_swig_header.py
 (original)
+++ 
subversion/branches/shelve-checkpoint/build/generator/swig/checkout_swig_header.py
 Tue Jan  2 09:47:16 2018
@@ -23,13 +23,12 @@
 # Checkout files from the SWIG library into Subversion's proxy directory
 #
 
-import sys, os, re, fileinput, shutil
+import sys, os, re, fileinput, shutil, subprocess
 if __name__ == "__main__":
   parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))
   sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ]
 import generator.swig
 from gen_base import build_path_splitfile, build_path_join
-from generator.util.executable import run
 
 class Generator(generator.swig.Generator):
 
@@ -63,7 +62,7 @@ class Generator(generator.swig.Generator
     elif self.version() == (1, 3, 24):
       shutil.copy(build_path_join(self.swig_libdir, path), out)
     else:
-      run("%s -o %s -co %s" % (self.swig_path, out, path))
+      subprocess.check_call([self.swig_path, "-o", out, "-co", path])
 
   def _skip_checkout(self, path):
     """Should we skip this checkout?"""

Modified: 
subversion/branches/shelve-checkpoint/build/generator/swig/external_runtime.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/generator/swig/external_runtime.py?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/build/generator/swig/external_runtime.py 
(original)
+++ 
subversion/branches/shelve-checkpoint/build/generator/swig/external_runtime.py 
Tue Jan  2 09:47:16 2018
@@ -29,13 +29,12 @@ import os
 import re
 import fileinput
 import filecmp
+import subprocess
 
 if __name__ == "__main__":
   parent_dir = os.path.dirname(os.path.abspath(os.path.dirname(sys.argv[0])))
   sys.path[0:0] = [ parent_dir, os.path.dirname(parent_dir) ]
 import generator.swig
-import generator.util.executable
-_exec = generator.util.executable
 
 class Generator(generator.swig.Generator):
   """Generate external runtime files for SWIG"""
@@ -82,7 +81,7 @@ class Generator(generator.swig.Generator
         out_file.write(open("%s/runtime.swg" % self.proxy_dir).read())
       out_file.close()
     else:
-      _exec.run("%s -%s -external-runtime %s" % (self.swig_path, lang, out))
+      subprocess.check_call([self.swig_path, "-"+lang, "-external-runtime", 
out])
 
     # SWIG 1.3.24-27 should include rubyhead.swg in their
     # external runtime, but they don't.

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/t/3client.t
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/t/3client.t?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/t/3client.t
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/t/3client.t
 Tue Jan  2 09:47:16 2018
@@ -1091,8 +1091,8 @@ isa_ok($dirents->{'dir1'},'_p_svn_dirent
 is($dirents->{'dir1'}->kind(),$SVN::Core::node_dir,
    'kind() returns a dir node');
 # TEST
-is($dirents->{'dir1'}->size(),0,
-   'size() returns 0 for a directory');
+is($dirents->{'dir1'}->size(), -1,
+   'size() returns -1 for a directory');
 # TEST
 is($dirents->{'dir1'}->has_props(),1,
    'has_props() returns true');

Modified: 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_subr_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/include/private/svn_subr_private.h?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_subr_private.h
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_subr_private.h
 Tue Jan  2 09:47:16 2018
@@ -738,6 +738,14 @@ const char *svn_zlib__compiled_version(v
 /* Return the zlib version we run against. */
 const char *svn_zlib__runtime_version(void);
 
+/* Return the lz4 version we compiled against. */
+const char *svn_lz4__compiled_version(void);
+
+/* Return the lz4 version we run against as a composed value:
+ * major * 100 * 100 + minor * 100 + release
+ */
+int svn_lz4__runtime_version(void);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/shelve-checkpoint/subversion/include/svn_io.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/include/svn_io.h?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/include/svn_io.h (original)
+++ subversion/branches/shelve-checkpoint/subversion/include/svn_io.h Tue Jan  
2 09:47:16 2018
@@ -2633,6 +2633,15 @@ svn_io_file_readline(apr_file_t *file,
                      apr_pool_t *result_pool,
                      apr_pool_t *scratch_pool);
 
+/** Reads a string from stdin until a newline or EOF is found
+ *
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_io_stdin_readline(const char **result,
+                      apr_pool_t *result_pool,
+                      apr_pool_t *scratch_pool);
+
 /** @} */
 
 #ifdef __cplusplus

Modified: subversion/branches/shelve-checkpoint/subversion/include/svn_types.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/include/svn_types.h?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/include/svn_types.h 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/include/svn_types.h Tue 
Jan  2 09:47:16 2018
@@ -652,7 +652,7 @@ typedef struct svn_dirent_t
   /** node kind */
   svn_node_kind_t kind;
 
-  /** length of file text, or 0 for directories */
+  /** length of file text, otherwise SVN_INVALID_FILESIZE */
   svn_filesize_t size;
 
   /** does the node have props? */

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_client/patch.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_client/patch.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_client/patch.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_client/patch.c Tue 
Jan  2 09:47:16 2018
@@ -2145,8 +2145,8 @@ reject_hunk(patch_target_t *target, targ
   if (prop_name)
     {
       /* ### Print 'Added', 'Deleted' or 'Modified' instead of 'Property'. */
-      svn_stream_printf(target->reject_stream,
-                        pool, "Property: %s" APR_EOL_STR, prop_name);
+      SVN_ERR(svn_stream_printf(target->reject_stream,
+                                pool, "Property: %s" APR_EOL_STR, prop_name));
       atat = prop_atat;
     }
   else

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/low_level.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/low_level.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/low_level.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/low_level.c 
Tue Jan  2 09:47:16 2018
@@ -670,7 +670,7 @@ svn_fs_fs__write_changes(svn_stream_t *s
     }
 
   if (terminate_list)
-    svn_stream_puts(stream, "\n");
+    SVN_ERR(svn_stream_puts(stream, "\n"));
 
   svn_pool_destroy(iterpool);
 

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/pack.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/pack.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/pack.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/pack.c Tue 
Jan  2 09:47:16 2018
@@ -2067,9 +2067,9 @@ pack_body(void *baton,
   if (fully_packed)
     {
       if (pb->notify_func)
-        (*pb->notify_func)(pb->notify_baton,
-                           ffd->min_unpacked_rev / ffd->max_files_per_dir,
-                           svn_fs_pack_notify_noop, pool);
+        SVN_ERR(pb->notify_func(pb->notify_baton,
+                                ffd->min_unpacked_rev / ffd->max_files_per_dir,
+                                svn_fs_pack_notify_noop, pool));
 
       return SVN_NO_ERROR;
     }
@@ -2122,7 +2122,7 @@ svn_fs_fs__pack(svn_fs_t *fs,
   if (!ffd->max_files_per_dir)
     {
       if (notify_func)
-        (*notify_func)(notify_baton, -1, svn_fs_pack_notify_noop, pool);
+        SVN_ERR(notify_func(notify_baton, -1, svn_fs_pack_notify_noop, pool));
 
       return SVN_NO_ERROR;
     }
@@ -2132,9 +2132,9 @@ svn_fs_fs__pack(svn_fs_t *fs,
   if (fully_packed)
     {
       if (notify_func)
-        (*notify_func)(notify_baton,
-                       ffd->min_unpacked_rev / ffd->max_files_per_dir,
-                       svn_fs_pack_notify_noop, pool);
+        SVN_ERR(notify_func(notify_baton,
+                            ffd->min_unpacked_rev / ffd->max_files_per_dir,
+                            svn_fs_pack_notify_noop, pool));
 
       return SVN_NO_ERROR;
     }

Propchange: subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan  2 09:47:16 2018
@@ -96,4 +96,4 @@
 
/subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639,1546002-1546110
 /subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
 
/subversion/trunk/subversion/libsvn_fs_fs:1415133-1596500,1596567,1597414,1597989,1598273,1599140,1600872,1601633,1603485-1603487,1603499,1603605,1604128,1604188,1604413-1604414,1604416-1604417,1604421,1604442,1604700,1604717,1604720,1604726,1604755,1604794,1604802,1604824,1604836,1604844,1604902-1604903,1604911,1604925,1604933,1604947,1605059-1605060,1605064-1605065,1605068,1605071-1605073,1605075,1605123,1605188-1605189,1605191,1605197,1605444,1605633,1606132,1606142,1606144,1606514,1606526,1606528,1606551,1606554,1606564,1606598-1606599,1606656,1606658,1606662,1606744,1606840,1607085,1607572,1612407,1612810,1613339,1613872,1614611,1615348,1615351-1615352,1615356,1616338-1616339,1616613,1617586,1617688,1618138,1618151,1618153,1618226,1618641,1618653,1618662,1619068,1619358,1619413,1619769,1619774,1620602,1620909,1620912,1620928,1620930,1621275,1621635,1622931,1622937,1622942,1622946,1622959-1622960,1622963,1622987,1623007,1623368,1623373,1623377,1623379,1623381,1623398,1623402,162
 
4011,1624265,1624512,1626246,1626871,1626873,1626886,1627497-1627498,1627502,1627947-1627949,1627966,1628083,1628093,1628158-1628159,1628161,1628392-1628393,1628415,1628427,1628676,1628738,1628762,1628764,1629854-1629855,1629857,1629865,1629873,1629875,1629879,1630067,1630070,1631049-1631051,1631075,1631115,1631171,1631180,1631185-1631186,1631196-1631197,1631239-1631240,1631548,1631550,1631563,1631567,1631588,1631598,1632646,1632776,1632849,1632851-1632853,1632856-1632857,1632868,1632908,1632926,1633232,1633617-1633618,1634872,1634875,1634879-1634880,1634920,1636478,1636483,1636629,1636644,1637184,1637186,1637330,1637358,1637363,1637393,1639319,1639322,1639335,1639348,1639352,1639355,1639358,1639414,1639419,1639426,1639430,1639436,1639440,1639549,1640061-1640062,1640197,1640915,1640966,1641013,1643139,1643233,1645567,1646021,1646712,1646716,1647537,1647540-1647541,1647820,1647905,1648230,1648238,1648241-1648243,1648253,1648272,1648532,1648537-1648539,1648542,1648591,1648612,1649590,
 
1651567,1652068,1652076,1652441,1652451,1653608,1654932,1654934,1654937,1655635,1655649,1655651,1655664,1656176,1657525,1657972,1657978,1658482,1659212,1659217,1659314,1659509,1662668,1665318,1665854,1665894,1667090,1667101,1667538,1669743,1669746,1669749,1669945,1670139,1670953,1673170,1673197,1673202,1673204,1673445,1673454,1673685,1673689,1673875,1674165,1674341,1674400,1674404,1674631,1674669,1674673,1675396,1676667,1677431,1678149,1678151,1678718,1678725,1679169,1679907,1679920-1679924,1679926,1680347,1680460,1680464,1680476,1680819,1681949,1681966,1681974,1681994,1682008,1682076,1682086,1682093,1682259,1682265,1682739,1682864,1683311,1683330,1683378,1683544,1683553,1684047,1686232,1686542,1686546,1686554,1686557,1687061,1687064,1687070-1687071,1687074,1687078-1687079,1688270,1688425,1692650,1693886,1694489,1694848,1696171,1696185,1696627-1696628,1696630,1696758,1697372,1697381,1697387,1697393,1697403,1697405,1701017,1701053,1702600,1702922,1703069,1703142,1703237,1703240,17052
 
66,1705638,1705643,1705646,1705724,1705730,1705739,1706612,1706615,1706617,1706619,1706675-1706676,1706679,1706979-1706980,1707308,1707971-1707973,1707986,1707988-1707989,1708004,1709388,1709799,1710017,1710359,1710368,1710370,1711507,1711582,1711672,1712927,1715793,1715947,1716047,1716067,1716784,1716973-1716974,1717332,1717334,1717864,1719269,1719336,1719413,1719730,1720015,1721285,1723715,1723720,1723834,1723839,1725179-1725180,1726004,1726099,1726116,1726897,1726995,1727006-1727007,1727028,1727040,1727707,1727822,1730491,1735916,1736357,1736359,1737355-1737356,1740721-1740722,1741096,1741200,1741206,1741214,1741224,1742540,1745055,1745107,1745852,1746006,1746012,1746026,1756258-1756266,1756364,1756377,1759117,1759122-1759126,1759135,1759404-1759405,1759686,1764340,1764481,1764676,1766352,1780810,1781655,1781694,1785053,1785737-1785738,1785741,1785754,1785904,1786445-1786446,1786515
-/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1815225-1815228
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1801593-1819797

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/changes.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/changes.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/changes.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/changes.c Tue 
Jan  2 09:47:16 2018
@@ -184,7 +184,7 @@ svn_fs_x__changes_append_list(apr_size_t
 
   /* simply append the list and all changes */
   for (i = 0; i < list->nelts; ++i)
-    append_change(changes, APR_ARRAY_IDX(list, i, svn_fs_x__change_t *));
+    SVN_ERR(append_change(changes, APR_ARRAY_IDX(list, i, svn_fs_x__change_t 
*)));
 
   /* terminate the list by storing the next changes offset */
   APR_ARRAY_PUSH(changes->offsets, int) = changes->changes->nelts;

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/low_level.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/low_level.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/low_level.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/low_level.c 
Tue Jan  2 09:47:16 2018
@@ -1131,7 +1131,7 @@ svn_fs_x__write_changes(svn_stream_t *st
     }
 
   if (terminate_list)
-    svn_stream_puts(stream, "\n");
+    SVN_ERR(svn_stream_puts(stream, "\n"));
 
   svn_pool_destroy(iterpool);
 

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/pack.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/pack.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/pack.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/pack.c Tue Jan 
 2 09:47:16 2018
@@ -2204,9 +2204,9 @@ pack_body(void *baton,
   if (fully_packed)
     {
       if (pb->notify_func)
-        (*pb->notify_func)(pb->notify_baton,
-                           ffd->min_unpacked_rev / ffd->max_files_per_dir,
-                           svn_fs_pack_notify_noop, scratch_pool);
+        SVN_ERR(pb->notify_func(pb->notify_baton,
+                                ffd->min_unpacked_rev / ffd->max_files_per_dir,
+                                svn_fs_pack_notify_noop, scratch_pool));
 
       return SVN_NO_ERROR;
     }
@@ -2258,9 +2258,9 @@ svn_fs_x__pack(svn_fs_t *fs,
       svn_fs_x__data_t *ffd = fs->fsap_data;
 
       if (notify_func)
-        (*notify_func)(notify_baton,
-                       ffd->min_unpacked_rev / ffd->max_files_per_dir,
-                       svn_fs_pack_notify_noop, scratch_pool);
+        SVN_ERR(notify_func(notify_baton,
+                            ffd->min_unpacked_rev / ffd->max_files_per_dir,
+                            svn_fs_pack_notify_noop, scratch_pool));
 
       return SVN_NO_ERROR;
     }

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/transaction.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/transaction.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/transaction.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_fs_x/transaction.c 
Tue Jan  2 09:47:16 2018
@@ -1259,7 +1259,7 @@ get_and_increment_txn_key_body(void *bat
       SVN_ERR(svn_io_check_path(txn_dir, &kind, iterpool));
       if (kind == svn_node_none)
         {
-          svn_io_dir_make(txn_dir, APR_OS_DEFAULT, iterpool);
+          SVN_ERR(svn_io_dir_make(txn_dir, APR_OS_DEFAULT, iterpool));
           break;
         }
 

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_ra_local/ra_plugin.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_ra_local/ra_plugin.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/libsvn_ra_local/ra_plugin.c 
(original)
+++ 
subversion/branches/shelve-checkpoint/subversion/libsvn_ra_local/ra_plugin.c 
Tue Jan  2 09:47:16 2018
@@ -1387,7 +1387,7 @@ svn_ra_local__get_dir(svn_ra_session_t *
             {
               /* size  */
               if (fs_entry->kind == svn_node_dir)
-                entry->size = 0;
+                entry->size = SVN_INVALID_FILESIZE;
               else
                 SVN_ERR(svn_fs_file_length(&(entry->size), root,
                                            fullpath, iterpool));

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_ra_serf/list.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_ra_serf/list.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_ra_serf/list.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_ra_serf/list.c Tue 
Jan  2 09:47:16 2018
@@ -21,26 +21,13 @@
  * ====================================================================
  */
 
-
-
-
-#include <apr_uri.h>
 #include <serf.h>
 
 #include "svn_hash.h"
-#include "svn_pools.h"
-#include "svn_ra.h"
-#include "svn_dav.h"
 #include "svn_base64.h"
 #include "svn_xml.h"
-#include "svn_config.h"
-#include "svn_path.h"
-#include "svn_props.h"
 #include "svn_time.h"
 
-#include "private/svn_dav_protocol.h"
-#include "private/svn_string_private.h"
-#include "private/svn_subr_private.h"
 #include "svn_private_config.h"
 
 #include "ra_serf.h"
@@ -152,6 +139,8 @@ item_closed(svn_ra_serf__xml_estate_t *x
 
       if (size)
         SVN_ERR(svn_cstring_atoi64(&dirent.size, size));
+      else
+        dirent.size = SVN_INVALID_FILESIZE;
 
       if (crev)
         SVN_ERR(svn_revnum_parse(&dirent.created_rev, crev, NULL));

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_ra_svn/protocol
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_ra_svn/protocol?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_ra_svn/protocol 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_ra_svn/protocol Tue 
Jan  2 09:47:16 2018
@@ -342,7 +342,7 @@ second place for auth-request point as n
   stat
     params:   ( path:string [ rev:number ] )
     response: ( ? entry:dirent )
-    dirent:   ( name:string kind:node-kind size:number has-props:bool
+    dirent:   ( kind:node-kind size:number has-props:bool
                 created-rev:number [ created-date:string ]
                 [ last-author:string ] )
     New in svn 1.2.  If path is non-existent, an empty response is returned.

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_repos/list.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_repos/list.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_repos/list.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_repos/list.c Tue 
Jan  2 09:47:16 2018
@@ -50,6 +50,8 @@ fill_dirent(svn_dirent_t *dirent,
 
   if (dirent->kind == svn_node_file)
     SVN_ERR(svn_fs_file_length(&(dirent->size), root, path, scratch_pool));
+  else
+    dirent->size = SVN_INVALID_FILESIZE;
 
   SVN_ERR(svn_fs_node_has_props(&dirent->has_props, root, path,
                                 scratch_pool));

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_subr/compress_lz4.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/compress_lz4.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/compress_lz4.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/compress_lz4.c 
Tue Jan  2 09:47:16 2018
@@ -126,3 +126,19 @@ svn__decompress_lz4(const void *data, ap
 
   return SVN_NO_ERROR;
 }
+
+const char *
+svn_lz4__compiled_version(void)
+{
+  static const char lz4_version_str[] = APR_STRINGIFY(LZ4_VERSION_MAJOR) "." \
+                                        APR_STRINGIFY(LZ4_VERSION_MINOR) "." \
+                                        APR_STRINGIFY(LZ4_VERSION_RELEASE);
+
+  return lz4_version_str;
+}
+
+int
+svn_lz4__runtime_version(void)
+{
+  return LZ4_versionNumber();
+}

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_subr/config_file.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/config_file.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/config_file.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/config_file.c 
Tue Jan  2 09:47:16 2018
@@ -466,6 +466,7 @@ parse_value_continuation_lines(int *pch,
               else
                 {
                   /* This is a continuation line. Read it. */
+                  SVN_ERR(parser_ungetc(ctx, ch));
                   SVN_ERR(parser_get_line(ctx, ctx->line_read, &ch));
 
                   /* Trailing whitespace is ignored. */

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_subr/io.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/io.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/io.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/io.c Tue Jan  
2 09:47:16 2018
@@ -5440,3 +5440,20 @@ svn_io_file_readline(apr_file_t *file,
 
   return SVN_NO_ERROR;
 }
+
+svn_error_t *
+svn_io_stdin_readline(const char **result,
+                      apr_pool_t *result_pool,
+                      apr_pool_t *scratch_pool)
+{
+  svn_stringbuf_t *buf = NULL;
+  svn_stream_t *stdin_stream = NULL;
+  svn_boolean_t oob = FALSE;
+
+  SVN_ERR(svn_stream_for_stdin2(&stdin_stream, TRUE, scratch_pool));
+  SVN_ERR(svn_stream_readline(stdin_stream, &buf, APR_EOL_STR, &oob, 
result_pool));
+
+  *result = buf->data;
+
+  return SVN_NO_ERROR;
+}

Modified: 
subversion/branches/shelve-checkpoint/subversion/libsvn_subr/object_pool.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/object_pool.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/object_pool.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/object_pool.c 
Tue Jan  2 09:47:16 2018
@@ -172,9 +172,11 @@ add_object_ref(object_ref_t *object_ref,
   if (svn_atomic_inc(&object_ref->ref_count) == 0)
     svn_atomic_dec(&object_ref->object_pool->unused_count);
 
-  /* make sure the reference gets released automatically */
-  apr_pool_cleanup_register(pool, object_ref, object_ref_cleanup,
-                            apr_pool_cleanup_null);
+  /* Make sure the reference gets released automatically.
+     Since POOL might be a parent pool of OBJECT_REF->OBJECT_POOL,
+     to the reference counting update before destroing any of the
+     pool hierarchy. */
+  apr_pool_pre_cleanup_register(pool, object_ref, object_ref_cleanup);
 }
 
 /* Actual implementation of svn_object_pool__lookup.

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_subr/stream.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/stream.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/stream.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/stream.c Tue 
Jan  2 09:47:16 2018
@@ -1468,10 +1468,10 @@ seek_handler_checksum(void *baton, const
   else
     {
       if (btn->read_ctx)
-        svn_checksum_ctx_reset(btn->read_ctx);
+        SVN_ERR(svn_checksum_ctx_reset(btn->read_ctx));
 
       if (btn->write_ctx)
-        svn_checksum_ctx_reset(btn->write_ctx);
+        SVN_ERR(svn_checksum_ctx_reset(btn->write_ctx));
 
       SVN_ERR(svn_stream_reset(btn->proxy));
     }

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_subr/sysinfo.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/sysinfo.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/sysinfo.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/sysinfo.c Tue 
Jan  2 09:47:16 2018
@@ -127,7 +127,8 @@ const apr_array_header_t *
 svn_sysinfo__linked_libs(apr_pool_t *pool)
 {
   svn_version_ext_linked_lib_t *lib;
-  apr_array_header_t *array = apr_array_make(pool, 6, sizeof(*lib));
+  apr_array_header_t *array = apr_array_make(pool, 7, sizeof(*lib));
+  int lz4_version = svn_lz4__runtime_version();
 
   lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
   lib->name = "APR";
@@ -167,6 +168,15 @@ svn_sysinfo__linked_libs(apr_pool_t *poo
   lib->compiled_version = apr_pstrdup(pool, svn_zlib__compiled_version());
   lib->runtime_version = apr_pstrdup(pool, svn_zlib__runtime_version());
 
+  lib = &APR_ARRAY_PUSH(array, svn_version_ext_linked_lib_t);
+  lib->name = "LZ4";
+  lib->compiled_version = apr_pstrdup(pool, svn_lz4__compiled_version());
+
+  lib->runtime_version = apr_psprintf(pool, "%d.%d.%d",
+                                      lz4_version / 100 / 100,
+                                      (lz4_version / 100) % 100,
+                                      lz4_version % 100);
+
   return array;
 }
 

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_subr/version.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_subr/version.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_subr/version.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_subr/version.c Tue 
Jan  2 09:47:16 2018
@@ -143,7 +143,7 @@ svn_version_extended(svn_boolean_t verbo
   info->build_time = __TIME__;
   info->build_host = SVN_BUILD_HOST;
   info->copyright = apr_pstrdup
-    (pool, _("Copyright (C) 2017 The Apache Software Foundation.\n"
+    (pool, _("Copyright (C) 2018 The Apache Software Foundation.\n"
              "This software consists of contributions made by many people;\n"
              "see the NOTICE file for more information.\n"
              "Subversion is open source software, see "

Modified: subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db.c Tue Jan  
2 09:47:16 2018
@@ -16525,8 +16525,8 @@ db_process_commit_queue(svn_wc__db_t *db
                                                         iterpool),
                                                     iterpool, iterpool));
 
-              lock_remove_txn(queue->wcroot, cqi->local_relpath, work_item,
-                              iterpool);
+              SVN_ERR(lock_remove_txn(queue->wcroot, cqi->local_relpath,
+                                      work_item, iterpool));
             }
           if (cqi->remove_changelist)
             SVN_ERR(svn_wc__db_op_set_changelist(db,

Modified: subversion/branches/shelve-checkpoint/subversion/svn/cl.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svn/cl.h?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svn/cl.h (original)
+++ subversion/branches/shelve-checkpoint/subversion/svn/cl.h Tue Jan  2 
09:47:16 2018
@@ -178,6 +178,7 @@ typedef struct svn_cl__opt_state_t
   svn_boolean_t help;            /* print usage message */
   const char *auth_username;     /* auth username */
   const char *auth_password;     /* auth password */
+  svn_boolean_t auth_password_from_stdin; /* read password from stdin */
   const char *extensions;        /* subprocess extension args */
   apr_array_header_t *targets;   /* target list from file */
   svn_boolean_t xml;             /* output in xml, e.g., "svn log --xml" */

Modified: 
subversion/branches/shelve-checkpoint/subversion/svn/conflict-callbacks.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svn/conflict-callbacks.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svn/conflict-callbacks.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/svn/conflict-callbacks.c 
Tue Jan  2 09:47:16 2018
@@ -1654,8 +1654,8 @@ prompt_move_target_path(int *preferred_m
         {
           char buf[1024];
 
-          svn_cmdline_fprintf(stderr, iterpool, "%s\n",
-                              svn_err_best_message(err, buf, sizeof(buf)));
+          SVN_ERR(svn_cmdline_fprintf(stderr, iterpool, "%s\n",
+                                      svn_err_best_message(err, buf, 
sizeof(buf))));
           svn_error_clear(err);
           continue;
         }

Modified: subversion/branches/shelve-checkpoint/subversion/svn/list-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svn/list-cmd.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svn/list-cmd.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/svn/list-cmd.c Tue Jan  2 
09:47:16 2018
@@ -385,14 +385,20 @@ svn_cl__list(apr_getopt_t *os,
               apr_array_header_t *pattern_group
                 = APR_ARRAY_IDX(opt_state->search_patterns, k,
                                 apr_array_header_t *);
+              const char *pattern;
 
               /* Should never fail but ... */
               if (pattern_group->nelts != 1)
                 return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
                                   _("'search-and' option is not supported"));
 
-              APR_ARRAY_PUSH(patterns, const char *)
-                = APR_ARRAY_IDX(pattern_group, 0, const char *);
+              pattern = APR_ARRAY_IDX(pattern_group, 0, const char *);
+#if defined(WIN32)
+              /* As we currently can't pass glob patterns via the Windows
+                 CLI, fall back to sub-string search. */
+              pattern = apr_psprintf(subpool, "*%s*", pattern);
+#endif
+              APR_ARRAY_PUSH(patterns, const char *) = pattern;
             }
         }
 

Modified: subversion/branches/shelve-checkpoint/subversion/svn/notify.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svn/notify.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svn/notify.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/svn/notify.c Tue Jan  2 
09:47:16 2018
@@ -210,7 +210,7 @@ svn_cl__conflict_stats_get_paths(apr_arr
         }
     }
 
-  svn_hash_keys(conflicted_paths, all_conflicts, result_pool);
+  SVN_ERR(svn_hash_keys(conflicted_paths, all_conflicts, result_pool));
   svn_sort__array(*conflicted_paths, svn_sort_compare_paths);
 
   return SVN_NO_ERROR;

Modified: subversion/branches/shelve-checkpoint/subversion/svn/svn.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svn/svn.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svn/svn.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/svn/svn.c Tue Jan  2 
09:47:16 2018
@@ -68,6 +68,7 @@
    use the short option letter as identifier.  */
 typedef enum svn_cl__longopt_t {
   opt_auth_password = SVN_OPT_FIRST_LONGOPT_ID,
+  opt_auth_password_from_stdin,
   opt_auth_username,
   opt_autoprops,
   opt_changelist,
@@ -202,6 +203,9 @@ const apr_getopt_option_t svn_cl__option
                     N_("specify a password ARG (caution: on many operating\n"
                        "                             "
                        "systems, other users will be able to see this)")},
+  {"password-from-stdin",
+                    opt_auth_password_from_stdin, 0,
+                    N_("read password from stdin")},
   {"extensions",    'x', 1,
                     N_("Specify differencing options for external diff or\n"
                        "                             "
@@ -502,7 +506,8 @@ const apr_getopt_option_t svn_cl__option
    command to take these arguments allows scripts to just pass them
    willy-nilly to every invocation of 'svn') . */
 const int svn_cl__global_options[] =
-{ opt_auth_username, opt_auth_password, opt_no_auth_cache, opt_non_interactive,
+{ opt_auth_username, opt_auth_password, opt_auth_password_from_stdin,
+  opt_no_auth_cache, opt_non_interactive,
   opt_force_interactive, opt_trust_server_cert,
   opt_trust_server_cert_failures,
   opt_config_dir, opt_config_options, 0
@@ -799,7 +804,34 @@ const svn_opt_subcommand_desc2_t svn_cl_
      opt_changelist, opt_include_externals, opt_show_item, opt_no_newline}
   },
 
-  { "list", svn_cl__list, {"ls"}, N_
+  { "list", svn_cl__list, {"ls"},
+#if defined(WIN32)
+    N_
+    ("List directory entries in the repository.\n"
+     "usage: list [TARGET[@REV]...]\n"
+     "\n"
+     "  List each TARGET file and the contents of each TARGET directory as\n"
+     "  they exist in the repository.  If TARGET is a working copy path, the\n"
+     "  corresponding repository URL will be used. If specified, REV 
determines\n"
+     "  in which revision the target is first looked up.\n"
+     "\n"
+     "  The default TARGET is '.', meaning the repository URL of the current\n"
+     "  working directory.\n"
+     "\n"
+     "  Multiple --search patterns may be specified and the output will be\n"
+     "  reduced to those paths whose last segment - i.e. the file or 
directory\n"
+     "  name - contains a sub-string matching at least one of these patterns\n"
+     "  (Windows only).\n"
+     "\n"
+     "  With --verbose, the following fields will be shown for each item:\n"
+     "\n"
+     "    Revision number of the last commit\n"
+     "    Author of the last commit\n"
+     "    If locked, the letter 'O'.  (Use 'svn info URL' to see details)\n"
+     "    Size (in bytes)\n"
+     "    Date and time of the last commit\n"),
+#else
+    N_
     ("List directory entries in the repository.\n"
      "usage: list [TARGET[@REV]...]\n"
      "\n"
@@ -822,6 +854,7 @@ const svn_opt_subcommand_desc2_t svn_cl_
      "    If locked, the letter 'O'.  (Use 'svn info URL' to see details)\n"
      "    Size (in bytes)\n"
      "    Date and time of the last commit\n"),
+#endif
     {'r', 'v', 'R', opt_depth, opt_incremental, opt_xml,
      opt_include_externals, opt_search}, },
 
@@ -2067,6 +2100,7 @@ sub_main(int *exit_code, int argc, const
   apr_hash_t *changelists;
   apr_hash_t *cfg_hash;
   svn_membuf_t buf;
+  svn_boolean_t read_pass_from_stdin = FALSE;
 
   received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
 
@@ -2362,6 +2396,9 @@ sub_main(int *exit_code, int argc, const
         SVN_ERR(svn_utf_cstring_to_utf8(&opt_state.auth_password,
                                         opt_arg, pool));
         break;
+      case opt_auth_password_from_stdin:
+        read_pass_from_stdin = TRUE;
+        break;
       case opt_encoding:
         opt_state.encoding = apr_pstrdup(pool, opt_arg);
         break;
@@ -2857,6 +2894,14 @@ sub_main(int *exit_code, int argc, const
                                   "--non-interactive"));
     }
 
+  /* --password-from-stdin can only be used with --non-interactive */
+  if (read_pass_from_stdin && !opt_state.non_interactive)
+    {
+      return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                              _("--password-from-stdin requires "
+                                "--non-interactive"));
+    }
+
   /* Disallow simultaneous use of both --diff-cmd and
      --internal-diff.  */
   if (opt_state.diff.diff_cmd && opt_state.diff.internal_diff)
@@ -3148,6 +3193,12 @@ sub_main(int *exit_code, int argc, const
                                    conflict_stats, pool));
     }
 
+  /* Get password from stdin if necessary */
+  if (read_pass_from_stdin)
+    {
+      SVN_ERR(svn_io_stdin_readline(&opt_state.auth_password, pool, pool));
+    }
+
   /* Set up our cancellation support. */
   svn_cl__check_cancel = svn_cmdline__setup_cancellation_handler();
   ctx->cancel_func = svn_cl__check_cancel;

Modified: subversion/branches/shelve-checkpoint/subversion/svnbench/svnbench.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svnbench/svnbench.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svnbench/svnbench.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/svnbench/svnbench.c Tue 
Jan  2 09:47:16 2018
@@ -53,6 +53,7 @@
    use the short option letter as identifier.  */
 typedef enum svn_cl__longopt_t {
   opt_auth_password = SVN_OPT_FIRST_LONGOPT_ID,
+  opt_auth_password_from_stdin,
   opt_auth_username,
   opt_config_dir,
   opt_config_options,
@@ -112,6 +113,8 @@ const apr_getopt_option_t svn_cl__option
   {"verbose",       'v', 0, N_("print extra information")},
   {"username",      opt_auth_username, 1, N_("specify a username ARG")},
   {"password",      opt_auth_password, 1, N_("specify a password ARG")},
+  {"password-from-stdin",
+                    opt_auth_password_from_stdin, 0, N_("read password from 
stdin")},
   {"targets",       opt_targets, 1,
                     N_("pass contents of file ARG as additional args")},
   {"depth",         opt_depth, 1,
@@ -197,7 +200,8 @@ const apr_getopt_option_t svn_cl__option
    command to take these arguments allows scripts to just pass them
    willy-nilly to every invocation of 'svn') . */
 const int svn_cl__global_options[] =
-{ opt_auth_username, opt_auth_password, opt_no_auth_cache, opt_non_interactive,
+{ opt_auth_username, opt_auth_password, opt_auth_password_from_stdin,
+  opt_no_auth_cache, opt_non_interactive,
   opt_trust_server_cert, opt_trust_server_cert_failures,
   opt_config_dir, opt_config_options, 0
 };
@@ -394,6 +398,7 @@ sub_main(int *exit_code, int argc, const
   apr_time_t start_time, time_taken;
   ra_progress_baton_t ra_progress_baton = {0};
   svn_membuf_t buf;
+  svn_boolean_t read_pass_from_stdin = FALSE;
 
   received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
 
@@ -625,6 +630,9 @@ sub_main(int *exit_code, int argc, const
         SVN_ERR(svn_utf_cstring_to_utf8(&opt_state.auth_password,
                                             opt_arg, pool));
         break;
+      case opt_auth_password_from_stdin:
+        read_pass_from_stdin = TRUE;
+        break;
       case opt_stop_on_copy:
         opt_state.stop_on_copy = TRUE;
         break;
@@ -842,6 +850,14 @@ sub_main(int *exit_code, int argc, const
                                   "--non-interactive"));
     }
 
+  /* --password-from-stdin can only be used with --non-interactive */
+  if (read_pass_from_stdin && !opt_state.non_interactive)
+    {
+      return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                              _("--password-from-stdin requires "
+                                "--non-interactive"));
+    }
+
   /* Ensure that 'revision_ranges' has at least one item, and make
      'start_revision' and 'end_revision' match that item. */
   if (opt_state.revision_ranges->nelts == 0)
@@ -919,6 +935,12 @@ sub_main(int *exit_code, int argc, const
                                        pool));
     }
 
+  /* Get password from stdin if necessary */
+  if (read_pass_from_stdin)
+    {
+      SVN_ERR(svn_io_stdin_readline(&opt_state.auth_password, pool, pool));
+    }
+
   /* Set up our cancellation support. */
   svn_cl__check_cancel = svn_cmdline__setup_cancellation_handler();
   ctx->cancel_func = svn_cl__check_cancel;

Modified: 
subversion/branches/shelve-checkpoint/subversion/svnfsfs/load-index-cmd.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svnfsfs/load-index-cmd.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svnfsfs/load-index-cmd.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/svnfsfs/load-index-cmd.c 
Tue Jan  2 09:47:16 2018
@@ -147,7 +147,7 @@ load_index(const char *path,
 
       /* Get the next line from the input and stop if there is none. */
       svn_pool_clear(iterpool);
-      svn_stream_readline(input, &line, "\n", &eol, iterpool);
+      SVN_ERR(svn_stream_readline(input, &line, "\n", &eol, iterpool));
       if (eol)
         break;
 

Modified: subversion/branches/shelve-checkpoint/subversion/svnmucc/svnmucc.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svnmucc/svnmucc.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svnmucc/svnmucc.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/svnmucc/svnmucc.c Tue Jan  
2 09:47:16 2018
@@ -297,6 +297,7 @@ help(FILE *stream, apr_pool_t *pool)
       "  -F [--file] ARG        : read log message from file ARG\n"
       "  -u [--username] ARG    : commit the changes as username ARG\n"
       "  -p [--password] ARG    : use ARG as the password\n"
+      "  --password-from-stdin  : read password from stdin\n"
       "  -U [--root-url] ARG    : interpret all action URLs relative to ARG\n"
       "  -r [--revision] ARG    : use revision ARG as baseline for changes\n"
       "  --with-revprop ARG     : set revision property in the following 
format:\n"
@@ -480,13 +481,15 @@ sub_main(int *exit_code, int argc, const
     non_interactive_opt,
     force_interactive_opt,
     trust_server_cert_opt,
-    trust_server_cert_failures_opt
+    trust_server_cert_failures_opt,
+    password_from_stdin_opt
   };
   static const apr_getopt_option_t options[] = {
     {"message", 'm', 1, ""},
     {"file", 'F', 1, ""},
     {"username", 'u', 1, ""},
     {"password", 'p', 1, ""},
+    {"password-from-stdin", password_from_stdin_opt, 0, ""},
     {"root-url", 'U', 1, ""},
     {"revision", 'r', 1, ""},
     {"with-revprop",  with_revprop_opt, 1, ""},
@@ -527,6 +530,7 @@ sub_main(int *exit_code, int argc, const
   svn_client_ctx_t *ctx;
   struct log_message_baton lmb;
   int i;
+  svn_boolean_t read_pass_from_stdin = FALSE;
 
   /* Check library versions */
   SVN_ERR(check_lib_versions());
@@ -572,6 +576,9 @@ sub_main(int *exit_code, int argc, const
         case 'p':
           password = apr_pstrdup(pool, arg);
           break;
+        case password_from_stdin_opt:
+          read_pass_from_stdin = TRUE;
+          break;
         case 'U':
           SVN_ERR(svn_utf_cstring_to_utf8(&root_url, arg, pool));
           if (! svn_path_is_url(root_url))
@@ -672,6 +679,15 @@ sub_main(int *exit_code, int argc, const
                                   "--non-interactive"));
     }
 
+  /* --password-from-stdin can only be used with --non-interactive */
+  if (read_pass_from_stdin && !non_interactive)
+    {
+      return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                              _("--password-from-stdin requires "
+                                "--non-interactive"));
+    }
+
+
   /* Copy the rest of our command-line arguments to an array,
      UTF-8-ing them along the way. */
   action_args = apr_array_make(pool, opts->argc, sizeof(const char *));
@@ -721,6 +737,12 @@ sub_main(int *exit_code, int argc, const
                                             "svnmucc: ", "--config-option"));
     }
 
+  /* Get password from stdin if necessary */
+  if (read_pass_from_stdin)
+    {
+      SVN_ERR(svn_io_stdin_readline(&password, pool, pool));
+    }
+
   SVN_ERR(svn_client_create_context2(&ctx, cfg_hash, pool));
 
   cfg_config = svn_hash_gets(cfg_hash, SVN_CONFIG_CATEGORY_CONFIG);

Modified: subversion/branches/shelve-checkpoint/subversion/svnrdump/svnrdump.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svnrdump/svnrdump.c?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svnrdump/svnrdump.c 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/svnrdump/svnrdump.c Tue 
Jan  2 09:47:16 2018
@@ -59,6 +59,7 @@ enum svn_svnrdump__longopt_t
     opt_config_option,
     opt_auth_username,
     opt_auth_password,
+    opt_auth_password_from_stdin,
     opt_auth_nocache,
     opt_non_interactive,
     opt_skip_revprop,
@@ -73,6 +74,7 @@ enum svn_svnrdump__longopt_t
                                    opt_config_option, \
                                    opt_auth_username, \
                                    opt_auth_password, \
+                                   opt_auth_password_from_stdin, \
                                    opt_auth_nocache, \
                                    opt_trust_server_cert, \
                                    opt_trust_server_cert_failures, \
@@ -114,6 +116,8 @@ static const apr_getopt_option_t svnrdum
                       N_("specify a username ARG")},
     {"password",      opt_auth_password, 1,
                       N_("specify a password ARG")},
+    {"password-from-stdin",   opt_auth_password_from_stdin, 0,
+                      N_("read password from stdin")},
     {"non-interactive", opt_non_interactive, 0,
                       N_("do no interactive prompting (default is to prompt\n"
                          "                             "
@@ -154,6 +158,7 @@ static const apr_getopt_option_t svnrdum
                        "valid certificate) and 'other' (all other not\n"
                        "                             "
                        "separately classified certificate errors).")},
+    {"dumpfile", 'F', 1, N_("Read or write to a dumpfile instead of 
stdin/stdout")},
     {0, 0, 0, 0}
   };
 
@@ -174,6 +179,7 @@ typedef struct opt_baton_t {
   svn_client_ctx_t *ctx;
   svn_ra_session_t *session;
   const char *url;
+  const char *dumpfile;
   svn_boolean_t help;
   svn_boolean_t version;
   svn_opt_revision_t start_revision;
@@ -463,31 +469,39 @@ replay_revisions(svn_ra_session_t *sessi
                  svn_revnum_t end_revision,
                  svn_boolean_t quiet,
                  svn_boolean_t incremental,
+                 const char *dumpfile,
                  apr_pool_t *pool)
 {
   struct replay_baton *replay_baton;
   const char *uuid;
-  svn_stream_t *stdout_stream;
+  svn_stream_t *output_stream;
 
-  SVN_ERR(svn_stream_for_stdout(&stdout_stream, pool));
+  if (dumpfile)
+    {
+      SVN_ERR(svn_stream_open_writable(&output_stream, dumpfile, pool, pool));
+    }
+  else
+    {
+      SVN_ERR(svn_stream_for_stdout(&output_stream, pool));
+    }
 
   replay_baton = apr_pcalloc(pool, sizeof(*replay_baton));
-  replay_baton->stdout_stream = stdout_stream;
+  replay_baton->stdout_stream = output_stream;
   replay_baton->extra_ra_session = extra_ra_session;
   replay_baton->quiet = quiet;
 
   /* Write the magic header and UUID */
-  SVN_ERR(svn_stream_printf(stdout_stream, pool,
+  SVN_ERR(svn_stream_printf(output_stream, pool,
                             SVN_REPOS_DUMPFILE_MAGIC_HEADER ": %d\n\n",
                             SVN_REPOS_DUMPFILE_FORMAT_VERSION));
   SVN_ERR(svn_ra_get_uuid2(session, &uuid, pool));
-  SVN_ERR(svn_stream_printf(stdout_stream, pool,
+  SVN_ERR(svn_stream_printf(output_stream, pool,
                             SVN_REPOS_DUMPFILE_UUID ": %s\n\n", uuid));
 
   /* Fake revision 0 if necessary */
   if (start_revision == 0)
     {
-      SVN_ERR(dump_revision_header(session, stdout_stream,
+      SVN_ERR(dump_revision_header(session, output_stream,
                                    start_revision, pool));
 
       /* Revision 0 has no tree changes, so we're done. */
@@ -506,7 +520,7 @@ replay_revisions(svn_ra_session_t *sessi
   if (!incremental)
     {
       SVN_ERR(dump_initial_full_revision(session, extra_ra_session,
-                                         stdout_stream, start_revision,
+                                         output_stream, start_revision,
                                          quiet, pool));
       start_revision++;
     }
@@ -538,16 +552,23 @@ replay_revisions(svn_ra_session_t *sessi
 static svn_error_t *
 load_revisions(svn_ra_session_t *session,
                svn_ra_session_t *aux_session,
-               const char *url,
+               const char *dumpfile,
                svn_boolean_t quiet,
                apr_hash_t *skip_revprops,
                apr_pool_t *pool)
 {
-  svn_stream_t *stdin_stream;
+  svn_stream_t *output_stream;
 
-  SVN_ERR(svn_stream_for_stdin2(&stdin_stream, TRUE, pool));
+  if (dumpfile)
+    {
+      SVN_ERR(svn_stream_open_readonly(&output_stream, dumpfile, pool, pool));
+    }
+  else
+    {
+      SVN_ERR(svn_stream_for_stdin2(&output_stream, TRUE, pool));
+    }
 
-  SVN_ERR(svn_rdump__load_dumpstream(stdin_stream, session, aux_session,
+  SVN_ERR(svn_rdump__load_dumpstream(output_stream, session, aux_session,
                                      quiet, skip_revprops,
                                      check_cancel, NULL, pool));
 
@@ -616,7 +637,8 @@ dump_cmd(apr_getopt_t *os,
   return replay_revisions(opt_baton->session, extra_ra_session,
                           opt_baton->start_revision.value.number,
                           opt_baton->end_revision.value.number,
-                          opt_baton->quiet, opt_baton->incremental, pool);
+                          opt_baton->quiet, opt_baton->incremental,
+                          opt_baton->dumpfile, pool);
 }
 
 /* Handle the "load" subcommand.  Implements `svn_opt_subcommand_t'.  */
@@ -630,8 +652,9 @@ load_cmd(apr_getopt_t *os,
 
   SVN_ERR(svn_client_open_ra_session2(&aux_session, opt_baton->url, NULL,
                                       opt_baton->ctx, pool, pool));
-  return load_revisions(opt_baton->session, aux_session, opt_baton->url,
-                        opt_baton->quiet, opt_baton->skip_revprops, pool);
+  return load_revisions(opt_baton->session, aux_session,
+                        opt_baton->dumpfile, opt_baton->quiet,
+                        opt_baton->skip_revprops, pool);
 }
 
 /* Handle the "help" subcommand.  Implements `svn_opt_subcommand_t'.  */
@@ -772,12 +795,14 @@ sub_main(int *exit_code, int argc, const
   apr_getopt_t *os;
   apr_array_header_t *received_opts;
   int i;
+  svn_boolean_t read_pass_from_stdin = FALSE;
 
   opt_baton = apr_pcalloc(pool, sizeof(*opt_baton));
   opt_baton->start_revision.kind = svn_opt_revision_unspecified;
   opt_baton->end_revision.kind = svn_opt_revision_unspecified;
   opt_baton->url = NULL;
   opt_baton->skip_revprops = apr_hash_make(pool);
+  opt_baton->dumpfile = NULL;
 
   SVN_ERR(svn_cmdline__getopt_init(&os, argc, argv, pool));
 
@@ -850,6 +875,9 @@ sub_main(int *exit_code, int argc, const
         case opt_auth_password:
           SVN_ERR(svn_utf_cstring_to_utf8(&password, opt_arg, pool));
           break;
+        case opt_auth_password_from_stdin:
+          read_pass_from_stdin = TRUE;
+          break;
         case opt_auth_nocache:
           no_auth_cache = TRUE;
           break;
@@ -890,6 +918,11 @@ sub_main(int *exit_code, int argc, const
                                                      opt_arg, 
                                                      "svnrdump: ",
                                                      pool));
+          break;
+        case 'F':
+          SVN_ERR(svn_utf_cstring_to_utf8(&opt_arg, opt_arg, pool));
+          opt_baton->dumpfile = opt_arg;
+          break;
         }
     }
 
@@ -1005,6 +1038,24 @@ sub_main(int *exit_code, int argc, const
                                   "--non-interactive"));
     }
 
+  if (read_pass_from_stdin && !non_interactive)
+    {
+      return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                              _("--password-from-stdin requires "
+                                "--non-interactive"));
+    }
+
+  if (strcmp(subcommand->name, "load") == 0)
+    {
+      if (read_pass_from_stdin && opt_baton->dumpfile == NULL)
+        {
+          /* error here, since load cannot process a password over stdin */
+          return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+                                  _("load subcommand with "
+                                    "--password-from-stdin requires -F"));
+        }
+    }
+
   /* Expect one more non-option argument:  the repository URL. */
   if (os->ind != os->argc - 1)
     {
@@ -1039,6 +1090,12 @@ sub_main(int *exit_code, int argc, const
         force_interactive = (username == NULL || password == NULL);
     }
 
+  /* Get password from stdin if necessary */
+  if (read_pass_from_stdin)
+    {
+      SVN_ERR(svn_io_stdin_readline(&password, pool, pool));
+    }
+
   non_interactive = !svn_cmdline__be_interactive(non_interactive,
                                                  force_interactive);
 

Modified: 
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/basic_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/basic_tests.py?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/basic_tests.py 
(original)
+++ 
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/basic_tests.py 
Tue Jan  2 09:47:16 2018
@@ -3114,7 +3114,7 @@ def plaintext_password_storage_disabled(
       f.close()
 
 
-
+@Skip(svntest.main.is_os_windows)
 def filtered_ls(sbox):
   "filtered 'svn ls'"
 

Modified: 
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout?rev=1819798&r1=1819797&r2=1819798&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
 Tue Jan  2 09:47:16 2018
@@ -135,6 +135,7 @@ Global options:
   --username ARG           : specify a username ARG
   --password ARG           : specify a password ARG (caution: on many operating
                              systems, other users will be able to see this)
+  --password-from-stdin    : read password from stdin
   --no-auth-cache          : do not cache authentication tokens
   --non-interactive        : do no interactive prompting (default is to prompt
                              only if standard input is a terminal device)
@@ -225,6 +226,7 @@ Global options:
   --username ARG           : specify a username ARG
   --password ARG           : specify a password ARG (caution: on many operating
                              systems, other users will be able to see this)
+  --password-from-stdin    : read password from stdin
   --no-auth-cache          : do not cache authentication tokens
   --non-interactive        : do no interactive prompting (default is to prompt
                              only if standard input is a terminal device)


Reply via email to