Author: brane
Date: Sun Feb 25 13:34:45 2018
New Revision: 1825304
URL: http://svn.apache.org/viewvc?rev=1825304&view=rev
Log:
On the better-pristines branch: Sync with trunk up to r1825302.
Added:
subversion/branches/better-pristines/subversion/bindings/swig/python/tests/fs.py
- copied unchanged from r1825302,
subversion/trunk/subversion/bindings/swig/python/tests/fs.py
subversion/branches/better-pristines/subversion/tests/cmdline/dav_tests.py
- copied unchanged from r1825302,
subversion/trunk/subversion/tests/cmdline/dav_tests.py
subversion/branches/better-pristines/tools/dist/backport_tests_data/backport_logsummary_colon.dump
- copied unchanged from r1825302,
subversion/trunk/tools/dist/backport_tests_data/backport_logsummary_colon.dump
Removed:
subversion/branches/better-pristines/subversion/libsvn_client/shelve.c
subversion/branches/better-pristines/subversion/svn/shelve-cmd.c
Modified:
subversion/branches/better-pristines/ (props changed)
subversion/branches/better-pristines/CHANGES
subversion/branches/better-pristines/COMMITTERS
subversion/branches/better-pristines/Makefile.in
subversion/branches/better-pristines/build/PrintPath
subversion/branches/better-pristines/build/ac-macros/find_apr.m4
subversion/branches/better-pristines/build/ac-macros/find_apu.m4
subversion/branches/better-pristines/build/ac-macros/swig.m4
subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.cpp
subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.h
subversion/branches/better-pristines/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
subversion/branches/better-pristines/subversion/bindings/swig/perl/native/Core.pm
subversion/branches/better-pristines/subversion/bindings/swig/python/svn/fs.py
subversion/branches/better-pristines/subversion/bindings/swig/python/tests/run_all.py
subversion/branches/better-pristines/subversion/include/svn_client.h
subversion/branches/better-pristines/subversion/libsvn_client/client.h
subversion/branches/better-pristines/subversion/libsvn_client/conflicts.c
subversion/branches/better-pristines/subversion/libsvn_client/diff.c
subversion/branches/better-pristines/subversion/libsvn_client/export.c
subversion/branches/better-pristines/subversion/libsvn_client/info.c
subversion/branches/better-pristines/subversion/libsvn_client/shelf.c
subversion/branches/better-pristines/subversion/libsvn_delta/debug_editor.c
subversion/branches/better-pristines/subversion/libsvn_fs_fs/cached_data.h
subversion/branches/better-pristines/subversion/libsvn_fs_fs/fs_fs.c
subversion/branches/better-pristines/subversion/libsvn_fs_fs/temp_serializer.h
subversion/branches/better-pristines/subversion/libsvn_ra_serf/options.c
subversion/branches/better-pristines/subversion/libsvn_subr/compress_lz4.c
subversion/branches/better-pristines/subversion/libsvn_subr/lz4/lz4.c
subversion/branches/better-pristines/subversion/libsvn_subr/lz4/lz4internal.h
subversion/branches/better-pristines/subversion/libsvn_subr/mergeinfo.c
subversion/branches/better-pristines/subversion/svn/cl.h
subversion/branches/better-pristines/subversion/svn/shelf-cmd.c
subversion/branches/better-pristines/subversion/svn/svn.c
subversion/branches/better-pristines/subversion/tests/cmdline/authz_tests.py
subversion/branches/better-pristines/subversion/tests/cmdline/davautocheck.sh
subversion/branches/better-pristines/subversion/tests/cmdline/iprop_authz_tests.py
subversion/branches/better-pristines/subversion/tests/cmdline/svnadmin_tests.py
subversion/branches/better-pristines/subversion/tests/cmdline/svnsync_authz_tests.py
subversion/branches/better-pristines/subversion/tests/cmdline/svntest/actions.py
subversion/branches/better-pristines/subversion/tests/cmdline/svntest/main.py
subversion/branches/better-pristines/subversion/tests/libsvn_subr/mergeinfo-test.c
subversion/branches/better-pristines/subversion/tests/libsvn_wc/utils.c
subversion/branches/better-pristines/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
subversion/branches/better-pristines/tools/dev/unix-build/Makefile.svn
subversion/branches/better-pristines/tools/dist/README.backport
subversion/branches/better-pristines/tools/dist/backport.pl
subversion/branches/better-pristines/tools/dist/backport/status.py
subversion/branches/better-pristines/tools/dist/backport_tests.py
subversion/branches/better-pristines/tools/dist/release.py
subversion/branches/better-pristines/tools/hook-scripts/mailer/mailer.py
Propchange: subversion/branches/better-pristines/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Feb 25 13:34:45 2018
@@ -99,4 +99,4 @@
/subversion/branches/verify-at-commit:1462039-1462408
/subversion/branches/verify-keep-going:1439280-1546110
/subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1807118-1823024
+/subversion/trunk:1807118-1825302
Modified: subversion/branches/better-pristines/CHANGES
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/CHANGES?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/CHANGES (original)
+++ subversion/branches/better-pristines/CHANGES Sun Feb 25 13:34:45 2018
@@ -4,7 +4,7 @@ http://svn.apache.org/repos/asf/subversi
Version 1.10.0
-(?? ??? 2017, from /branches/1.10.x)
+(?? ??? 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
Modified: subversion/branches/better-pristines/COMMITTERS
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/COMMITTERS?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/COMMITTERS [UTF-8] (original)
+++ subversion/branches/better-pristines/COMMITTERS [UTF-8] Sun Feb 25 13:34:45
2018
@@ -27,7 +27,7 @@ Blanket commit access:
dlr Daniel Rall <[email protected]>
mbk Mark Benedetto King <[email protected]>
jaa Jani Averbach <[email protected]>
- julianfoad Julian Foad <[email protected]>
+ julianfoad Julian Foad <[email protected]>
jszakmeister John Szakmeister <[email protected]>
ehu Erik Hülsmann <[email protected]>
breser Ben Reser <[email protected]>
Modified: subversion/branches/better-pristines/Makefile.in
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/Makefile.in?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/Makefile.in (original)
+++ subversion/branches/better-pristines/Makefile.in Sun Feb 25 13:34:45 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/better-pristines/build/PrintPath
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/build/PrintPath?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/build/PrintPath (original)
+++ subversion/branches/better-pristines/build/PrintPath Sun Feb 25 13:34:45
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/better-pristines/build/ac-macros/find_apr.m4
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/build/ac-macros/find_apr.m4?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/build/ac-macros/find_apr.m4 (original)
+++ subversion/branches/better-pristines/build/ac-macros/find_apr.m4 Sun Feb 25
13:34:45 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/better-pristines/build/ac-macros/find_apu.m4
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/build/ac-macros/find_apu.m4?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/build/ac-macros/find_apu.m4 (original)
+++ subversion/branches/better-pristines/build/ac-macros/find_apu.m4 Sun Feb 25
13:34:45 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/better-pristines/build/ac-macros/swig.m4
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/build/ac-macros/swig.m4?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/build/ac-macros/swig.m4 (original)
+++ subversion/branches/better-pristines/build/ac-macros/swig.m4 Sun Feb 25
13:34:45 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/better-pristines/subversion/bindings/javahl/native/SVNRepos.cpp
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.cpp?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.cpp
(original)
+++
subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.cpp
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/javahl/native/SVNRepos.h
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.h?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.h
(original)
+++
subversion/branches/better-pristines/subversion/bindings/javahl/native/SVNRepos.h
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
(original)
+++
subversion/branches/better-pristines/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
(original)
+++
subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
(original)
+++
subversion/branches/better-pristines/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/swig/perl/native/Core.pm
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/swig/perl/native/Core.pm?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/swig/perl/native/Core.pm
(original)
+++
subversion/branches/better-pristines/subversion/bindings/swig/perl/native/Core.pm
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/swig/python/svn/fs.py
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/swig/python/svn/fs.py?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/swig/python/svn/fs.py
(original)
+++
subversion/branches/better-pristines/subversion/bindings/swig/python/svn/fs.py
Sun Feb 25 13:34:45 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/better-pristines/subversion/bindings/swig/python/tests/run_all.py
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/bindings/swig/python/tests/run_all.py?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
---
subversion/branches/better-pristines/subversion/bindings/swig/python/tests/run_all.py
(original)
+++
subversion/branches/better-pristines/subversion/bindings/swig/python/tests/run_all.py
Sun Feb 25 13:34:45 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/better-pristines/subversion/include/svn_client.h
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/include/svn_client.h?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/include/svn_client.h
(original)
+++ subversion/branches/better-pristines/subversion/include/svn_client.h Sun
Feb 25 13:34:45 2018
@@ -6907,23 +6907,30 @@ typedef struct svn_client_shelf_version_
/** 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.
*/
@@ -6947,7 +6954,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.
@@ -6966,7 +6975,8 @@ svn_client_shelf_delete(const char *name
* @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, and return SVN_NO_ERROR. In this case
+ * @a shelf->max_version after the call is the same as before the call.
*
* @since New in 1.X.
* @warning EXPERIMENTAL.
@@ -7120,133 +7130,6 @@ svn_client_shelf_list(apr_hash_t **shelf
/** @} */
-/** Shelving v1
- *
- * @defgroup svn_client_shelve_funcs Client Shelving Functions
- * @{
- */
-
-/** Shelve a change.
- *
- * 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.
- * @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);
-
-/** Unshelve the shelved change @a name.
- *
- * @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 dry_run is true, don't actually do it.
- *
- * @since New in 1.10.
- * @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);
-
-/** Delete the shelved patch @a name.
- *
- * @a local_abspath is any path in the WC and is used to find the WC root.
- *
- * If @a dry_run is true, don't actually do it.
- *
- * @since New in 1.10.
- * @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);
-
-/** Information about a shelved patch.
- *
- * @since New in 1.10.
- * @warning EXPERIMENTAL.
- */
-typedef struct svn_client_shelved_patch_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;
-
-/** Set @a *shelved_patch_infos to a hash, keyed by patch name, of pointers to
- * @c svn_client_shelved_patch_info_t structures.
- *
- * @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.
- * @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);
-
-/** @} */
-
/** Changelist commands
*
* @defgroup svn_client_changelist_funcs Client Changelist Functions
Modified: subversion/branches/better-pristines/subversion/libsvn_client/client.h
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_client/client.h?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_client/client.h
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_client/client.h Sun
Feb 25 13:34:45 2018
@@ -754,40 +754,23 @@ typedef struct svn_client__copy_pair_t
/*** Commit Stuff ***/
-/* WARNING: This is all new, untested, un-peer-reviewed conceptual
- stuff.
+/* The "Harvest Committables" System
- The day that 'svn switch' came into existence, our old commit
- crawler (svn_wc_crawl_local_mods) became obsolete. It relied far
- too heavily on the on-disk hierarchy of files and directories, and
- simply had no way to support disjoint working copy trees or nest
- working copies. The primary reason for this is that commit
- process, in order to guarantee atomicity, is a single drive of a
+ The commit process requires, per repository, a single drive of a
commit editor which is based not on working copy paths, but on
- URLs. With the completion of 'svn switch', it became all too
- likely that the on-disk working copy hierarchy would no longer be
- guaranteed to map to a similar in-repository hierarchy.
-
- Aside from this new brokenness of the old system, an unrelated
- feature request had cropped up -- the ability to know in advance of
- your commit, exactly what would be committed (so that log messages
- could be initially populated with this information). Since the old
- crawler discovered commit candidates while in the process of
- committing, it was impossible to harvest this information upfront.
- As a workaround, svn_wc_statuses() was used to stat the whole
- working copy for changes before the commit started...and then the
- commit would again stat the whole tree for changes.
-
- Enter the new system.
+ URLs. The on-disk working copy hierarchy does not, in general,
+ map to a similar in-repository hierarchy, due to switched subtrees
+ and disjoint working copies.
+
+ Also we wish to know exactly what would be committed, in advance of
+ the commit, so that a log message editor can be initially populated
+ with this information.
The primary goal of this system is very straightforward: harvest
all commit candidate information up front, and cache enough info in
the process to use this to drive a URL-sorted commit.
- *** END-OF-KNOWLEDGE ***
-
- The prototypes below are still in development. In general, the
- idea is that commit-y processes ('svn mkdir URL', 'svn delete URL',
+ The idea is that commit-y processes ('svn mkdir URL', 'svn delete URL',
'svn commit', 'svn copy WC_PATH URL', 'svn copy URL1 URL2', 'svn
move URL1 URL2', others?) generate the cached commit candidate
information, and hand this information off to a consumer which is
@@ -844,7 +827,7 @@ typedef svn_error_t *(*svn_client__check
- if the candidate has a lock token, add it to the LOCK_TOKENS hash.
- if the candidate is a directory scheduled for deletion, crawl
- the directories children recursively for any lock tokens and
+ the directory's children recursively for any lock tokens and
add them to the LOCK_TOKENS array.
At the successful return of this function, COMMITTABLES will point
Modified:
subversion/branches/better-pristines/subversion/libsvn_client/conflicts.c
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_client/conflicts.c?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_client/conflicts.c
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_client/conflicts.c
Sun Feb 25 13:34:45 2018
@@ -6704,8 +6704,9 @@ resolve_merge_incoming_added_file_text_u
/* Revert the path in order to restore the repository's line of
* history, which is part of the BASE tree. This revert operation
* is why are being careful about not losing the temporary copy. */
- err = svn_wc_revert5(ctx->wc_ctx, local_abspath, svn_depth_empty,
+ err = svn_wc_revert6(ctx->wc_ctx, local_abspath, svn_depth_empty,
FALSE, NULL, TRUE, FALSE,
+ TRUE /*added_keep_local*/,
NULL, NULL, /* no cancellation */
ctx->notify_func2, ctx->notify_baton2,
scratch_pool);
@@ -8708,8 +8709,9 @@ resolve_incoming_move_dir_merge(svn_clie
svn_opt_revision_t incoming_new_opt_rev;
/* Revert the incoming move target directory. */
- SVN_ERR(svn_wc_revert5(ctx->wc_ctx, moved_to_abspath, svn_depth_infinity,
+ SVN_ERR(svn_wc_revert6(ctx->wc_ctx, moved_to_abspath, svn_depth_infinity,
FALSE, NULL, TRUE, FALSE,
+ TRUE /*added_keep_local*/,
NULL, NULL, /* no cancellation */
ctx->notify_func2, ctx->notify_baton2,
scratch_pool));
Modified: subversion/branches/better-pristines/subversion/libsvn_client/diff.c
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_client/diff.c?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_client/diff.c
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_client/diff.c Sun
Feb 25 13:34:45 2018
@@ -2493,6 +2493,76 @@ create_diff_writer_info(diff_writer_info
return SVN_NO_ERROR;
}
+/* Set up *DIFF_PROCESSOR and *DDI for normal and git-style diffs (but not
+ * summary diffs).
+ */
+static svn_error_t *
+get_diff_processor(svn_diff_tree_processor_t **diff_processor,
+ struct diff_driver_info_t **ddi,
+ const apr_array_header_t *options,
+ const char *path_or_url1,
+ const char *path_or_url2,
+ const char *relative_to_dir,
+ svn_boolean_t no_diff_added,
+ svn_boolean_t no_diff_deleted,
+ svn_boolean_t show_copies_as_adds,
+ svn_boolean_t ignore_content_type,
+ svn_boolean_t ignore_properties,
+ svn_boolean_t properties_only,
+ svn_boolean_t use_git_diff_format,
+ svn_boolean_t pretty_print_mergeinfo,
+ const char *header_encoding,
+ svn_stream_t *outstream,
+ svn_stream_t *errstream,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *pool)
+{
+ diff_writer_info_t *dwi = apr_pcalloc(pool, sizeof(*dwi));
+ svn_diff_tree_processor_t *processor;
+
+ /* setup callback and baton */
+ dwi->ddi.orig_path_1 = path_or_url1;
+ dwi->ddi.orig_path_2 = path_or_url2;
+
+ SVN_ERR(create_diff_writer_info(dwi, options,
+ ctx->config, pool));
+ dwi->pool = pool;
+ dwi->outstream = outstream;
+ dwi->errstream = errstream;
+ dwi->header_encoding = header_encoding;
+
+ dwi->force_binary = ignore_content_type;
+ dwi->ignore_properties = ignore_properties;
+ dwi->properties_only = properties_only;
+ dwi->relative_to_dir = relative_to_dir;
+ dwi->use_git_diff_format = use_git_diff_format;
+ dwi->no_diff_added = no_diff_added;
+ dwi->no_diff_deleted = no_diff_deleted;
+ dwi->show_copies_as_adds = show_copies_as_adds;
+ dwi->pretty_print_mergeinfo = pretty_print_mergeinfo;
+
+ dwi->cancel_func = ctx->cancel_func;
+ dwi->cancel_baton = ctx->cancel_baton;
+
+ dwi->wc_ctx = ctx->wc_ctx;
+ dwi->ddi.session_relpath = NULL;
+ dwi->ddi.anchor = NULL;
+
+ processor = svn_diff__tree_processor_create(dwi, pool);
+
+ processor->dir_added = diff_dir_added;
+ processor->dir_changed = diff_dir_changed;
+ processor->dir_deleted = diff_dir_deleted;
+
+ processor->file_added = diff_file_added;
+ processor->file_changed = diff_file_changed;
+ processor->file_deleted = diff_file_deleted;
+
+ *diff_processor = processor;
+ *ddi = &dwi->ddi;
+ return SVN_NO_ERROR;
+}
+
/*----------------------------------------------------------------------- */
/*** Public Interfaces. ***/
@@ -2553,10 +2623,9 @@ svn_client_diff7(const apr_array_header_
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- diff_writer_info_t dwi = { 0 };
svn_opt_revision_t peg_revision;
- const svn_diff_tree_processor_t *diff_processor;
- svn_diff_tree_processor_t *processor;
+ svn_diff_tree_processor_t *diff_processor;
+ struct diff_driver_info_t *ddi;
if (ignore_properties && properties_only)
return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL,
@@ -2566,51 +2635,27 @@ svn_client_diff7(const apr_array_header_
/* We will never do a pegged diff from here. */
peg_revision.kind = svn_opt_revision_unspecified;
- /* setup callback and baton */
- dwi.ddi.orig_path_1 = path_or_url1;
- dwi.ddi.orig_path_2 = path_or_url2;
-
- SVN_ERR(create_diff_writer_info(&dwi, options,
- ctx->config, pool));
- dwi.pool = pool;
- dwi.outstream = outstream;
- dwi.errstream = errstream;
- dwi.header_encoding = header_encoding;
-
- dwi.force_binary = ignore_content_type;
- dwi.ignore_properties = ignore_properties;
- dwi.properties_only = properties_only;
- dwi.relative_to_dir = relative_to_dir;
- dwi.use_git_diff_format = use_git_diff_format;
- dwi.no_diff_added = no_diff_added;
- dwi.no_diff_deleted = no_diff_deleted;
- dwi.show_copies_as_adds = show_copies_as_adds;
- dwi.pretty_print_mergeinfo = pretty_print_mergeinfo;
-
- dwi.cancel_func = ctx->cancel_func;
- dwi.cancel_baton = ctx->cancel_baton;
-
- dwi.wc_ctx = ctx->wc_ctx;
- dwi.ddi.session_relpath = NULL;
- dwi.ddi.anchor = NULL;
-
- processor = svn_diff__tree_processor_create(&dwi, pool);
-
- processor->dir_added = diff_dir_added;
- processor->dir_changed = diff_dir_changed;
- processor->dir_deleted = diff_dir_deleted;
-
- processor->file_added = diff_file_added;
- processor->file_changed = diff_file_changed;
- processor->file_deleted = diff_file_deleted;
-
- diff_processor = processor;
-
/* --show-copies-as-adds and --git imply --notice-ancestry */
if (show_copies_as_adds || use_git_diff_format)
ignore_ancestry = FALSE;
- return svn_error_trace(do_diff(NULL, NULL, &dwi.ddi,
+ SVN_ERR(get_diff_processor(&diff_processor, &ddi,
+ options,
+ path_or_url1, path_or_url2,
+ relative_to_dir,
+ no_diff_added,
+ no_diff_deleted,
+ show_copies_as_adds,
+ ignore_content_type,
+ ignore_properties,
+ properties_only,
+ use_git_diff_format,
+ pretty_print_mergeinfo,
+ header_encoding,
+ outstream, errstream,
+ ctx, pool));
+
+ return svn_error_trace(do_diff(NULL, NULL, ddi,
path_or_url1, path_or_url2,
revision1, revision2,
&peg_revision, TRUE /* no_peg_revision */,
@@ -2643,60 +2688,35 @@ svn_client_diff_peg7(const apr_array_hea
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- diff_writer_info_t dwi = { 0 };
- const svn_diff_tree_processor_t *diff_processor;
- svn_diff_tree_processor_t *processor;
+ svn_diff_tree_processor_t *diff_processor;
+ struct diff_driver_info_t *ddi;
if (ignore_properties && properties_only)
return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL,
_("Cannot ignore properties and show only "
"properties at the same time"));
- /* setup callback and baton */
- dwi.ddi.orig_path_1 = path_or_url;
- dwi.ddi.orig_path_2 = path_or_url;
-
- SVN_ERR(create_diff_writer_info(&dwi, options,
- ctx->config, pool));
- dwi.pool = pool;
- dwi.outstream = outstream;
- dwi.errstream = errstream;
- dwi.header_encoding = header_encoding;
-
- dwi.force_binary = ignore_content_type;
- dwi.ignore_properties = ignore_properties;
- dwi.properties_only = properties_only;
- dwi.relative_to_dir = relative_to_dir;
- dwi.use_git_diff_format = use_git_diff_format;
- dwi.no_diff_added = no_diff_added;
- dwi.no_diff_deleted = no_diff_deleted;
- dwi.show_copies_as_adds = show_copies_as_adds;
- dwi.pretty_print_mergeinfo = pretty_print_mergeinfo;
-
- dwi.cancel_func = ctx->cancel_func;
- dwi.cancel_baton = ctx->cancel_baton;
-
- dwi.wc_ctx = ctx->wc_ctx;
- dwi.ddi.session_relpath = NULL;
- dwi.ddi.anchor = NULL;
-
- processor = svn_diff__tree_processor_create(&dwi, pool);
-
- processor->dir_added = diff_dir_added;
- processor->dir_changed = diff_dir_changed;
- processor->dir_deleted = diff_dir_deleted;
-
- processor->file_added = diff_file_added;
- processor->file_changed = diff_file_changed;
- processor->file_deleted = diff_file_deleted;
-
- diff_processor = processor;
-
/* --show-copies-as-adds and --git imply --notice-ancestry */
if (show_copies_as_adds || use_git_diff_format)
ignore_ancestry = FALSE;
- return svn_error_trace(do_diff(NULL, NULL, &dwi.ddi,
+ SVN_ERR(get_diff_processor(&diff_processor, &ddi,
+ options,
+ path_or_url, path_or_url,
+ relative_to_dir,
+ no_diff_added,
+ no_diff_deleted,
+ show_copies_as_adds,
+ ignore_content_type,
+ ignore_properties,
+ properties_only,
+ use_git_diff_format,
+ pretty_print_mergeinfo,
+ header_encoding,
+ outstream, errstream,
+ ctx, pool));
+
+ return svn_error_trace(do_diff(NULL, NULL, ddi,
path_or_url, path_or_url,
start_revision, end_revision,
peg_revision, FALSE /* no_peg_revision */,
Modified: subversion/branches/better-pristines/subversion/libsvn_client/export.c
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_client/export.c?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_client/export.c
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_client/export.c Sun
Feb 25 13:34:45 2018
@@ -453,12 +453,12 @@ export_node(void *baton,
* If PATH exists but is a file, then error with SVN_ERR_WC_NOT_WORKING_COPY.
*
* If PATH is a already a directory, then error with
- * SVN_ERR_WC_OBSTRUCTED_UPDATE, unless FORCE, in which case just
+ * SVN_ERR_WC_OBSTRUCTED_UPDATE, unless OVERWRITE, in which case just
* export into PATH with no error.
*/
static svn_error_t *
open_root_internal(const char *path,
- svn_boolean_t force,
+ svn_boolean_t overwrite,
svn_wc_notify_func2_t notify_func,
void *notify_baton,
apr_pool_t *pool)
@@ -472,7 +472,7 @@ open_root_internal(const char *path,
return svn_error_createf(SVN_ERR_WC_NOT_WORKING_COPY, NULL,
_("'%s' exists and is not a directory"),
svn_dirent_local_style(path, pool));
- else if ((kind != svn_node_dir) || (! force))
+ else if ((kind != svn_node_dir) || (! overwrite))
return svn_error_createf(SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
_("'%s' already exists"),
svn_dirent_local_style(path, pool));
@@ -501,7 +501,7 @@ struct edit_baton
const char *repos_root_url;
const char *root_path;
const char *root_url;
- svn_boolean_t force;
+ svn_boolean_t overwrite;
svn_revnum_t *target_revision;
apr_hash_t *externals;
const char *native_eol;
@@ -587,7 +587,7 @@ open_root(void *edit_baton,
struct edit_baton *eb = edit_baton;
struct dir_baton *db = apr_pcalloc(pool, sizeof(*db));
- SVN_ERR(open_root_internal(eb->root_path, eb->force,
+ SVN_ERR(open_root_internal(eb->root_path, eb->overwrite,
eb->notify_func, eb->notify_baton, pool));
/* Build our dir baton. */
@@ -621,7 +621,7 @@ add_directory(const char *path,
return svn_error_createf(SVN_ERR_WC_NOT_WORKING_COPY, NULL,
_("'%s' exists and is not a directory"),
svn_dirent_local_style(full_path, pool));
- else if (! (kind == svn_node_dir && eb->force))
+ else if (! (kind == svn_node_dir && eb->overwrite))
return svn_error_createf(SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
_("'%s' already exists"),
svn_dirent_local_style(full_path, pool));
@@ -1077,7 +1077,7 @@ add_directory_ev2(void *baton,
return svn_error_createf(SVN_ERR_WC_NOT_WORKING_COPY, NULL,
_("'%s' exists and is not a directory"),
svn_dirent_local_style(full_path, scratch_pool));
- else if (! (kind == svn_node_dir && eb->force))
+ else if (! (kind == svn_node_dir && eb->overwrite))
return svn_error_createf(SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
_("'%s' already exists"),
svn_dirent_local_style(full_path, scratch_pool));
@@ -1141,7 +1141,7 @@ get_editor_ev2(const svn_delta_editor_t
exb, result_pool));
/* Create the root of the export. */
- SVN_ERR(open_root_internal(eb->root_path, eb->force, eb->notify_func,
+ SVN_ERR(open_root_internal(eb->root_path, eb->overwrite, eb->notify_func,
eb->notify_baton, scratch_pool));
return SVN_NO_ERROR;
@@ -1153,7 +1153,6 @@ export_file_ev2(const char *from_url,
struct edit_baton *eb,
svn_client__pathrev_t *loc,
svn_ra_session_t *ra_session,
- svn_boolean_t overwrite,
apr_pool_t *scratch_pool)
{
apr_hash_t *props;
@@ -1177,7 +1176,7 @@ export_file_ev2(const char *from_url,
SVN_ERR(svn_io_check_path(to_path, &to_kind, scratch_pool));
if ((to_kind == svn_node_file || to_kind == svn_node_unknown) &&
- ! overwrite)
+ ! eb->overwrite)
return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
_("Destination file '%s' exists, and "
"will not be overwritten unless forced"),
@@ -1207,7 +1206,6 @@ export_file(const char *from_url,
struct edit_baton *eb,
svn_client__pathrev_t *loc,
svn_ra_session_t *ra_session,
- svn_boolean_t overwrite,
apr_pool_t *scratch_pool)
{
apr_hash_t *props;
@@ -1232,7 +1230,7 @@ export_file(const char *from_url,
SVN_ERR(svn_io_check_path(to_path, &to_kind, scratch_pool));
if ((to_kind == svn_node_file || to_kind == svn_node_unknown) &&
- ! overwrite)
+ ! eb->overwrite)
return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
_("Destination file '%s' exists, and "
"will not be overwritten unless forced"),
@@ -1289,7 +1287,6 @@ export_directory(const char *from_url,
struct edit_baton *eb,
svn_client__pathrev_t *loc,
svn_ra_session_t *ra_session,
- svn_boolean_t overwrite,
svn_boolean_t ignore_externals,
svn_boolean_t ignore_keywords,
svn_depth_t depth,
@@ -1344,7 +1341,7 @@ export_directory(const char *from_url,
SVN_ERR(svn_io_check_path(to_path, &kind, scratch_pool));
if (kind == svn_node_none)
SVN_ERR(open_root_internal
- (to_path, overwrite, ctx->notify_func2,
+ (to_path, eb->overwrite, ctx->notify_func2,
ctx->notify_baton2, scratch_pool));
if (! ignore_externals && depth == svn_depth_infinity)
@@ -1415,7 +1412,7 @@ svn_client_export5(svn_revnum_t *result_
SVN_ERR(svn_ra_get_repos_root2(ra_session, &eb->repos_root_url, pool));
eb->root_path = to_path;
eb->root_url = loc->url;
- eb->force = overwrite;
+ eb->overwrite = overwrite;
eb->target_revision = &edit_revision;
eb->externals = apr_hash_make(pool);
eb->native_eol = native_eol;
@@ -1431,15 +1428,15 @@ svn_client_export5(svn_revnum_t *result_
{
if (!ENABLE_EV2_IMPL)
SVN_ERR(export_file(from_url, to_path, eb, loc, ra_session,
- overwrite, pool));
+ pool));
else
SVN_ERR(export_file_ev2(from_url, to_path, eb, loc,
- ra_session, overwrite, pool));
+ ra_session, pool));
}
else if (kind == svn_node_dir)
{
SVN_ERR(export_directory(from_url, to_path,
- eb, loc, ra_session, overwrite,
+ eb, loc, ra_session,
ignore_externals, ignore_keywords, depth,
native_eol, ctx, pool));
}
Modified: subversion/branches/better-pristines/subversion/libsvn_client/info.c
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_client/info.c?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_client/info.c
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_client/info.c Sun
Feb 25 13:34:45 2018
@@ -253,17 +253,17 @@ same_resource_in_head(svn_boolean_t *sam
apr_pool_t *pool)
{
svn_error_t *err;
- svn_opt_revision_t start_rev, peg_rev;
+ svn_opt_revision_t operative_rev, peg_rev;
const char *head_url;
- start_rev.kind = svn_opt_revision_head;
- peg_rev.kind = svn_opt_revision_number;
- peg_rev.value.number = rev;
+ peg_rev.kind = svn_opt_revision_head;
+ operative_rev.kind = svn_opt_revision_number;
+ operative_rev.value.number = rev;
err = svn_client__repos_locations(&head_url, NULL, NULL, NULL,
ra_session,
url, &peg_rev,
- &start_rev, NULL,
+ &operative_rev, NULL,
ctx, pool);
if (err &&
((err->apr_err == SVN_ERR_CLIENT_UNRELATED_RESOURCES) ||
Modified: subversion/branches/better-pristines/subversion/libsvn_client/shelf.c
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_client/shelf.c?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_client/shelf.c
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_client/shelf.c Sun
Feb 25 13:34:45 2018
@@ -446,11 +446,11 @@ svn_client_shelf_open_existing(svn_clien
}
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)
{
SVN_ERR(shelf_construct(shelf_p, name,
local_abspath, ctx, result_pool));
Modified:
subversion/branches/better-pristines/subversion/libsvn_delta/debug_editor.c
URL:
http://svn.apache.org/viewvc/subversion/branches/better-pristines/subversion/libsvn_delta/debug_editor.c?rev=1825304&r1=1825303&r2=1825304&view=diff
==============================================================================
--- subversion/branches/better-pristines/subversion/libsvn_delta/debug_editor.c
(original)
+++ subversion/branches/better-pristines/subversion/libsvn_delta/debug_editor.c
Sun Feb 25 13:34:45 2018
@@ -71,9 +71,11 @@ set_target_revision(void *edit_baton,
SVN_ERR(svn_stream_printf(eb->out, pool, "set_target_revision : %ld\n",
target_revision));
- return eb->wrapped_editor->set_target_revision(eb->wrapped_edit_baton,
- target_revision,
- pool);
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->set_target_revision(eb->wrapped_edit_baton,
+ target_revision,
+ pool));
+ return SVN_NO_ERROR;
}
static svn_error_t *
@@ -90,10 +92,11 @@ open_root(void *edit_baton,
base_revision));
eb->indent_level++;
- SVN_ERR(eb->wrapped_editor->open_root(eb->wrapped_edit_baton,
- base_revision,
- pool,
- &dir_baton->wrapped_dir_baton));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->open_root(eb->wrapped_edit_baton,
+ base_revision,
+ pool,
+ &dir_baton->wrapped_dir_baton));
dir_baton->edit_baton = edit_baton;
@@ -115,10 +118,12 @@ delete_entry(const char *path,
SVN_ERR(svn_stream_printf(eb->out, pool, "delete_entry : %s:%ld\n",
path, base_revision));
- return eb->wrapped_editor->delete_entry(path,
- base_revision,
- pb->wrapped_dir_baton,
- pool);
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->delete_entry(path,
+ base_revision,
+ pb->wrapped_dir_baton,
+ pool));
+ return SVN_NO_ERROR;
}
static svn_error_t *
@@ -139,12 +144,13 @@ add_directory(const char *path,
path, copyfrom_path, copyfrom_revision));
eb->indent_level++;
- SVN_ERR(eb->wrapped_editor->add_directory(path,
- pb->wrapped_dir_baton,
- copyfrom_path,
- copyfrom_revision,
- pool,
- &b->wrapped_dir_baton));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->add_directory(path,
+ pb->wrapped_dir_baton,
+ copyfrom_path,
+ copyfrom_revision,
+ pool,
+ &b->wrapped_dir_baton));
b->edit_baton = eb;
*child_baton = b;
@@ -168,11 +174,12 @@ open_directory(const char *path,
path, base_revision));
eb->indent_level++;
- SVN_ERR(eb->wrapped_editor->open_directory(path,
- pb->wrapped_dir_baton,
- base_revision,
- pool,
- &db->wrapped_dir_baton));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->open_directory(path,
+ pb->wrapped_dir_baton,
+ base_revision,
+ pool,
+ &db->wrapped_dir_baton));
db->edit_baton = eb;
*child_baton = db;
@@ -199,12 +206,13 @@ add_file(const char *path,
eb->indent_level++;
- SVN_ERR(eb->wrapped_editor->add_file(path,
- pb->wrapped_dir_baton,
- copyfrom_path,
- copyfrom_revision,
- pool,
- &fb->wrapped_file_baton));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->add_file(path,
+ pb->wrapped_dir_baton,
+ copyfrom_path,
+ copyfrom_revision,
+ pool,
+ &fb->wrapped_file_baton));
fb->edit_baton = eb;
*file_baton = fb;
@@ -229,11 +237,12 @@ open_file(const char *path,
eb->indent_level++;
- SVN_ERR(eb->wrapped_editor->open_file(path,
- pb->wrapped_dir_baton,
- base_revision,
- pool,
- &fb->wrapped_file_baton));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->open_file(path,
+ pb->wrapped_dir_baton,
+ base_revision,
+ pool,
+ &fb->wrapped_file_baton));
fb->edit_baton = eb;
*file_baton = fb;
@@ -255,11 +264,38 @@ apply_textdelta(void *file_baton,
SVN_ERR(svn_stream_printf(eb->out, pool, "apply_textdelta : %s\n",
base_checksum));
- SVN_ERR(eb->wrapped_editor->apply_textdelta(fb->wrapped_file_baton,
- base_checksum,
- pool,
- handler,
- handler_baton));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->apply_textdelta(fb->wrapped_file_baton,
+ base_checksum,
+ pool,
+ handler,
+ handler_baton));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+apply_textdelta_stream(const struct svn_delta_editor_t *editor,
+ void *file_baton,
+ const char *base_checksum,
+ svn_txdelta_stream_open_func_t open_func,
+ void *open_baton,
+ apr_pool_t *scratch_pool)
+{
+ struct file_baton *fb = file_baton;
+ struct edit_baton *eb = fb->edit_baton;
+
+ SVN_ERR(write_indent(eb, scratch_pool));
+ SVN_ERR(svn_stream_printf(eb->out, scratch_pool,
+ "apply_textdelta_stream : %s\n",
+ base_checksum));
+
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->apply_textdelta_stream(eb->wrapped_editor,
+ fb->wrapped_file_baton,
+ base_checksum,
+ open_func, open_baton,
+ scratch_pool));
return SVN_NO_ERROR;
}
@@ -278,8 +314,9 @@ close_file(void *file_baton,
SVN_ERR(svn_stream_printf(eb->out, pool, "close_file : %s\n",
text_checksum));
- SVN_ERR(eb->wrapped_editor->close_file(fb->wrapped_file_baton,
- text_checksum, pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->close_file(fb->wrapped_file_baton,
+ text_checksum, pool));
return SVN_NO_ERROR;
}
@@ -295,8 +332,9 @@ absent_file(const char *path,
SVN_ERR(write_indent(eb, pool));
SVN_ERR(svn_stream_printf(eb->out, pool, "absent_file : %s\n", path));
- SVN_ERR(eb->wrapped_editor->absent_file(path, fb->wrapped_file_baton,
- pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->absent_file(path, fb->wrapped_file_baton,
+ pool));
return SVN_NO_ERROR;
}
@@ -312,8 +350,9 @@ close_directory(void *dir_baton,
SVN_ERR(write_indent(eb, pool));
SVN_ERR(svn_stream_printf(eb->out, pool, "close_directory\n"));
- SVN_ERR(eb->wrapped_editor->close_directory(db->wrapped_dir_baton,
- pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->close_directory(db->wrapped_dir_baton,
+ pool));
return SVN_NO_ERROR;
}
@@ -330,8 +369,9 @@ absent_directory(const char *path,
SVN_ERR(svn_stream_printf(eb->out, pool, "absent_directory : %s\n",
path));
- SVN_ERR(eb->wrapped_editor->absent_directory(path, db->wrapped_dir_baton,
- pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->absent_directory(path, db->wrapped_dir_baton,
+ pool));
return SVN_NO_ERROR;
}
@@ -349,10 +389,11 @@ change_file_prop(void *file_baton,
SVN_ERR(svn_stream_printf(eb->out, pool, "change_file_prop : %s -> %s\n",
name, value ? value->data : "<deleted>"));
- SVN_ERR(eb->wrapped_editor->change_file_prop(fb->wrapped_file_baton,
- name,
- value,
- pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->change_file_prop(fb->wrapped_file_baton,
+ name,
+ value,
+ pool));
return SVN_NO_ERROR;
}
@@ -370,10 +411,11 @@ change_dir_prop(void *dir_baton,
SVN_ERR(svn_stream_printf(eb->out, pool, "change_dir_prop : %s -> %s\n",
name, value ? value->data : "<deleted>"));
- SVN_ERR(eb->wrapped_editor->change_dir_prop(db->wrapped_dir_baton,
- name,
- value,
- pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->change_dir_prop(db->wrapped_dir_baton,
+ name,
+ value,
+ pool));
return SVN_NO_ERROR;
}
@@ -387,7 +429,8 @@ close_edit(void *edit_baton,
SVN_ERR(write_indent(eb, pool));
SVN_ERR(svn_stream_printf(eb->out, pool, "close_edit\n"));
- SVN_ERR(eb->wrapped_editor->close_edit(eb->wrapped_edit_baton, pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->close_edit(eb->wrapped_edit_baton, pool));
return SVN_NO_ERROR;
}
@@ -401,7 +444,8 @@ abort_edit(void *edit_baton,
SVN_ERR(write_indent(eb, pool));
SVN_ERR(svn_stream_printf(eb->out, pool, "abort_edit\n"));
- SVN_ERR(eb->wrapped_editor->abort_edit(eb->wrapped_edit_baton, pool));
+ if (eb->wrapped_editor)
+ SVN_ERR(eb->wrapped_editor->abort_edit(eb->wrapped_edit_baton, pool));
return SVN_NO_ERROR;
}
@@ -436,6 +480,7 @@ svn_delta__get_debug_editor(const svn_de
tree_editor->add_file = add_file;
tree_editor->open_file = open_file;
tree_editor->apply_textdelta = apply_textdelta;
+ tree_editor->apply_textdelta_stream = apply_textdelta_stream;
tree_editor->change_file_prop = change_file_prop;
tree_editor->close_file = close_file;
tree_editor->absent_file = absent_file;