subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From julianf...@apache.org
Subject svn commit: r1829257 [10/11] - in /subversion/branches/shelve-checkpoint: ./ build/ build/ac-macros/ subversion/bindings/javahl/native/ subversion/bindings/javahl/native/jniwrapper/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversio...
Date Mon, 16 Apr 2018 12:21:14 GMT
Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/davautocheck.sh?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/davautocheck.sh Mon Apr 16 12:21:02 2018
@@ -52,6 +52,7 @@
 # Run this script with the test suite name and test number to execute just this
 # test:
 #   subversion/tests/cmdline/davautocheck.sh basic 4
+# This script can also be invoked via "make davautocheck".
 #
 # If the temporary directory is not deleted, it can be reused for further
 # manual DAV protocol interoperation testing. HTTPD must be started by
@@ -65,18 +66,19 @@
 #   APXS=/opt/svn/1.4.x/bin/apxs MODULE_PATH=/opt/svn/1.4.x/modules \
 #     subversion/tests/cmdline/davautocheck.sh
 #
-# To prevent the server from advertising httpv2, pass USE_HTTPV1 in
-# the environment.
+# Other environment variables that are interpreted by this script:
 #
-# To enable "SVNCacheRevProps on" set CACHE_REVPROPS in the environment.
+#  make davautocheck CACHE_REVPROPS=1       # sets SVNCacheRevProps on
 #
-# To test over https set USE_SSL in the environment.
+#  make davautocheck BLOCK_READ=1           # sets SVNBlockRead on
 #
-# To use value for "SVNPathAuthz" directive set SVN_PATH_AUTHZ with
-# appropriate value in the environment.
+#  make davautocheck USE_SSL=1              # run over https
 #
-# To load an MPM module for Apache 2.4 use APACHE_MPM=event in the
-# environment.
+#  make davautocheck USE_HTTPV1=1           # sets SVNAdvertiseV2Protocol off
+#
+#  make davautocheck APACHE_MPM=event       # specifies the 2.4 MPM
+#
+#  make davautocheck SVN_PATH_AUTHZ=short_circuit  # SVNPathAuthz short_circuit
 #
 # Passing --no-tests as argv[1] will have the script start a server
 # but not run any tests.  Passing --gdb or --lldb will do the same, and in
@@ -222,6 +224,11 @@ if [ ${CACHE_REVPROPS:+set} ]; then
   CACHE_REVPROPS_SETTING=on
 fi
 
+BLOCK_READ_SETTING=off
+if [ ${BLOCK_READ:+set} ]; then
+  BLOCK_READ_SETTING=on
+fi
+
 if [ ${MODULE_PATH:+set} ]; then
     MOD_DAV_SVN="$MODULE_PATH/mod_dav_svn.so"
     MOD_AUTHZ_SVN="$MODULE_PATH/mod_authz_svn.so"
@@ -274,6 +281,9 @@ say "Using '$HTPASSWD'..."
 LOAD_MOD_DAV=$(get_loadmodule_config mod_dav) \
   || fail "DAV module not found"
 
+LOAD_MOD_DAV_FS=$(get_loadmodule_config mod_dav_fs) \
+  || fail "Filesystem DAV module not found"
+
 LOAD_MOD_LOG_CONFIG=$(get_loadmodule_config mod_log_config) \
   || fail "log_config module not found"
 
@@ -440,6 +450,7 @@ $LOAD_MOD_MIME
 $LOAD_MOD_ALIAS
 $LOAD_MOD_UNIXD
 $LOAD_MOD_DAV
+$LOAD_MOD_DAV_FS
 LoadModule          dav_svn_module "$MOD_DAV_SVN"
 $LOAD_MOD_AUTH
 $LOAD_MOD_AUTHN_CORE
@@ -475,6 +486,13 @@ mkdir "$HTTPD_LOCK" \
 __EOF__
 fi
 
+HTTPD_DAV="$HTTPD_ROOT/dav"
+mkdir "$HTTPD_DAV" \
+    || fail "couldn't create DAV lock directory '$HTTPD_DAV'"
+cat >> "$HTTPD_CFG" <<__EOF__
+DavLockDB "$HTTPD_DAV/lock.db"
+__EOF__
+
 if [ ${USE_SSL:+set} ]; then
 cat >> "$HTTPD_CFG" <<__EOF__
 SSLEngine on
@@ -518,40 +536,51 @@ CustomLog           "$HTTPD_ROOT/ops" "%
   #Require           all granted
 </Directory>
 
+Alias /nodavroot $ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/nodavroot
+<Directory $ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/nodavroot>
+</Directory>
+
+Alias /fsdavroot $ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/fsdavroot
+<Directory $ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/fsdavroot>
+  DAV filesystem
+</Directory>
+
 <Location /svn-test-work/repositories>
+__EOF__
+location_common() {
+cat >> "$HTTPD_CFG" <<__EOF__
   DAV               svn
-  SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/repositories"
   AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
   AuthType          Basic
   AuthName          "Subversion Repository"
   AuthUserFile      $HTTPD_USERS
-  Require           valid-user
   SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
   SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
+  SVNListParentPath On
+  SVNBlockRead      ${BLOCK_READ_SETTING}
+__EOF__
+}
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
+  SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/repositories"
+  Require           valid-user
   ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /ddt-test-work/repositories>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/repositories"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
   ${SVN_PATH_AUTHZ_LINE}
   DontDoThatConfigFile "$HTTPD_DONTDOTHAT"
 </Location>
 <Location /svn-test-work/local_tmp/repos>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNPath           "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp/repos"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
   ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /authz-test-work/anon>
@@ -574,84 +603,54 @@ CustomLog           "$HTTPD_ROOT/ops" "%
   ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /authz-test-work/mixed>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-  SVNListParentPath On
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
   Satisfy Any
   ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /authz-test-work/mixed-noauthwhenanon>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-  SVNListParentPath On
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
   AuthzSVNNoAuthWhenAnonymousAllowed On
   SVNPathAuthz On
 </Location>
 <Location /authz-test-work/authn>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-  SVNListParentPath On
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
   ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /authz-test-work/authn-anonoff>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-  SVNListParentPath On
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
   AuthzSVNAnonymous Off
   SVNPathAuthz On
 </Location>
 <Location /authz-test-work/authn-lcuser>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-  SVNListParentPath On
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   Require           valid-user
   AuthzForceUsernameCase Lower
   ${SVN_PATH_AUTHZ_LINE}
 </Location>
 <Location /authz-test-work/authn-group>
-  DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
   SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-  AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-  SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-  SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-  SVNListParentPath On
-  AuthType          Basic
-  AuthName          "Subversion Repository"
-  AuthUserFile      $HTTPD_USERS
   AuthGroupFile     $HTTPD_GROUPS
   Require           group random
   AuthzSVNAuthoritative Off
@@ -659,15 +658,10 @@ CustomLog           "$HTTPD_ROOT/ops" "%
 </Location>
 <IfModule mod_authz_core.c>
   <Location /authz-test-work/sallrany>
-    DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
     SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-    AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-    SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-    SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-    SVNListParentPath On
-    AuthType          Basic
-    AuthName          "Subversion Repository"
-    AuthUserFile      $HTTPD_USERS
     AuthzSendForbiddenOnFailure On
     Satisfy All
     <RequireAny>
@@ -677,15 +671,10 @@ CustomLog           "$HTTPD_ROOT/ops" "%
     ${SVN_PATH_AUTHZ_LINE}
   </Location>
   <Location /authz-test-work/sallrall>
-    DAV               svn
+__EOF__
+location_common
+cat >> "$HTTPD_CFG" <<__EOF__
     SVNParentPath     "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/local_tmp"
-    AuthzSVNAccessFile "$ABS_BUILDDIR/subversion/tests/cmdline/svn-test-work/authz"
-    SVNAdvertiseV2Protocol ${ADVERTISE_V2_PROTOCOL}
-    SVNCacheRevProps  ${CACHE_REVPROPS_SETTING}
-    SVNListParentPath On
-    AuthType          Basic
-    AuthName          "Subversion Repository"
-    AuthUserFile      $HTTPD_USERS
     AuthzSendForbiddenOnFailure On
     Satisfy All
     <RequireAll>

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn--help_stdout Mon Apr 16 12:21:02 2018
@@ -42,18 +42,19 @@ Available subcommands:
    resolve
    resolved
    revert
-   shelf-diff
-   shelf-drop
-   shelf-list (shelves)
-   shelf-log
-   shelf-save
-   shelve
-   unshelve
    status (stat, st)
    switch (sw)
    unlock
    update (up)
    upgrade
+   x-shelf-diff (shelf-diff)
+   x-shelf-drop (shelf-drop)
+   x-shelf-list (shelf-list, shelves)
+   x-shelf-list-by-paths (shelf-list-by-paths)
+   x-shelf-log (shelf-log)
+   x-shelf-save (shelf-save)
+   x-shelve (shelve)
+   x-unshelve (unshelve)
 
 Subversion is a tool for version control.
 For additional information, see http://subversion.apache.org/

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/getopt_tests_data/svn_help_stdout Mon Apr 16 12:21:02 2018
@@ -42,18 +42,19 @@ Available subcommands:
    resolve
    resolved
    revert
-   shelf-diff
-   shelf-drop
-   shelf-list (shelves)
-   shelf-log
-   shelf-save
-   shelve
-   unshelve
    status (stat, st)
    switch (sw)
    unlock
    update (up)
    upgrade
+   x-shelf-diff (shelf-diff)
+   x-shelf-drop (shelf-drop)
+   x-shelf-list (shelf-list, shelves)
+   x-shelf-list-by-paths (shelf-list-by-paths)
+   x-shelf-log (shelf-log)
+   x-shelf-save (shelf-save)
+   x-shelve (shelve)
+   x-unshelve (unshelve)
 
 Subversion is a tool for version control.
 For additional information, see http://subversion.apache.org/

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/iprop_authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/iprop_authz_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/iprop_authz_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/iprop_authz_tests.py Mon Apr 16 12:21:02 2018
@@ -105,7 +105,7 @@ def iprops_authz(sbox):
   write_authz_file(sbox, {
     "/"          : svntest.main.wc_author + "=rw",
     "/A/D/H/psi" : svntest.main.wc_author + "=",})
-  if sbox.repo_url.startswith("http"):
+  if svntest.main.is_ra_type_dav():
     expected_err = ".*[Ff]orbidden.*"
   else:
     expected_err = ".*svn: E170001: Authorization failed.*"

Propchange: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/mod_dav_svn_tests.py
------------------------------------------------------------------------------
    svn:executable = *

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/shelf_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/shelf_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/shelf_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/shelf_tests.py Mon Apr 16 12:21:02 2018
@@ -44,22 +44,28 @@ Item = wc.StateItem
 
 #----------------------------------------------------------------------
 
-def shelve_unshelve_verify(sbox):
+def state_from_status(wc_dir):
+  _, output, _ = svntest.main.run_svn(None, 'status', '-v', '-u', '-q',
+                                      wc_dir)
+  return svntest.wc.State.from_status(output, wc_dir)
+
+def shelve_unshelve_verify(sbox, modifier):
   """Round-trip: shelve; verify all changes are reverted;
      unshelve; verify all changes are restored.
   """
 
   wc_dir = sbox.wc_dir
+  virginal_state = state_from_status(wc_dir)
+
+  # Make some changes to the working copy
+  modifier(sbox)
 
   # Save the modified state
-  _, output, _ = svntest.main.run_svn(None, 'status', '-v', '-u', '-q',
-                                      wc_dir)
-  modified_state = svntest.wc.State.from_status(output, wc_dir)
+  modified_state = state_from_status(wc_dir)
 
   # Shelve; check there are no longer any modifications
   svntest.actions.run_and_verify_svn(None, [],
                                      'shelve', 'foo')
-  virginal_state = svntest.actions.get_virginal_state(wc_dir, 1)
   svntest.actions.run_and_verify_status(wc_dir, virginal_state)
 
   # Unshelve; check the original modifications are here again
@@ -74,15 +80,13 @@ def shelve_unshelve(sbox, modifier):
      shelve and unshelve; verify changes are fully reverted and restored.
   """
 
-  sbox.build()
+  if not sbox.is_built():
+    sbox.build()
   was_cwd = os.getcwd()
   os.chdir(sbox.wc_dir)
   sbox.wc_dir = ''
 
-  # Make some changes to the working copy
-  modifier(sbox)
-
-  shelve_unshelve_verify(sbox)
+  shelve_unshelve_verify(sbox, modifier)
 
   os.chdir(was_cwd)
 
@@ -116,10 +120,8 @@ def shelve_adds(sbox):
   "shelve adds"
 
   def modifier(sbox):
-    sbox.simple_append('A/new', 'A new file\n')
-    sbox.simple_add('A/new')
-    sbox.simple_append('A/new2', 'A new file\n')
-    sbox.simple_add('A/new2')
+    sbox.simple_add_text('A new file\n', 'A/new')
+    sbox.simple_add_text('A new file\n', 'A/new2')
     sbox.simple_propset('p', 'v', 'A/new2')
 
   shelve_unshelve(sbox, modifier)
@@ -137,6 +139,36 @@ def shelve_deletes(sbox):
 
 #----------------------------------------------------------------------
 
+@XFail()
+def shelve_empty_adds(sbox):
+  "shelve empty adds"
+  sbox.build(empty=True)
+
+  def modifier(sbox):
+    sbox.simple_add_text('', 'empty')
+    sbox.simple_add_text('', 'empty-with-prop')
+    sbox.simple_propset('p', 'v', 'empty-with-prop')
+
+  shelve_unshelve(sbox, modifier)
+
+#----------------------------------------------------------------------
+
+@XFail()
+def shelve_empty_deletes(sbox):
+  "shelve empty deletes"
+  sbox.build(empty=True)
+  sbox.simple_add_text('', 'empty')
+  sbox.simple_add_text('', 'empty-with-prop')
+  sbox.simple_propset('p', 'v', 'empty-with-prop')
+  sbox.simple_commit()
+
+  def modifier(sbox):
+    sbox.simple_rm('empty', 'empty-with-prop')
+
+  shelve_unshelve(sbox, modifier)
+
+#----------------------------------------------------------------------
+
 def shelve_from_inner_path(sbox):
   "shelve from inner path"
 
@@ -148,18 +180,12 @@ def shelve_from_inner_path(sbox):
   os.chdir(sbox.ospath('A'))
   sbox.wc_dir = '..'
 
-  modifier(sbox)
-  shelve_unshelve_verify(sbox)
+  shelve_unshelve_verify(sbox, modifier)
 
   os.chdir(was_cwd)
 
 #----------------------------------------------------------------------
 
-def state_from_status(wc_dir):
-  _, output, _ = svntest.main.run_svn(None, 'status', '-v', '-u', '-q',
-                                      wc_dir)
-  return svntest.wc.State.from_status(output, wc_dir)
-
 def save_revert_restore(sbox, modifier1, modifier2):
   "Save 2 checkpoints; revert; restore 1st"
 
@@ -226,6 +252,92 @@ def shelve_mergeinfo(sbox):
 
   shelve_unshelve(sbox, modifier)
 
+#----------------------------------------------------------------------
+
+def unshelve_refuses_if_conflicts(sbox):
+  "unshelve refuses if conflicts"
+
+  def modifier1(sbox):
+    sbox.simple_append('alpha', 'A-mod1\nB\nC\nD\n', truncate=True)
+    sbox.simple_append('beta', 'A-mod1\nB\nC\nD\n', truncate=True)
+
+  def modifier2(sbox):
+    sbox.simple_append('beta', 'A-mod2\nB\nC\nD\n', truncate=True)
+
+  sbox.build(empty=True)
+  was_cwd = os.getcwd()
+  os.chdir(sbox.wc_dir)
+  sbox.wc_dir = ''
+  wc_dir = ''
+
+  sbox.simple_add_text('A\nB\nC\nD\n', 'alpha')
+  sbox.simple_add_text('A\nB\nC\nD\n', 'beta')
+  sbox.simple_commit()
+  initial_state = state_from_status(wc_dir)
+
+  # Make initial mods; remember this modified state
+  modifier1(sbox)
+  modified_state1 = state_from_status(wc_dir)
+  assert modified_state1 != initial_state
+
+  # Shelve; check there are no longer any local mods
+  svntest.actions.run_and_verify_svn(None, [],
+                                     'shelve', 'foo')
+  svntest.actions.run_and_verify_status(wc_dir, initial_state)
+
+  # Make a different local mod that will conflict with the shelf
+  modifier2(sbox)
+  modified_state2 = state_from_status(wc_dir)
+
+  # Try to unshelve; check it fails with an error about a conflict
+  svntest.actions.run_and_verify_svn(None, '.*[Cc]onflict.*',
+                                     'unshelve', 'foo')
+  # Check nothing changed in the attempt
+  svntest.actions.run_and_verify_status(wc_dir, modified_state2)
+
+#----------------------------------------------------------------------
+
+@XFail()
+def shelve_binary_file_mod(sbox):
+  "shelve binary file mod"
+
+  sbox.build(empty=True)
+  sbox.simple_add_text('\0\1\2\3\4\5', 'bin')
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  def modifier(sbox):
+    sbox.simple_append('bin', '\5\4\3\2\1\0', truncate=True)
+
+  shelve_unshelve(sbox, modifier)
+
+#----------------------------------------------------------------------
+
+@XFail()
+def shelve_binary_file_add(sbox):
+  "shelve binary file add"
+
+  def modifier(sbox):
+    sbox.simple_add_text('\0\1\2\3\4\5', 'bin')
+
+  shelve_unshelve(sbox, modifier)
+
+#----------------------------------------------------------------------
+
+@XFail()
+def shelve_binary_file_del(sbox):
+  "shelve binary file del"
+
+  sbox.build(empty=True)
+  sbox.simple_add_text('\0\1\2\3\4\5', 'bin')
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  def modifier(sbox):
+    sbox.simple_rm('bin')
+
+  shelve_unshelve(sbox, modifier)
+
 
 ########################################################################
 # Run the tests
@@ -236,9 +348,15 @@ test_list = [ None,
               shelve_prop_changes,
               shelve_adds,
               shelve_deletes,
+              shelve_empty_adds,
+              shelve_empty_deletes,
               shelve_from_inner_path,
               checkpoint_basic,
               shelve_mergeinfo,
+              unshelve_refuses_if_conflicts,
+              shelve_binary_file_mod,
+              shelve_binary_file_add,
+              shelve_binary_file_del,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnadmin_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnadmin_tests.py Mon Apr 16 12:21:02 2018
@@ -777,9 +777,13 @@ def verify_windows_paths_in_repos(sbox):
 def fsfs_file(repo_dir, kind, rev):
   if svntest.main.options.server_minor_version >= 5:
     if svntest.main.options.fsfs_sharding is None:
+      if svntest.main.is_fs_type_fsx():
+        rev = 'r' + rev
       return os.path.join(repo_dir, 'db', kind, '0', rev)
     else:
       shard = int(rev) // svntest.main.options.fsfs_sharding
+      if svntest.main.is_fs_type_fsx():
+        rev = 'r' + rev
       path = os.path.join(repo_dir, 'db', kind, str(shard), rev)
 
       if svntest.main.options.fsfs_packing is None or kind == 'revprops':
@@ -2856,10 +2860,7 @@ def verify_quickly(sbox):
   "verify quickly using metadata"
 
   sbox.build(create_wc = False)
-  if svntest.main.is_fs_type_fsfs():
-    rev_file = open(fsfs_file(sbox.repo_dir, 'revs', '1'), 'r+b')
-  else:
-    rev_file = open(fsfs_file(sbox.repo_dir, 'revs', 'r1'), 'r+b')
+  rev_file = open(fsfs_file(sbox.repo_dir, 'revs', '1'), 'r+b')
 
   # set new contents
   rev_file.seek(8)
@@ -3801,6 +3802,28 @@ def dump_invalid_filtering_option(sbox):
                                           '--include', '/A/B/E',
                                           sbox.repo_dir)
 
+@Issue(4725)
+def load_issue4725(sbox):
+  """load that triggers issue 4725"""
+
+  sbox.build(empty=True)
+
+  sbox.simple_mkdir('subversion')
+  sbox.simple_commit()
+  sbox.simple_mkdir('subversion/trunk')
+  sbox.simple_mkdir('subversion/branches')
+  sbox.simple_commit()
+  sbox.simple_mkdir('subversion/trunk/src')
+  sbox.simple_commit()
+
+  _, dump, _ = svntest.actions.run_and_verify_svnadmin(None, [],
+                                                       'dump', '-q',
+                                                       sbox.repo_dir)
+
+  sbox2 = sbox.clone_dependent()
+  sbox2.build(create_wc=False, empty=True)
+  load_and_verify_dumpstream(sbox2, None, [], None, False, dump, '-M100')
+
 ########################################################################
 # Run the tests
 
@@ -3873,7 +3896,8 @@ test_list = [ None,
               dump_exclude_by_pattern,
               dump_include_by_pattern,
               dump_exclude_all_rev_changes,
-              dump_invalid_filtering_option
+              dump_invalid_filtering_option,
+              load_issue4725,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnauthz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnauthz_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnauthz_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnauthz_tests.py Mon Apr 16 12:21:02 2018
@@ -197,9 +197,8 @@ def svnauthz_validate_txn_test(sbox):
   svntest.main.create_python_hook_script(pre_commit_hook, hook_instance)
   svntest.main.file_append(authz_path, 'x')
   expected_status.tweak('A/authz', status='  ', wc_rev=4)
-  if svntest.actions.run_and_verify_commit(wc_dir, expected_output,
-                                           expected_status):
-    raise svntest.Failure
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status)
   expected_data = svntest.verify.ExpectedOutput("Exit 2\n", match_all=False)
   verify_logfile(logfilepath, expected_data)
 
@@ -275,9 +274,8 @@ def svnauthz_accessof_repo_test(sbox):
   expected_status.add({
     'A/authz'            :  Item(status='  ', wc_rev=2),
   })
-  if svntest.actions.run_and_verify_commit(wc_dir, expected_output,
-                                           expected_status):
-    raise svntest.Failure
+  svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+                                        expected_status)
 
   # Anonymous access with no path, and no repository should be rw
   # since it returns the highest level of access granted anywhere.

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnserveautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnserveautocheck.sh?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnserveautocheck.sh (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnserveautocheck.sh Mon Apr 16 12:21:02 2018
@@ -31,6 +31,14 @@
 # distribution; it's easiest to just run it as "make svnserveautocheck".
 # Like "make check", you can specify further options like
 # "make svnserveautocheck FS_TYPE=bdb TESTS=subversion/tests/cmdline/basic.py".
+#
+# Other environment variables that can be passed:
+#
+#  make svnserveautocheck CACHE_REVPROPS=1   # run svnserve --cache-revprops
+#
+#  make svnserveautocheck BLOCK_READ=1       # run svnserve --block-read on
+#
+#  make svnserveautocheck THREADED=1         # run svnserve -T
 
 PYTHON=${PYTHON:-python}
 
@@ -124,6 +132,10 @@ if [ ${CACHE_REVPROPS:+set} ]; then
   SVNSERVE_ARGS="$SVNSERVE_ARGS --cache-revprops on"
 fi
 
+if [ ${BLOCK_READ:+set} ]; then
+  SVNSERVE_ARGS="$SVNSERVE_ARGS --block-read on"
+fi
+
 "$SERVER_CMD" -d -r "$ABS_BUILDDIR/subversion/tests/cmdline" \
             --listen-host 127.0.0.1 \
             --listen-port $SVNSERVE_PORT \

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnsync_authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnsync_authz_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnsync_authz_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnsync_authz_tests.py Mon Apr 16 12:21:02 2018
@@ -415,7 +415,7 @@ def specific_deny_authz(sbox):
 
   # For mod_dav_svn's parent path setup we need per-repos permissions in
   # the authz file...
-  if sbox.repo_url.startswith('http'):
+  if svntest.main.is_ra_type_dav():
     src_authz = sbox.authz_name()
     dst_authz = dest_sbox.authz_name()
     write_authz_file(sbox, None,

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/actions.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/actions.py Mon Apr 16 12:21:02 2018
@@ -74,6 +74,11 @@ def setup_pristine_greek_repository():
   if not os.path.exists(main.general_repo_dir):
     os.makedirs(main.general_repo_dir) # this also creates all the intermediate dirs
 
+  if not os.path.exists(main.other_dav_root_dir):
+    os.makedirs(main.other_dav_root_dir)
+  if not os.path.exists(main.non_dav_root_dir):
+    os.makedirs(main.non_dav_root_dir)
+
   # If there's no pristine repos, create one.
   if not os.path.exists(main.pristine_greek_repos_dir):
     if main.options.fsfs_version is not None:

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/main.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/main.py Mon Apr 16 12:21:02 2018
@@ -224,6 +224,10 @@ SVN_PROP_INHERITABLE_IGNORES = "svn:glob
 general_repo_dir = os.path.join(work_dir, "repositories")
 general_wc_dir = os.path.join(work_dir, "working_copies")
 
+# Directories used for DAV tests
+other_dav_root_dir = os.path.join(work_dir, "fsdavroot")
+non_dav_root_dir = os.path.join(work_dir, "nodavroot")
+
 # temp directory in which we will create our 'pristine' local
 # repository and other scratch data.  This should be removed when we
 # quit and when we startup.
@@ -1035,7 +1039,8 @@ def _post_create_repos(path, minor_versi
       users += (crosscheck_username + " = " + crosscheck_password + "\n")
     file_append(os.path.join(path, "conf", "passwd"), users)
 
-  if options.fs_type is None or options.fs_type == 'fsfs':
+  if options.fs_type is None or options.fs_type == 'fsfs' or \
+     options.fs_type == 'fsx':
     # fsfs.conf file
     if (minor_version is None or minor_version >= 6):
       confpath = get_fsfs_conf_file_path(path)
@@ -2335,6 +2340,8 @@ def execute_tests(test_list, serial_only
 
   global pristine_url
   global pristine_greek_repos_url
+  global other_dav_root_url
+  global non_dav_root_url
   global svn_binary
   global svnadmin_binary
   global svnlook_binary
@@ -2414,6 +2421,10 @@ def execute_tests(test_list, serial_only
                                   pristine_greek_repos_dir.replace(
                                       os.path.sep, '/'))
 
+  other_dav_root_url = options.test_area_url + '/fsdavroot'
+  non_dav_root_url = options.test_area_url + '/nodavroot'
+
+
   if options.use_jsvn:
     if options.svn_bin is None:
       options.svn_bin = ''

Propchange: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/mergetrees.py
            ('svn:executable' removed)

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/verify.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/verify.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/verify.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svntest/verify.py Mon Apr 16 12:21:02 2018
@@ -256,6 +256,24 @@ class RegexListOutput(ExpectedOutput):
   def display_differences(self, message, label, actual):
     display_lines(message, self.expected, actual, label + ' (regexp)', label)
 
+    assert actual is not None
+    if not isinstance(actual, list):
+      actual = [actual]
+
+    if self.match_all:
+      logger.warn('DIFF ' + label + ':')
+      if len(self.expected) != len(actual):
+        logger.warn('# Expected %d lines; actual %d lines' %
+                    (len(self.expected), len(actual)))
+      for e, a in map(None, self.expected_res, actual):
+        if e is not None and a is not None and e.match(a):
+          logger.warn("|  " + a.rstrip())
+        else:
+          if e is not None:
+            logger.warn("| -" + e.pattern.rstrip())
+          if a is not None:
+            logger.warn("| +" + a.rstrip())
+
   def insert(self, index, line):
     self.expected.insert(index, line)
     self.expected_res = [re.compile(e) for e in self.expected]
@@ -305,6 +323,9 @@ class UnorderedRegexListOutput(ExpectedO
     assert actual is not None
     if not isinstance(actual, list):
       actual = [actual]
+    else:
+      # copy the list so we can remove elements without affecting caller
+      actual = actual[:]
 
     if len(self.expected) != len(actual):
       return False
@@ -323,6 +344,27 @@ class UnorderedRegexListOutput(ExpectedO
     display_lines(message, self.expected, actual,
                   label + ' (regexp) (unordered)', label)
 
+    assert actual is not None
+    if not isinstance(actual, list):
+      actual = [actual]
+    else:
+      # copy the list so we can remove elements without affecting caller
+      actual = actual[:]
+
+    logger.warn('DIFF ' + label + ':')
+    if len(self.expected) != len(actual):
+      logger.warn('# Expected %d lines; actual %d lines' %
+                  (len(self.expected), len(actual)))
+    for e in self.expected:
+      expect_re = re.compile(e)
+      for actual_line in actual:
+        if expect_re.match(actual_line):
+          actual.remove(actual_line)
+          break
+      else:
+        logger.warn("| -" + expect_re.pattern.rstrip())
+    for a in actual:
+      logger.warn("| +" + a.rstrip())
 
 class AlternateOutput(ExpectedOutput):
   """Matches any one of a list of ExpectedOutput instances.

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnversion_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnversion_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnversion_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/svnversion_tests.py Mon Apr 16 12:21:02 2018
@@ -71,9 +71,8 @@ def svnversion_test(sbox):
   expected_output = wc.State(wc_dir, {'A/mu' : Item(verb='Sending')})
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('A/mu', wc_rev=2)
-  if svntest.actions.run_and_verify_commit(wc_dir,
-                                           expected_output, expected_status):
-    raise svntest.Failure
+  svntest.actions.run_and_verify_commit(wc_dir,
+                                        expected_output, expected_status)
 
   # Unmodified, mixed
   svntest.actions.run_and_verify_svnversion(wc_dir, repo_url,
@@ -98,13 +97,12 @@ def svnversion_test(sbox):
                       + 'appended mu text')
   expected_disk.tweak('iota',
                       contents=expected_disk.desc['A/D/gamma'].contents)
-  if svntest.actions.run_and_verify_switch(wc_dir, iota_path, gamma_url,
-                                           expected_output,
-                                           expected_disk,
-                                           expected_status,
-                                           [],
-                                           False, '--ignore-ancestry'):
-    raise svntest.Failure
+  svntest.actions.run_and_verify_switch(wc_dir, iota_path, gamma_url,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        [],
+                                        False, '--ignore-ancestry')
 
   # Prop modified, mixed, part wc switched
   svntest.actions.run_and_verify_svnversion(wc_dir, repo_url,

Modified: subversion/branches/shelve-checkpoint/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/cmdline/update_tests.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/cmdline/update_tests.py Mon Apr 16 12:21:02 2018
@@ -6719,6 +6719,7 @@ def update_conflict_details(sbox):
 # Keywords should be updated in local file even if text change is shortcut
 # (due to the local change being the same as the incoming change, for example).
 @XFail()
+@Issue(4585)
 def update_keywords_on_shortcut(sbox):
   "update_keywords_on_shortcut"
 

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_client/conflicts-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_client/conflicts-test.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_client/conflicts-test.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_client/conflicts-test.c Mon Apr 16 12:21:02 2018
@@ -5093,6 +5093,9 @@ test_merge_incoming_move_dir_across_bran
                                   ctx, b->pool, b->pool));
   SVN_ERR(svn_client_conflict_tree_get_details(conflict, ctx, b->pool));
 
+  SVN_ERR_ASSERT(svn_client_conflict_get_local_change(conflict) ==
+                 svn_wc_conflict_reason_edited);
+
   /* Check possible move destinations for the directory. */
   SVN_ERR(svn_client_conflict_tree_get_resolution_options(&options, conflict,
                                                           ctx, b->pool,

Propchange: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_delta/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Apr 16 12:21:02 2018
@@ -8,6 +8,7 @@ vdelta-test
 random-test
 xml-output-test
 svndiff-test
+svndiff-stream-test
 window-test
 editor-test
 combined

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/mergeinfo-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/mergeinfo-test.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/mergeinfo-test.c Mon Apr 16 12:21:02 2018
@@ -1673,100 +1673,27 @@ test_remove_prefix_from_catalog(apr_pool
 static svn_error_t *
 test_rangelist_merge_overlap(apr_pool_t *pool)
 {
-  svn_rangelist_t * changes;
-  /* 15014-19472,19473-19612*,19613-19614,19615-19630*,19631-19634,19635-20055* */
-  svn_rangelist_t * rangelist = apr_array_make(pool, 1, sizeof(svn_merge_range_t *));
-  svn_merge_range_t *mrange = apr_pcalloc(pool, sizeof(*mrange));
-
-  /* This range is optional for reproducing issue #4686 */
-  mrange->start = 15013;
-  mrange->end = 19472;
-  mrange->inheritable = TRUE;
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
-  mrange = apr_pcalloc(pool, sizeof(*mrange));
-  mrange->start = 19472;
-  mrange->end = 19612;
-  mrange->inheritable = FALSE;
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
-  /* This range is optional for reproducing issue #4686 */
-  mrange = apr_pcalloc(pool, sizeof(*mrange));
-  mrange->start = 19612;
-  mrange->end = 19614;
-  mrange->inheritable = TRUE;
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
-  mrange = apr_pcalloc(pool, sizeof(*mrange));
-  mrange->start = 19614;
-  mrange->end = 19630;
-  mrange->inheritable = FALSE;
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
-  mrange = apr_pcalloc(pool, sizeof(*mrange));
-  mrange->start = 19630;
-  mrange->end = 19634;
-  mrange->inheritable = TRUE;
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
-  /* This range is optional for reproducing issue #4686 */
-  mrange = apr_pcalloc(pool, sizeof(*mrange));
-  mrange->start = 19634;
-  mrange->end = 20055;
-  mrange->inheritable = FALSE;
-  APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
-  /* 15014-20515* */
-  changes = apr_array_make(pool, 1, sizeof(svn_merge_range_t *));
-  mrange = apr_pcalloc(pool, sizeof(*mrange));
-  mrange->start = 15013;
-  mrange->end = 20515;
-  mrange->inheritable = FALSE;
-  APR_ARRAY_PUSH(changes, svn_merge_range_t *) = mrange;
-#if 0
-  {
-    svn_string_t * tmpString;
-
-    svn_rangelist_to_string(&tmpString, rangelist, pool);
-    printf("rangelist %s\n", tmpString->data);
-  }
-  {
-    svn_string_t * tmpString;
-
-    svn_rangelist_to_string(&tmpString, changes, pool);
-    printf("changes %s\n", tmpString->data);
-  }
-#endif
-
+  const char *rangelist_str = "19473-19612*,19615-19630*,19631-19634";
+  const char *changes_str = "15014-20515*";
+  const char *expected_str = "15014-19630*,19631-19634,19635-20515*";
+  /* wrong result: "15014-19630*,19634-19631*,19631-19634,19635-20515*" */
+  svn_rangelist_t *rangelist, *changes;
+  svn_string_t *result_string;
+
+  /* prepare the inputs */
+  SVN_ERR(svn_rangelist__parse(&rangelist, rangelist_str, pool));
+  SVN_ERR(svn_rangelist__parse(&changes, changes_str, pool));
   SVN_TEST_ASSERT(svn_rangelist__is_canonical(rangelist));
   SVN_TEST_ASSERT(svn_rangelist__is_canonical(changes));
 
+  /* perform the merge */
   SVN_ERR(svn_rangelist_merge2(rangelist, changes, pool, pool));
 
+  /* check the output */
   SVN_TEST_ASSERT(svn_rangelist__is_canonical(rangelist));
+  SVN_ERR(svn_rangelist_to_string(&result_string, rangelist, pool));
+  SVN_TEST_STRING_ASSERT(result_string->data, expected_str);
 
-#if 0
-  {
-    svn_string_t * tmpString;
-
-    svn_rangelist_to_string(&tmpString, rangelist, pool);
-    printf("result %s\n", tmpString->data);
-  }
-#endif
-
-  /* wrong result
-    result 15014-19472,19473-19612*,19613-19614,19615-19630*,19634-19631*,19631-19634,19635-20515*
-  */
-
-  {
-     svn_string_t * tmp_string;
-     svn_rangelist_t *range_list;
-
-     SVN_ERR(svn_rangelist_to_string(&tmp_string, rangelist, pool));
-
-     SVN_ERR(svn_rangelist__parse(&range_list, tmp_string->data, pool));
-  }
-  
   return SVN_NO_ERROR;
 }
 
@@ -1900,9 +1827,9 @@ static struct svn_test_descriptor_t test
                    "diff of rangelists"),
     SVN_TEST_PASS2(test_remove_prefix_from_catalog,
                    "removal of prefix paths from catalog keys"),
-    SVN_TEST_XFAIL2(test_rangelist_merge_overlap,
+    SVN_TEST_PASS2(test_rangelist_merge_overlap,
                    "merge of rangelists with overlaps (issue 4686)"),
-    SVN_TEST_XFAIL2(test_rangelist_loop,
+    SVN_TEST_PASS2(test_rangelist_loop,
                     "test rangelist edgecases via loop"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/utf-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/utf-test.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/utf-test.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/utf-test.c Mon Apr 16 12:21:02 2018
@@ -752,8 +752,10 @@ test_utf_conversions(apr_pool_t *pool)
   {
     svn_boolean_t sixteenbit;
     svn_boolean_t bigendian;
+    apr_size_t sourcelen;
     const char *source;
     const char *result;
+    svn_boolean_t counted;
   } tests[] = {
 
 #define UTF_32_LE FALSE, FALSE
@@ -762,32 +764,36 @@ test_utf_conversions(apr_pool_t *pool)
 #define UTF_16_BE TRUE, TRUE
 
     /* Normal character conversion */
-    { UTF_32_LE, "t\0\0\0" "e\0\0\0" "s\0\0\0" "t\0\0\0" "\0\0\0\0", "test" },
-    { UTF_32_BE, "\0\0\0t" "\0\0\0e" "\0\0\0s" "\0\0\0t" "\0\0\0\0", "test" },
-    { UTF_16_LE, "t\0" "e\0" "s\0" "t\0" "\0\0", "test" },
-    { UTF_16_BE, "\0t" "\0e" "\0s" "\0t" "\0\0", "test" },
+    { UTF_32_LE, 4, "t\0\0\0" "e\0\0\0" "s\0\0\0" "t\0\0\0" "\0\0\0\0", "test", FALSE },
+    { UTF_32_BE, 4, "\0\0\0t" "\0\0\0e" "\0\0\0s" "\0\0\0t" "\0\0\0\0", "test", FALSE },
+    { UTF_16_LE, 4, "t\0" "e\0" "s\0" "t\0" "\0\0", "test", FALSE },
+    { UTF_16_BE, 4, "\0t" "\0e" "\0s" "\0t" "\0\0", "test", FALSE },
 
     /* Valid surrogate pairs */
-    { UTF_16_LE, "\x00\xD8" "\x00\xDC" "\0\0", "\xf0\x90\x80\x80" }, /* U+010000 */
-    { UTF_16_LE, "\x34\xD8" "\x1E\xDD" "\0\0", "\xf0\x9d\x84\x9e" }, /* U+01D11E */
-    { UTF_16_LE, "\xFF\xDB" "\xFD\xDF" "\0\0", "\xf4\x8f\xbf\xbd" }, /* U+10FFFD */
-
-    { UTF_16_BE, "\xD8\x00" "\xDC\x00" "\0\0", "\xf0\x90\x80\x80" }, /* U+010000 */
-    { UTF_16_BE, "\xD8\x34" "\xDD\x1E" "\0\0", "\xf0\x9d\x84\x9e" }, /* U+01D11E */
-    { UTF_16_BE, "\xDB\xFF" "\xDF\xFD" "\0\0", "\xf4\x8f\xbf\xbd" }, /* U+10FFFD */
+    { UTF_16_LE, 2, "\x00\xD8" "\x00\xDC" "\0\0", "\xf0\x90\x80\x80", FALSE }, /* U+010000 */
+    { UTF_16_LE, 2, "\x34\xD8" "\x1E\xDD" "\0\0", "\xf0\x9d\x84\x9e", FALSE }, /* U+01D11E */
+    { UTF_16_LE, 2, "\xFF\xDB" "\xFD\xDF" "\0\0", "\xf4\x8f\xbf\xbd", FALSE }, /* U+10FFFD */
+
+    { UTF_16_BE, 2, "\xD8\x00" "\xDC\x00" "\0\0", "\xf0\x90\x80\x80", FALSE }, /* U+010000 */
+    { UTF_16_BE, 2, "\xD8\x34" "\xDD\x1E" "\0\0", "\xf0\x9d\x84\x9e", FALSE }, /* U+01D11E */
+    { UTF_16_BE, 2, "\xDB\xFF" "\xDF\xFD" "\0\0", "\xf4\x8f\xbf\xbd", FALSE }, /* U+10FFFD */
 
     /* Swapped, single and trailing surrogate pairs */
-    { UTF_16_LE, "*\0" "\x00\xDC" "\x00\xD8" "*\0\0\0", "*\xed\xb0\x80" "\xed\xa0\x80*" },
-    { UTF_16_LE, "*\0" "\x1E\xDD" "*\0\0\0", "*\xed\xb4\x9e*" },
-    { UTF_16_LE, "*\0" "\xFF\xDB" "*\0\0\0", "*\xed\xaf\xbf*" },
-    { UTF_16_LE, "\x1E\xDD" "\0\0", "\xed\xb4\x9e" },
-    { UTF_16_LE, "\xFF\xDB" "\0\0", "\xed\xaf\xbf" },
-
-    { UTF_16_BE, "\0*" "\xDC\x00" "\xD8\x00" "\0*\0\0", "*\xed\xb0\x80" "\xed\xa0\x80*" },
-    { UTF_16_BE, "\0*" "\xDD\x1E" "\0*\0\0", "*\xed\xb4\x9e*" },
-    { UTF_16_BE, "\0*" "\xDB\xFF" "\0*\0\0", "*\xed\xaf\xbf*" },
-    { UTF_16_BE, "\xDD\x1E" "\0\0", "\xed\xb4\x9e" },
-    { UTF_16_BE, "\xDB\xFF" "\0\0", "\xed\xaf\xbf" },
+    { UTF_16_LE, 4, "*\0" "\x00\xDC" "\x00\xD8" "*\0\0\0", "*\xed\xb0\x80" "\xed\xa0\x80*", FALSE },
+    { UTF_16_LE, 3, "*\0" "\x1E\xDD" "*\0\0\0", "*\xed\xb4\x9e*", FALSE },
+    { UTF_16_LE, 3, "*\0" "\xFF\xDB" "*\0\0\0", "*\xed\xaf\xbf*", FALSE },
+    { UTF_16_LE, 1, "\x1E\xDD" "\0\0", "\xed\xb4\x9e", FALSE },
+    { UTF_16_LE, 1, "\xFF\xDB" "\0\0", "\xed\xaf\xbf", FALSE },
+
+    { UTF_16_BE, 4, "\0*" "\xDC\x00" "\xD8\x00" "\0*\0\0", "*\xed\xb0\x80" "\xed\xa0\x80*", FALSE },
+    { UTF_16_BE, 3, "\0*" "\xDD\x1E" "\0*\0\0", "*\xed\xb4\x9e*", FALSE },
+    { UTF_16_BE, 3, "\0*" "\xDB\xFF" "\0*\0\0", "*\xed\xaf\xbf*", FALSE },
+    { UTF_16_BE, 1, "\xDD\x1E" "\0\0", "\xed\xb4\x9e", FALSE },
+    { UTF_16_BE, 1, "\xDB\xFF" "\0\0", "\xed\xaf\xbf", FALSE },
+
+    /* Counted strings with NUL characters */
+    { UTF_16_LE, 3, "x\0" "\0\0" "y\0" "*\0", "x\0y", TRUE },
+    { UTF_32_BE, 3, "\0\0\0x" "\0\0\0\0" "\0\0\0y" "\0\0\0*", "x\0y", TRUE },
 
 #undef UTF_32_LE
 #undef UTF_32_BE
@@ -799,33 +805,46 @@ test_utf_conversions(apr_pool_t *pool)
 
   const struct cvt_test_t *tc;
   const svn_string_t *result;
-  int i;
+  apr_size_t maxlen = 0;
 
-  for (i = 1, tc = tests; tc->source; ++tc, ++i)
+  /* To assure proper alignment of the source string, it needs to be copied
+     into an array of the appropriate type before calling
+     svn_utf__utf{16,32}_to_utf8. */
+  apr_uint16_t *source16;
+  apr_int32_t *source32;
+
+  for (tc = tests; tc->source; ++tc)
+    if (tc->sourcelen > maxlen)
+      maxlen = tc->sourcelen;
+  maxlen++;
+
+  source16 = apr_pcalloc(pool, maxlen * sizeof(*source16));
+  source32 = apr_pcalloc(pool, maxlen * sizeof(*source32));
+
+  for (tc = tests; tc->source; ++tc)
     {
       if (tc->sixteenbit)
-        SVN_ERR(svn_utf__utf16_to_utf8(&result, (const void*)tc->source,
-                                       SVN_UTF__UNKNOWN_LENGTH,
-                                       tc->bigendian, pool, pool));
+        {
+          memset(source16, 0, maxlen * sizeof(*source16));
+          memcpy(source16, tc->source, (tc->sourcelen + 1) * sizeof(*source16));
+          SVN_ERR(svn_utf__utf16_to_utf8(&result, source16,
+                                         tc->counted ? tc->sourcelen : SVN_UTF__UNKNOWN_LENGTH,
+                                         tc->bigendian, pool, pool));
+        }
       else
-        SVN_ERR(svn_utf__utf32_to_utf8(&result, (const void*)tc->source,
-                                       SVN_UTF__UNKNOWN_LENGTH,
-                                       tc->bigendian, pool, pool));
-      SVN_ERR_ASSERT(0 == strcmp(result->data, tc->result));
+        {
+          memset(source32, 0, maxlen * sizeof(*source32));
+          memcpy(source32, tc->source, (tc->sourcelen + 1) * sizeof(*source32));
+          SVN_ERR(svn_utf__utf32_to_utf8(&result, source32,
+                                         tc->counted ? tc->sourcelen : SVN_UTF__UNKNOWN_LENGTH,
+                                         tc->bigendian, pool, pool));
+        }
+      if (tc->counted)
+        SVN_ERR_ASSERT(0 == memcmp(result->data, tc->result, tc->sourcelen));
+      else
+        SVN_ERR_ASSERT(0 == strcmp(result->data, tc->result));
     }
 
-  /* Test counted strings with NUL characters */
-  SVN_ERR(svn_utf__utf16_to_utf8(
-              &result, (void*)("x\0" "\0\0" "y\0" "*\0"), 3,
-              FALSE, pool, pool));
-  SVN_ERR_ASSERT(0 == memcmp(result->data, "x\0y", 3));
-
-  SVN_ERR(svn_utf__utf32_to_utf8(
-              &result,
-              (void*)("\0\0\0x" "\0\0\0\0" "\0\0\0y" "\0\0\0*"), 3,
-              TRUE, pool, pool));
-  SVN_ERR_ASSERT(0 == memcmp(result->data, "x\0y", 3));
-
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/x509-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/x509-test.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/x509-test.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_subr/x509-test.c Mon Apr 16 12:21:02 2018
@@ -592,6 +592,32 @@ static struct x509_test cert_tests[] = {
     "good.example.com",
     "9693f17e59205f41ca2e14450d151b945651b2d7"
   },
+  /* Signed using RSASSA-PSS algorithm with algorithm parameters */
+  {
+    "MIICsjCCAWkCCQDHslXYA8hCxTA+BgkqhkiG9w0BAQowMaANMAsGCWCGSAFlAwQC"
+    "AaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiBAICAN4wKjEUMBIGA1UECgwL"
+    "TXkgTG9jYWwgQ0ExEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xODAyMDIxNjQ4MzVa"
+    "Fw0xODAyMDMxNjQ4MzVaMC4xGDAWBgNVBAoMD015IExvY2FsIFNlcnZlcjESMBAG"
+    "A1UEAwwJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCues61"
+    "JXXpLQI5yeg4aCLWRfvnJY7wnuU6FSA++3wwCJREx1/7ebnP9RRRqqKM+ZeeFMC+"
+    "UlJE3ft2tJTDOVk9j6qjvKrJUKM1YkIe0lARxs4RtZKDGfOdBhw/+iD+6fZzhL0n"
+    "+w+dIJGzl6ADWsE/x9yjDTkdgbtxHrx/76K0KQIDAQABMD4GCSqGSIb3DQEBCjAx"
+    "oA0wCwYJYIZIAWUDBAIBoRowGAYJKoZIhvcNAQEIMAsGCWCGSAFlAwQCAaIEAgIA"
+    "3gOCAQEABYRAijCSGyFdSuUYALUnNzPylqYXlW+dMKPywlUrFEhKnvS+FD9twerI"
+    "8kT4MDW6XvhScmL1MCDPNAkFY92UqaUrgT80oyrbpuakVrxFSS1i28xy8+kXAWYq"
+    "RNQVaME1NqnATYF0ZMD5xQK4rpa76gvWj3K8Lt++9EjjbkNiirIIMQEOxh1lwnDQ"
+    "81q1Rk6iujlnVDGHDQ+w8reE6fKfSWfv1EaQRcjNKCuzrW8WNN387G2byvwaaKeL"
+    "M7lV7wiV6PwrTNTZzVG3cWKDOEP1mGE7gyMu66siLECo8U95+ahK7O6vfeT3m3gv"
+    "7kzWNYozAQtBSC7b0WqWbVrzWI4HSg==",
+    "O=My Local Server, CN=localhost",
+    "2.5.4.10 2.5.4.3",
+    "O=My Local CA, CN=localhost",
+    "2.5.4.10 2.5.4.3",
+    "2018-02-02T16:48:35.000000Z ",
+    "2018-02-03T16:48:35.000000Z ",
+    "localhost",
+    "25ab5a059acfc793fc0d3734d426794a4ca7b631"
+  },
   { NULL }
 };
 

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/conflict-data-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/conflict-data-test.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/conflict-data-test.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/conflict-data-test.c Mon Apr 16 12:21:02 2018
@@ -594,6 +594,7 @@ test_serialize_tree_conflict(const svn_t
                               svn_wc_conflict_reason_moved_away,
                               svn_wc_conflict_action_delete,
                               sbox_wc_path(&sbox, "A/B"),
+                              sbox_wc_path(&sbox, "A/C"),
                               pool, pool));
 
   SVN_ERR(svn_wc__conflict_skel_set_op_switch(
@@ -610,11 +611,13 @@ test_serialize_tree_conflict(const svn_t
   {
     svn_wc_conflict_reason_t reason;
     svn_wc_conflict_action_t action;
-    const char *moved_away_op_root_abspath;
+    const char *moved_away_src_op_root_abspath;
+    const char *moved_away_dst_op_root_abspath;
 
     SVN_ERR(svn_wc__conflict_read_tree_conflict(&reason,
                                                 &action,
-                                                &moved_away_op_root_abspath,
+                                                &moved_away_src_op_root_abspath,
+                                                &moved_away_dst_op_root_abspath,
                                                 sbox.wc_ctx->db,
                                                 sbox.wc_abspath,
                                                 conflict_skel,
@@ -622,8 +625,10 @@ test_serialize_tree_conflict(const svn_t
 
     SVN_TEST_ASSERT(reason == svn_wc_conflict_reason_moved_away);
     SVN_TEST_ASSERT(action == svn_wc_conflict_action_delete);
-    SVN_TEST_STRING_ASSERT(moved_away_op_root_abspath,
+    SVN_TEST_STRING_ASSERT(moved_away_src_op_root_abspath,
                            sbox_wc_path(&sbox, "A/B"));
+    SVN_TEST_STRING_ASSERT(moved_away_dst_op_root_abspath,
+                           sbox_wc_path(&sbox, "A/C"));
   }
 
   return SVN_NO_ERROR;

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/op-depth-test.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/op-depth-test.c Mon Apr 16 12:21:02 2018
@@ -535,7 +535,7 @@ check_db_conflicts(svn_test__sandbox_t *
           SVN_ERR(svn_wc__conflict_read_tree_conflict(&info->tc.reason,
                                                       &info->tc.action,
                                                       &move_src_abspath,
-                                                      b->wc_ctx->db,
+                                                      NULL, b->wc_ctx->db,
                                                       local_abspath,
                                                       conflict,
                                                       b->pool, iterpool));

Modified: subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/utils.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/utils.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/utils.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/libsvn_wc/utils.c Mon Apr 16 12:21:02 2018
@@ -417,11 +417,12 @@ sbox_wc_revert(svn_test__sandbox_t *b, c
   SVN_ERR(svn_wc__acquire_write_lock(&lock_root_abspath, b->wc_ctx,
                                      dir_abspath, FALSE /* lock_anchor */,
                                      b->pool, b->pool));
-  SVN_ERR(svn_wc_revert5(b->wc_ctx, abspath, depth,
+  SVN_ERR(svn_wc_revert6(b->wc_ctx, abspath, depth,
                          FALSE /* use_commit_times */,
                          NULL /* changelist_filter */,
                          FALSE /* clear_changelists */,
                          FALSE /* metadata_only */,
+                         TRUE /*added_keep_local*/,
                          NULL, NULL, /* cancel baton + func */
                          NULL, NULL, /* notify baton + func */
                          b->pool));

Modified: subversion/branches/shelve-checkpoint/subversion/tests/svn_test_main.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/tests/svn_test_main.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/tests/svn_test_main.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/tests/svn_test_main.c Mon Apr 16 12:21:02 2018
@@ -903,9 +903,12 @@ svn_test_main(int argc, const char *argv
       apr_err = apr_getopt_long(os, cl_options, &opt_id, &opt_arg);
       if (APR_STATUS_IS_EOF(apr_err))
         break;
-      else if (apr_err && (apr_err != APR_BADCH))
+      else if (apr_err)
         {
           /* Ignore invalid option error to allow passing arbitrary options */
+          if (apr_err == APR_BADCH)
+            continue;
+
           fprintf(stderr, "apr_getopt_long failed : [%d] %s\n",
                   apr_err, apr_strerror(apr_err, errmsg, sizeof(errmsg)));
           exit(1);

Modified: subversion/branches/shelve-checkpoint/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/buildbot/slaves/bb-openbsd/svnbuild.sh?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/buildbot/slaves/bb-openbsd/svnbuild.sh (original)
+++ subversion/branches/shelve-checkpoint/tools/buildbot/slaves/bb-openbsd/svnbuild.sh Mon Apr 16 12:21:02 2018
@@ -25,4 +25,5 @@ set -x
 url="$(svn info --show-item url)"
 branch="${url##*/}"
 (test -h ../GNUmakefile || ln -s ../unix-build/Makefile.svn ../GNUmakefile)
+touch ../objdir/svn-${branch}/.retrieved
 (cd .. && gmake BRANCH="$branch" THREADING="no" JAVA="no" MAKE_JOBS=8)

Modified: subversion/branches/shelve-checkpoint/tools/client-side/bash_completion
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/bash_completion?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/bash_completion (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/bash_completion Mon Apr 16 12:21:02 2018
@@ -248,7 +248,7 @@ _svn()
 	cmds="$cmds patch propdel pdel propedit pedit propget pget proplist"
 	cmds="$cmds plist propset pset relocate resolve resolved revert status"
 	cmds="$cmds switch unlock update upgrade"
-	cmds="$cmds shelf-diff shelf-drop shelf-list shelf-log shelf-save"
+	cmds="$cmds shelf-list-by-paths shelf-diff shelf-drop shelf-list shelf-log shelf-save"
 	cmds="$cmds shelve shelves unshelve"
 
 	# help options have a strange command status...
@@ -1024,6 +1024,9 @@ _svn()
 	upgrade)
 		cmdOpts="$qOpts $pOpts"
 		;;
+	shelf-list-by-paths)
+		cmdOpts="$pOpts"
+		;;
 	shelf-diff)
 		cmdOpts="$pOpts"
 		;;
@@ -1049,7 +1052,7 @@ _svn()
                          $qOpts $pOpts"
 		;;
 	unshelve)
-		cmdOpts="--dry-run \
+		cmdOpts="--drop --dry-run \
                          $qOpts $pOpts"
 		;;
 	*)

Modified: subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/help-cmd.c Mon Apr 16 12:21:02 2018
@@ -163,7 +163,7 @@ svn_min__help(apr_getopt_t *os,
                                                              pool)),
                          pool);
 #endif
-#ifdef SVN_HAVE_GNOME_KEYRING
+#if (defined(SVN_HAVE_GNOME_KEYRING) || defined(SVN_HAVE_LIBSECRET))
   svn_stringbuf_appendcstr(version_footer, "* Gnome Keyring\n");
 #endif
 #ifdef SVN_HAVE_GPG_AGENT
@@ -176,7 +176,7 @@ svn_min__help(apr_getopt_t *os,
   svn_stringbuf_appendcstr(version_footer, "* KWallet (KDE)\n");
 #endif
 
-  return svn_opt_print_help4(os,
+  return svn_opt_print_help5(os,
                              "svn-mergeinfo-normalizer",
                              opt_state ? opt_state->version : FALSE,
                              opt_state ? opt_state->quiet : FALSE,

Modified: subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h Mon Apr 16 12:21:02 2018
@@ -117,7 +117,7 @@ svn_opt_subcommand_t
   svn_min__remove_branches;
 
 /* See definition in svn.c for documentation. */
-extern const svn_opt_subcommand_desc2_t svn_min__cmd_table[];
+extern const svn_opt_subcommand_desc3_t svn_min__cmd_table[];
 
 /* See definition in svn.c for documentation. */
 extern const int svn_min__global_options[];

Modified: subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c Mon Apr 16 12:21:02 2018
@@ -221,43 +221,44 @@ const int svn_min__global_options[] =
   opt_config_dir, opt_config_options, 0
 };
 
-const svn_opt_subcommand_desc2_t svn_min__cmd_table[] =
+const svn_opt_subcommand_desc3_t svn_min__cmd_table[] =
 {
-  { "help", svn_min__help, {"?", "h"}, N_
-    ("Describe the usage of this program or its subcommands.\n"
-     "usage: help [SUBCOMMAND...]\n"),
+  { "help", svn_min__help, {"?", "h"}, {N_(
+     "Describe the usage of this program or its subcommands.\n"
+     "usage: help [SUBCOMMAND...]\n"
+    )},
     {0} },
 
   /* This command is also invoked if we see option "--help", "-h" or "-?". */
 
-  { "analyze", svn_min__analyze, { "analyse" }, N_
-    ("Generate a report of which part of the sub-tree mergeinfo can be\n"
+  { "analyze", svn_min__analyze, { "analyse" }, {N_(
+     "Generate a report of which part of the sub-tree mergeinfo can be\n"
      "removed and which part can't.\n"
      "usage: analyze [WCPATH...]\n"
-     "\n"
+     "\n"), N_(
      "  If neither --remove-obsoletes, --remove-redundant nor --combine-ranges\n"
      "  option is given, all three will be used implicitly.\n"
-     "\n"
+     "\n"), N_(
      "  In verbose mode, the command will behave just like 'normalize --dry-run'\n"
      "  but will show an additional summary of all deleted branches that were\n"
      "  encountered plus the revision of their latest deletion (if available).\n"
-     "\n"
+     "\n"), N_(
      "  In non-verbose mode, the per-node output does not give the parent path,\n"
      "  no successful elisions and branch removals nor the list of remaining\n"
      "  branches.\n"
-    ),
+    )},
     {opt_targets, opt_depth, 'v',
      opt_remove_obsoletes, opt_remove_redundant,
      opt_remove_redundant_misaligned, opt_combine_ranges} },
 
-  { "normalize", svn_min__normalize, { 0 }, N_
-    ("Normalize / reduce the mergeinfo throughout the working copy sub-tree.\n"
+  { "normalize", svn_min__normalize, { 0 }, {N_(
+     "Normalize / reduce the mergeinfo throughout the working copy sub-tree.\n"
      "usage: normalize [WCPATH...]\n"
-     "\n"
+     "\n"), N_(
      "  If neither --remove-obsoletes, --remove-redundant, --combine-ranges\n"
      "  nor --remove-redundant-misaligned option is given, --remove-redundant\n"
      "  will be used implicitly.\n"
-     "\n"
+     "\n"), N_(
      "  In non-verbose mode, only general progress as well as a summary before\n"
      "  and after the normalization process will be shown.  Note that sub-node\n"
      "  mergeinfo which could be removed entirely does not contribute to the\n"
@@ -265,12 +266,12 @@ const svn_opt_subcommand_desc2_t svn_min
      "  ranges combined only refers to the mergeinfo lines still present after\n"
      "  the normalization process.  To get total numbers, compare the initial\n"
      "  with the final mergeinfo statistics.\n"
-     "\n"
+     "\n"), N_(
      "  The detailed operation log in verbose mode replaces the progress display.\n"
      "  For each node with mergeinfo, the nearest parent node with mergeinfo is\n"
      "  given - if there is one and the result of trying to remove the mergeinfo\n"
      "  is shown for each branch.  The various outputs are:\n"
-     "\n"
+     "\n"), N_(
      "    elide redundant branch - Revision ranges are the same as in the parent.\n"
      "                             Mergeinfo for this branch can be elided.\n"
      "    elide branch           - Not an exact match with the parent but the\n"
@@ -324,32 +325,34 @@ const svn_opt_subcommand_desc2_t svn_min
      "                             The sub-tree mergeinfo cannot be elided.\n"
      "    REVERSE RANGE(S) found - The mergeinfo contains illegal reverse ranges.\n"
      "                             The sub-tree mergeinfo cannot be elided.\n"
-     "\n"
+     "\n"), N_(
      "  If all branches have been removed from a nodes' mergeinfo, the whole\n"
      "  svn:mergeinfo property will be removed.  Otherwise, only obsolete\n"
      "  branches will be removed.  In verbose mode, a list of branches that\n"
-     "  could not be removed will be shown per node.\n"),
+     "  could not be removed will be shown per node.\n"
+    )},
     {opt_targets, opt_depth, opt_dry_run, 'q', 'v',
      opt_remove_obsoletes, opt_remove_redundant,
      opt_remove_redundant_misaligned, opt_combine_ranges} },
 
-  { "remove-branches", svn_min__remove_branches, { 0 }, N_
-    ("Read a list of branch names from the given file and remove all\n"
+  { "remove-branches", svn_min__remove_branches, { 0 }, {N_(
+     "Read a list of branch names from the given file and remove all\n"
      "mergeinfo referring to these branches from the given targets.\n"
      "usage: remove-branches [WCPATH...] --file FILE\n"
-     "\n"
+     "\n"), N_(
      "  The command will behave just like 'normalize --remove-obsoletes' but\n"
      "  will never actually contact the repository.  Instead, it assumes any\n"
      "  path given in FILE is a deleted branch.\n"
-     "\n"
+     "\n"), N_(
      "  Compared to a simple 'normalize --remove-obsoletes' run, this command\n"
      "  allows for selective removal of obsolete branches.  It may therefore be\n"
      "  better suited for large deployments with complex branch structures.\n"
      "  You may also use this to remove mergeinfo that refers to still existing\n"
-     "  branches.\n"),
+     "  branches.\n"
+    )},
     {opt_targets, opt_depth, opt_dry_run, 'q', 'v', 'F'} },
 
-  { NULL, NULL, {0}, NULL, {0} }
+  { NULL, NULL, {0}, {NULL}, {0} }
 };
 
 
@@ -414,7 +417,7 @@ sub_main(int *exit_code, int argc, const
   svn_client_ctx_t *ctx;
   apr_array_header_t *received_opts;
   int i;
-  const svn_opt_subcommand_desc2_t *subcommand = NULL;
+  const svn_opt_subcommand_desc3_t *subcommand = NULL;
   svn_min__cmd_baton_t command_baton = { 0 };
   svn_auth_baton_t *ab;
   svn_config_t *cfg_config;
@@ -639,7 +642,7 @@ sub_main(int *exit_code, int argc, const
      just typos/mistakes.  Whatever the case, the subcommand to
      actually run is svn_cl__help(). */
   if (opt_state.help)
-    subcommand = svn_opt_get_canonical_subcommand2(svn_min__cmd_table, "help");
+    subcommand = svn_opt_get_canonical_subcommand3(svn_min__cmd_table, "help");
 
   /* If we're not running the `help' subcommand, then look for a
      subcommand in the first argument. */
@@ -650,8 +653,8 @@ sub_main(int *exit_code, int argc, const
           if (opt_state.version)
             {
               /* Use the "help" subcommand to handle the "--version" option. */
-              static const svn_opt_subcommand_desc2_t pseudo_cmd =
-                { "--version", svn_min__help, {0}, "",
+              static const svn_opt_subcommand_desc3_t pseudo_cmd =
+                { "--version", svn_min__help, {0}, {""},
                   {opt_version,    /* must accept its own option */
                    'q',            /* brief output */
                    'v',            /* verbose output */
@@ -676,7 +679,7 @@ sub_main(int *exit_code, int argc, const
 
           SVN_ERR(svn_utf_cstring_to_utf8(&first_arg, os->argv[os->ind++],
                                           pool));
-          subcommand = svn_opt_get_canonical_subcommand2(svn_min__cmd_table,
+          subcommand = svn_opt_get_canonical_subcommand3(svn_min__cmd_table,
                                                          first_arg);
           if (subcommand == NULL)
             {
@@ -704,12 +707,12 @@ sub_main(int *exit_code, int argc, const
       if (opt_id == 'h' || opt_id == '?')
         continue;
 
-      if (! svn_opt_subcommand_takes_option3(subcommand, opt_id,
+      if (! svn_opt_subcommand_takes_option4(subcommand, opt_id,
                                              svn_min__global_options))
         {
           const char *optstr;
           const apr_getopt_option_t *badopt =
-            svn_opt_get_option_from_code2(opt_id, svn_min__options,
+            svn_opt_get_option_from_code3(opt_id, svn_min__options,
                                           subcommand, pool);
           svn_opt_format_option(&optstr, badopt, FALSE, pool);
           if (subcommand->name[0] == '-')

Modified: subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c Mon Apr 16 12:21:02 2018
@@ -112,8 +112,8 @@ static int
 compare_mergeinfo(const void *lhs,
                   const void *rhs)
 {
-  const mergeinfo_t *lhs_mi = *(const mergeinfo_t **)lhs;
-  const mergeinfo_t *rhs_mi = *(const mergeinfo_t **)rhs;
+  const mergeinfo_t *lhs_mi = *(const mergeinfo_t *const *)lhs;
+  const mergeinfo_t *rhs_mi = *(const mergeinfo_t *const *)rhs;
 
   return strcmp(lhs_mi->local_path, rhs_mi->local_path);
 }

Modified: subversion/branches/shelve-checkpoint/tools/client-side/svn-viewspec.py
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/svn-viewspec.py?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/svn-viewspec.py (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/svn-viewspec.py Mon Apr 16 12:21:02 2018
@@ -121,6 +121,8 @@ DEPTH_FILES      = 'files'
 DEPTH_IMMEDIATES = 'immediates'
 DEPTH_INFINITY   = 'infinity'
 
+os_system = None
+args = None
 
 class TreeNode:
     """A representation of a single node in a Subversion sparse
@@ -159,8 +161,8 @@ def svn_path_compare_paths(path1, path2)
     NOTE: Stolen unapologetically from Subversion's Python bindings
     module svn.core."""
 
-    path1_len = len(path1);
-    path2_len = len(path2);
+    path1_len = len(path1)
+    path2_len = len(path2)
     min_len = min(path1_len, path2_len)
     i = 0
 
@@ -280,10 +282,10 @@ def checkout_tree(base_url, revision, tr
     if revision != -1:
         revision_str = "--revision=%d " % (revision)
     if is_top:
-        os.system('svn checkout "%s" "%s" --depth=%s %s'
+        os_system('svn checkout "%s" "%s" --depth=%s %s'
                   % (base_url, target_dir, depth, revision_str))
     else:
-        os.system('svn update "%s" --set-depth=%s %s'
+        os_system('svn update "%s" --set-depth=%s %s'
                   % (target_dir, depth, revision_str))
     child_names = tree_node.children.keys()
     child_names.sort(svn_path_compare_paths)
@@ -304,27 +306,34 @@ def checkout_spec(viewspec, target_dir):
 
 def usage_and_exit(errmsg=None):
     stream = errmsg and sys.stderr or sys.stdout
-    msg = __doc__.replace("__SCRIPTNAME__", os.path.basename(sys.argv[0]))
+    msg = __doc__.replace("__SCRIPTNAME__", os.path.basename(args[0]))
     stream.write(msg)
     if errmsg:
         stream.write("ERROR: %s\n" % (errmsg))
-    sys.exit(errmsg and 1 or 0)
+        return 1
+    return 0
+
+def main(os_sys, args_in):
+    global os_system
+    global args
+    os_system = os_sys
+    args = args_in
 
-def main():
-    argc = len(sys.argv)
+    argc = len(args)
     if argc < 2:
-        usage_and_exit('Not enough arguments.')
-    subcommand = sys.argv[1]
+        return usage_and_exit('Not enough arguments.')
+    subcommand = args[1]
     if subcommand == 'help':
-        usage_and_exit()
+        return usage_and_exit()
     elif subcommand == 'help-format':
         msg = FORMAT_HELP.replace("__SCRIPTNAME__",
-                                  os.path.basename(sys.argv[0]))
+                                  os.path.basename(args[0]))
         sys.stdout.write(msg)
+        return 1
     elif subcommand == 'examine':
         if argc < 3:
-            usage_and_exit('No viewspec file specified.')
-        fp = (sys.argv[2] == '-') and sys.stdin or open(sys.argv[2], 'r')
+            return usage_and_exit('No viewspec file specified.')
+        fp = (args[2] == '-') and sys.stdin or open(args[2], 'r')
         viewspec = parse_viewspec(fp)
         sys.stdout.write("Url: %s\n" % (viewspec.base_url))
         revision = viewspec.revision
@@ -336,13 +345,14 @@ def main():
         viewspec.tree.dump(True)
     elif subcommand == 'checkout':
         if argc < 3:
-            usage_and_exit('No viewspec file specified.')
+            return usage_and_exit('No viewspec file specified.')
         if argc < 4:
-            usage_and_exit('No target directory specified.')
-        fp = (sys.argv[2] == '-') and sys.stdin or open(sys.argv[2], 'r')
-        checkout_spec(parse_viewspec(fp), sys.argv[3])
+            return usage_and_exit('No target directory specified.')
+        fp = (args[2] == '-') and sys.stdin or open(args[2], 'r')
+        checkout_spec(parse_viewspec(fp), args[3])
     else:
-        usage_and_exit('Unknown subcommand "%s".' % (subcommand))
+        return usage_and_exit('Unknown subcommand "%s".' % (subcommand))
 
 if __name__ == "__main__":
-    main()
+    if main(os.system, sys.argv):
+        sys.exit(1)

Modified: subversion/branches/shelve-checkpoint/tools/client-side/svnconflict/svnconflict.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/client-side/svnconflict/svnconflict.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/client-side/svnconflict/svnconflict.c (original)
+++ subversion/branches/shelve-checkpoint/tools/client-side/svnconflict/svnconflict.c Mon Apr 16 12:21:02 2018
@@ -148,18 +148,19 @@ static const int svnconflict_global_opti
 { opt_auth_username, opt_auth_password, opt_auth_password_from_stdin,
   opt_config_dir, opt_config_options, 0 };
 
-static const svn_opt_subcommand_desc2_t svnconflict_cmd_table[] =
+static const svn_opt_subcommand_desc3_t svnconflict_cmd_table[] =
 {
   /* This command is also invoked if we see option "--help", "-h" or "-?". */
-  { "help", svnconflict_help, {"?", "h"}, N_
-    ("Describe the usage of this program or its subcommands.\n"
-     "usage: help [SUBCOMMAND...]\n"),
+  { "help", svnconflict_help, {"?", "h"}, {N_(
+     "Describe the usage of this program or its subcommands.\n"
+     "usage: help [SUBCOMMAND...]\n"
+    )},
     {0} },
 
-  { "list", svnconflict_list, {"ls"}, N_
-    ("List conflicts at a conflicted path.\n"
+  { "list", svnconflict_list, {"ls"}, {N_(
+     "List conflicts at a conflicted path.\n"
      "usage: list PATH\n"
-     "\n"
+     "\n"), N_(
      "  List conflicts at PATH, one per line. Possible conflicts are:\n"
      "  \n"
      "  text-conflict\n"
@@ -176,67 +177,67 @@ static const svn_opt_subcommand_desc2_t
      "    If a tree conflict exists, no text or property conflicts exist.\n"
      "  \n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { "options-text", svnconflict_options_text, {0}, N_
-    ("List options for resolving a text conflict at path.\n"
+  { "options-text", svnconflict_options_text, {0}, {N_(
+     "List options for resolving a text conflict at path.\n"
      "usage: options-text PATH\n"
-     "\n"
+     "\n"), N_(
      "  List text conflict resolution options at PATH, one per line.\n"
      "  Each line contains a numeric option ID, a colon, and a description.\n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { "options-prop", svnconflict_options_prop, {0}, N_
-    ("List options for resolving a property conflict at path.\n"
+  { "options-prop", svnconflict_options_prop, {0}, {N_(
+     "List options for resolving a property conflict at path.\n"
      "usage: options-prop PATH\n"
-     "\n"
+     "\n"), N_(
      "  List property conflict resolution options at PATH, one per line.\n"
      "  Each line contains a numeric option ID, a colon, and a description.\n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { "options-tree", svnconflict_options_tree, {0}, N_
-    ("List options for resolving a tree conflict at path.\n"
+  { "options-tree", svnconflict_options_tree, {0}, {N_(
+     "List options for resolving a tree conflict at path.\n"
      "usage: options-tree PATH\n"
-     "\n"
+     "\n"), N_(
      "  List tree conflict resolution options at PATH, one per line.\n"
      "  Each line contains a numeric option ID, a colon, and a description.\n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { "resolve-text", svnconflict_resolve_text, {0}, N_
-    ("Resolve the text conflict at path.\n"
+  { "resolve-text", svnconflict_resolve_text, {0}, {N_(
+     "Resolve the text conflict at path.\n"
      "usage: resolve-text OPTION_ID PATH\n"
-     "\n"
+     "\n"), N_(
      "  Resolve the text conflict at PATH with a given resolution option.\n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { "resolve-prop", svnconflict_resolve_prop, {0}, N_
-    ("Resolve the property conflict at path.\n"
+  { "resolve-prop", svnconflict_resolve_prop, {0}, {N_(
+     "Resolve the property conflict at path.\n"
      "usage: resolve-prop PROPNAME OPTION_ID PATH\n"
-     "\n"
+     "\n"), N_(
      "  Resolve conflicted property PROPNAME at PATH with a given resolution option.\n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { "resolve-tree", svnconflict_resolve_tree, {0}, N_
-    ("Resolve the tree conflict at path.\n"
+  { "resolve-tree", svnconflict_resolve_tree, {0}, {N_(
+     "Resolve the tree conflict at path.\n"
      "usage: resolve-tree OPTION_ID PATH\n"
-     "\n"
+     "\n"), N_(
      "  Resolve the tree conflict at PATH with a given resolution option.\n"
      "  If PATH is not in conflict, the exit code will be 1, and 0 otherwise.\n"
-     ""),
+    )},
     {0}, },
 
-  { NULL, NULL, {0}, NULL, {0} }
+  { NULL, NULL, {0}, {NULL}, {0} }
 };
 
 /* Version compatibility check */
@@ -297,7 +298,7 @@ svnconflict_help(apr_getopt_t *os, void
       SVN_ERR(svn_ra_print_modules(version_footer, pool));
     }
 
-  SVN_ERR(svn_opt_print_help4(os,
+  SVN_ERR(svn_opt_print_help5(os,
                               "svnconflict",   /* ### erm, derive somehow? */
                               opt_state ? opt_state->version : FALSE,
                               FALSE, /* quiet */
@@ -641,7 +642,7 @@ sub_main(int *exit_code, int argc, const
   apr_array_header_t *received_opts;
   svnconflict_cmd_baton_t command_baton;
   int i;
-  const svn_opt_subcommand_desc2_t *subcommand = NULL;
+  const svn_opt_subcommand_desc3_t *subcommand = NULL;
   svn_auth_baton_t *ab;
   svn_config_t *cfg_config;
   apr_hash_t *cfg_hash;
@@ -742,7 +743,7 @@ sub_main(int *exit_code, int argc, const
      just typos/mistakes.  Whatever the case, the subcommand to
      actually run is svnconflict_help(). */
   if (opt_state.help)
-    subcommand = svn_opt_get_canonical_subcommand2(svnconflict_cmd_table,
+    subcommand = svn_opt_get_canonical_subcommand3(svnconflict_cmd_table,
                                                    "help");
 
   /* If we're not running the `help' subcommand, then look for a
@@ -754,8 +755,8 @@ sub_main(int *exit_code, int argc, const
           if (opt_state.version)
             {
               /* Use the "help" subcommand to handle the "--version" option. */
-              static const svn_opt_subcommand_desc2_t pseudo_cmd =
-                { "--version", svnconflict_help, {0}, "",
+              static const svn_opt_subcommand_desc3_t pseudo_cmd =
+                { "--version", svnconflict_help, {0}, {""},
                   {opt_version,    /* must accept its own option */
                    opt_config_dir  /* all commands accept this */
                   } };
@@ -778,7 +779,7 @@ sub_main(int *exit_code, int argc, const
 
           SVN_ERR(svn_utf_cstring_to_utf8(&first_arg, os->argv[os->ind++],
                                           pool));
-          subcommand = svn_opt_get_canonical_subcommand2(svnconflict_cmd_table,
+          subcommand = svn_opt_get_canonical_subcommand3(svnconflict_cmd_table,
                                                          first_arg);
           if (subcommand == NULL)
             {
@@ -805,12 +806,12 @@ sub_main(int *exit_code, int argc, const
       if (opt_id == 'h' || opt_id == '?')
         continue;
 
-      if (! svn_opt_subcommand_takes_option3(subcommand, opt_id,
+      if (! svn_opt_subcommand_takes_option4(subcommand, opt_id,
                                              svnconflict_global_options))
         {
           const char *optstr;
           const apr_getopt_option_t *badopt =
-            svn_opt_get_option_from_code2(opt_id, svnconflict_options,
+            svn_opt_get_option_from_code3(opt_id, svnconflict_options,
                                           subcommand, pool);
           svn_opt_format_option(&optstr, badopt, FALSE, pool);
           if (subcommand->name[0] == '-')

Modified: subversion/branches/shelve-checkpoint/tools/dev/svnmover/svnmover.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/dev/svnmover/svnmover.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/dev/svnmover/svnmover.c (original)
+++ subversion/branches/shelve-checkpoint/tools/dev/svnmover/svnmover.c Mon Apr 16 12:21:02 2018
@@ -4042,7 +4042,7 @@ display_version(apr_getopt_t *os, svn_bo
   version_footer = svn_stringbuf_create(ra_desc_start, pool);
   SVN_ERR(svn_ra_print_modules(version_footer, pool));
 
-  SVN_ERR(svn_opt_print_help4(NULL, "svnmover", TRUE, _quiet, FALSE,
+  SVN_ERR(svn_opt_print_help5(NULL, "svnmover", TRUE, _quiet, FALSE,
                               version_footer->data,
                               NULL, NULL, NULL, NULL, NULL, pool));
 

Modified: subversion/branches/shelve-checkpoint/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c?rev=1829257&r1=1829256&r2=1829257&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c (original)
+++ subversion/branches/shelve-checkpoint/tools/dev/svnraisetreeconflict/svnraisetreeconflict.c Mon Apr 16 12:21:02 2018
@@ -52,7 +52,7 @@
 static svn_error_t *
 version(apr_pool_t *pool)
 {
-  return svn_opt_print_help4(NULL, "svnraisetreeconflict", TRUE, FALSE, FALSE,
+  return svn_opt_print_help5(NULL, "svnraisetreeconflict", TRUE, FALSE, FALSE,
                              NULL, NULL, NULL, NULL, NULL, NULL, pool);
 }
 



Mime
View raw message