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 ? ¬ifyCallback : 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); /** @} */