You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by tr...@apache.org on 2018/01/31 04:16:44 UTC

svn commit: r1822736 [1/3] - in /subversion/branches/swig-py3: ./ build/ build/generator/ build/generator/swig/ build/generator/util/ subversion/bindings/javahl/native/ subversion/bindings/swig/python/libsvn_swig_py/ subversion/include/ subversion/incl...

Author: troycurtisjr
Date: Wed Jan 31 04:16:43 2018
New Revision: 1822736

URL: http://svn.apache.org/viewvc?rev=1822736&view=rev
Log:
On branch swig-py3: Catchup to trunk @r1822734.

Added:
    subversion/branches/swig-py3/subversion/libsvn_client/shelf.c
      - copied unchanged from r1822734, subversion/trunk/subversion/libsvn_client/shelf.c
    subversion/branches/swig-py3/subversion/svn/shelf-cmd.c
      - copied unchanged from r1822734, subversion/trunk/subversion/svn/shelf-cmd.c
    subversion/branches/swig-py3/subversion/tests/cmdline/shelf_tests.py
      - copied unchanged from r1822734, subversion/trunk/subversion/tests/cmdline/shelf_tests.py
    subversion/branches/swig-py3/tools/dist/edit-N-log-messages
      - copied unchanged from r1822734, subversion/trunk/tools/dist/edit-N-log-messages
Removed:
    subversion/branches/swig-py3/build/generator/util/executable.py
    subversion/branches/swig-py3/subversion/tests/cmdline/shelve_tests.py
Modified:
    subversion/branches/swig-py3/   (props changed)
    subversion/branches/swig-py3/CHANGES
    subversion/branches/swig-py3/Makefile.in
    subversion/branches/swig-py3/NOTICE
    subversion/branches/swig-py3/build/generator/gen_base.py
    subversion/branches/swig-py3/build/generator/swig/__init__.py
    subversion/branches/swig-py3/build/generator/swig/checkout_swig_header.py
    subversion/branches/swig-py3/build/generator/swig/external_runtime.py
    subversion/branches/swig-py3/build/run_tests.py
    subversion/branches/swig-py3/subversion/bindings/javahl/native/Prompter.cpp
    subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/branches/swig-py3/subversion/include/private/svn_cmdline_private.h
    subversion/branches/swig-py3/subversion/include/svn_base64.h
    subversion/branches/swig-py3/subversion/include/svn_client.h
    subversion/branches/swig-py3/subversion/include/svn_io.h
    subversion/branches/swig-py3/subversion/include/svn_ra.h
    subversion/branches/swig-py3/subversion/include/svn_ra_svn.h
    subversion/branches/swig-py3/subversion/include/svn_repos.h
    subversion/branches/swig-py3/subversion/include/svn_string.h
    subversion/branches/swig-py3/subversion/include/svn_wc.h
    subversion/branches/swig-py3/subversion/include/svn_xml.h
    subversion/branches/swig-py3/subversion/libsvn_client/client.h
    subversion/branches/swig-py3/subversion/libsvn_client/conflicts.c
    subversion/branches/swig-py3/subversion/libsvn_client/deprecated.c
    subversion/branches/swig-py3/subversion/libsvn_client/diff.c
    subversion/branches/swig-py3/subversion/libsvn_client/revert.c
    subversion/branches/swig-py3/subversion/libsvn_client/shelve.c
    subversion/branches/swig-py3/subversion/libsvn_diff/parse-diff.c
    subversion/branches/swig-py3/subversion/libsvn_subr/cmdline.c
    subversion/branches/swig-py3/subversion/libsvn_subr/config_file.c
    subversion/branches/swig-py3/subversion/libsvn_subr/io.c
    subversion/branches/swig-py3/subversion/libsvn_subr/version.c
    subversion/branches/swig-py3/subversion/libsvn_wc/deprecated.c
    subversion/branches/swig-py3/subversion/libsvn_wc/revert.c
    subversion/branches/swig-py3/subversion/libsvn_wc/wc.h
    subversion/branches/swig-py3/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/swig-py3/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/swig-py3/subversion/mod_dav_svn/version.c
    subversion/branches/swig-py3/subversion/svn/cl.h
    subversion/branches/swig-py3/subversion/svn/diff-cmd.c
    subversion/branches/swig-py3/subversion/svn/log-cmd.c
    subversion/branches/swig-py3/subversion/svn/revert-cmd.c
    subversion/branches/swig-py3/subversion/svn/shelve-cmd.c
    subversion/branches/swig-py3/subversion/svn/svn.c
    subversion/branches/swig-py3/subversion/svnbench/svnbench.c
    subversion/branches/swig-py3/subversion/svnmucc/svnmucc.c
    subversion/branches/swig-py3/subversion/svnrdump/svnrdump.c
    subversion/branches/swig-py3/subversion/tests/cmdline/davautocheck.sh
    subversion/branches/swig-py3/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
    subversion/branches/swig-py3/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
    subversion/branches/swig-py3/subversion/tests/cmdline/patch_tests.py
    subversion/branches/swig-py3/subversion/tests/cmdline/svntest/main.py
    subversion/branches/swig-py3/subversion/tests/cmdline/svntest/verify.py
    subversion/branches/swig-py3/subversion/tests/libsvn_subr/config-test.c
    subversion/branches/swig-py3/subversion/tests/libsvn_subr/config-test.cfg
    subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
    subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
    subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svncheck.sh
    subversion/branches/swig-py3/tools/buildbot/slaves/bb-openbsd/svnclean.sh
    subversion/branches/swig-py3/tools/client-side/bash_completion
    subversion/branches/swig-py3/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
    subversion/branches/swig-py3/tools/client-side/svnconflict/svnconflict.c
    subversion/branches/swig-py3/tools/dev/svnmover/svnmover.c
    subversion/branches/swig-py3/tools/dev/unix-build/Makefile.svn
    subversion/branches/swig-py3/tools/dev/unix-build/README
    subversion/branches/swig-py3/tools/dist/backport.pl
    subversion/branches/swig-py3/tools/examples/ExampleAuthn.java

Propchange: subversion/branches/swig-py3/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 31 04:16:43 2018
@@ -99,4 +99,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1813660-1819202
+/subversion/trunk:1813660-1822734

Modified: subversion/branches/swig-py3/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/CHANGES?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/CHANGES (original)
+++ subversion/branches/swig-py3/CHANGES Wed Jan 31 04:16:43 2018
@@ -13,29 +13,28 @@ the 1.9 release:  https://subversion.apa
  User-visible changes:
   - Major new features:
     * Better interactive conflict resolution for tree conflicts (r1687489 et al)
-    * New and improved implementation of path-based authorization (r1776832)
+    * Wilcards and improved performance in path-based authorization (r1776832)
+    * New experimental 'svn shelve' command (issue #3625)
   - 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-revprops' subcommand (r1694191)
-    * New 'svnadmin dump-revprops' subcommand (r1694225)
+    * svnbench: Show time taken & bytes transferred (r1703383, r1710586)
+    * New 'svnadmin dump' options to include/exclude paths (r1811992 et al)
+    * New '--normalize-props' option for 'svnadmin dump' (r1807836 et al)
+    * New 'svnadmin 'load-revprops', 'dump-revprops' subcommands (r1694191, -225)
     * New '--no-flush-to-disk' option for 'svnadmin load' (r1736357, -7357)
     * New '--file' option for several svnadmin subcommands (r1738021)
-    * New '--max-request-size' option for svnserve (r1714330)
-    * New '--max-response-size' option for svnserve (r1714333)
+    * New '--max-request-size', '--max-response-size' options for svnserve (r1714330, -333)
     * New '-rN' option for 'svnadmin lstxns' (r1703699)
     * New '--search' option for fast 'svn ls' searches (r1767186 et al)
     * 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)
-    * 'svn log --search' is now case-insensitive (r1731300)
-    * 'svn log --search' now ignores diacriticals when matching words (r1735614)
+    * 'svn log --search' now ignores case and diacriticals (r1731300, r1735614)
     * Improved performance of server-side log processing (r1732768, r1731656)
     * 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,8 +62,9 @@ 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)
+    * FSFS/FSX: Improvements to cache implementation (r1694489)
     * FSX: Add checksums to packed revprop manifests and files (r1713132, -9717)
     * FSX: Significantly reduce size of packed revprop manifest data (r1713109)
     * FSX: Improved on-disk representation of property lists (r1717427)
@@ -78,26 +78,35 @@ 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)
+    * ra_serf: Receive svndiff1 and gzip compressed deltas (r1791282, -3, -4)
     * 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:
+    * svnbench: Honour the '--with-no-revprops' option (r1709593)
     * 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 +133,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 +141,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 +164,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 +173,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,16 +192,18 @@ 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)
+    * 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)
     * svn-vendor.py: Minor enhancements, mostly in treating symlinks (r1732669)
-    * bash_completion: Implement much better URL completion (r1701494)
+    * bash_completion: 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)
+    * fsfs-stats: New 1.8-compatible wrapper for 'svnfsfs stats' (r1802032)
+    * Drop support for upgrading working copies created with Subversion 1.7
+      (r1807584 et al)
 
  Developer-visible changes:
   - General:
@@ -197,11 +214,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 +238,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 +270,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 +286,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
@@ -2969,7 +3003,7 @@ the 1.6 release:  http://subversion.apac
     * fixed: ra_serf doesn't support http-auth-types config (issue #3435)
     * fixed: merge sets incorrect mergeinfo on skipped paths (issue #3440)
     * fixed: ra_serf inconsistent handling of cached authn creds (issue #3450)
-    * fixed: ra_serf sefault with using NTLM or Negotiate auth (r876910)
+    * fixed: ra_serf segfault with using NTLM or Negotiate auth (r876910)
     * fixed: excluded subtrees are not detected by svnversion (issue #3461)
     * fixed: submitting a changelist while obstructed item exists (issue #3484)
     * fixed: crash when changing an external's URL (issue #3530)

Modified: subversion/branches/swig-py3/Makefile.in
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/Makefile.in?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/Makefile.in (original)
+++ subversion/branches/swig-py3/Makefile.in Wed Jan 31 04:16:43 2018
@@ -602,6 +602,9 @@ check: bin @TRANSFORM_LIBTOOL_SCRIPTS@ $
 	  if test "$(FSFS_DIR_DELTIFICATION)" != ""; then                    \
 	    flags="--fsfs-dir-deltification $(FSFS_DIR_DELTIFICATION) $$flags";\
 	  fi;                                                                \
+	  if test "$(SVN_BIN_DIR)" != ""; then                               \
+	    flags="--bin $(SVN_BIN_DIR) $$flags";                            \
+	  fi;                                                                \
 	  LD_LIBRARY_PATH='$(auth_plugin_dirs):$(LD_LIBRARY_PATH)'           \
 	  $(PYTHON) $(top_srcdir)/build/run_tests.py                         \
 	            --config-file $(top_srcdir)/subversion/tests/tests.conf  \

Modified: subversion/branches/swig-py3/NOTICE
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/NOTICE?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/NOTICE (original)
+++ subversion/branches/swig-py3/NOTICE Wed Jan 31 04:16:43 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/swig-py3/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/build/generator/gen_base.py?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/build/generator/gen_base.py (original)
+++ subversion/branches/swig-py3/build/generator/gen_base.py Wed Jan 31 04:16:43 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/swig-py3/build/generator/swig/__init__.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/build/generator/swig/__init__.py?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/build/generator/swig/__init__.py (original)
+++ subversion/branches/swig-py3/build/generator/swig/__init__.py Wed Jan 31 04:16:43 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/swig-py3/build/generator/swig/checkout_swig_header.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/build/generator/swig/checkout_swig_header.py?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/build/generator/swig/checkout_swig_header.py (original)
+++ subversion/branches/swig-py3/build/generator/swig/checkout_swig_header.py Wed Jan 31 04:16:43 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/swig-py3/build/generator/swig/external_runtime.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/build/generator/swig/external_runtime.py?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/build/generator/swig/external_runtime.py (original)
+++ subversion/branches/swig-py3/build/generator/swig/external_runtime.py Wed Jan 31 04:16:43 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/swig-py3/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/build/run_tests.py?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/build/run_tests.py (original)
+++ subversion/branches/swig-py3/build/run_tests.py Wed Jan 31 04:16:43 2018
@@ -24,7 +24,7 @@
 #
 
 '''usage: python run_tests.py
-            [--verbose] [--log-to-stdout] [--cleanup]
+            [--verbose] [--log-to-stdout] [--cleanup] [--bin=<path>]
             [--parallel | --parallel=<n>] [--global-scheduler]
             [--url=<base-url>] [--http-library=<http-library>] [--enable-sasl]
             [--fs-type=<fs-type>] [--fsfs-packing] [--fsfs-sharding=<n>]

Modified: subversion/branches/swig-py3/subversion/bindings/javahl/native/Prompter.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/bindings/javahl/native/Prompter.cpp?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/bindings/javahl/native/Prompter.cpp (original)
+++ subversion/branches/swig-py3/subversion/bindings/javahl/native/Prompter.cpp Wed Jan 31 04:16:43 2018
@@ -342,8 +342,7 @@ svn_error_t *Prompter::dispatch_ssl_serv
   svn_auth_cred_ssl_server_trust_t *cred =
     static_cast<svn_auth_cred_ssl_server_trust_t*>(apr_pcalloc(pool, sizeof(*cred)));
   cred->may_save = save;
-  if (save)
-    cred->accepted_failures = failures;
+  cred->accepted_failures = failures;
   *cred_p = cred;
 
   return SVN_NO_ERROR;

Modified: subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/swig-py3/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Wed Jan 31 04:16:43 2018
@@ -2659,8 +2659,7 @@ svn_swig_py_make_stream(PyObject *py_io,
   svn_stream_t *stream;
 
   stream = svn_stream_create(py_io, pool);
-  svn_stream_set_read2(stream, NULL /* only full read support */,
-                       read_handler_pyio);
+  svn_stream_set_read2(stream, read_handler_pyio, NULL);
   svn_stream_set_write(stream, write_handler_pyio);
   svn_stream_set_close(stream, close_handler_pyio);
   apr_pool_cleanup_register(pool, py_io, svn_swig_py_stream_destroy,

Modified: subversion/branches/swig-py3/subversion/include/private/svn_cmdline_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/private/svn_cmdline_private.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/private/svn_cmdline_private.h (original)
+++ subversion/branches/swig-py3/subversion/include/private/svn_cmdline_private.h Wed Jan 31 04:16:43 2018
@@ -269,6 +269,15 @@ svn_cmdline__disable_cancellation_handle
 void
 svn_cmdline__cancellation_exit(void);
 
+/** Reads a string from stdin until a newline or EOF is found
+ *
+ * @since New in 1.10.
+ */
+svn_error_t *
+svn_cmdline__stdin_readline(const char **result,
+                            apr_pool_t *result_pool,
+                            apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/swig-py3/subversion/include/svn_base64.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_base64.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_base64.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_base64.h Wed Jan 31 04:16:43 2018
@@ -51,6 +51,8 @@ extern "C" {
  * stream will only consist of base64 encoding characters. Be sure to close
  * the stream when done writing in order to squeeze out the last bit of
  * encoded data.  The stream is allocated in @a pool.
+ *
+ * @since New in 1.10.
  */
 svn_stream_t *
 svn_base64_encode2(svn_stream_t *output,

Modified: subversion/branches/swig-py3/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_client.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_client.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_client.h Wed Jan 31 04:16:43 2018
@@ -3060,6 +3060,11 @@ svn_client_blame(const char *path_or_url
  * The above two options are mutually exclusive. It is an error to set
  * both to TRUE.
  *
+ * If @a pretty_print_mergeinfo is true, then describe 'svn:mergeinfo'
+ * property changes in a human-readable form that says what changes were
+ * merged or reverse merged; otherwise (or if the mergeinfo property values
+ * don't parse correctly) display them just like any other property.
+ *
  * Generated headers are encoded using @a header_encoding.
  *
  * Diff output will not be generated for binary files, unless @a
@@ -3090,8 +3095,39 @@ svn_client_blame(const char *path_or_url
  * @note @a relative_to_dir doesn't affect the path index generated by
  * external diff programs.
  *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_diff7(const apr_array_header_t *diff_options,
+                 const char *path_or_url1,
+                 const svn_opt_revision_t *revision1,
+                 const char *path_or_url2,
+                 const svn_opt_revision_t *revision2,
+                 const char *relative_to_dir,
+                 svn_depth_t depth,
+                 svn_boolean_t ignore_ancestry,
+                 svn_boolean_t no_diff_added,
+                 svn_boolean_t no_diff_deleted,
+                 svn_boolean_t show_copies_as_adds,
+                 svn_boolean_t ignore_content_type,
+                 svn_boolean_t ignore_properties,
+                 svn_boolean_t properties_only,
+                 svn_boolean_t use_git_diff_format,
+                 svn_boolean_t pretty_print_mergeinfo,
+                 const char *header_encoding,
+                 svn_stream_t *outstream,
+                 svn_stream_t *errstream,
+                 const apr_array_header_t *changelists,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+/** Similar to svn_client_diff7(), but with @a pretty_print_mergeinfo
+ * always passed as @c TRUE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  * @since New in 1.8.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_diff6(const apr_array_header_t *diff_options,
                  const char *path_or_url1,
@@ -3249,14 +3285,45 @@ svn_client_diff(const apr_array_header_t
  * be either a working-copy path or URL.
  *
  * If @a peg_revision is #svn_opt_revision_unspecified, behave
- * identically to svn_client_diff6(), using @a path_or_url for both of that
+ * identically to svn_client_diff7(), using @a path_or_url for both of that
  * function's @a path_or_url1 and @a path_or_url2 arguments.
  *
- * All other options are handled identically to svn_client_diff6().
+ * All other options are handled identically to svn_client_diff7().
  *
  * @since New in 1.8.
  */
 svn_error_t *
+svn_client_diff_peg7(const apr_array_header_t *diff_options,
+                     const char *path_or_url,
+                     const svn_opt_revision_t *peg_revision,
+                     const svn_opt_revision_t *start_revision,
+                     const svn_opt_revision_t *end_revision,
+                     const char *relative_to_dir,
+                     svn_depth_t depth,
+                     svn_boolean_t ignore_ancestry,
+                     svn_boolean_t no_diff_added,
+                     svn_boolean_t no_diff_deleted,
+                     svn_boolean_t show_copies_as_adds,
+                     svn_boolean_t ignore_content_type,
+                     svn_boolean_t ignore_properties,
+                     svn_boolean_t properties_only,
+                     svn_boolean_t use_git_diff_format,
+                     svn_boolean_t pretty_print_mergeinfo,
+                     const char *header_encoding,
+                     svn_stream_t *outstream,
+                     svn_stream_t *errstream,
+                     const apr_array_header_t *changelists,
+                     svn_client_ctx_t *ctx,
+                     apr_pool_t *pool);
+
+/** Similar to svn_client_diff_peg7(), but with @a pretty_print_mergeinfo
+ * always passed as @c TRUE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ * @since New in 1.7.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_client_diff_peg6(const apr_array_header_t *diff_options,
                      const char *path_or_url,
                      const svn_opt_revision_t *peg_revision,
@@ -3419,7 +3486,7 @@ svn_client_diff_peg(const apr_array_head
  * Calls @a summarize_func with @a summarize_baton for each difference
  * with a #svn_client_diff_summarize_t structure describing the difference.
  *
- * See svn_client_diff6() for a description of the other parameters.
+ * See svn_client_diff7() for a description of the other parameters.
  *
  * @since New in 1.5.
  */
@@ -4274,17 +4341,23 @@ svn_client_relocate(const char *dir,
 
 /**
  * Restore the pristine version of working copy @a paths,
- * effectively undoing any local mods.  For each path in @a paths,
- * revert it if it is a file.  Else if it is a directory, revert
- * according to @a depth:
+ * effectively undoing any local mods. This means returning each
+ * path's versioned status to 'unmodified' and changing its on-disk
+ * state to match that.
+ *
+ * If an item was in a state of conflict, reverting also marks the
+ * conflict as resolved. If there are conflict marker files attached
+ * to the item, these are removed.
  *
  * @a paths is an array of (const char *) local WC paths.
  *
- * If @a depth is #svn_depth_empty, revert just the properties on
- * the directory; else if #svn_depth_files, revert the properties
+ * For each path in @a paths, revert it if it is a file.  Else if it is
+ * a directory, revert according to @a depth:
+ * If @a depth is #svn_depth_empty, revert just
+ * the directory; else if #svn_depth_files, revert the directory
  * and any files immediately under the directory; else if
  * #svn_depth_immediates, revert all of the preceding plus
- * properties on immediate subdirectories; else if #svn_depth_infinity,
+ * immediate subdirectories; else if #svn_depth_infinity,
  * revert path and everything under it fully recursively.
  *
  * @a changelists is an array of <tt>const char *</tt> changelist
@@ -4296,9 +4369,14 @@ svn_client_relocate(const char *dir,
  * If @a clear_changelists is TRUE, then changelist information for the
  * paths is cleared while reverting.
  *
- * If @a metadata_only is TRUE, the files and directories aren't changed
- * by the operation. If there are conflict marker files attached to the
- * targets these are removed.
+ * The @a metadata_only and @a added_keep_local options control the
+ * extent of reverting. If @a metadata_only is TRUE, the working copy
+ * files are untouched, but if there are conflict marker files attached
+ * to these files these markers are removed. Otherwise, if
+ * @a added_keep_local is TRUE, then all items are reverted except an
+ * item that was scheduled as plain 'add' (not a copy) will not be
+ * removed from the working copy. Otherwise, all items are reverted and
+ * their on-disk state changed to match.
  *
  * If @a ctx->notify_func2 is non-NULL, then for each item reverted,
  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of
@@ -4308,8 +4386,28 @@ svn_client_relocate(const char *dir,
  * then do not error, just invoke @a ctx->notify_func2 with @a
  * ctx->notify_baton2, using notification code #svn_wc_notify_skip.
  *
+ * @warn The 'revert' command intentionally and permanently loses
+ * local modifications.
+ *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_client_revert4(const apr_array_header_t *paths,
+                   svn_depth_t depth,
+                   const apr_array_header_t *changelists,
+                   svn_boolean_t clear_changelists,
+                   svn_boolean_t metadata_only,
+                   svn_boolean_t added_keep_local,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *scratch_pool);
+
+/** Similar to svn_client_revert4(), but with @a remove_added_from_disk set to
+ * FALSE.
+ *
  * @since New in 1.9.
+ * @deprecated Provided for backwards compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_revert3(const apr_array_header_t *paths,
                    svn_depth_t depth,
@@ -4376,7 +4474,7 @@ typedef struct svn_client_conflict_t svn
 typedef struct svn_client_conflict_option_t svn_client_conflict_option_t;
 
 /**
- * A public enumuneration of conflict option IDs.
+ * A public enumeration of conflict option IDs.
  *
  * @since New in 1.10, unless noted otherwise.
  */
@@ -6506,7 +6604,7 @@ svn_client_list4(const char *path_or_url
                  svn_client_ctx_t *ctx,
                  apr_pool_t *scratch_pool);
 
-/** Similar to svn_client_list4(), but with @a patterm set to @c NULL.
+/** Similar to svn_client_list4(), but with @a patterns set to @c NULL.
  *
  * @since New in 1.8.
  *
@@ -6715,7 +6813,262 @@ svn_client_cat(svn_stream_t *out,
 
 
 
-/** Shelving commands
+/** Shelving v2, with checkpoints
+ *
+ * @defgroup svn_client_shelves_checkpoints Shelves and checkpoints
+ * @{
+ */
+
+/** A shelf.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+typedef struct svn_client_shelf_t
+{
+    /* Public fields (read-only for public use) */
+    const char *name;
+    int max_version;
+
+    /* Private fields */
+    const char *wc_root_abspath;
+    const char *shelves_dir;
+    apr_hash_t *revprops;  /* non-null; allocated in POOL */
+    svn_client_ctx_t *ctx;
+    apr_pool_t *pool;
+} svn_client_shelf_t;
+
+/** One version of a shelved change-set.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+typedef struct svn_client_shelf_version_t
+{
+  /* Public fields (read-only for public use) */
+  svn_client_shelf_t *shelf;
+  apr_time_t mtime;  /** time-stamp of this version */
+
+  /* TODO: these should be Private fields */
+  const char *patch_abspath;  /** abspath of the patch file */
+} svn_client_shelf_version_t;
+
+/** Open an existing shelf or create a new shelf.
+ *
+ * The shelf should be closed after use by calling svn_client_shelf_close().
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_open(svn_client_shelf_t **shelf_p,
+                      const char *name,
+                      const char *local_abspath,
+                      svn_client_ctx_t *ctx,
+                      apr_pool_t *result_pool);
+
+/** Open an existing shelf or error if it doesn't exist.
+ *
+ * The shelf should be closed after use by calling svn_client_shelf_close().
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_open_existing(svn_client_shelf_t **shelf_p,
+                               const char *name,
+                               const char *local_abspath,
+                               svn_client_ctx_t *ctx,
+                               apr_pool_t *result_pool);
+
+/** Close @a shelf.
+ *
+ * If @a shelf is NULL, do nothing; otherwise @a shelf must be an open shelf.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_close(svn_client_shelf_t *shelf,
+                       apr_pool_t *scratch_pool);
+
+/** Delete a shelf, by name.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_delete(const char *name,
+                        const char *local_abspath,
+                        svn_boolean_t dry_run,
+                        svn_client_ctx_t *ctx,
+                        apr_pool_t *scratch_pool);
+
+/** Save the local modifications found by @a paths, @a depth,
+ * @a changelists as a new version of @a shelf.
+ *
+ * @a paths are relative to the CWD, or absolute.
+ *
+ * If there are no local modifications in the specified locations, do not
+ * create a new version of @a shelf.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_save_new_version(svn_client_shelf_t *shelf,
+                                  const apr_array_header_t *paths,
+                                  svn_depth_t depth,
+                                  const apr_array_header_t *changelists,
+                                  apr_pool_t *scratch_pool);
+
+/** Set the newest version of @a shelf to @a version.
+ *
+ * Delete all newer versions.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_set_current_version(svn_client_shelf_t *shelf,
+                                     int version,
+                                     apr_pool_t *scratch_pool);
+
+/** Open an existing shelf version.
+ *
+ * There is no need to "close" it after use.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_version_open(svn_client_shelf_version_t **shelf_version_p,
+                              svn_client_shelf_t *shelf,
+                              int version,
+                              apr_pool_t *result_pool,
+                              apr_pool_t *scratch_pool);
+
+/** Apply version @a version of @a shelf to the WC.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_apply(svn_client_shelf_version_t *shelf_version,
+                       svn_boolean_t dry_run,
+                       apr_pool_t *scratch_pool);
+
+/** Reverse-apply the current version of @a shelf to the WC.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_unapply(svn_client_shelf_version_t *shelf_version,
+                         svn_boolean_t dry_run,
+                         apr_pool_t *scratch_pool);
+
+/** Set @a *patch_abspath to the patch file path of @a shelf_version.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_get_patch_abspath(const char **patch_abspath,
+                                   svn_client_shelf_version_t *shelf_version,
+                                   apr_pool_t *scratch_pool);
+
+/** Output version @a version of @a shelf as a patch to @a outstream.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_export_patch(svn_client_shelf_version_t *shelf_version,
+                              svn_stream_t *outstream,
+                              apr_pool_t *scratch_pool);
+
+/** Set @a *affected_paths to a hash with one entry for each path affected
+ * by the @a shelf @a version. The hash key is the old path and value is
+ * the new path, both relative to the WC root. The key and value are the
+ * same except when a path is moved or copied.
+ *
+ * @since New in 1.10, changed in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_paths_changed(apr_hash_t **affected_paths,
+                               svn_client_shelf_version_t *shelf_version,
+                               apr_pool_t *result_pool,
+                               apr_pool_t *scratch_pool);
+
+/** Set the log message in @a shelf, using the log message callbacks in
+ * the client context, and set other revprops to @a revprop_table.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_set_log_message(svn_client_shelf_t *shelf,
+                                 apr_hash_t *revprop_table,
+                                 svn_boolean_t dry_run,
+                                 apr_pool_t *scratch_pool);
+
+/** Get the log message in @a shelf into @a *log_message.
+ *
+ * Set @a *log_message to NULL if there is no log message.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_get_log_message(char **log_message,
+                                 svn_client_shelf_t *shelf,
+                                 apr_pool_t *result_pool);
+
+/** Information about a shelf.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+typedef struct svn_client_shelf_info_t
+{
+  apr_time_t mtime;  /* mtime of the latest change */
+} svn_client_shelf_info_t;
+
+/** Set @a *shelved_patch_infos to a hash, keyed by shelf name, of pointers to
+ * @c svn_client_shelf_info_t structures.
+ *
+ * @a local_abspath is any path in the WC and is used to find the WC root.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_list(apr_hash_t **shelf_infos,
+                      const char *local_abspath,
+                      svn_client_ctx_t *ctx,
+                      apr_pool_t *result_pool,
+                      apr_pool_t *scratch_pool);
+
+/** @} */
+
+/** Shelving v1
  *
  * @defgroup svn_client_shelve_funcs Client Shelving Functions
  * @{
@@ -6808,26 +7161,6 @@ svn_client_shelves_list(apr_hash_t **she
                         apr_pool_t *result_pool,
                         apr_pool_t *scratch_pool);
 
-/** Set @a *any_shelved to indicate if there are any shelved changes in this WC.
- *
- * This shall provide the answer fast, regardless of how many changes
- * are stored, unlike svn_client_shelves_list().
- *
- * ### Initial implementation isn't O(1) fast -- it just calls
- *     svn_client_shelves_list().
- *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- *
- * @since New in 1.10.
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client_shelves_any(svn_boolean_t *any_shelved,
-                       const char *local_abspath,
-                       svn_client_ctx_t *ctx,
-                       apr_pool_t *scratch_pool);
-
 /** Set @a *affected_paths to a hash with one entry for each path affected
  * by the shelf @a name. The hash key is the old path and value is
  * the new path, both relative to the WC root. The key and value are the
@@ -6860,65 +7193,6 @@ svn_client_shelf_has_changes(svn_boolean
                              svn_client_ctx_t *ctx,
                              apr_pool_t *scratch_pool);
 
-/** Write local changes to a patch file for shelved change @a name.
- *
- * @a message: An optional log message.
- *
- * @a wc_root_abspath: The WC root dir.
- *
- * @a overwrite_existing: If a file at @a patch_abspath exists, overwrite it.
- *
- * @a paths, @a depth, @a changelists: The selection of local paths to diff.
- *
- * @since New in 1.10.
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client_shelf_write_patch(const char *name,
-                             const char *message,
-                             const char *wc_root_abspath,
-                             svn_boolean_t overwrite_existing,
-                             const apr_array_header_t *paths,
-                             svn_depth_t depth,
-                             const apr_array_header_t *changelists,
-                             svn_client_ctx_t *ctx,
-                             apr_pool_t *scratch_pool);
-
-/** Apply the patch file for shelved change @a name to the WC.
- *
- * @a wc_root_abspath: The WC root dir.
- *
- * @a reverse: Apply the patch in reverse.
- *
- * @a dry_run: Don't really apply the changes, just notify what would be done.
- *
- * @since New in 1.10.
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client_shelf_apply_patch(const char *name,
-                             const char *wc_root_abspath,
-                             svn_boolean_t reverse,
-                             svn_boolean_t dry_run,
-                             svn_client_ctx_t *ctx,
-                             apr_pool_t *scratch_pool);
-
-/** Delete the patch file for shelved change @a name.
- *
- * @a wc_root_abspath: The WC root dir.
- *
- * @since New in 1.10.
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client_shelf_delete_patch(const char *name,
-                              const char *wc_root_abspath,
-                              svn_client_ctx_t *ctx,
-                              apr_pool_t *scratch_pool);
-
 /** @} */
 
 /** Changelist commands
@@ -6927,15 +7201,6 @@ svn_client_shelf_delete_patch(const char
  * @{
  */
 
-/** Implementation note:
- *
- *  For now, changelists are implemented by scattering the
- *  associations across multiple .svn/entries files in a working copy.
- *  However, this client API was written so that we have the option of
- *  changing the underlying implementation -- we may someday want to
- *  store changelist definitions in a centralized database.
- */
-
 /**
  * Add each path in @a paths (recursing to @a depth as necessary) to
  * @a changelist.  If a path is already a member of another

Modified: subversion/branches/swig-py3/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_io.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_io.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_io.h Wed Jan 31 04:16:43 2018
@@ -2410,10 +2410,12 @@ svn_io_write_atomic2(const char *final_p
                      apr_pool_t *scratch_pool);
 
 /** Similar to svn_io_write_atomic2(), but with @a flush_to_disk set
-* to @c TRUE.
-*
-* @deprecated Provided for backward compatibility with the 1.9 API
-*/
+ * to @c TRUE.
+ *
+ * @since New in 1.9.
+ *
+ * @deprecated Provided for backward compatibility with the 1.9 API
+ */
 SVN_DEPRECATED
 svn_error_t *
 svn_io_write_atomic(const char *final_path,
@@ -2633,15 +2635,6 @@ 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/swig-py3/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_ra.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_ra.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_ra.h Wed Jan 31 04:16:43 2018
@@ -1130,13 +1130,12 @@ svn_ra_get_dir(svn_ra_session_t *session
                apr_pool_t *pool);
 
 /**
- * Callback type to be used with @a svn_ra_list.  It will be invoked for
+ * Callback type to be used with svn_ra_list().  It will be invoked for
  * every directory entry found.
  *
  * The full path of the entry is given in @a rel_path and @a dirent contains
- * various additional information.  If @a svn_repos_list has been called
- * with @c path_info_only set, only the @c kind element of this struct
- * will be valid.
+ * various additional information. Only the elements of @a dirent specified
+ * by the @a dirent_fields argument to svn_ra_list() will be valid.
  *
  * @a baton is the user-provided receiver baton.  @a scratch_pool may be
  * used for temporary allocations.
@@ -1155,21 +1154,21 @@ typedef svn_error_t *(* svn_ra_dirent_re
  * In @a session, walk the sub-tree starting at @a path at @a revision down
  * to the given @a depth.  For each directory entry found, @a receiver will
  * be called with @a receiver_baton.  The starting @a path will be reported
- * as well.  Because retrieving elements of a @c svn_dirent_t can be
+ * as well.  Because retrieving elements of a #svn_dirent_t can be
  * expensive, you need to select them individually via flags set in
  * @a dirent_fields.
  *
  * @a patterns is an optional array of <tt>const char *</tt>.  If it is
  * not @c NULL, only those directory entries will be reported whose last
  * path segment matches at least one of these patterns.  This feature uses
- * @c apr_fnmatch for glob matching and requiring '.' to matched by dots
+ * apr_fnmatch() for glob matching and requiring '.' to matched by dots
  * in the path.
  *
  * @a path must point to a directory and @a depth must be at least
- * @c svn_depth_empty.
+ * #svn_depth_empty.
  *
  * If the server doesn't support the 'list' command, return
- * @c SVN_ERR_UNSUPPORTED_FEATURE in preference to any other error that
+ * #SVN_ERR_UNSUPPORTED_FEATURE in preference to any other error that
  * might otherwise be returned.
  *
  * Use @a scratch_pool for temporary memory allocation.

Modified: subversion/branches/swig-py3/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_ra_svn.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_ra_svn.h Wed Jan 31 04:16:43 2018
@@ -144,7 +144,9 @@ typedef struct svn_ra_svn_cmd_entry_t
   svn_boolean_t terminate;
 } svn_ra_svn_cmd_entry_t;
 
-/** Data types defined by the svn:// protocol. */
+/** Data types defined by the svn:// protocol.
+ *
+ * @since The typedef name is new in 1.10; the enumerators are not. */
 typedef enum
 {
   SVN_RA_SVN_NUMBER,

Modified: subversion/branches/swig-py3/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_repos.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_repos.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_repos.h Wed Jan 31 04:16:43 2018
@@ -1726,11 +1726,11 @@ svn_repos_stat(svn_dirent_t **dirent,
                apr_pool_t *pool);
 
 /**
- * Callback type to be used with @c svn_repos_list.  It will be invoked for
+ * Callback type to be used with svn_repos_list().  It will be invoked for
  * every directory entry found.
  *
  * The full path of the entry is given in @a path and @a dirent contains
- * various additional information.  If @c svn_repos_list has been called
+ * various additional information.  If svn_repos_list() has been called
  * with @a path_info_only set, only the @a kind element of this struct
  * will be valid.
  *
@@ -1751,14 +1751,14 @@ typedef svn_error_t *(* svn_repos_dirent
  * Walk the sub-tree starting at @a path under @a root up to the given
  * @a depth.  For each directory entry found, @a receiver will be called
  * with @a receiver_baton.  The starting @a path will be reported as well.
- * Because retrieving all elements of a @c svn_dirent_t can be expensive,
+ * Because retrieving all elements of a #svn_dirent_t can be expensive,
  * you may set @a path_info_only to receive only the path name and the node
  * kind.  The entries will be reported ordered by their path.
  *
  * @a patterns is an optional array of <tt>const char *</tt>.  If it is
  * not @c NULL, only those directory entries will be reported whose last
  * path segment matches at least one of these patterns.  This feature uses
- * @c apr_fnmatch for glob matching and requiring '.' to matched by dots
+ * apr_fnmatch() for glob matching and requiring '.' to matched by dots
  * in the path.
  *
  * If @a authz_read_func is not @c NULL, this function will neither report
@@ -1768,7 +1768,7 @@ typedef svn_error_t *(* svn_repos_dirent
  * @a cancel_func and @a cancel_baton.
  *
  * @a path must point to a directory and @a depth must be at least
- * @c svn_depth_empty.
+ * #svn_depth_empty.
  *
  * Use @a scratch_pool for temporary memory allocation.
  *

Modified: subversion/branches/swig-py3/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_string.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_string.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_string.h Wed Jan 31 04:16:43 2018
@@ -530,8 +530,7 @@ svn_cstring_count_newlines(const char *m
 
 /**
  * Return a cstring which is the concatenation of @a strings (an array
- * of char *) each followed by @a separator (that is, @a separator
- * will also end the resulting string).  Allocate the result in @a pool.
+ * of char *) joined by @a separator.  Allocate the result in @a pool.
  * If @a strings is empty, then return the empty string.
  * If @a trailing_separator is non-zero, also append the separator
  * after the last joined element.

Modified: subversion/branches/swig-py3/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_wc.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_wc.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_wc.h Wed Jan 31 04:16:43 2018
@@ -7602,9 +7602,14 @@ svn_wc_relocate(const char *path,
  * If @a clear_changelists is TRUE, then changelist information for the
  * paths is cleared.
  *
- * If @a metadata_only is TRUE, the working copy files are untouched, but
- * if there are conflict marker files attached to these files these
- * markers are removed.
+ * The @a metadata_only and @a added_keep_local options control the
+ * extent of reverting. If @a metadata_only is TRUE, the working copy
+ * files are untouched, but if there are conflict marker files attached
+ * to these files these markers are removed. Otherwise, if
+ * @a added_keep_local is TRUE, then all items are reverted except an
+ * item that was scheduled as plain 'add' (not a copy) will not be
+ * removed from the working copy. Otherwise, all items are reverted and
+ * their on-disk state changed to match.
  *
  * If @a cancel_func is non-NULL, call it with @a cancel_baton at
  * various points during the reversion process.  If it returns an
@@ -7622,8 +7627,30 @@ svn_wc_relocate(const char *path,
  * If @a path is not under version control, return the error
  * #SVN_ERR_UNVERSIONED_RESOURCE.
  *
+ * @since New in 1.11.
+ */
+svn_error_t *
+svn_wc_revert6(svn_wc_context_t *wc_ctx,
+               const char *local_abspath,
+               svn_depth_t depth,
+               svn_boolean_t use_commit_times,
+               const apr_array_header_t *changelist_filter,
+               svn_boolean_t clear_changelists,
+               svn_boolean_t metadata_only,
+               svn_boolean_t added_keep_local,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
+               svn_wc_notify_func2_t notify_func,
+               void *notify_baton,
+               apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_revert6() but with @a remove_added_from_disk always
+ * set to FALSE.
+ *
  * @since New in 1.9.
+ * @deprecated Provided for backward compatibility with the 1.10 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_revert5(svn_wc_context_t *wc_ctx,
                const char *local_abspath,

Modified: subversion/branches/swig-py3/subversion/include/svn_xml.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/include/svn_xml.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/include/svn_xml.h (original)
+++ subversion/branches/swig-py3/subversion/include/svn_xml.h Wed Jan 31 04:16:43 2018
@@ -175,7 +175,7 @@ typedef void (*svn_xml_char_data)(void *
  * but some internal structures may be allocated out of pool.  Use
  * svn_xml_free_parser() to free all memory used by the parser.
  *
- * Since Subversion 1.10 parser will be freed automatically on pool
+ * @since Since Subversion 1.10 parser will be freed automatically on pool
  * cleanup or by svn_xml_free_parser() call.
  */
 svn_xml_parser_t *

Modified: subversion/branches/swig-py3/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/libsvn_client/client.h?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/libsvn_client/client.h (original)
+++ subversion/branches/swig-py3/subversion/libsvn_client/client.h Wed Jan 31 04:16:43 2018
@@ -1267,6 +1267,39 @@ svn_client__merge_locked(svn_client__con
                          apr_pool_t *result_pool,
                          apr_pool_t *scratch_pool);
 
+/** Set @a shelf's revprop @a prop_name to @a prop_val.
+ *
+ * If @a prop_val is NULL, delete the property (if present).
+ */
+svn_error_t *
+svn_client__shelf_revprop_set(svn_client_shelf_t *shelf,
+                               const char *prop_name,
+                               const svn_string_t *prop_val,
+                               apr_pool_t *scratch_pool);
+
+/** Get @a shelf's revprop @a prop_name into @a *prop_val.
+ *
+ * If the property is not present, set @a *prop_val to NULL.
+ *
+ * The lifetime of the result is limited to that of @a shelf and/or
+ * of @a result_pool.
+ */
+svn_error_t *
+svn_client__shelf_revprop_get(svn_string_t **prop_val,
+                               svn_client_shelf_t *shelf,
+                               const char *prop_name,
+                               apr_pool_t *result_pool);
+
+/** Get @a shelf's revprops into @a props.
+ *
+ * The lifetime of the result is limited to that of @a shelf and/or
+ * of @a result_pool.
+ */
+svn_error_t *
+svn_client__shelf_revprop_list(apr_hash_t **props,
+                               svn_client_shelf_t *shelf,
+                               apr_pool_t *result_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/swig-py3/subversion/libsvn_client/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/libsvn_client/conflicts.c?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/libsvn_client/conflicts.c (original)
+++ subversion/branches/swig-py3/subversion/libsvn_client/conflicts.c Wed Jan 31 04:16:43 2018
@@ -9841,12 +9841,6 @@ configure_option_incoming_move_file_merg
   const char *incoming_new_repos_relpath;
   svn_revnum_t incoming_new_pegrev;
   svn_node_kind_t incoming_new_kind;
-  struct conflict_tree_incoming_delete_details *details;
-
-  details = conflict->tree_conflict_incoming_details;
-  if (details == NULL || details->moves == NULL)
-    return SVN_NO_ERROR;
-
   incoming_change = svn_client_conflict_get_incoming_change(conflict);
   victim_node_kind = svn_client_conflict_tree_get_victim_node_kind(conflict);
   SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
@@ -9863,8 +9857,13 @@ configure_option_incoming_move_file_merg
       incoming_new_kind == svn_node_none &&
       incoming_change == svn_wc_conflict_action_delete)
     {
+      struct conflict_tree_incoming_delete_details *details;
       const char *description;
 
+      details = conflict->tree_conflict_incoming_details;
+      if (details == NULL || details->moves == NULL)
+        return SVN_NO_ERROR;
+
       if (apr_hash_count(details->wc_move_targets) == 0)
         return SVN_NO_ERROR;
 
@@ -9899,11 +9898,6 @@ configure_option_incoming_dir_merge(svn_
   const char *incoming_new_repos_relpath;
   svn_revnum_t incoming_new_pegrev;
   svn_node_kind_t incoming_new_kind;
-  struct conflict_tree_incoming_delete_details *details;
-
-  details = conflict->tree_conflict_incoming_details;
-  if (details == NULL || details->moves == NULL)
-    return SVN_NO_ERROR;
 
   incoming_change = svn_client_conflict_get_incoming_change(conflict);
   victim_node_kind = svn_client_conflict_tree_get_victim_node_kind(conflict);
@@ -9921,8 +9915,13 @@ configure_option_incoming_dir_merge(svn_
       incoming_new_kind == svn_node_none &&
       incoming_change == svn_wc_conflict_action_delete)
     {
+      struct conflict_tree_incoming_delete_details *details;
       const char *description;
 
+      details = conflict->tree_conflict_incoming_details;
+      if (details == NULL || details->moves == NULL)
+        return SVN_NO_ERROR;
+
       if (apr_hash_count(details->wc_move_targets) == 0)
         return SVN_NO_ERROR;
 

Modified: subversion/branches/swig-py3/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/libsvn_client/deprecated.c?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/swig-py3/subversion/libsvn_client/deprecated.c Wed Jan 31 04:16:43 2018
@@ -936,6 +936,42 @@ svn_client_delete(svn_client_commit_info
 /*** From diff.c ***/
 
 svn_error_t *
+svn_client_diff6(const apr_array_header_t *diff_options,
+                 const char *path_or_url1,
+                 const svn_opt_revision_t *revision1,
+                 const char *path_or_url2,
+                 const svn_opt_revision_t *revision2,
+                 const char *relative_to_dir,
+                 svn_depth_t depth,
+                 svn_boolean_t ignore_ancestry,
+                 svn_boolean_t no_diff_added,
+                 svn_boolean_t no_diff_deleted,
+                 svn_boolean_t show_copies_as_adds,
+                 svn_boolean_t ignore_content_type,
+                 svn_boolean_t ignore_properties,
+                 svn_boolean_t properties_only,
+                 svn_boolean_t use_git_diff_format,
+                 const char *header_encoding,
+                 svn_stream_t *outstream,
+                 svn_stream_t *errstream,
+                 const apr_array_header_t *changelists,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool)
+{
+  return svn_client_diff7(diff_options,
+                          path_or_url1, revision1,
+                          path_or_url2, revision2,
+                          relative_to_dir, depth,
+                          ignore_ancestry, no_diff_added,
+                          no_diff_deleted, show_copies_as_adds,
+                          ignore_content_type, ignore_properties,
+                          properties_only, use_git_diff_format,
+                          TRUE /*pretty_print_mergeinfo*/,
+                          header_encoding,
+                          outstream, errstream, changelists, ctx, pool);
+}
+
+svn_error_t *
 svn_client_diff5(const apr_array_header_t *diff_options,
                  const char *path1,
                  const svn_opt_revision_t *revision1,
@@ -1058,6 +1094,53 @@ svn_client_diff(const apr_array_header_t
 }
 
 svn_error_t *
+svn_client_diff_peg6(const apr_array_header_t *options,
+                     const char *path_or_url,
+                     const svn_opt_revision_t *peg_revision,
+                     const svn_opt_revision_t *start_revision,
+                     const svn_opt_revision_t *end_revision,
+                     const char *relative_to_dir,
+                     svn_depth_t depth,
+                     svn_boolean_t ignore_ancestry,
+                     svn_boolean_t no_diff_added,
+                     svn_boolean_t no_diff_deleted,
+                     svn_boolean_t show_copies_as_adds,
+                     svn_boolean_t ignore_content_type,
+                     svn_boolean_t ignore_properties,
+                     svn_boolean_t properties_only,
+                     svn_boolean_t use_git_diff_format,
+                     const char *header_encoding,
+                     svn_stream_t *outstream,
+                     svn_stream_t *errstream,
+                     const apr_array_header_t *changelists,
+                     svn_client_ctx_t *ctx,
+                     apr_pool_t *pool)
+{
+  return svn_client_diff_peg7(options,
+                              path_or_url,
+                              peg_revision,
+                              start_revision,
+                              end_revision,
+                              relative_to_dir,
+                              depth,
+                              ignore_ancestry,
+                              no_diff_added,
+                              no_diff_deleted,
+                              show_copies_as_adds,
+                              ignore_content_type,
+                              ignore_properties,
+                              properties_only,
+                              use_git_diff_format,
+                              TRUE /*pretty_print_mergeinfo*/,
+                              header_encoding,
+                              outstream,
+                              errstream,
+                              changelists,
+                              ctx,
+                              pool);
+}
+
+svn_error_t *
 svn_client_diff_peg5(const apr_array_header_t *diff_options,
                      const char *path,
                      const svn_opt_revision_t *peg_revision,
@@ -2853,6 +2936,22 @@ svn_client_resolved(const char *path,
 }
 /*** From revert.c ***/
 svn_error_t *
+svn_client_revert3(const apr_array_header_t *paths,
+                   svn_depth_t depth,
+                   const apr_array_header_t *changelists,
+                   svn_boolean_t clear_changelists,
+                   svn_boolean_t metadata_only,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *pool)
+{
+  SVN_ERR(svn_client_revert4(paths, depth, changelists,
+                             clear_changelists, metadata_only,
+                             TRUE /*added_keep_local*/,
+                             ctx, pool));
+  return SVN_NO_ERROR;
+}
+
+svn_error_t *
 svn_client_revert2(const apr_array_header_t *paths,
                    svn_depth_t depth,
                    const apr_array_header_t *changelists,

Modified: subversion/branches/swig-py3/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/libsvn_client/diff.c?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/swig-py3/subversion/libsvn_client/diff.c Wed Jan 31 04:16:43 2018
@@ -489,7 +489,7 @@ print_git_diff_header(svn_stream_t *os,
 
 /* A helper func that writes out verbal descriptions of property diffs
    to OUTSTREAM.   Of course, OUTSTREAM will probably be whatever was
-   passed to svn_client_diff6(), which is probably stdout.
+   passed to svn_client_diff7(), which is probably stdout.
 
    ### FIXME needs proper docstring
 
@@ -498,6 +498,11 @@ print_git_diff_header(svn_stream_t *os,
    needed to normalize paths relative the repository root, and are ignored
    if USE_GIT_DIFF_FORMAT is FALSE.
 
+   If @a pretty_print_mergeinfo is true, then describe 'svn:mergeinfo'
+   property changes in a human-readable form that says what changes were
+   merged or reverse merged; otherwise (or if the mergeinfo property values
+   don't parse correctly) display them just like any other property.
+
    ANCHOR is the local path where the diff editor is anchored. */
 static svn_error_t *
 display_prop_diffs(const apr_array_header_t *propchanges,
@@ -514,6 +519,7 @@ display_prop_diffs(const apr_array_heade
                    const char *relative_to_dir,
                    svn_boolean_t show_diff_header,
                    svn_boolean_t use_git_diff_format,
+                   svn_boolean_t pretty_print_mergeinfo,
                    const char *ra_session_relpath,
                    svn_cancel_func_t cancel_func,
                    void *cancel_baton,
@@ -588,7 +594,7 @@ display_prop_diffs(const apr_array_heade
 
   SVN_ERR(svn_diff__display_prop_diffs(
             outstream, encoding, propchanges, left_props,
-            TRUE /* pretty_print_mergeinfo */,
+            pretty_print_mergeinfo,
             -1 /* context_size */,
             cancel_func, cancel_baton, scratch_pool));
 
@@ -668,6 +674,9 @@ typedef struct diff_writer_info_t
   /* Whether to ignore copyfrom information when showing adds */
   svn_boolean_t show_copies_as_adds;
 
+  /* Whether to show mergeinfo prop changes in human-readable form */
+  svn_boolean_t pretty_print_mergeinfo;
+
   /* Empty files for creating diffs or NULL if not used yet */
   const char *empty_file;
 
@@ -718,6 +727,7 @@ diff_props_changed(const char *diff_relp
                                  dwi->relative_to_dir,
                                  show_diff_header,
                                  dwi->use_git_diff_format,
+                                 dwi->pretty_print_mergeinfo,
                                  dwi->ddi.session_relpath,
                                  dwi->cancel_func,
                                  dwi->cancel_baton,
@@ -1766,8 +1776,8 @@ diff_prepare_repos_repos(const char **ur
 
 /* A Theoretical Note From Ben, regarding do_diff().
 
-   This function is really svn_client_diff6().  If you read the public
-   API description for svn_client_diff6(), it sounds quite Grand.  It
+   This function is really svn_client_diff7().  If you read the public
+   API description for svn_client_diff7(), it sounds quite Grand.  It
    sounds really generalized and abstract and beautiful: that it will
    diff any two paths, be they working-copy paths or URLs, at any two
    revisions.
@@ -1791,7 +1801,7 @@ diff_prepare_repos_repos(const char **ur
    pigeonholed into one of these use-cases, we currently bail with a
    friendly apology.
 
-   Perhaps someday a brave soul will truly make svn_client_diff6()
+   Perhaps someday a brave soul will truly make svn_client_diff7()
    perfectly general.  For now, we live with the 90% case.  Certainly,
    the commandline client only calls this function in legal ways.
    When there are other users of svn_client.h, maybe this will become
@@ -1804,7 +1814,7 @@ static svn_error_t *
 unsupported_diff_error(svn_error_t *child_err)
 {
   return svn_error_create(SVN_ERR_INCORRECT_PARAMS, child_err,
-                          _("Sorry, svn_client_diff6 was called in a way "
+                          _("Sorry, svn_client_diff7 was called in a way "
                             "that is not yet supported"));
 }
 
@@ -1813,7 +1823,7 @@ unsupported_diff_error(svn_error_t *chil
    PATH1 and PATH2 are both working copy paths.  REVISION1 and
    REVISION2 are their respective revisions.
 
-   All other options are the same as those passed to svn_client_diff6(). */
+   All other options are the same as those passed to svn_client_diff7(). */
 static svn_error_t *
 diff_wc_wc(const char **root_relpath,
            svn_boolean_t *root_is_dir,
@@ -1844,8 +1854,9 @@ diff_wc_wc(const char **root_relpath,
              && (revision2->kind == svn_opt_revision_working))))
     return unsupported_diff_error(
        svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL,
-                        _("Only diffs between a path's text-base "
-                          "and its working files are supported at this time"
+                        _("A non-URL diff at this time must be either from "
+                          "a path's base to the same path's working version "
+                          "or between the working versions of two paths"
                           )));
 
   if (ddi)
@@ -1878,7 +1889,7 @@ diff_wc_wc(const char **root_relpath,
    and the actual two paths compared are determined by following copy
    history from PATH_OR_URL2.
 
-   All other options are the same as those passed to svn_client_diff6(). */
+   All other options are the same as those passed to svn_client_diff7(). */
 static svn_error_t *
 diff_repos_repos(const char **root_relpath,
                  svn_boolean_t *root_is_dir,
@@ -2048,7 +2059,7 @@ diff_repos_repos(const char **root_relpa
 
    If REVERSE is TRUE, the diff will be reported in reverse.
 
-   All other options are the same as those passed to svn_client_diff6(). */
+   All other options are the same as those passed to svn_client_diff7(). */
 static svn_error_t *
 diff_repos_wc(const char **root_relpath,
               svn_boolean_t *root_is_dir,
@@ -2519,7 +2530,7 @@ create_diff_writer_info(diff_writer_info
       * These cases require server communication.
 */
 svn_error_t *
-svn_client_diff6(const apr_array_header_t *options,
+svn_client_diff7(const apr_array_header_t *options,
                  const char *path_or_url1,
                  const svn_opt_revision_t *revision1,
                  const char *path_or_url2,
@@ -2534,6 +2545,7 @@ svn_client_diff6(const apr_array_header_
                  svn_boolean_t ignore_properties,
                  svn_boolean_t properties_only,
                  svn_boolean_t use_git_diff_format,
+                 svn_boolean_t pretty_print_mergeinfo,
                  const char *header_encoding,
                  svn_stream_t *outstream,
                  svn_stream_t *errstream,
@@ -2573,6 +2585,7 @@ svn_client_diff6(const apr_array_header_
   dwi.no_diff_added = no_diff_added;
   dwi.no_diff_deleted = no_diff_deleted;
   dwi.show_copies_as_adds = show_copies_as_adds;
+  dwi.pretty_print_mergeinfo = pretty_print_mergeinfo;
 
   dwi.cancel_func = ctx->cancel_func;
   dwi.cancel_baton = ctx->cancel_baton;
@@ -2607,7 +2620,7 @@ svn_client_diff6(const apr_array_header_
 }
 
 svn_error_t *
-svn_client_diff_peg6(const apr_array_header_t *options,
+svn_client_diff_peg7(const apr_array_header_t *options,
                      const char *path_or_url,
                      const svn_opt_revision_t *peg_revision,
                      const svn_opt_revision_t *start_revision,
@@ -2622,6 +2635,7 @@ svn_client_diff_peg6(const apr_array_hea
                      svn_boolean_t ignore_properties,
                      svn_boolean_t properties_only,
                      svn_boolean_t use_git_diff_format,
+                     svn_boolean_t pretty_print_mergeinfo,
                      const char *header_encoding,
                      svn_stream_t *outstream,
                      svn_stream_t *errstream,
@@ -2657,6 +2671,7 @@ svn_client_diff_peg6(const apr_array_hea
   dwi.no_diff_added = no_diff_added;
   dwi.no_diff_deleted = no_diff_deleted;
   dwi.show_copies_as_adds = show_copies_as_adds;
+  dwi.pretty_print_mergeinfo = pretty_print_mergeinfo;
 
   dwi.cancel_func = ctx->cancel_func;
   dwi.cancel_baton = ctx->cancel_baton;

Modified: subversion/branches/swig-py3/subversion/libsvn_client/revert.c
URL: http://svn.apache.org/viewvc/subversion/branches/swig-py3/subversion/libsvn_client/revert.c?rev=1822736&r1=1822735&r2=1822736&view=diff
==============================================================================
--- subversion/branches/swig-py3/subversion/libsvn_client/revert.c (original)
+++ subversion/branches/swig-py3/subversion/libsvn_client/revert.c Wed Jan 31 04:16:43 2018
@@ -51,6 +51,7 @@ struct revert_with_write_lock_baton {
   const apr_array_header_t *changelists;
   svn_boolean_t clear_changelists;
   svn_boolean_t metadata_only;
+  svn_boolean_t added_keep_local;
   svn_client_ctx_t *ctx;
 };
 
@@ -80,13 +81,14 @@ revert(void *baton, apr_pool_t *result_p
   struct revert_with_write_lock_baton *b = baton;
   svn_error_t *err;
 
-  err = svn_wc_revert5(b->ctx->wc_ctx,
+  err = svn_wc_revert6(b->ctx->wc_ctx,
                        b->local_abspath,
                        b->depth,
                        b->use_commit_times,
                        b->changelists,
                        b->clear_changelists,
                        b->metadata_only,
+                       b->added_keep_local,
                        b->ctx->cancel_func, b->ctx->cancel_baton,
                        b->ctx->notify_func2, b->ctx->notify_baton2,
                        scratch_pool);
@@ -123,11 +125,12 @@ revert(void *baton, apr_pool_t *result_p
 
 
 svn_error_t *
-svn_client_revert3(const apr_array_header_t *paths,
+svn_client_revert4(const apr_array_header_t *paths,
                    svn_depth_t depth,
                    const apr_array_header_t *changelists,
                    svn_boolean_t clear_changelists,
                    svn_boolean_t metadata_only,
+                   svn_boolean_t added_keep_local,
                    svn_client_ctx_t *ctx,
                    apr_pool_t *pool)
 {
@@ -183,6 +186,7 @@ svn_client_revert3(const apr_array_heade
       baton.changelists = changelists;
       baton.clear_changelists = clear_changelists;
       baton.metadata_only = metadata_only;
+      baton.added_keep_local = added_keep_local;
       baton.ctx = ctx;
 
       err = svn_wc__is_wcroot(&wc_root, ctx->wc_ctx, local_abspath, iterpool);