Author: julianfoad
Date: Mon Apr 16 12:21:02 2018
New Revision: 1829257

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

Added:
    
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/tests/fs.py
      - copied unchanged from r1829253, 
subversion/trunk/subversion/bindings/swig/python/tests/fs.py
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/layout.c
      - copied unchanged from r1829253, 
subversion/trunk/subversion/libsvn_client/layout.c
    subversion/branches/shelve-checkpoint/subversion/tests/cmdline/dav_tests.py
      - copied unchanged from r1829253, 
subversion/trunk/subversion/tests/cmdline/dav_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_delta/svndiff-stream-test.c
      - copied unchanged from r1829253, 
subversion/trunk/subversion/tests/libsvn_delta/svndiff-stream-test.c
    subversion/branches/shelve-checkpoint/tools/client-side/svnviewspec_test.py
      - copied unchanged from r1829253, 
subversion/trunk/tools/client-side/svnviewspec_test.py
    
subversion/branches/shelve-checkpoint/tools/dist/backport_tests_data/backport_logsummary_colon.dump
      - copied unchanged from r1829253, 
subversion/trunk/tools/dist/backport_tests_data/backport_logsummary_colon.dump
Removed:
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/shelve.c
    subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c
Modified:
    subversion/branches/shelve-checkpoint/   (props changed)
    subversion/branches/shelve-checkpoint/CHANGES
    subversion/branches/shelve-checkpoint/COMMITTERS
    subversion/branches/shelve-checkpoint/INSTALL
    subversion/branches/shelve-checkpoint/Makefile.in
    subversion/branches/shelve-checkpoint/build.conf
    subversion/branches/shelve-checkpoint/build/PrintPath
    subversion/branches/shelve-checkpoint/build/ac-macros/find_apr.m4
    subversion/branches/shelve-checkpoint/build/ac-macros/find_apu.m4
    subversion/branches/shelve-checkpoint/build/ac-macros/swig.m4
    subversion/branches/shelve-checkpoint/build/transform_sql.py
    subversion/branches/shelve-checkpoint/configure.ac
    
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.cpp
    
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.h
    
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp
    
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
    
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
    
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
    
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/Core.pm
    
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/svn/fs.py
    
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/tests/run_all.py
    
subversion/branches/shelve-checkpoint/subversion/include/private/svn_sorts_private.h
    
subversion/branches/shelve-checkpoint/subversion/include/private/svn_subr_private.h
    
subversion/branches/shelve-checkpoint/subversion/include/private/svn_wc_private.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_client.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_fs.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_opt.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_props.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_ra.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_ra_svn.h
    subversion/branches/shelve-checkpoint/subversion/include/svn_repos.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/client.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/conflicts.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/diff.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/export.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/info.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/patch.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/shelf.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_client/update.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_delta/debug_editor.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_delta/svndiff.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/cached_data.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/cached_data.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/dag.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/id.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/index.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/load-index.c
    
subversion/branches/shelve-checkpoint/subversion/libsvn_fs_fs/temp_serializer.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_ra_serf/options.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_repos/repos.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/compress_lz4.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/deprecated.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/lz4/lz4.c
    
subversion/branches/shelve-checkpoint/subversion/libsvn_subr/lz4/lz4internal.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/mergeinfo.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/opt.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/sysinfo.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/x509info.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_subr/x509parse.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/conflicts.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/conflicts.h
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/props.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/questions.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/tree_conflicts.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/update_editor.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/upgrade.c
    subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db.c
    
subversion/branches/shelve-checkpoint/subversion/libsvn_wc/wc_db_update_move.c
    
subversion/branches/shelve-checkpoint/subversion/mod_authz_svn/mod_authz_svn.c
    subversion/branches/shelve-checkpoint/subversion/po/de.po
    subversion/branches/shelve-checkpoint/subversion/po/sv.po
    subversion/branches/shelve-checkpoint/subversion/svn/auth-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svn/cl.h
    subversion/branches/shelve-checkpoint/subversion/svn/help-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svn/info-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svn/shelf-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svn/svn.c
    subversion/branches/shelve-checkpoint/subversion/svnadmin/svnadmin.c
    subversion/branches/shelve-checkpoint/subversion/svnbench/cl.h
    subversion/branches/shelve-checkpoint/subversion/svnbench/help-cmd.c
    subversion/branches/shelve-checkpoint/subversion/svnbench/svnbench.c
    
subversion/branches/shelve-checkpoint/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/shelve-checkpoint/subversion/svnfsfs/svnfsfs.c
    subversion/branches/shelve-checkpoint/subversion/svnlook/svnlook.c
    subversion/branches/shelve-checkpoint/subversion/svnmucc/svnmucc.c
    subversion/branches/shelve-checkpoint/subversion/svnrdump/svnrdump.c
    subversion/branches/shelve-checkpoint/subversion/svnserve/svnserve.c
    subversion/branches/shelve-checkpoint/subversion/svnsync/svnsync.c
    subversion/branches/shelve-checkpoint/subversion/svnversion/svnversion.c
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/authz_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/commit_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/dav-mirror-autocheck.sh
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/davautocheck.sh
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/iprop_authz_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/mod_dav_svn_tests.py
   (props changed)
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/shelf_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnadmin_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnauthz_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnserveautocheck.sh
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnsync_authz_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/actions.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/main.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/mergetrees.py
   (props changed)
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/verify.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnversion_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/cmdline/update_tests.py
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_client/conflicts-test.c
    subversion/branches/shelve-checkpoint/subversion/tests/libsvn_delta/   
(props changed)
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/mergeinfo-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/utf-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/x509-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/conflict-data-test.c
    
subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/utils.c
    subversion/branches/shelve-checkpoint/subversion/tests/svn_test_main.c
    
subversion/branches/shelve-checkpoint/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
    subversion/branches/shelve-checkpoint/tools/client-side/bash_completion
    
subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c
    
subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
    
subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
    
subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
    subversion/branches/shelve-checkpoint/tools/client-side/svn-viewspec.py
    
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/svnraisetreeconflict/svnraisetreeconflict.c
    subversion/branches/shelve-checkpoint/tools/dev/unix-build/Makefile.svn
    subversion/branches/shelve-checkpoint/tools/dev/wc-ng/svn-wc-db-tester.c
    subversion/branches/shelve-checkpoint/tools/dist/README.backport
    subversion/branches/shelve-checkpoint/tools/dist/backport.pl
    subversion/branches/shelve-checkpoint/tools/dist/backport/status.py
    subversion/branches/shelve-checkpoint/tools/dist/backport_tests.py
    subversion/branches/shelve-checkpoint/tools/dist/release.py
    subversion/branches/shelve-checkpoint/tools/dist/templates/download.ezt
    subversion/branches/shelve-checkpoint/tools/dist/templates/rc-news.ezt
    
subversion/branches/shelve-checkpoint/tools/dist/templates/rc-release-ann.ezt
    subversion/branches/shelve-checkpoint/tools/dist/templates/stable-news.ezt
    
subversion/branches/shelve-checkpoint/tools/dist/templates/stable-release-ann.ezt
    subversion/branches/shelve-checkpoint/tools/hook-scripts/mailer/mailer.py
    subversion/branches/shelve-checkpoint/tools/server-side/svnauthz.c

Propchange: subversion/branches/shelve-checkpoint/
            ('bugtraq:logregex' removed)

Propchange: subversion/branches/shelve-checkpoint/
            ('bugtraq:url' removed)

Propchange: subversion/branches/shelve-checkpoint/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Apr 16 12:21:02 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-1822866
+/subversion/trunk:1801593-1829253

Propchange: subversion/branches/shelve-checkpoint/
            ('tsvn:logwidthmarker' removed)

Propchange: subversion/branches/shelve-checkpoint/
            ('tsvn:projectlanguage' removed)

Propchange: subversion/branches/shelve-checkpoint/
            ('webviewer:revision' removed)

Modified: subversion/branches/shelve-checkpoint/CHANGES
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/CHANGES?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/CHANGES (original)
+++ subversion/branches/shelve-checkpoint/CHANGES Mon Apr 16 12:21:02 2018
@@ -4,7 +4,7 @@ http://svn.apache.org/repos/asf/subversi
 
 
 Version 1.10.0
-(?? ??? 2017, from /branches/1.10.x)
+(13 Apr 2018, from /branches/1.10.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.10.0
 
 See the 1.10 release notes for a more verbose overview of the changes since
@@ -100,6 +100,7 @@ the 1.9 release:  https://subversion.apa
     * 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)
+    * New '--password-from-stdin' option for 'svn' (r1819093)
   - Client-side bugfixes:
     * svnbench: Honour the '--with-no-revprops' option (r1709593)
     * ra_serf: Fix segfault when running over HTTP v1 (r1766089)

Modified: subversion/branches/shelve-checkpoint/COMMITTERS
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/COMMITTERS?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/COMMITTERS [UTF-8] (original)
+++ subversion/branches/shelve-checkpoint/COMMITTERS [UTF-8] Mon Apr 16 
12:21:02 2018
@@ -27,7 +27,7 @@ Blanket commit access:
            dlr   Daniel Rall <d...@finemaltcoding.com>
            mbk   Mark Benedetto King <m...@lowlatency.com>
            jaa   Jani Averbach <j...@iki.fi>
-    julianfoad   Julian Foad <jul...@foad.me.uk>
+    julianfoad   Julian Foad <julianf...@apache.org>
   jszakmeister   John Szakmeister <j...@szakmeister.net>
            ehu   Erik Hülsmann <ehu...@gmail.com>
         breser   Ben Reser <b...@reser.org>

Modified: subversion/branches/shelve-checkpoint/INSTALL
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/INSTALL?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/INSTALL (original)
+++ subversion/branches/shelve-checkpoint/INSTALL Mon Apr 16 12:21:02 2018
@@ -147,10 +147,11 @@ I.    INTRODUCTION
          for other languages, you need to have those languages
          available at build time.
 
-      * KDELibs, GNOME Keyring  (OPTIONAL for client)
+      * KDE Framework 5, libsecret, GNOME Keyring (OPTIONAL for client)
 
          Subversion contains optional support for storing passwords in
-         KWallet (KDE 4) or GNOME Keyring.
+         KWallet via KDE Framework 5 libraries (preferred) or kdelibs4,
+         and GNOME Keyring via libsecret (preferred) or GNOME APIs.
 
       * libmagic (OPTIONAL)
 
@@ -456,19 +457,22 @@ I.    INTRODUCTION
       and GNOME Keyring. pkg-config is needed to find D-Bus headers and 
library.
 
 
-      15. Qt 4  (Unix only, OPTIONAL)
+      15. Qt 5 or Qt 4  (Unix only, OPTIONAL)
 
       Qt is a cross-platform application framework. QtCore, QtDBus and QtGui
       modules are required for support for KWallet. pkg-config is needed
       to find Qt headers and libraries.
 
 
-      16. KDELibs 4  (Unix only, OPTIONAL)
+      16. KDE 5 Framework libraries or KDELibs 4  (Unix only, OPTIONAL)
 
       Subversion contains optional support for storing passwords in KWallet.
+      Subversion will look for KF5Wallet, KF5CoreAddons, KF5I18n APIs by 
default,
+      and needs kf5-config to find them. The KDELibs 4 api is also supported.
       KDELibs contains core KDE libraries. Subversion uses libkdecore and 
libkdeui
       libraries when support for KWallet is enabled. kde4-config is used to get
       some necessary options. pkg-config, D-Bus and Qt 4 are also required.
+
       If you want to build support for KWallet, then pass the '--with-kwallet'
       option to `configure`. If KDE is installed in a non-standard prefix, then
       use:

Modified: subversion/branches/shelve-checkpoint/Makefile.in
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/Makefile.in?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/Makefile.in (original)
+++ subversion/branches/shelve-checkpoint/Makefile.in Mon Apr 16 12:21:02 2018
@@ -863,7 +863,7 @@ extraclean-swig-headers: clean-swig-head
 $(SWIG_PL_DIR)/native/Makefile.PL: $(SWIG_SRC_DIR)/perl/native/Makefile.PL.in
        ./config.status subversion/bindings/swig/perl/native/Makefile.PL
 
-$(SWIG_PL_DIR)/native/Makefile: $(SWIG_PL_DIR)/native/Makefile.PL
+$(SWIG_PL_DIR)/native/Makefile: libsvn_swig_perl 
$(SWIG_PL_DIR)/native/Makefile.PL
        cd $(SWIG_PL_DIR)/native; $(PERL) Makefile.PL PREFIX=$(prefix)
 
 # There is a "readlink -f" command on some systems for the same purpose,
@@ -872,9 +872,7 @@ $(SWIG_PL_DIR)/native/Makefile: $(SWIG_P
 READLINK_PY=$(PYTHON) -c 'import sys,os; print(os.path.realpath(sys.argv[1]))'
 READLINK_PL=$(PERL) -e 'use Cwd; print Cwd::realpath(shift)'
 
-swig-pl_DEPS = autogen-swig-pl libsvn_swig_perl \
-  $(SWIG_PL_DIR)/native/Makefile
-swig-pl: $(swig-pl_DEPS)
+swig-pl: autogen-swig-pl $(SWIG_PL_DIR)/native/Makefile
        if test "`$(READLINK_PL) $(SWIG_PL_DIR)`" != "`$(READLINK_PL) 
$(SWIG_PL_SRC_DIR)`"; then \
          for f in $(SWIG_PL_SRC_DIR)/native/*.c ; do \
             if [ -e "$$f" ] ; then \

Modified: subversion/branches/shelve-checkpoint/build.conf
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build.conf?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build.conf (original)
+++ subversion/branches/shelve-checkpoint/build.conf Mon Apr 16 12:21:02 2018
@@ -1207,6 +1207,14 @@ sources = window-test.c
 install = test
 libs = libsvn_test libsvn_delta libsvn_subr apriconv apr
 
+[svndiff-stream-test]
+description = Test svndiff streams
+type = exe
+path = subversion/tests/libsvn_delta
+sources = svndiff-stream-test.c
+install = test
+libs = libsvn_test libsvn_delta libsvn_subr apriconv apr
+
 # ----------------------------------------------------------------------------
 # Tests for libsvn_client
 
@@ -1580,6 +1588,7 @@ libs = __ALL__
        op-depth-test dirent_uri-test wc-queries-test wc-test
        auth-test
        parse-diff-test x509-test xml-test afl-x509 compress-test
+       svndiff-stream-test
 
 [__MORE__]
 type = project

Modified: subversion/branches/shelve-checkpoint/build/PrintPath
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/PrintPath?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/PrintPath (original)
+++ subversion/branches/shelve-checkpoint/build/PrintPath Mon Apr 16 12:21:02 
2018
@@ -1,22 +1,19 @@
 #!/bin/sh
 #
-#
-#   Licensed to the Apache Software Foundation (ASF) under one
-#   or more contributor license agreements.  See the NOTICE file
-#   distributed with this work for additional information
-#   regarding copyright ownership.  The ASF licenses this file
-#   to you under the Apache License, Version 2.0 (the
-#   "License"); you may not use this file except in compliance
-#   with the License.  You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
 #
 #     http://www.apache.org/licenses/LICENSE-2.0
 #
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 #
 #
 # Look for program[s] somewhere in $PATH.
@@ -32,9 +29,6 @@
 #
 # Initially written by Jim Jagielski for the Apache configuration mechanism
 #  (with kudos to Kernighan/Pike)
-#
-# This script falls under the Apache License.
-# See http://www.apache.org/docs/LICENSE
 
 ##
 # Some "constants"
@@ -69,7 +63,7 @@ done
 # Finally, we try to determine the best flag to use for
 # test/[] to look for an executable file. OS/2 just has '-r'
 # but with other OSs, we do some funny stuff to check to see
-# if test/[] knows about -x, which is the preferred flag.
+# if test/[] knows about -x, which is the prefered flag.
 ##
 
 if [ "x$os" = "xOS/2" ]

Modified: subversion/branches/shelve-checkpoint/build/ac-macros/find_apr.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/ac-macros/find_apr.m4?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/ac-macros/find_apr.m4 (original)
+++ subversion/branches/shelve-checkpoint/build/ac-macros/find_apr.m4 Mon Apr 
16 12:21:02 2018
@@ -1,21 +1,19 @@
-dnl ===================================================================
-dnl   Licensed to the Apache Software Foundation (ASF) under one
-dnl   or more contributor license agreements.  See the NOTICE file
-dnl   distributed with this work for additional information
-dnl   regarding copyright ownership.  The ASF licenses this file
-dnl   to you under the Apache License, Version 2.0 (the
-dnl   "License"); you may not use this file except in compliance
-dnl   with the License.  You may obtain a copy of the License at
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements.  See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License.  You may obtain a copy of the License at
 dnl
 dnl     http://www.apache.org/licenses/LICENSE-2.0
 dnl
-dnl   Unless required by applicable law or agreed to in writing,
-dnl   software distributed under the License is distributed on an
-dnl   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-dnl   KIND, either express or implied.  See the License for the
-dnl   specific language governing permissions and limitations
-dnl   under the License.
-dnl ===================================================================
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
 dnl
 dnl find_apr.m4 : locate the APR include files and libraries
 dnl
@@ -24,7 +22,8 @@ dnl library. It provides a standardized
 dnl embedding APR into the application source, or locating an installed
 dnl copy of APR.
 dnl
-dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors)
+dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors,
+dnl              detailed-check)
 dnl
 dnl   where srcdir is the location of the bundled APR source directory, or
 dnl   empty if source is not bundled.
@@ -41,6 +40,14 @@ dnl   If multiple versions are specified
 dnl   implicit installed search are used, then the first (leftmost) version
 dnl   in the list that is found will be used.  Currently defaults to [0 1].
 dnl
+dnl   where detailed-check is an M4 macro which sets the apr_acceptable to
+dnl   either "yes" or "no". The macro will be invoked for each installed
+dnl   copy of APR found, with the apr_config variable set appropriately.
+dnl   Only installed copies of APR which are considered acceptable by
+dnl   this macro will be considered found. If no installed copies are
+dnl   considered acceptable by this macro, apr_found will be set to either
+dnl   either "no" or "reconfig".
+dnl
 dnl Sets the following variables on exit:
 dnl
 dnl   apr_found : "yes", "no", "reconfig"
@@ -64,7 +71,7 @@ dnl
 AC_DEFUN([APR_FIND_APR], [
   apr_found="no"
 
-  if test "$ac_cv_emxos2" = "yes"; then
+  if test "$target_os" = "os2-emx"; then
     # Scripts don't pass test -x on OS/2
     TEST_X="test -f"
   else
@@ -91,8 +98,8 @@ AC_DEFUN([APR_FIND_APR], [
 
   AC_MSG_CHECKING(for APR)
   AC_ARG_WITH(apr,
-  [  --with-apr=PATH         prefix for installed APR, path to APR build tree,
-                          or the full path to apr-config],
+  [  --with-apr=PATH         prefix for installed APR or the full path to 
+                             apr-config],
   [
     if test "$withval" = "no" || test "$withval" = "yes"; then
       AC_MSG_ERROR([--with-apr requires a directory or file to be provided])
@@ -103,16 +110,28 @@ AC_DEFUN([APR_FIND_APR], [
       for lookdir in "$withval/bin" "$withval"
       do
         if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then
-          apr_found="yes"
           apr_config="$lookdir/$apr_temp_apr_config_file"
+          ifelse([$5], [], [], [
+          apr_acceptable="yes"
+          $5
+          if test "$apr_acceptable" != "yes"; then
+            AC_MSG_WARN([Found APR in $apr_config, but we think it is 
considered unacceptable])
+            continue
+          fi])
+          apr_found="yes"
           break 2
         fi
       done
     done
 
     if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > 
/dev/null 2>&1 ; then
-      apr_found="yes"
       apr_config="$withval"
+      ifelse([$5], [], [apr_found="yes"], [
+          apr_acceptable="yes"
+          $5
+          if test "$apr_acceptable" = "yes"; then
+                apr_found="yes"
+          fi])
     fi
 
     dnl if --with-apr is used, it is a fatal error for its argument
@@ -121,9 +140,43 @@ AC_DEFUN([APR_FIND_APR], [
       AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an 
install prefix, a build directory, or an apr-config file.])
     fi
   ],[
-    dnl if we have a bundled source directory, use it
-    if test -d "$1"; then
-      apr_temp_abs_srcdir="`cd $1 && pwd`"
+    dnl If we allow installed copies, check those before using bundled copy.
+    if test -n "$3" && test "$3" = "1"; then
+      for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
+      do
+        if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then
+          apr_config="$apr_temp_apr_config_file"
+          ifelse([$5], [], [], [
+          apr_acceptable="yes"
+          $5
+          if test "$apr_acceptable" != "yes"; then
+            AC_MSG_WARN([skipped APR at $apr_config, version not acceptable])
+            continue
+          fi])
+          apr_found="yes"
+          break
+        else
+          dnl look in some standard places
+          for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do
+            if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then
+              apr_config="$lookdir/bin/$apr_temp_apr_config_file"
+              ifelse([$5], [], [], [
+              apr_acceptable="yes"
+              $5
+              if test "$apr_acceptable" != "yes"; then
+                AC_MSG_WARN([skipped APR at $apr_config, version not 
acceptable])
+                continue
+              fi])
+              apr_found="yes"
+              break 2
+            fi
+          done
+        fi
+      done
+    fi
+    dnl if we have not found anything yet and have bundled source, use that
+    if test "$apr_found" = "no" && test -d "$1"; then
+      apr_temp_abs_srcdir="`cd \"$1\" && pwd`"
       apr_found="reconfig"
       apr_bundled_major="`sed -n 
'/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' 
\"$1/include/apr_version.h\"`"
       case $apr_bundled_major in
@@ -143,25 +196,6 @@ AC_DEFUN([APR_FIND_APR], [
         apr_config="$1/$apr_temp_apr_config_file"
       fi
     fi
-    if test "$apr_found" = "no" && test -n "$3" && test "$3" = "1"; then
-      for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config
-      do
-        if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then
-          apr_found="yes"
-          apr_config="$apr_temp_apr_config_file"
-          break
-        else
-          dnl look in some standard places (apparently not in builtin/default)
-          for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do
-            if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then
-              apr_found="yes"
-              apr_config="$lookdir/bin/$apr_temp_apr_config_file"
-              break 2
-            fi
-          done
-        fi
-      done
-    fi
   ])
 
   AC_MSG_RESULT($apr_found)

Modified: subversion/branches/shelve-checkpoint/build/ac-macros/find_apu.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/ac-macros/find_apu.m4?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/ac-macros/find_apu.m4 (original)
+++ subversion/branches/shelve-checkpoint/build/ac-macros/find_apu.m4 Mon Apr 
16 12:21:02 2018
@@ -1,21 +1,19 @@
-dnl ===================================================================
-dnl   Licensed to the Apache Software Foundation (ASF) under one
-dnl   or more contributor license agreements.  See the NOTICE file
-dnl   distributed with this work for additional information
-dnl   regarding copyright ownership.  The ASF licenses this file
-dnl   to you under the Apache License, Version 2.0 (the
-dnl   "License"); you may not use this file except in compliance
-dnl   with the License.  You may obtain a copy of the License at
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements.  See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License.  You may obtain a copy of the License at
 dnl
 dnl     http://www.apache.org/licenses/LICENSE-2.0
 dnl
-dnl   Unless required by applicable law or agreed to in writing,
-dnl   software distributed under the License is distributed on an
-dnl   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-dnl   KIND, either express or implied.  See the License for the
-dnl   specific language governing permissions and limitations
-dnl   under the License.
-dnl ===================================================================
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
 dnl
 dnl find_apu.m4 : locate the APR-util (APU) include files and libraries
 dnl
@@ -24,7 +22,8 @@ dnl library. It provides a standardized
 dnl embedding APU into the application source, or locating an installed
 dnl copy of APU.
 dnl
-dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors)
+dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors,
+dnl              detailed-check)
 dnl
 dnl   where srcdir is the location of the bundled APU source directory, or
 dnl   empty if source is not bundled.
@@ -41,6 +40,14 @@ dnl   If multiple versions are specified
 dnl   implicit installed search are used, then the first (leftmost) version
 dnl   in the list that is found will be used.  Currently defaults to [0 1].
 dnl
+dnl   where detailed-check is an M4 macro which sets the apu_acceptable to
+dnl   either "yes" or "no". The macro will be invoked for each installed
+dnl   copy of APU found, with the apu_config variable set appropriately.
+dnl   Only installed copies of APU which are considered acceptable by
+dnl   this macro will be considered found. If no installed copies are
+dnl   considered acceptable by this macro, apu_found will be set to either
+dnl   either "no" or "reconfig".
+dnl
 dnl Sets the following variables on exit:
 dnl
 dnl   apu_found : "yes", "no", "reconfig"
@@ -73,7 +80,7 @@ dnl
 AC_DEFUN([APR_FIND_APU], [
   apu_found="no"
 
-  if test "$ac_cv_emxos2" = "yes"; then
+  if test "$target_os" = "os2-emx"; then
     # Scripts don't pass test -x on OS/2
     TEST_X="test -f"
   else
@@ -101,8 +108,8 @@ AC_DEFUN([APR_FIND_APU], [
 
   AC_MSG_CHECKING(for APR-util)
   AC_ARG_WITH(apr-util,
-  [  --with-apr-util=PATH    prefix for installed APU, path to APU build tree,
-                          or the full path to apu-config],
+  [  --with-apr-util=PATH    prefix for installed APU or the full path to 
+                             apu-config],
   [
     if test "$withval" = "no" || test "$withval" = "yes"; then
       AC_MSG_ERROR([--with-apr-util requires a directory or file to be 
provided])
@@ -113,16 +120,28 @@ AC_DEFUN([APR_FIND_APU], [
       for lookdir in "$withval/bin" "$withval"
       do
         if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then
-          apu_found="yes"
           apu_config="$lookdir/$apu_temp_apu_config_file"
+          ifelse([$5], [], [], [
+          apu_acceptable="yes"
+          $5
+          if test "$apu_acceptable" != "yes"; then
+            AC_MSG_WARN([Found APU in $apu_config, but it is considered 
unacceptable])
+            continue
+          fi])
+          apu_found="yes"
           break 2
         fi
       done
     done
 
     if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > 
/dev/null 2>&1 ; then
-      apu_found="yes"
       apu_config="$withval"
+      ifelse([$5], [], [apu_found="yes"], [
+          apu_acceptable="yes"
+          $5
+          if test "$apu_acceptable" = "yes"; then
+                apu_found="yes"
+          fi])
     fi
 
     dnl if --with-apr-util is used, it is a fatal error for its argument
@@ -131,9 +150,42 @@ AC_DEFUN([APR_FIND_APU], [
       AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must 
specify an install prefix, a build directory, or an apu-config file.])
     fi
   ],[
-    dnl if we have a bundled source directory, use it
-    if test -d "$1"; then
-      apu_temp_abs_srcdir="`cd $1 && pwd`"
+    if test -n "$3" && test "$3" = "1"; then
+      for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
+      do
+        if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then
+          apu_config="$apu_temp_apu_config_file" 
+          ifelse([$5], [], [], [
+          apu_acceptable="yes"
+          $5
+          if test "$apu_acceptable" != "yes"; then
+            AC_MSG_WARN([skipped APR-util at $apu_config, version not 
acceptable])
+            continue
+          fi])
+          apu_found="yes"
+          break
+        else
+          dnl look in some standard places (apparently not in builtin/default)
+          for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do
+            if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then
+              apu_config="$lookdir/bin/$apu_temp_apu_config_file"
+              ifelse([$5], [], [], [
+              apu_acceptable="yes"
+              $5
+              if test "$apu_acceptable" != "yes"; then
+                AC_MSG_WARN([skipped APR-util at $apu_config, version not 
acceptable])
+                continue
+              fi])
+              apu_found="yes"
+              break 2
+            fi
+          done
+        fi
+      done
+    fi
+    dnl if we have not found anything yet and have bundled source, use that
+    if test "$apu_found" = "no" && test -d "$1"; then
+      apu_temp_abs_srcdir="`cd \"$1\" && pwd`"
       apu_found="reconfig"
       apu_bundled_major="`sed -n 
'/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' 
\"$1/include/apu_version.h\"`"
       case $apu_bundled_major in
@@ -153,25 +205,6 @@ AC_DEFUN([APR_FIND_APU], [
         apu_config="$1/$apu_temp_apu_config_file"
       fi
     fi
-    if test "$apu_found" = "no" && test -n "$3" && test "$3" = "1"; then
-      for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
-      do
-        if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then
-          apu_found="yes"
-          apu_config="$apu_temp_apu_config_file"
-          break
-        else
-          dnl look in some standard places (apparently not in builtin/default)
-          for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do
-            if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then
-              apu_found="yes"
-              apu_config="$lookdir/bin/$apu_temp_apu_config_file"
-              break 2
-            fi
-          done
-        fi
-      done
-    fi
   ])
 
   AC_MSG_RESULT($apu_found)

Modified: subversion/branches/shelve-checkpoint/build/ac-macros/swig.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/ac-macros/swig.m4?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/ac-macros/swig.m4 (original)
+++ subversion/branches/shelve-checkpoint/build/ac-macros/swig.m4 Mon Apr 16 
12:21:02 2018
@@ -173,6 +173,7 @@ AC_DEFUN(SVN_FIND_SWIG,
       if test "$PERL_VERSION" -ge "5008000"; then
         SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e 
ccopts`"
         SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`"
+        SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
       else
         AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
       fi

Modified: subversion/branches/shelve-checkpoint/build/transform_sql.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/build/transform_sql.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/build/transform_sql.py (original)
+++ subversion/branches/shelve-checkpoint/build/transform_sql.py Mon Apr 16 
12:21:02 2018
@@ -274,7 +274,7 @@ def main(input_filepath, output):
     '/* This file is automatically generated from %s and %s.\n'
     ' * Do not edit this file -- edit the source and rerun gen-make.py */\n'
     '\n'
-    % (filename, token_map_filename))
+    % (filename, os.path.basename(token_map_filename)))
 
   proc = Processor(os.path.dirname(input_filepath), output, var_name, 
token_map)
   proc.process_file(input)

Modified: subversion/branches/shelve-checkpoint/configure.ac
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/configure.ac?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/configure.ac (original)
+++ subversion/branches/shelve-checkpoint/configure.ac Mon Apr 16 12:21:02 2018
@@ -1323,7 +1323,7 @@ if test "$RUBY" != "none"; then
     if test -n "$RDOC"; then
       AC_PATH_PROG(RDOC, "$RDOC", none)
     else
-      AC_PATH_PROGS(RUBY, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 
rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 
rdoc2.4 rdoc24, none)
+      AC_PATH_PROGS(RDOC, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 
rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 
rdoc2.4 rdoc24, none)
     fi
     AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
     svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print 
RbConfig::CONFIG.fetch(%q(MAJOR))'`"

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.cpp
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.cpp?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.cpp
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.cpp
 Mon Apr 16 12:21:02 2018
@@ -332,6 +332,7 @@ void SVNRepos::load(File &path,
                     bool usePostCommitHook,
                     bool validateProps,
                     bool ignoreDates,
+                    bool normalizeProps,
                     const char *relativePath,
                     ReposNotifyCallback *notifyCallback)
 {
@@ -368,10 +369,10 @@ void SVNRepos::load(File &path,
                               path.getInternalStyle(requestPool), NULL,
                               requestPool.getPool(), requestPool.getPool()), );
 
-  SVN_JNI_ERR(svn_repos_load_fs5(repos, dataIn.getStream(requestPool),
+  SVN_JNI_ERR(svn_repos_load_fs6(repos, dataIn.getStream(requestPool),
                                  lower, upper, uuid_action, relativePath,
                                  usePreCommitHook, usePostCommitHook,
-                                 validateProps, ignoreDates,
+                                 validateProps, ignoreDates, normalizeProps,
                                  notifyCallback != NULL
                                     ? ReposNotifyCallback::notify
                                     : NULL,

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.h?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.h
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/SVNRepos.h
 Mon Apr 16 12:21:02 2018
@@ -61,7 +61,7 @@ class SVNRepos : public SVNBase
             Revision &revsionStart, Revision &revisionEnd,
             bool ignoreUUID, bool forceUUID,
             bool usePreCommitHook, bool usePostCommitHook,
-            bool validateProps, bool ignoreDates,
+            bool validateProps, bool ignoreDates, bool normalizeProps,
             const char *relativePath, ReposNotifyCallback *notifyCallback);
   void listUnusedDBLogs(File &path,
                         MessageReceiver &messageReceiver);

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/jniwrapper/jni_list.hpp
 Mon Apr 16 12:21:02 2018
@@ -173,7 +173,10 @@ public:
     {
       Iterator iter(get_iterator());
       while (iter.has_next())
-        function(T(m_env, NativeT(iter.next())));
+        {
+          ::Java::LocalFrame frame(m_env);
+          function(T(m_env, NativeT(iter.next())));
+        }
       return function;
     }
 };

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
 Mon Apr 16 12:21:02 2018
@@ -247,7 +247,7 @@ Java_org_apache_subversion_javahl_SVNRep
     jobject jrevisionStart, jobject jrevisionEnd,
     jboolean jignoreUUID, jboolean jforceUUID,
     jboolean jusePreCommitHook, jboolean jusePostCommitHook,
-    jboolean jvalidateProps, jboolean jignoreDates,
+    jboolean jvalidateProps, jboolean jignoreDates, jboolean jnormalizeProps,
     jstring jrelativePath, jobject jnotifyCallback)
 {
   JNIEntry(SVNRepos, load);
@@ -287,6 +287,7 @@ Java_org_apache_subversion_javahl_SVNRep
            jusePostCommitHook ? true : false,
            jvalidateProps ? true : false,
            jignoreDates ? true : false,
+           jnormalizeProps ? true : false,
            relativePath,
            (jnotifyCallback != NULL ? &notifyCallback : NULL));
 }

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
 Mon Apr 16 12:21:02 2018
@@ -151,6 +151,39 @@ public interface ISVNRepos {
      * load the data of a dump into a repository
      * @param path              the path to the repository
      * @param dataInput         the data input source
+     * @param start             the first revision to load
+     * @param end               the last revision to load
+     * @param ignoreUUID        ignore any UUID found in the input stream
+     * @param forceUUID         set the repository UUID to any found in the
+     *                          stream
+     * @param usePreCommitHook  use the pre-commit hook when processing commits
+     * @param usePostCommitHook use the post-commit hook when processing 
commits
+     * @param validateProps     validate "svn:" revision and node properties
+     * @param ignoreDates       ignore revision datestamps in the dump stream
+     * @param normalizeProps    attempt to normalize invalid Subversion
+     *                          revision and node properties
+     * @param relativePath      the directory in the repository, where the data
+     *                          in put optional.
+     * @param callback          the target for processing messages
+     * @throws ClientException  throw in case of problem
+     * @since 1.10
+     */
+    public abstract void load(File path, InputStream dataInput,
+                              Revision start, Revision end,
+                              boolean ignoreUUID, boolean forceUUID,
+                              boolean usePreCommitHook,
+                              boolean usePostCommitHook,
+                              boolean validateProps,
+                              boolean ignoreDates,
+                              boolean normalizeProps,
+                              String relativePath,
+                              ReposNotifyCallback callback)
+        throws ClientException;
+
+    /**
+     * load the data of a dump into a repository
+     * @param path              the path to the repository
+     * @param dataInput         the data input source
          * @param start             the first revision to load
          * @param end               the last revision to load
      * @param ignoreUUID        ignore any UUID found in the input stream

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
 Mon Apr 16 12:21:02 2018
@@ -160,6 +160,17 @@ public class SVNRepos implements ISVNRep
             throws ClientException;
 
     public void load(File path, InputStream dataInput,
+                     boolean ignoreUUID, boolean forceUUID,
+                     boolean usePreCommitHook, boolean usePostCommitHook,
+                     String relativePath, ReposNotifyCallback callback)
+        throws ClientException
+    {
+        load(path, dataInput, Revision.START, Revision.HEAD,
+             ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
+             false, false, false, relativePath, callback);
+    }
+
+    public void load(File path, InputStream dataInput,
                      Revision start, Revision end,
                      boolean ignoreUUID, boolean forceUUID,
                      boolean usePreCommitHook, boolean usePostCommitHook,
@@ -168,18 +179,20 @@ public class SVNRepos implements ISVNRep
     {
         load(path, dataInput, start, end,
              ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
-             false, false, relativePath, callback);
+             false, false, false, relativePath, callback);
     }
 
     public void load(File path, InputStream dataInput,
+                     Revision start, Revision end,
                      boolean ignoreUUID, boolean forceUUID,
                      boolean usePreCommitHook, boolean usePostCommitHook,
+                     boolean validateProps, boolean ignoreDates,
                      String relativePath, ReposNotifyCallback callback)
-            throws ClientException
+        throws ClientException
     {
-        load(path, dataInput, Revision.START, Revision.HEAD,
+        load(path, dataInput, start, end,
              ignoreUUID, forceUUID, usePreCommitHook, usePostCommitHook,
-             false, false, relativePath, callback);
+             validateProps, ignoreDates, false, relativePath, callback);
     }
 
     public native void load(File path, InputStream dataInput,
@@ -187,6 +200,7 @@ public class SVNRepos implements ISVNRep
                             boolean ignoreUUID, boolean forceUUID,
                             boolean usePreCommitHook, boolean 
usePostCommitHook,
                             boolean validateProps, boolean ignoreDates,
+                            boolean normalizeProps,
                             String relativePath, ReposNotifyCallback callback)
             throws ClientException;
 

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/Core.pm
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/Core.pm?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/Core.pm
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/perl/native/Core.pm
 Mon Apr 16 12:21:02 2018
@@ -613,7 +613,7 @@ The second is if you have $SVN::Error::h
 calls you want to croak on when there is an error, but you don't want to write
 an explicit error handler. For example:
 
-my 
$result_rev=SVN::Error::croak_on_error($ctx-E<gt>checkout($url,$path,'HEAD',1));
+my $rev = SVN::Error::croak_on_error($ctx-E<gt>checkout($url,$path,'HEAD',1));
 
 If there is no error then croak_on_error will return the arguments passed to it
 unchanged.

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/svn/fs.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/svn/fs.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/svn/fs.py 
(original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/svn/fs.py 
Mon Apr 16 12:21:02 2018
@@ -34,12 +34,15 @@ del _unprefix_names
 # Names that are not to be exported
 import sys as _sys, os as _os, tempfile as _tempfile, subprocess as _subprocess
 try:
-  # Python >=3.0
-  import builtins
-except ImportError:
   # Python <3.0
+  # Check for Python <3.0 first to prevent the presence of the python2-future
+  # package from incorrectly importing Python 3 behavior when it isn't 
intended.
   import __builtin__ as builtins
+except ImportError:
+  # Python >=3.0
+  import builtins
 import svn.core as _svncore
+import svn.diff as _svndiff
 
 
 def entries(root, path, pool=None):
@@ -56,6 +59,7 @@ class FileDiff:
 
     self.tempfile1 = None
     self.tempfile2 = None
+    self.difftemp  = None
 
     self.root1 = root1
     self.path1 = path1
@@ -76,7 +80,7 @@ class FileDiff:
     return 0
 
   def _dump_contents(self, file, root, path, pool=None):
-    fp = builtins.open(file, 'w+') # avoid namespace clash with
+    fp = builtins.open(file, 'wb') # avoid namespace clash with
                                    # trimmed-down svn_fs_open()
     if path is not None:
       stream = file_contents(root, path, pool)
@@ -108,27 +112,49 @@ class FileDiff:
   def get_pipe(self):
     self.get_files()
 
-    # use an array for the command to avoid the shell and potential
-    # security exposures
-    cmd = ["diff"] \
-          + self.diffoptions \
-          + [self.tempfile1, self.tempfile2]
-
-    # open the pipe, and return the file object for reading from the child.
-    p = _subprocess.Popen(cmd, stdout=_subprocess.PIPE, bufsize=-1,
-                          close_fds=_sys.platform != "win32")
-    return p.stdout
+    # If diffoptions were provided, then the diff command needs to be
+    # called in preference to using the internal Subversion diff.
+    if self.diffoptions is not None:
+      # use an array for the command to avoid the shell and potential
+      # security exposures
+      cmd = ["diff"] \
+            + self.diffoptions \
+            + [self.tempfile1, self.tempfile2]
+
+      # open the pipe, and return the file object for reading from the child.
+      p = _subprocess.Popen(cmd, stdout=_subprocess.PIPE, bufsize=-1,
+                            close_fds=_sys.platform != "win32")
+      return p.stdout
+
+    else:
+      if self.difftemp is None:
+        self.difftemp = _tempfile.mktemp()
+
+        with builtins.open(self.difftemp, "wb") as fp:
+          diffopt = _svndiff.file_options_create()
+          diffobj = _svndiff.file_diff_2(self.tempfile1,
+                                         self.tempfile2,
+                                         diffopt)
+
+          _svndiff.file_output_unified4(fp,
+                                        diffobj,
+                                        self.tempfile1,
+                                        self.tempfile2,
+                                        None, None,
+                                        "utf8",
+                                        None,
+                                        diffopt.show_c_function,
+                                        diffopt.context_size,
+                                        None, None)
+
+      return builtins.open(self.difftemp, "rb")
 
   def __del__(self):
     # it seems that sometimes the files are deleted, so just ignore any
     # failures trying to remove them
-    if self.tempfile1 is not None:
-      try:
-        _os.remove(self.tempfile1)
-      except OSError:
-        pass
-    if self.tempfile2 is not None:
-      try:
-        _os.remove(self.tempfile2)
-      except OSError:
-        pass
+    for tmpfile in [self.tempfile1, self.tempfile2, self.difftemp]:
+      if tmpfile is not None:
+        try:
+          _os.remove(tmpfile)
+        except OSError:
+          pass

Modified: 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/tests/run_all.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/tests/run_all.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/tests/run_all.py
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/bindings/swig/python/tests/run_all.py
 Mon Apr 16 12:21:02 2018
@@ -19,7 +19,7 @@
 #
 #
 import unittest, setup_path
-import mergeinfo, core, client, delta, checksum, pool, ra, wc, repository, \
+import mergeinfo, core, client, delta, checksum, pool, fs, ra, wc, repository, 
\
        auth, trac.versioncontrol.tests
 from svn.core import svn_cache_config_get, svn_cache_config_set
 
@@ -37,6 +37,7 @@ def suite():
   s.addTest(client.suite())
   s.addTest(delta.suite())
   s.addTest(pool.suite())
+  s.addTest(fs.suite())
   s.addTest(ra.suite())
   s.addTest(wc.suite())
   s.addTest(repository.suite())

Modified: 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_sorts_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/include/private/svn_sorts_private.h?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_sorts_private.h
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_sorts_private.h
 Mon Apr 16 12:21:02 2018
@@ -190,7 +190,7 @@ svn_priority_queue__size(svn_priority_qu
 
 /**
  * Returns a reference to the first element in the @a queue.  The queue
- * contents remains unchanged.  If the @a queue is empty, #NULL will be
+ * contents remains unchanged.  If the @a queue is empty, NULL will be
  * returned.
  */
 void *
@@ -212,7 +212,7 @@ svn_priority_queue__pop(svn_priority_que
 
 /**
  * Append the new @a element to the @a queue.  @a element must neither be
- * #NULL nor the first element as returned by #svn_priority_queue__peek.
+ * NULL nor the first element as returned by #svn_priority_queue__peek.
  */
 void
 svn_priority_queue__push(svn_priority_queue__t *queue, const void *element);

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=1829257&r1=1829256&r2=1829257&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
 Mon Apr 16 12:21:02 2018
@@ -389,27 +389,27 @@ svn_hash__make(apr_pool_t *pool);
 
 /** Struct that represents a key value pair read from a serialized hash
  * representation.  There are special cases that can also be represented:
- * a #NULL @a key signifies the end of the hash, a #NULL @a val for non-
+ * a NULL @a key signifies the end of the hash, a NULL @a val for non-
  * NULL keys is only possible in incremental mode describes a deletion.
  *
  * @since New in 1.9.
  */
 typedef struct svn_hash__entry_t
 {
-  /** 0-terminated Key.  #NULL if this contains no data at all because we
+  /** 0-terminated Key.  NULL if this contains no data at all because we
    * encountered the end of the hash. */
   char *key;
 
-  /** Length of @a key.  Must be 0 if @a key is #NULL. */
+  /** Length of @a key.  Must be 0 if @a key is NULL. */
   apr_size_t keylen;
 
-  /** 0-terminated value stored with the key.  If this is #NULL for a
+  /** 0-terminated value stored with the key.  If this is NULL for a
    * non-NULL @a key, then this means that the key shall be removed from
-   * the hash (only used in incremental mode).  Must be #NULL if @a key is
-   * #NULL. */
+   * the hash (only used in incremental mode).  Must be NULL if @a key is
+   * NULL. */
   char *val;
 
-  /** Length of @a val.  Must be 0 if @a val is #NULL. */
+  /** Length of @a val.  Must be 0 if @a val is NULL. */
   apr_size_t vallen;
 } svn_hash__entry_t;
 

Modified: 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_wc_private.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/include/private/svn_wc_private.h?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_wc_private.h
 (original)
+++ 
subversion/branches/shelve-checkpoint/subversion/include/private/svn_wc_private.h
 Mon Apr 16 12:21:02 2018
@@ -537,7 +537,7 @@ svn_wc__node_get_origin(svn_boolean_t *i
  * If @a base_only is TRUE then only the base node will be examined,
  * otherwise the current base or working node will be examined.
  *
- * If a value is not interesting you can pass #NULL.
+ * If a value is not interesting you can pass NULL.
  *
  * If @a local_abspath is not in the working copy, return
  * @c SVN_ERR_WC_PATH_NOT_FOUND.  Use @a scratch_pool for all temporary
@@ -2044,11 +2044,27 @@ svn_wc__acquire_write_lock_for_resolve(c
 
 /* The implemementation of svn_wc_diff6(), but reporting to a diff processor
  *
- * If ROOT_RELPATH is not NULL, set *ROOT_RELPATH to the target of the diff
- * within the diff namespace. ("" or a single path component).
+ * New mode: when ROOT_RELPATH is not NULL:
  *
- * If ROOT_IS_FILE is NOT NULL set it
- * the first processor call. (The anchor is LOCAL_ABSPATH or an ancestor of it)
+ *   If LOCAL_ABSPATH is the WC root, set *ROOT_RELPATH to "" and send
+ *   diff processor relpaths relative to LOCAL_ABSPATH; otherwise set
+ *   *ROOT_RELPATH to the last component of LOCAL_ABSPATH and send diff
+ *   processor relpaths relative to the parent of LOCAL_ABSPATH.
+ *   (*ROOT_RELPATH will be either "" or a single path component.)
+ *
+ * Backward compatibility mode for svn_wc_diff6(): when ROOT_RELPATH is NULL:
+ *
+ *   Send diff processor relpaths relative to LOCAL_ABSPATH if it is a
+ *   directory; otherwise, relative to the parent of LOCAL_ABSPATH.
+ *   This matches the "anchor and target" semantics of svn_wc_diff6().
+ *
+ * If ROOT_IS_DIR is not NULL:
+ *
+ *   Set *ROOT_IS_DIR to TRUE if the working version of LOCAL_ABSPATH is
+ *   a directory, else to FALSE.
+ *
+ * Assignments to *ROOT_RELPATH and *ROOT_IS_DIR are made before the first
+ * call to DIFF_PROCESSOR.
  */
 svn_error_t *
 svn_wc__diff7(const char **root_relpath,

Modified: subversion/branches/shelve-checkpoint/subversion/include/svn_client.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/include/svn_client.h?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/include/svn_client.h 
(original)
+++ subversion/branches/shelve-checkpoint/subversion/include/svn_client.h Mon 
Apr 16 12:21:02 2018
@@ -520,7 +520,7 @@ typedef struct svn_client_commit_item3_t
 
   /**
    * When processing the commit this contains the relative path for
-   * the commit session. #NULL until the commit item is preprocessed.
+   * the commit session. NULL until the commit item is preprocessed.
    * @since New in 1.7.
    */
   const char *session_relpath;
@@ -1547,6 +1547,38 @@ svn_client_switch(svn_revnum_t *result_r
 
 /** @} */
 
+/** Callback for svn_client_layout_list()
+ *
+ * @warning EXPERIMENTAL.
+ */
+typedef svn_error_t * (*svn_client_layout_func_t)(
+                            void *layout_baton,
+                            const char *local_abspath,
+                            const char *repos_root_url,
+                            svn_boolean_t not_present,
+                            svn_boolean_t url_changed,
+                            const char *url,
+                            svn_boolean_t revision_changed,
+                            svn_revnum_t revision,
+                            svn_boolean_t depth_changed,
+                            svn_depth_t depth,
+                            apr_pool_t *scratch_pool);
+
+/**
+ * Describe the layout of the working copy below @a local_abspath to
+ * the callback @a layout.
+ *
+ * @warning EXPERIMENTAL.
+ */
+/*SVN_EXPERIMENTAL*/ /*commented out during development to avoid a warning*/
+svn_error_t *
+svn_client_layout_list(const char *local_abspath,
+                       svn_client_layout_func_t layout,
+                       void *layout_baton,
+                       svn_client_ctx_t *ctx,
+                       apr_pool_t *scratch_pool);
+
+
 /**
  * @defgroup Add Begin versioning files/directories in a working copy.
  *
@@ -3067,9 +3099,10 @@ svn_client_blame(const char *path_or_url
  *
  * Generated headers are encoded using @a header_encoding.
  *
- * Diff output will not be generated for binary files, unless @a
- * ignore_content_type is TRUE, in which case diffs will be shown
- * regardless of the content types.
+ * If either side has an svn:mime-type property that indicates 'binary'
+ * content, then if @a ignore_content_type is set, attempt to produce the
+ * diff in the usual way, otherwise produce a 'GIT binary diff' in git mode
+ * or print a warning message in non-git mode.
  *
  * @a diff_options (an array of <tt>const char *</tt>) is used to pass
  * additional command line options to the diff processes invoked to compare
@@ -4386,7 +4419,7 @@ 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
+ * @warning The 'revert' command intentionally and permanently loses
  * local modifications.
  *
  * @since New in 1.11.
@@ -4681,7 +4714,7 @@ typedef svn_error_t *(*svn_client_confli
 
 /**
  * Walk all conflicts within the specified @a depth of @a local_abspath.
- * Pass each conflict found during the walk to the @conflict_walk_func
+ * Pass each conflict found during the walk to the @a conflict_walk_func
  * callback, along with @a conflict_walk_func_baton.
  * Use cancellation and notification support provided by client context @a ctx.
  * 
@@ -4979,7 +5012,7 @@ svn_client_conflict_get_repos_info(const
  * Any output parameter may be set to @c NULL by the caller to indicate that
  * a particular piece of information should not be returned.
  *
- * In case of tree conflicts, this path@revision does not necessarily exist
+ * In case of tree conflicts, this "path@revision" does not necessarily exist
  * in the repository, and it does not necessarily represent the incoming
  * change which is responsible for the occurance of the tree conflict.
  * The responsible incoming change is generally located somewhere between
@@ -6828,7 +6861,7 @@ typedef struct svn_client_shelf_t
 {
     /* Public fields (read-only for public use) */
     const char *name;
-    int max_version;
+    int max_version;  /** @deprecated */
 
     /* Private fields */
     const char *wc_root_abspath;
@@ -6849,29 +6882,37 @@ typedef struct svn_client_shelf_version_
   svn_client_shelf_t *shelf;
   apr_time_t mtime;  /** time-stamp of this version */
 
-  /* TODO: these should be Private fields */
+  /* Private fields */
   const char *patch_abspath;  /** abspath of the patch file */
+  int version_number;  /** version number starting from 1 */
 } svn_client_shelf_version_t;
 
 /** Open an existing shelf or create a new shelf.
  *
+ * Create a new shelf (containing no versions) if a shelf named @a name
+ * is not found.
+ *
  * The shelf should be closed after use by calling svn_client_shelf_close().
  *
+ * @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_open(svn_client_shelf_t **shelf_p,
-                      const char *name,
-                      const char *local_abspath,
-                      svn_client_ctx_t *ctx,
-                      apr_pool_t *result_pool);
+svn_client_shelf_open_or_create(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.
+/** Open an existing shelf named @a name, or error if it doesn't exist.
  *
  * The shelf should be closed after use by calling svn_client_shelf_close().
  *
+ * @a local_abspath is any path in the WC and is used to find the WC root.
+ *
  * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
@@ -6895,7 +6936,9 @@ svn_error_t *
 svn_client_shelf_close(svn_client_shelf_t *shelf,
                        apr_pool_t *scratch_pool);
 
-/** Delete a shelf, by name.
+/** Delete the shelf named @a name, or error if it doesn't exist.
+ *
+ * @a local_abspath is any path in the WC and is used to find the WC root.
  *
  * @since New in 1.X.
  * @warning EXPERIMENTAL.
@@ -6911,36 +6954,72 @@ svn_client_shelf_delete(const char *name
 /** Save the local modifications found by @a paths, @a depth,
  * @a changelists as a new version of @a shelf.
  *
+ * Return the new shelf-version in @a *new_version_p.
+ *
  * @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.
+ * create a new version of @a shelf; set @a *new_version_p to null and
+ * return SVN_NO_ERROR. In this case @a shelf->max_version after the call
+ * is the same as before the call.
+ *
+ * @a *new_version_p may be null if that output is not wanted.
  *
  * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
 SVN_EXPERIMENTAL
 svn_error_t *
+svn_client_shelf_save_new_version2(svn_client_shelf_version_t **new_version_p,
+                                   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);
+
+/** @deprecated Use svn_client_shelf_save_new_version2() instead.
+ * @warning EXPERIMENTAL.
+ */
+SVN_DEPRECATED
+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 of @a shelf newer than @a shelf_version.
+ *
+ * If @a shelf_version is null, delete all versions of @a shelf. (The
+ * shelf will still exist, with any log message and other revprops, but
+ * with no versions in it.)
  *
- * Delete all newer versions.
+ * Leave the shelf's log message and other revprops unchanged.
+ *
+ * Any #svn_client_shelf_version_t object that refers to a deleted version
+ * will become invalid: attempting to use it will give undefined behaviour.
+ * The given @a shelf_version will remain valid.
  *
  * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
 SVN_EXPERIMENTAL
 svn_error_t *
+svn_client_shelf_delete_newer_versions(svn_client_shelf_t *shelf,
+                                       svn_client_shelf_version_t 
*shelf_version,
+                                       apr_pool_t *scratch_pool);
+
+/** @deprecated Use svn_client_shelf_delete_newer_versions() instead.
+ * @warning EXPERIMENTAL.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_client_shelf_set_current_version(svn_client_shelf_t *shelf,
-                                     int version,
+                                     int version_number,
                                      apr_pool_t *scratch_pool);
 
-/** Open an existing shelf version.
+/** Return in @a shelf_version an existing version of @a shelf, given its
+ * @a version_number. Error if that version doesn't exist.
  *
  * There is no need to "close" it after use.
  *
@@ -6951,11 +7030,44 @@ 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,
+                              int version_number,
                               apr_pool_t *result_pool,
                               apr_pool_t *scratch_pool);
 
-/** Apply version @a version of @a shelf to the WC.
+/** Return in @a shelf_version the newest version of @a shelf.
+ *
+ * Set @a shelf_version to null if no versions exist.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_get_newest_version(svn_client_shelf_version_t 
**shelf_version_p,
+                                    svn_client_shelf_t *shelf,
+                                    apr_pool_t *result_pool,
+                                    apr_pool_t *scratch_pool);
+
+/** Return in @a versions_p an array of (#svn_client_shelf_version_t *)
+ * containing all versions of @a shelf.
+ *
+ * The versions will be in chronological order, oldest to newest.
+ *
+ * @since New in 1.X.
+ * @warning EXPERIMENTAL.
+ */
+SVN_EXPERIMENTAL
+svn_error_t *
+svn_client_shelf_get_all_versions(apr_array_header_t **versions_p,
+                                  svn_client_shelf_t *shelf,
+                                  apr_pool_t *result_pool,
+                                  apr_pool_t *scratch_pool);
+
+/** Apply @a shelf_version to the WC.
+ *
+ * If @a dry_run is true, try applying the shelf-version to the WC and
+ * report the full set of notifications about successes and conflicts,
+ * but leave the WC untouched.
  *
  * @since New in 1.X.
  * @warning EXPERIMENTAL.
@@ -6966,29 +7078,51 @@ svn_client_shelf_apply(svn_client_shelf_
                        svn_boolean_t dry_run,
                        apr_pool_t *scratch_pool);
 
-/** Reverse-apply the current version of @a shelf to the WC.
+/** Test whether we can successfully apply the patch for @a file_relpath
+ * in @a shelf_version to the WC.
+ *
+ * Try applying the shelf-version to the WC and set @a *conflict_p to
+ * true if any conflict occurs, else to false.
+ *
+ * If @a file_relpath is not found in @a shelf_version, set @a *conflict_p
+ * to FALSE.
+ *
+ * @a file_relpath is relative to the WC root.
+ *
+ * A conflict means the shelf cannot be applied successfully to the WC
+ * because the change to be applied is not compatible with the current
+ * working state of the WC file. Examples are a text conflict, or the
+ * file does not exist or is a directory, or the shelf is trying to add
+ * the file but it already exists, or trying to delete it but it does not
+ * exist.
+ *
+ * Return an error only if something is broken, e.g. unable to read data
+ * from the specified shelf-version.
+ *
+ * Leave the WC untouched.
  *
  * @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);
+svn_client_shelf_test_apply_file(svn_boolean_t *conflict_p,
+                                 svn_client_shelf_version_t *shelf_version,
+                                 const char *file_relpath,
+                                 apr_pool_t *scratch_pool);
 
-/** Set @a *patch_abspath to the patch file path of @a shelf_version.
+/** Reverse-apply @a shelf_version to the WC.
  *
  * @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);
+svn_client_shelf_unapply(svn_client_shelf_version_t *shelf_version,
+                         svn_boolean_t dry_run,
+                         apr_pool_t *scratch_pool);
 
-/** Output version @a version of @a shelf as a patch to @a outstream.
+/** Output @a shelf_version as a patch to @a outstream.
  *
  * @since New in 1.X.
  * @warning EXPERIMENTAL.
@@ -7000,9 +7134,12 @@ svn_client_shelf_export_patch(svn_client
                               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.
+ * by the @a shelf_version.
+ *
+ * The hash key is the path of the affected file, relative to the WC root.
+ *
+ * (Future possibility: When moves and copies are supported, the hash key
+ * is the old path and value is the new path.)
  *
  * @since New in 1.10, changed in 1.X.
  * @warning EXPERIMENTAL.
@@ -7014,184 +7151,128 @@ svn_client_shelf_paths_changed(apr_hash_
                                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.
+/** Set @a shelf's revprop @a prop_name to @a prop_val.
+ *
+ * This can be used to set or change the shelf's log message
+ * (property name "svn:log" or #SVN_PROP_REVISION_LOG).
+ *
+ * If @a prop_val is NULL, delete the property (if present).
  *
  * @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);
+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 the log message in @a shelf into @a *log_message.
+/** Set @a shelf's revprops to @a revprop_table.
  *
- * Set @a *log_message to NULL if there is no log message.
+ * This deletes all previous revprops.
  *
  * @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);
+svn_client_shelf_revprop_set_all(svn_client_shelf_t *shelf,
+                                 apr_hash_t *revprop_table,
+                                 apr_pool_t *scratch_pool);
 
-/** Information about a shelf.
+/** Get @a shelf's revprop @a prop_name into @a *prop_val.
  *
- * @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.
+ * If the property is not present, set @a *prop_val to NULL.
  *
- * @a local_abspath is any path in the WC and is used to find the WC root.
+ * This can be used to get the shelf's log message
+ * (property name "svn:log" or #SVN_PROP_REVISION_LOG).
+ *
+ * The lifetime of the result is limited to that of @a shelf and/or
+ * of @a result_pool.
  *
  * @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);
+svn_client_shelf_revprop_get(svn_string_t **prop_val,
+                             svn_client_shelf_t *shelf,
+                             const char *prop_name,
+                             apr_pool_t *result_pool);
 
-/** @} */
-
-/** Shelving v1
+/** Get @a shelf's revprops into @a props.
  *
- * @defgroup svn_client_shelve_funcs Client Shelving Functions
- * @{
- */
-
-/** Shelve a change.
+ * The lifetime of the result is limited to that of @a shelf and/or
+ * of @a result_pool.
  *
- * Shelve as @a name the local modifications found by @a paths, @a depth,
- * @a changelists. Revert the shelved change from the WC unless @a keep_local
- * is true.
- *
- * If @a dry_run is true, don't actually do it.
- *
- * @since New in 1.10.
+ * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
 SVN_EXPERIMENTAL
 svn_error_t *
-svn_client_shelve(const char *name,
-                  const apr_array_header_t *paths,
-                  svn_depth_t depth,
-                  const apr_array_header_t *changelists,
-                  svn_boolean_t keep_local,
-                  svn_boolean_t dry_run,
-                  svn_client_ctx_t *ctx,
-                  apr_pool_t *pool);
+svn_client_shelf_revprop_list(apr_hash_t **props,
+                              svn_client_shelf_t *shelf,
+                              apr_pool_t *result_pool);
 
-/** Unshelve the shelved change @a name.
+/** Set the log message in @a shelf to @a log_message.
  *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- * Rename the shelved patch to add a '.bak' extension unless @a keep is true.
+ * If @a log_message is null, delete the log message.
  *
- * If @a dry_run is true, don't actually do it.
+ * Similar to svn_client_shelf_revprop_set(... SVN_PROP_REVISION_LOG ...).
  *
- * @since New in 1.10.
+ * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
 SVN_EXPERIMENTAL
 svn_error_t *
-svn_client_unshelve(const char *name,
-                    const char *local_abspath,
-                    svn_boolean_t keep,
-                    svn_boolean_t dry_run,
-                    svn_client_ctx_t *ctx,
-                    apr_pool_t *pool);
+svn_client_shelf_set_log_message(svn_client_shelf_t *shelf,
+                                 const char *log_message,
+                                 apr_pool_t *scratch_pool);
 
-/** Delete the shelved patch @a name.
+/** Get the log message in @a shelf into @a *log_message.
  *
- * @a local_abspath is any path in the WC and is used to find the WC root.
+ * Set @a *log_message to NULL if there is no log message.
  *
- * If @a dry_run is true, don't actually do it.
+ * Similar to svn_client_shelf_revprop_get(... SVN_PROP_REVISION_LOG ...).
  *
- * @since New in 1.10.
+ * The result is allocated in @a result_pool.
+ *
+ * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
 SVN_EXPERIMENTAL
 svn_error_t *
-svn_client_shelves_delete(const char *name,
-                          const char *local_abspath,
-                          svn_boolean_t dry_run,
-                          svn_client_ctx_t *ctx,
-                          apr_pool_t *pool);
+svn_client_shelf_get_log_message(char **log_message,
+                                 svn_client_shelf_t *shelf,
+                                 apr_pool_t *result_pool);
 
-/** Information about a shelved patch.
+/** Information about a shelf.
  *
- * @since New in 1.10.
+ * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
-typedef struct svn_client_shelved_patch_info_t
+typedef struct svn_client_shelf_info_t
 {
-  const char *message;  /* first line of log message */
-  const char *patch_path;  /* abspath of the patch file */
-  svn_io_dirent2_t *dirent;  /* info about the patch file */
-  apr_time_t mtime;  /* a copy of dirent->mtime */
-} svn_client_shelved_patch_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 patch name, of pointers to
- * @c svn_client_shelved_patch_info_t structures.
+/** Set @a *shelf_infos to a hash, keyed by shelf name, of pointers to
+ * @c svn_client_shelf_info_t structures, one for each shelf in the
+ * given WC.
  *
  * @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_list(apr_hash_t **shelved_patch_infos,
-                        const char *local_abspath,
-                        svn_client_ctx_t *ctx,
-                        apr_pool_t *result_pool,
-                        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
- * same except when a path is moved or copied.
- *
- * @since New in 1.10.
- * @warning EXPERIMENTAL.
- */
-SVN_EXPERIMENTAL
-svn_error_t *
-svn_client_shelf_get_paths(apr_hash_t **affected_paths,
-                           const char *name,
-                           const char *local_abspath,
-                           svn_client_ctx_t *ctx,
-                           apr_pool_t *result_pool,
-                           apr_pool_t *scratch_pool);
-
-/** Set @a *has_changes to indicate whether the shelf @a name
- * contains any modifications, in other words if svn_client_shelf_get_paths()
- * would return a non-empty set of paths.
- *
- * @since New in 1.10.
+ * @since New in 1.X.
  * @warning EXPERIMENTAL.
  */
 SVN_EXPERIMENTAL
 svn_error_t *
-svn_client_shelf_has_changes(svn_boolean_t *has_changes,
-                             const char *name,
-                             const char *local_abspath,
-                             svn_client_ctx_t *ctx,
-                             apr_pool_t *scratch_pool);
+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);
 
 /** @} */
 


Reply via email to