You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2012/09/24 20:16:20 UTC
svn commit: r1389505 [1/3] - in /subversion/branches/auto-props-sdc: ./
build/ build/generator/templates/ subversion/bindings/swig/
subversion/bindings/swig/python/libsvn_swig_py/
subversion/bindings/swig/python/svn/ subversion/include/ subversion/incl...
Author: pburba
Date: Mon Sep 24 18:16:17 2012
New Revision: 1389505
URL: http://svn.apache.org/viewvc?rev=1389505&view=rev
Log:
On the auto-props-sdc branch: Sync with
^/subversion/branches/inheritable-props through r1389501.
Added:
subversion/branches/auto-props-sdc/tools/server-side/fsfs-reorg.c
- copied unchanged from r1389501, subversion/branches/inheritable-props/tools/server-side/fsfs-reorg.c
Removed:
subversion/branches/auto-props-sdc/tools/fsfs/
Modified:
subversion/branches/auto-props-sdc/ (props changed)
subversion/branches/auto-props-sdc/CHANGES
subversion/branches/auto-props-sdc/build.conf
subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcproj.ezt
subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcxproj.ezt
subversion/branches/auto-props-sdc/build/run_tests.py
subversion/branches/auto-props-sdc/configure.ac
subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
subversion/branches/auto-props-sdc/subversion/bindings/swig/python/svn/delta.py
subversion/branches/auto-props-sdc/subversion/bindings/swig/svn_delta.i
subversion/branches/auto-props-sdc/subversion/include/private/svn_client_private.h
subversion/branches/auto-props-sdc/subversion/include/private/svn_skel.h
subversion/branches/auto-props-sdc/subversion/include/svn_client.h
subversion/branches/auto-props-sdc/subversion/include/svn_diff.h
subversion/branches/auto-props-sdc/subversion/include/svn_fs.h
subversion/branches/auto-props-sdc/subversion/include/svn_io.h
subversion/branches/auto-props-sdc/subversion/include/svn_mergeinfo.h
subversion/branches/auto-props-sdc/subversion/include/svn_props.h
subversion/branches/auto-props-sdc/subversion/include/svn_repos.h
subversion/branches/auto-props-sdc/subversion/include/svn_types.h
subversion/branches/auto-props-sdc/subversion/include/svn_wc.h
subversion/branches/auto-props-sdc/subversion/include/svn_xml.h
subversion/branches/auto-props-sdc/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c
subversion/branches/auto-props-sdc/subversion/libsvn_client/mergeinfo.c
subversion/branches/auto-props-sdc/subversion/libsvn_client/prop_commands.c
subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.c
subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.h
subversion/branches/auto-props-sdc/subversion/libsvn_fs_base/tree.c
subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra/compat.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra/deprecated.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra/ra_loader.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra/ra_loader.h
subversion/branches/auto-props-sdc/subversion/libsvn_ra/wrapper_template.h
subversion/branches/auto-props-sdc/subversion/libsvn_ra_local/ra_plugin.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/serf.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/update.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/util.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra_svn/client.c
subversion/branches/auto-props-sdc/subversion/libsvn_repos/fs-wrap.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/gpg_agent.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/properties.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/skel.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.h
subversion/branches/auto-props-sdc/subversion/libsvn_wc/entries.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/update_editor.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/upgrade.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-metadata.sql
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-queries.sql
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc.h
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc_db.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc_db.h
subversion/branches/auto-props-sdc/subversion/mod_authz_svn/mod_authz_svn.c
subversion/branches/auto-props-sdc/subversion/mod_dav_svn/reports/inherited-props.c
subversion/branches/auto-props-sdc/subversion/mod_dav_svn/repos.c
subversion/branches/auto-props-sdc/subversion/svn/cl.h
subversion/branches/auto-props-sdc/subversion/svn/conflict-callbacks.c
subversion/branches/auto-props-sdc/subversion/svn/file-merge.c
subversion/branches/auto-props-sdc/subversion/svn/log-cmd.c
subversion/branches/auto-props-sdc/subversion/svn/main.c
subversion/branches/auto-props-sdc/subversion/svn/merge-cmd.c
subversion/branches/auto-props-sdc/subversion/svn/mergeinfo-cmd.c
subversion/branches/auto-props-sdc/subversion/svn/status-cmd.c
subversion/branches/auto-props-sdc/subversion/svnserve/serve.c
subversion/branches/auto-props-sdc/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
subversion/branches/auto-props-sdc/subversion/tests/cmdline/log_tests.py
subversion/branches/auto-props-sdc/subversion/tests/cmdline/mergeinfo_tests.py
subversion/branches/auto-props-sdc/subversion/tests/cmdline/prop_tests.py
subversion/branches/auto-props-sdc/subversion/tests/cmdline/svntest/actions.py
subversion/branches/auto-props-sdc/subversion/tests/cmdline/svntest/main.py
subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/db-test.c
subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/entries-compat.c
subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/op-depth-test.c
subversion/branches/auto-props-sdc/tools/dev/unix-build/Makefile.svn
subversion/branches/auto-props-sdc/tools/server-side/ (props changed)
subversion/branches/auto-props-sdc/tools/server-side/svnpubsub/svnwcsub.py
Propchange: subversion/branches/auto-props-sdc/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Sep 24 18:16:17 2012
@@ -37,6 +37,7 @@ subversion_msvc.plg
subversion_vcnet.sln
subversion_vcnet.ncb
subversion_vcnet.suo
+subversion_vcnet.v11.suo
subversion_vcnet.sdf
subversion_vcnet.opensdf
mkmf.log
Propchange: subversion/branches/auto-props-sdc/
------------------------------------------------------------------------------
Merged /subversion/branches/inheritable-props:r1384106-1389501
Merged /subversion/trunk:r1383998-1389356
Modified: subversion/branches/auto-props-sdc/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/CHANGES?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/CHANGES (original)
+++ subversion/branches/auto-props-sdc/CHANGES Mon Sep 24 18:16:17 2012
@@ -25,10 +25,11 @@ http://svn.apache.org/repos/asf/subversi
* 'svn diff' can compare arbitrary files and directories (r1310291, et al)
* ra_serf avoids re-downloading content present in pristine store (r1333936)
* 'svn mergeinfo' now honors the --revision (-r) option (issue #4199)
- * new --search and --isearch options for 'svn log' (r1354666, -830)
- * new --search-and and --isearch-and options for 'svn log' (r1383518)
+ * new --search and --search-and options for 'svn log' (r1354666, -83518)
* new built-in interactive text conflict merge tool (r1357864, et al)
* new 'svn --version --verbose' option shows runtime environment info
+ * new 'svnadmin freeze' subcommand (r1376228)
+ * 'svndumpfilter' now supports --delta dumpfiles (r1351009, -3745)
- Client-side bugfixes:
*
@@ -47,7 +48,7 @@ http://svn.apache.org/repos/asf/subversi
* fix inconsistent handling of log revs without changed paths (issue #3694)
- Bindings:
- *
+ * star-imports in swig-py only import 'svn_*' symbols (r1303375)
Version 1.7.6
Modified: subversion/branches/auto-props-sdc/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/build.conf?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/build.conf (original)
+++ subversion/branches/auto-props-sdc/build.conf Mon Sep 24 18:16:17 2012
@@ -1180,7 +1180,7 @@ libs = __ALL__
ra-local-test
svndiff-test vdelta-test
entries-dump atomic-ra-revprop-change wc-lock-tester wc-incomplete-tester
- diff diff3 diff4 reorg-fsfs
+ diff diff3 diff4 fsfs-reorg
client-test
conflict-data-test db-test pristine-store-test entries-compat-test
op-depth-test dirent_uri-test wc-queries-test
@@ -1229,10 +1229,10 @@ libs = __JAVAHL__ javahl-tests javahl-co
# ----------------------------------------------------------------------------
# Contrib and tools
-[reorg-fsfs]
+[fsfs-reorg]
type = exe
-path = tools/fsfs
-sources = reorg.c
+path = tools/server-side
+sources = fsfs-reorg.c
install = tools
libs = libsvn_delta libsvn_subr apr
Modified: subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcproj.ezt?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcproj.ezt (original)
+++ subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcproj.ezt Mon Sep 24 18:16:17 2012
@@ -31,9 +31,9 @@
<Configurations>
[for platforms][for configs] <Configuration
Name="[configs]|[platforms]"
- OutputDirectory="..\..\[configs]\mo"
+ OutputDirectory="..\..\..\[configs]\mo"
BuildLogFile="$(IntDir)\BuildLog_$(ProjectName).htm"
- IntermediateDirectory="..\..\[configs]\mo"
+ IntermediateDirectory="..\..\..\[configs]\mo"
ConfigurationType="0"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
Modified: subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcxproj.ezt?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcxproj.ezt (original)
+++ subversion/branches/auto-props-sdc/build/generator/templates/svn_locale.vcxproj.ezt Mon Sep 24 18:16:17 2012
@@ -44,8 +44,8 @@
</ImportGroup>
[end][end] <PropertyGroup Label="UserMacros" />
<PropertyGroup>
-[for configs][for platforms] <OutDir Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">..\..\[configs]\mo\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">..\..\[configs]\mo\</IntDir>
+[for configs][for platforms] <OutDir Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">..\..\..\[configs]\mo\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">..\..\..\[configs]\mo\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c build_locale.bat [configs]</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c build_locale.bat [configs]</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='[configs]|[platforms]'">cmd /c del $(OutDir)*.mo</NMakeCleanCommandLine>
Modified: subversion/branches/auto-props-sdc/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/build/run_tests.py?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/build/run_tests.py (original)
+++ subversion/branches/auto-props-sdc/build/run_tests.py Mon Sep 24 18:16:17 2012
@@ -45,7 +45,7 @@ separated list of test numbers; the defa
# A few useful constants
SVN_VER_MINOR = 8
-import os, re, subprocess, sys, imp
+import os, re, subprocess, sys, imp, threading
from datetime import datetime
import getopt
@@ -383,12 +383,13 @@ class TestHarness:
# This has to be class-scoped for use in the progress_func()
self.dots_written = 0
def progress_func(completed):
+ if not self.log or self.dots_written >= dot_count:
+ return
dots = (completed * dot_count) / total
-
+ if dots > dot_count:
+ dots = dot_count
dots_to_write = dots - self.dots_written
- if self.log:
- os.write(sys.stdout.fileno(), '.' * dots_to_write)
-
+ os.write(sys.stdout.fileno(), '.' * dots_to_write)
self.dots_written = dots
tests_completed = 0
@@ -484,21 +485,28 @@ class TestHarness:
sys.stdout.flush()
sys.stderr.flush()
self.log.flush()
- old_stdout = os.dup(1)
- old_stderr = os.dup(2)
- os.dup2(self.log.fileno(), 1)
- os.dup2(self.log.fileno(), 2)
+ old_stdout = os.dup(sys.stdout.fileno())
+ old_stderr = os.dup(sys.stderr.fileno())
+ os.dup2(self.log.fileno(), sys.stdout.fileno())
+ os.dup2(self.log.fileno(), sys.stderr.fileno())
- # This has to be class-scoped for use in the progress_func()
+ # These have to be class-scoped for use in the progress_func()
self.dots_written = 0
+ self.progress_lock = threading.Lock()
def progress_func(completed, total):
+ """Report test suite progress. Can be called from multiple threads
+ in parallel mode."""
+ if not self.log:
+ return
dots = (completed * dot_count) / total
-
- dots_to_write = dots - self.dots_written
- if self.log:
+ if dots > dot_count:
+ dots = dot_count
+ self.progress_lock.acquire()
+ if self.dots_written < dot_count:
+ dots_to_write = dots - self.dots_written
+ self.dots_written = dots
os.write(old_stdout, '.' * dots_to_write)
-
- self.dots_written = dots
+ self.progress_lock.release()
serial_only = hasattr(prog_mod, 'serial_only') and prog_mod.serial_only
@@ -531,8 +539,8 @@ class TestHarness:
if self.log:
sys.stdout.flush()
sys.stderr.flush()
- os.dup2(old_stdout, 1)
- os.dup2(old_stderr, 2)
+ os.dup2(old_stdout, sys.stdout.fileno())
+ os.dup2(old_stderr, sys.stderr.fileno())
os.close(old_stdout)
os.close(old_stderr)
Modified: subversion/branches/auto-props-sdc/configure.ac
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/configure.ac?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/configure.ac (original)
+++ subversion/branches/auto-props-sdc/configure.ac Mon Sep 24 18:16:17 2012
@@ -545,9 +545,7 @@ AS_HELP_STRING([--without-gpg-agent],
[Disable support for GPG-Agent]),
[], [with_gpg_agent=yes])
AC_MSG_CHECKING([whether to support GPG-Agent])
-if test "$svn_enable_shared" != "yes"; then
- AC_MSG_RESULT([no (shared library support is disabled)])
-elif test "$with_gpg_agent" = "yes"; then
+if test "$with_gpg_agent" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE([SVN_HAVE_GPG_AGENT], [1],
[Is GPG Agent support enabled?])
@@ -561,10 +559,11 @@ dnl GNOME Keyring -------------------
AC_ARG_WITH(gnome_keyring,
AS_HELP_STRING([--with-gnome-keyring],
- [Enable use of GNOME Keyring for auth credentials]),
+ [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
[with_gnome_keyring="$withval"],
- [with_gnome_keyring=no])
+ [with_gnome_keyring=auto])
+found_gnome_keyring=no
AC_MSG_CHECKING([whether to look for GNOME Keyring])
if test "$with_gnome_keyring" != "no"; then
AC_MSG_RESULT([yes])
@@ -577,9 +576,9 @@ if test "$with_gnome_keyring" != "no"; t
old_CPPFLAGS="$CPPFLAGS"
SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
- AC_CHECK_HEADER(gnome-keyring.h, with_gnome_keyring=yes, with_gnome_keyring=no)
+ AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
AC_MSG_CHECKING([for GNOME Keyring])
- if test "$with_gnome_keyring" = "yes"; then
+ if test "$found_gnome_keyring" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1],
[Is GNOME Keyring support enabled?])
@@ -587,20 +586,38 @@ if test "$with_gnome_keyring" != "no"; t
SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
else
AC_MSG_RESULT([no])
- AC_MSG_ERROR([cannot find GNOME Keyring])
+ if test "$with_gnome_keyring" = "yes"; then
+ AC_MSG_ERROR([cannot find GNOME Keyring])
+ fi
fi
else
AC_MSG_RESULT([no])
- AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files])
+ if test "$with_gnome_keyring" = "yes"; then
+ AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
+ else
+ with_gnome_keyring=no
+ fi
fi
else
- AC_MSG_ERROR([cannot find pkg-config])
+ if test "$with_gnome_keyring" = "yes"; then
+ AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
+ else
+ with_gnome_keyring=no
+ fi
fi
else
- AC_MSG_ERROR([APR does not have support for DSOs])
+ if test "$with_gnome_keyring" = "yes"; then
+ AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
+ else
+ with_gnome_keyring=no
+ fi
fi
else
- AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
+ if test "$with_gnome_keyring" = "yes"; then
+ AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
+ else
+ with_gnome_keyring=no
+ fi
fi
else
AC_MSG_RESULT([no])
@@ -812,7 +829,7 @@ if test "$svn_lib_kwallet" = "yes"; then
INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
fi
-if test "$with_gnome_keyring" = "yes"; then
+if test "$found_gnome_keyring" = "yes"; then
BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
Modified: subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Mon Sep 24 18:16:17 2012
@@ -2159,6 +2159,24 @@ svn_swig_py_make_stream(PyObject *py_io,
return stream;
}
+PyObject *
+svn_swig_py_convert_txdelta_op_c_array(int num_ops,
+ svn_txdelta_op_t *ops,
+ swig_type_info *op_type_info,
+ PyObject *parent_pool)
+{
+ PyObject *result = PyList_New(num_ops);
+ int i;
+
+ if (!result) return NULL;
+
+ for (i = 0; i < num_ops; ++i)
+ PyList_SET_ITEM(result, i,
+ svn_swig_NewPointerObj(ops + i, op_type_info,
+ parent_pool, NULL));
+
+ return result;
+}
void svn_swig_py_notify_func(void *baton,
const char *path,
@@ -4173,19 +4191,3 @@ svn_swig_py_setup_wc_diff_callbacks2(voi
callbacks->dir_props_changed = wc_diff_callbacks2_dir_props_changed;
return callbacks;
}
-
-PyObject *
-svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
- swig_type_info * op_type_info,
- PyObject *window_pool)
-{
- PyObject *result = PyList_New(window->num_ops);
- int i;
-
- for (i = 0; i < window->num_ops; ++i)
- PyList_SET_ITEM(result, i,
- svn_swig_NewPointerObj(window->ops + i, op_type_info,
- window_pool, NULL));
-
- return result;
-}
Modified: subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/branches/auto-props-sdc/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Mon Sep 24 18:16:17 2012
@@ -299,6 +299,15 @@ SVN_SWIG_SWIGUTIL_EXPORT
svn_stream_t *svn_swig_py_make_stream(PyObject *py_io,
apr_pool_t *pool);
+/* Convert ops, a C array of num_ops elements, to a Python list of SWIG
+ objects with descriptor op_type_info and pool set to parent_pool. */
+SVN_SWIG_SWIGUTIL_EXPORT
+PyObject *
+svn_swig_py_convert_txdelta_op_c_array(int num_ops,
+ svn_txdelta_op_t *ops,
+ swig_type_info * op_type_info,
+ PyObject *parent_pool);
+
/* a notify function that executes a Python function that is passed in
via the baton argument */
SVN_SWIG_SWIGUTIL_EXPORT
@@ -520,17 +529,6 @@ svn_error_t *svn_swig_py_ra_lock_callbac
SVN_SWIG_SWIGUTIL_EXPORT
extern const svn_ra_reporter2_t swig_py_ra_reporter2;
-/* Get a list of ops from a window. Used to replace the naive
- svn_txdelta_window_t.ops accessor. op_type_info is supposed to be
- the SWIG descriptor of "svn_txdelta_op_t *". window_pool is supposed
- to be the pool associated with the window proxy and used for wrapping
- the op objects. */
-SVN_SWIG_SWIGUTIL_EXPORT
-PyObject *
-svn_swig_py_txdelta_window_t_ops_get(svn_txdelta_window_t *window,
- swig_type_info * op_type_info,
- PyObject *window_pool);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/auto-props-sdc/subversion/bindings/swig/python/svn/delta.py
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/bindings/swig/python/svn/delta.py?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/bindings/swig/python/svn/delta.py (original)
+++ subversion/branches/auto-props-sdc/subversion/bindings/swig/python/svn/delta.py Mon Sep 24 18:16:17 2012
@@ -30,10 +30,6 @@ _unprefix_names(locals(), 'svn_txdelta_'
__all__ = filter(lambda x: x.lower().startswith('svn_'), locals().keys())
del _unprefix_names
-# Force our accessor since it appears that there isn't a more civilized way
-# to make SWIG use it.
-svn_txdelta_window_t.ops = property(svn_txdelta_window_t_ops_get)
-
class Editor:
def set_target_revision(self, target_revision, pool=None):
Modified: subversion/branches/auto-props-sdc/subversion/bindings/swig/svn_delta.i
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/bindings/swig/svn_delta.i?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/branches/auto-props-sdc/subversion/bindings/swig/svn_delta.i Mon Sep 24 18:16:17 2012
@@ -174,61 +174,47 @@ svn_txdelta_window_t_ops_get(svn_txdelta
#ifdef SWIGPYTHON
%ignore svn_txdelta_window_t::ops;
-%inline %{
-static PyObject *
-svn_txdelta_window_t_ops_get(PyObject *window_ob)
+%extend svn_txdelta_window_t {
+
+void _ops_get(int *num_ops, svn_txdelta_op_t **ops)
{
- void *window;
- PyObject *ops_list, *window_pool;
- int status;
-
- /* Kludge alert!
- Normally, these kinds of conversions would belong in a typemap.
- However, typemaps won't allow us to change the result type to an array,
- so we have to make this custom accessor function.
- A cleaner approach would be to use something like:
-
- %extend svn_txdelta_window_t { void get_ops(apr_array_header_t ** ops); }
-
- But that means unnecessary copying, plus more hacks to get the pool for the
- array and for wrapping the individual op objects. So we just don't bother.
- */
+ *num_ops = self->num_ops;
+ *ops = self->ops;
+}
+
+%pythoncode {
+ ops = property(_ops_get)
+}
+}
+
+%typemap(argout) (int *num_ops, svn_txdelta_op_t **ops) {
+ apr_pool_t *parent_pool;
+ PyObject *parent_py_pool;
+ PyObject *ops_list;
- /* Note: the standard svn-python typemap releases the GIL while calling the
- wrapped function, but this function does Python stuff, so we have to
- reacquire it again. */
- svn_swig_py_acquire_py_lock();
- status = svn_swig_ConvertPtr(window_ob, &window,
- SWIG_TypeQuery("svn_txdelta_window_t *"));
-
- if (status != 0)
- {
- PyErr_SetString(PyExc_TypeError,
- "expected an svn_txdelta_window_t* proxy");
- svn_swig_py_release_py_lock();
- return NULL;
- }
-
- window_pool = PyObject_GetAttrString(window_ob, "_parent_pool");
-
- if (window_pool == NULL)
- {
- svn_swig_py_release_py_lock();
- return NULL;
- }
-
- ops_list = svn_swig_py_txdelta_window_t_ops_get(window,
- SWIG_TypeQuery("svn_txdelta_op_t *"), window_pool);
-
- svn_swig_py_release_py_lock();
+ if (svn_swig_py_get_parent_pool(args, $descriptor(apr_pool_t *),
+ &parent_py_pool, &parent_pool))
+ SWIG_fail;
- return ops_list;
+ ops_list = svn_swig_py_convert_txdelta_op_c_array(*$1, *$2,
+ $descriptor(svn_txdelta_op_t *), parent_py_pool);
+
+ if (!ops_list) SWIG_fail;
+
+ %append_output(ops_list);
}
-%}
#endif
%include svn_delta_h.swg
+#ifdef SWIGPYTHON
+%pythoncode {
+# This function is for backwards compatibility only.
+# Use svn_txdelta_window_t.ops instead.
+svn_txdelta_window_t_ops_get = svn_txdelta_window_t._ops_get
+}
+#endif
+
#ifdef SWIGRUBY
%inline %{
static VALUE
Modified: subversion/branches/auto-props-sdc/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/private/svn_client_private.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/private/svn_client_private.h Mon Sep 24 18:16:17 2012
@@ -180,11 +180,7 @@ svn_client__wc_node_get_origin(svn_clien
/* Details of a symmetric merge. */
-typedef struct svn_client__symmetric_merge_t
-{
- svn_client__pathrev_t *yca, *base, *mid, *right;
- svn_boolean_t allow_mixed_rev, allow_local_mods, allow_switched_subtrees;
-} svn_client__symmetric_merge_t;
+typedef struct svn_client__symmetric_merge_t svn_client__symmetric_merge_t;
/* Find the information needed to merge all unmerged changes from a source
* branch into a target branch. The information is the locations of the
@@ -206,6 +202,45 @@ svn_client__find_symmetric_merge(svn_cli
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/* Find out what kind of symmetric merge would be needed, when the target
+ * is only known as a repository location rather than a WC.
+ *
+ * Like svn_client__find_symmetric_merge() except that SOURCE_PATH_OR_URL @
+ * SOURCE_REVISION should refer to a repository location and not a WC.
+ *
+ * ### The result, *MERGE_P, may not be suitable for passing to
+ * svn_client__do_symmetric_merge(). The target WC state would not be
+ * checked (as in the ALLOW_* flags). We should resolve this problem:
+ * perhaps add the allow_* params here, or provide another way of setting
+ * them; and perhaps ensure __do_...() will accept the result iff given a
+ * WC that matches the stored target location.
+ */
+svn_error_t *
+svn_client__find_symmetric_merge_no_wc(
+ svn_client__symmetric_merge_t **merge_p,
+ const char *source_path_or_url,
+ const svn_opt_revision_t *source_revision,
+ const char *target_path_or_url,
+ const svn_opt_revision_t *target_revision,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/* Set *YCA, *BASE, *RIGHT, *TARGET to the repository locations of the
+ * youngest common ancestor of the branches, the base chosen for 3-way
+ * merge, the right-hand side of the source diff, and the target WC.
+ *
+ * Any of the output pointers may be NULL if not wanted.
+ */
+svn_error_t *
+svn_client__symmetric_merge_get_locations(
+ svn_client__pathrev_t **yca,
+ svn_client__pathrev_t **base,
+ svn_client__pathrev_t **right,
+ svn_client__pathrev_t **target,
+ const svn_client__symmetric_merge_t *merge,
+ apr_pool_t *result_pool);
+
/* Perform a symmetric merge.
*
* Merge according to MERGE into the WC at TARGET_WCPATH.
@@ -231,6 +266,17 @@ svn_client__do_symmetric_merge(const svn
svn_client_ctx_t *ctx,
apr_pool_t *scratch_pool);
+/* Return TRUE iff the symmetric merge represented by MERGE is going to be
+ * a reintegrate-like merge: that is, merging in the opposite direction
+ * from the last full merge.
+ *
+ * This function exists because the merge is NOT really symmetric and the
+ * client can be more friendly if it knows something about the differences.
+ */
+svn_boolean_t
+svn_client__symmetric_merge_is_reintegrate_like(
+ const svn_client__symmetric_merge_t *merge);
+
#ifdef __cplusplus
}
Modified: subversion/branches/auto-props-sdc/subversion/include/private/svn_skel.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/private/svn_skel.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/private/svn_skel.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/private/svn_skel.h Mon Sep 24 18:16:17 2012
@@ -225,7 +225,7 @@ svn_skel__unparse_proplist(svn_skel_t **
Use RESULT_POOL for all allocations. */
svn_error_t *
svn_skel__unparse_iproplist(svn_skel_t **skel_p,
- apr_array_header_t *inherited_props,
+ const apr_array_header_t *inherited_props,
apr_pool_t *result_pool);
#ifdef __cplusplus
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_client.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_client.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_client.h Mon Sep 24 18:16:17 2012
@@ -1066,7 +1066,7 @@ svn_client_args_to_target_array2(apr_arr
svn_boolean_t keep_last_origpath_on_truepath_collision,
apr_pool_t *pool);
-/*
+/**
* Similar to svn_client_args_to_target_array2() but with
* @a keep_last_origpath_on_truepath_collision always set to FALSE.
*
@@ -3733,6 +3733,15 @@ svn_client_mergeinfo_get_merged(apr_hash
* @a target_path_or_url (as of @a target_peg_revision). If @a
* finding_merged is FALSE then find the revisions eligible for merging.
*
+ * @a source_start_revision and @a source_end_revision bound the
+ * operative range of revisions of the merge source which are
+ * described to the caller. If @a source_end_revision is of kind
+ * @c svn_opt_revision_unspecified, it is interpreted as the same
+ * revision as @a source_start_revision. If both are of kind
+ * @c svn_opt_revision_unspecified, no bounding occurs and the entire
+ * history of the merge source (up to @a source_peg_revision, per the
+ * typical default peg/operative revision behaviors) is considered.
+ *
* If @a depth is #svn_depth_empty consider only the explicit or
* inherited mergeinfo on @a target_path_or_url when calculating merged
* revisions from @a source_path_or_url. If @a depth is #svn_depth_infinity
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_diff.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_diff.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_diff.h Mon Sep 24 18:16:17 2012
@@ -1063,12 +1063,12 @@ typedef struct svn_patch_t {
svn_boolean_t reverse;
} svn_patch_t;
-/* An opaque type representing an open patch file.
+/** An opaque type representing an open patch file.
*
* @since New in 1.7. */
typedef struct svn_patch_file_t svn_patch_file_t;
-/* Open @a patch_file at @a local_abspath.
+/** Open @a patch_file at @a local_abspath.
* Allocate @a patch_file in @a result_pool.
*
* @since New in 1.7. */
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_fs.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_fs.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_fs.h Mon Sep 24 18:16:17 2012
@@ -1564,34 +1564,12 @@ svn_fs_node_prop(svn_string_t **value_p,
apr_pool_t *pool);
-/** If @a table_p is not null, then set @a *table_p to the entire property
- * list of @a path in @a root. The resulting table maps
+/** Set @a *table_p to the entire property list of @a path in @a root,
+ * as an APR hash table allocated in @a pool. The resulting table maps
* property names to pointers to #svn_string_t objects containing the
* property value.
- *
- * If @a inherited_values is not @c NULL, then set @a *inherited_values to
- * a depth-first ordered array of #svn_prop_inherited_item_t * structures
- * (the path_or_url members of which are relative filesystem paths)
- * representing the properties inherited by @a path. If @a inherited_values
- * is not @c NULL and no properties are inherited, then set
- * @a *inherited_values to an empty array.
- *
- * @since New in 1.8.
*/
svn_error_t *
-svn_fs_node_proplist2(apr_hash_t **table_p,
- apr_array_header_t **inherited_props,
- svn_fs_root_t *root,
- const char *path,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-/**
- * Similar to svn_fs_node_proplist2 but doesn't support the retrieval of
- * the properties inherited by @a path and doesn't use a scratch pool.
- *
- * @deprecated Provided for backward compatibility with the 1.8 API. */
-svn_error_t *
svn_fs_node_proplist(apr_hash_t **table_p,
svn_fs_root_t *root,
const char *path,
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_io.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_io.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_io.h Mon Sep 24 18:16:17 2012
@@ -1155,9 +1155,9 @@ svn_stream_write(svn_stream_t *stream,
svn_error_t *
svn_stream_close(svn_stream_t *stream);
-/** Reset a generic stream back to its origin. E.g. On a file this would be
+/** Reset a generic stream back to its origin. (E.g. On a file this would be
* implemented as a seek to position 0). This function returns a
- * #SVN_ERR_STREAM_RESET_NOT_SUPPORTED error when the stream doesn't
+ * #SVN_ERR_STREAM_SEEK_NOT_SUPPORTED error when the stream doesn't
* implement resetting.
*
* @since New in 1.7.
@@ -2200,9 +2200,9 @@ svn_io_write_version_file(const char *pa
int version,
apr_pool_t *pool);
-/* Read a line of text from a file, up to a specified length.
+/** Read a line of text from a file, up to a specified length.
*
- * Allocate @a *stringbuf in @a result_pool, and read into it one line
+ * Allocate @a *stringbuf in @a result_pool, and read into it one line
* from @a file. Reading stops either after a line-terminator was found
* or after @a max_len bytes have been read.
*
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_mergeinfo.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_mergeinfo.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_mergeinfo.h Mon Sep 24 18:16:17 2012
@@ -332,6 +332,7 @@ svn_rangelist_merge2(svn_rangelist_t *ra
* if called in a loop.
*
* @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
*/
SVN_DEPRECATED
svn_error_t *
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_props.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_props.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_props.h Mon Sep 24 18:16:17 2012
@@ -103,29 +103,6 @@ typedef struct svn_prop_inherited_item_t
/**
- * Return a deep copy of @a inherited_prop, allocated in @a result_pool.
- * Use @a scratch_pool for temporary allocations.
- * @since New in 1.8.
- */
-svn_prop_inherited_item_t *
-svn_prop_inherited_item_dup(const svn_prop_inherited_item_t *inherited_prop,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-
-/**
- * Return a deep copy the array @a prop_array of svn_prop_inherited_item_t *
- * items in @a result_pool. Use @a scratch_pool for temporary allocations.
- *
- * @since New in 1.8.
- */
-apr_array_header_t *
-svn_prop_inherited_array_dup(const apr_array_header_t *prop_array,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-
-/**
* Given a hash (keys <tt>const char *</tt> and values <tt>const
* svn_string_t</tt>) of properties, returns an array of svn_prop_t
* items using @a pool.
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_repos.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_repos.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_repos.h Mon Sep 24 18:16:17 2012
@@ -3244,12 +3244,10 @@ svn_repos_check_revision_access(svn_repo
/**
* Set @a *inherited_values to a depth-first ordered array of
- * #svn_prop_inherited_item_t * structures (the path_or_url members of which
- * are relative filesystem paths) representing the properties inherited by
- * @a path at @a revision in @a repos. If no properties are inherited, then
- * set @a *inherited_values to an empty array.
- *
- * If @a revision is #SVN_INVALID_REVNUM, it defaults to youngest.
+ * #svn_prop_inherited_item_t * structures (the path_or_url members of
+ * which are relative filesystem paths) representing the properties
+ * inherited by @a path in @a root. If no properties are inherited,
+ * then set @a *inherited_values to an empty array.
*
* If optional @a authz_read_func is non-NULL, then use this function
* (along with optional @a authz_read_baton) to check the readability
@@ -3263,9 +3261,8 @@ svn_repos_check_revision_access(svn_repo
*/
svn_error_t *
svn_repos_fs_get_inherited_props(apr_array_header_t **inherited_props,
- svn_repos_t *repos,
+ svn_fs_root_t *root,
const char *path,
- svn_revnum_t revision,
svn_repos_authz_func_t authz_read_func,
void *authz_read_baton,
apr_pool_t *result_pool,
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_types.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_types.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_types.h Mon Sep 24 18:16:17 2012
@@ -509,7 +509,7 @@ svn_depth_to_word(svn_depth_t depth);
svn_depth_t
svn_depth_from_word(const char *word);
-/* Return #svn_depth_infinity if boolean @a recurse is TRUE, else
+/** Return #svn_depth_infinity if boolean @a recurse is TRUE, else
* return #svn_depth_files.
*
* @note New code should never need to use this, it is called only
@@ -520,7 +520,7 @@ svn_depth_from_word(const char *word);
#define SVN_DEPTH_INFINITY_OR_FILES(recurse) \
((recurse) ? svn_depth_infinity : svn_depth_files)
-/* Return #svn_depth_infinity if boolean @a recurse is TRUE, else
+/** Return #svn_depth_infinity if boolean @a recurse is TRUE, else
* return #svn_depth_immediates.
*
* @note New code should never need to use this, it is called only
@@ -531,7 +531,7 @@ svn_depth_from_word(const char *word);
#define SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse) \
((recurse) ? svn_depth_infinity : svn_depth_immediates)
-/* Return #svn_depth_infinity if boolean @a recurse is TRUE, else
+/** Return #svn_depth_infinity if boolean @a recurse is TRUE, else
* return #svn_depth_empty.
*
* @note New code should never need to use this, it is called only
@@ -542,7 +542,7 @@ svn_depth_from_word(const char *word);
#define SVN_DEPTH_INFINITY_OR_EMPTY(recurse) \
((recurse) ? svn_depth_infinity : svn_depth_empty)
-/* Return a recursion boolean based on @a depth.
+/** Return a recursion boolean based on @a depth.
*
* Although much code has been converted to use depth, some code still
* takes a recurse boolean. In most cases, it makes sense to treat
@@ -1261,7 +1261,7 @@ svn_location_segment_dup(const svn_locat
*/
typedef unsigned long svn_linenum_t;
-/* The maximum value of an svn_linenum_t.
+/** The maximum value of an svn_linenum_t.
*
* @since New in 1.7.
*/
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_wc.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_wc.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_wc.h Mon Sep 24 18:16:17 2012
@@ -828,7 +828,7 @@ svn_error_t *
svn_wc_external_item2_create(svn_wc_external_item2_t **item,
apr_pool_t *pool);
-/* Same as svn_wc_external_item2_create() except the pointer to the new
+/** Same as svn_wc_external_item2_create() except the pointer to the new
* empty item is 'const' which is stupid since the next thing you need to do
* is fill in its fields.
*
@@ -1142,7 +1142,7 @@ typedef enum svn_wc_notify_action_t
/** The mergeinfo on path was updated. @since New in 1.7. */
svn_wc_notify_merge_record_info,
- /** An working copy directory was upgraded to the latest format
+ /** A working copy directory was upgraded to the latest format.
* @since New in 1.7. */
svn_wc_notify_upgraded_path,
@@ -1950,7 +1950,7 @@ svn_wc_conflict_description_create_text(
*
* Set the @c local_abspath field of the created struct to @a local_abspath
* (which must be an absolute path), the @c kind field
- * to #svn_wc_conflict_kind_prop, the @c node_kind to @a node_kind, and
+ * to #svn_wc_conflict_kind_property, the @c node_kind to @a node_kind, and
* the @c property_name to @a property_name.
*
* @note: It is the caller's responsibility to set the other required fields
@@ -3725,7 +3725,7 @@ typedef struct svn_wc_status3_t
* @since New in 1.8. */
const char *moved_to_abspath;
- /* TRUE iff the item is a file brought in by an svn:externals definition.
+ /** TRUE iff the item is a file brought in by an svn:externals definition.
* @since New in 1.8. */
svn_boolean_t file_external;
@@ -7058,7 +7058,7 @@ typedef svn_error_t * (*svn_wc_upgrade_g
* (typically #SVN_ERR_CANCELLED), return that error immediately.
*
* For each directory converted, @a notify_func will be called with
- * in @a notify_baton action #svn_wc_notify_upgrade_path and as path
+ * in @a notify_baton action #svn_wc_notify_upgraded_path and as path
* the path of the upgraded directory. @a notify_func may be @c NULL
* if this notification is not needed.
*
@@ -7844,7 +7844,8 @@ svn_wc_set_changelist(const char *path,
/**
- * The callback type used by svn_client_get_changelists().
+ * The callback type used by svn_wc_get_changelists() and
+ * svn_client_get_changelists().
*
* On each invocation, @a path is a newly discovered member of the
* changelist, and @a baton is a private function closure.
@@ -7857,7 +7858,10 @@ typedef svn_error_t *(*svn_changelist_re
apr_pool_t *pool);
-/* @since New in 1.7.
+/**
+ * ### TODO: Doc string, please.
+ *
+ * @since New in 1.7.
*/
svn_error_t *
svn_wc_get_changelists(svn_wc_context_t *wc_ctx,
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_xml.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_xml.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_xml.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_xml.h Mon Sep 24 18:16:17 2012
@@ -297,7 +297,10 @@ svn_xml_make_header2(svn_stringbuf_t **s
const char *encoding,
apr_pool_t *pool);
-/* Like svn_xml_make_header2, but does not emit encoding information. */
+/** Like svn_xml_make_header2(), but does not emit encoding information.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
SVN_DEPRECATED
void
svn_xml_make_header(svn_stringbuf_t **str,
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c Mon Sep 24 18:16:17 2012
@@ -28,6 +28,7 @@
/*** Includes. ***/
#include <apr_pools.h>
+#include <apr_strings.h>
#include "svn_auth.h"
#include "svn_config.h"
#include "svn_error.h"
@@ -137,9 +138,9 @@ callback_default_keyring(GnomeKeyringRes
return;
}
-/* Returns the default keyring name. */
+/* Returns the default keyring name, allocated in RESULT_POOL. */
static char*
-get_default_keyring_name(apr_pool_t *pool)
+get_default_keyring_name(apr_pool_t *result_pool)
{
char *def = NULL;
struct gnome_keyring_baton key_info;
@@ -158,7 +159,7 @@ get_default_keyring_name(apr_pool_t *poo
return NULL;
}
- def = strdup(key_info.keyring_name);
+ def = apr_pstrdup(result_pool, key_info.keyring_name);
callback_destroy_data_keyring(&key_info);
return def;
@@ -290,7 +291,6 @@ password_get_gnome_keyring(svn_boolean_t
svn_boolean_t non_interactive,
apr_pool_t *pool)
{
- char *default_keyring = NULL;
GnomeKeyringResult result;
GList *items;
@@ -298,8 +298,6 @@ password_get_gnome_keyring(svn_boolean_t
SVN_ERR(ensure_gnome_keyring_is_unlocked(non_interactive, parameters, pool));
- default_keyring = get_default_keyring_name(pool);
-
if (! apr_hash_get(parameters,
"gnome-keyring-opening-failed",
APR_HASH_KEY_STRING))
@@ -338,8 +336,6 @@ password_get_gnome_keyring(svn_boolean_t
"");
}
- free(default_keyring);
-
return SVN_NO_ERROR;
}
@@ -355,7 +351,6 @@ password_set_gnome_keyring(svn_boolean_t
svn_boolean_t non_interactive,
apr_pool_t *pool)
{
- char *default_keyring = NULL;
GnomeKeyringResult result;
guint32 item_id;
@@ -363,8 +358,6 @@ password_set_gnome_keyring(svn_boolean_t
SVN_ERR(ensure_gnome_keyring_is_unlocked(non_interactive, parameters, pool));
- default_keyring = get_default_keyring_name(pool);
-
if (! apr_hash_get(parameters,
"gnome-keyring-opening-failed",
APR_HASH_KEY_STRING))
@@ -387,8 +380,6 @@ password_set_gnome_keyring(svn_boolean_t
"");
}
- free(default_keyring);
-
*done = (result == GNOME_KEYRING_RESULT_OK);
return SVN_NO_ERROR;
}
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c Mon Sep 24 18:16:17 2012
@@ -11159,57 +11159,6 @@ typedef struct source_and_target_t
svn_client__pathrev_t *yca;
} source_and_target_t;
-/* "Open" the source and target branches of a merge. That means:
- * - find out their exact repository locations (resolve WC paths and
- * non-numeric revision numbers),
- * - check the branches are suitably related,
- * - establish RA session(s) to the repo,
- * - check the WC for suitability (throw an error if unsuitable)
- *
- * Record this information and return it in a new "merge context" object.
- */
-static svn_error_t *
-open_source_and_target(source_and_target_t **source_and_target,
- const char *source_path_or_url,
- const svn_opt_revision_t *source_peg_revision,
- const char *target_abspath,
- svn_boolean_t allow_mixed_rev,
- svn_boolean_t allow_local_mods,
- svn_boolean_t allow_switched_subtrees,
- svn_client_ctx_t *ctx,
- apr_pool_t *session_pool,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- source_and_target_t *s_t = apr_palloc(result_pool, sizeof(*s_t));
-
- /* Target */
- SVN_ERR(open_target_wc(&s_t->target, target_abspath,
- allow_mixed_rev, allow_local_mods, allow_switched_subtrees,
- ctx, result_pool, scratch_pool));
- SVN_ERR(svn_client_open_ra_session(&s_t->target_ra_session,
- s_t->target->loc.url,
- ctx, session_pool));
-
- /* Source */
- SVN_ERR(svn_client__ra_session_from_path2(
- &s_t->source_ra_session, &s_t->source,
- source_path_or_url, NULL, source_peg_revision, source_peg_revision,
- ctx, result_pool));
-
- *source_and_target = s_t;
- return SVN_NO_ERROR;
-}
-
-/* "Close" any resources that were acquired in the S_T structure. */
-static svn_error_t *
-close_source_and_target(source_and_target_t *s_t,
- apr_pool_t *scratch_pool)
-{
- /* close s_t->source_/target_ra_session */
- return SVN_NO_ERROR;
-}
-
/* Set *INTERSECTION_P to the intersection of BRANCH_HISTORY with the
* revision range OLDEST_REV to YOUNGEST_REV (inclusive).
*
@@ -11494,14 +11443,23 @@ find_symmetric_merge(svn_client__pathrev
svn_mergeinfo_inherited,
FALSE /* squelch_incapable */,
scratch_pool));
- SVN_ERR(svn_client__get_wc_or_repos_mergeinfo(&s_t->target_mergeinfo,
- NULL /* inherited */,
- NULL /* from_repos */,
- FALSE /* repos_only */,
- svn_mergeinfo_inherited,
- s_t->target_ra_session,
- s_t->target->abspath,
- ctx, scratch_pool));
+ if (! s_t->target->abspath)
+ SVN_ERR(svn_client__get_repos_mergeinfo(&s_t->target_mergeinfo,
+ s_t->target_ra_session,
+ s_t->target->loc.url,
+ s_t->target->loc.rev,
+ svn_mergeinfo_inherited,
+ FALSE /* squelch_incapable */,
+ scratch_pool));
+ else
+ SVN_ERR(svn_client__get_wc_or_repos_mergeinfo(&s_t->target_mergeinfo,
+ NULL /* inherited */,
+ NULL /* from_repos */,
+ FALSE /* repos_only */,
+ svn_mergeinfo_inherited,
+ s_t->target_ra_session,
+ s_t->target->abspath,
+ ctx, scratch_pool));
/* Get the location-history of each branch. */
s_t->source_branch.tip = s_t->source;
@@ -11545,6 +11503,55 @@ find_symmetric_merge(svn_client__pathrev
return SVN_NO_ERROR;
}
+/* Details of a symmetric merge. */
+struct svn_client__symmetric_merge_t
+{
+ svn_client__pathrev_t *yca, *base, *mid, *right, *target;
+ svn_boolean_t allow_mixed_rev, allow_local_mods, allow_switched_subtrees;
+};
+
+svn_error_t *
+svn_client__find_symmetric_merge_no_wc(
+ svn_client__symmetric_merge_t **merge_p,
+ const char *source_path_or_url,
+ const svn_opt_revision_t *source_revision,
+ const char *target_path_or_url,
+ const svn_opt_revision_t *target_revision,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ source_and_target_t *s_t = apr_palloc(scratch_pool, sizeof(*s_t));
+ svn_client__pathrev_t *target_loc;
+ svn_client__symmetric_merge_t *merge = apr_palloc(result_pool, sizeof(*merge));
+
+ /* Source */
+ SVN_ERR(svn_client__ra_session_from_path2(
+ &s_t->source_ra_session, &s_t->source,
+ source_path_or_url, NULL, source_revision, source_revision,
+ ctx, result_pool));
+
+ /* Target */
+ SVN_ERR(svn_client__ra_session_from_path2(
+ &s_t->target_ra_session, &target_loc,
+ target_path_or_url, NULL, target_revision, target_revision,
+ ctx, result_pool));
+ s_t->target = apr_palloc(scratch_pool, sizeof(*s_t->target));
+ s_t->target->kind = svn_node_none;
+ s_t->target->abspath = NULL; /* indicate the target is not a WC */
+ s_t->target->loc = *target_loc;
+
+ SVN_ERR(find_symmetric_merge(&merge->base, &merge->mid, s_t,
+ ctx, result_pool, scratch_pool));
+
+ merge->right = s_t->source;
+ merge->target = &s_t->target->loc;
+ merge->yca = s_t->yca;
+ *merge_p = merge;
+
+ return SVN_NO_ERROR;
+}
+
svn_error_t *
svn_client__find_symmetric_merge(svn_client__symmetric_merge_t **merge_p,
const char *source_path_or_url,
@@ -11558,22 +11565,30 @@ svn_client__find_symmetric_merge(svn_cli
apr_pool_t *scratch_pool)
{
const char *target_abspath;
- source_and_target_t *s_t;
+ source_and_target_t *s_t = apr_palloc(result_pool, sizeof(*s_t));
svn_client__symmetric_merge_t *merge = apr_palloc(result_pool, sizeof(*merge));
SVN_ERR(svn_dirent_get_absolute(&target_abspath, target_wcpath, scratch_pool));
- /* Open RA sessions to the source and target trees. We're not going
- * to check the target WC for mixed-rev, local mods or switched
- * subtrees yet. After we find out what kind of merge is required,
- * then if a reintegrate-like merge is required we'll do the stricter
- * checks, in do_symmetric_merge_locked(). */
- SVN_ERR(open_source_and_target(&s_t, source_path_or_url, source_revision,
- target_abspath,
- TRUE /*allow_mixed_rev*/,
- TRUE /*allow_local_mods*/,
- TRUE /*allow_switched_subtrees*/,
- ctx, result_pool, result_pool, scratch_pool));
+ /* "Open" the target WC. We're not going to check the target WC for
+ * mixed-rev, local mods or switched subtrees yet. After we find out
+ * what kind of merge is required, then if a reintegrate-like merge is
+ * required we'll do the stricter checks, in do_symmetric_merge_locked(). */
+ SVN_ERR(open_target_wc(&s_t->target, target_abspath,
+ TRUE /*allow_mixed_rev*/,
+ TRUE /*allow_local_mods*/,
+ TRUE /*allow_switched_subtrees*/,
+ ctx, result_pool, scratch_pool));
+
+ /* Open RA sessions to the source and target trees. */
+ SVN_ERR(svn_client_open_ra_session(&s_t->target_ra_session,
+ s_t->target->loc.url,
+ ctx, result_pool));
+ /* ### check for null URL (i.e. added path) here, like in reintegrate? */
+ SVN_ERR(svn_client__ra_session_from_path2(
+ &s_t->source_ra_session, &s_t->source,
+ source_path_or_url, NULL, source_revision, source_revision,
+ ctx, result_pool));
/* Check source is in same repos as target. */
SVN_ERR(check_same_repos(s_t->source, source_path_or_url,
@@ -11590,7 +11605,7 @@ svn_client__find_symmetric_merge(svn_cli
*merge_p = merge;
- SVN_ERR(close_source_and_target(s_t, scratch_pool));
+ /* TODO: Close the source and target sessions here? */
return SVN_NO_ERROR;
}
@@ -11772,3 +11787,30 @@ svn_client__do_symmetric_merge(const svn
return SVN_NO_ERROR;
}
+
+svn_boolean_t
+svn_client__symmetric_merge_is_reintegrate_like(
+ const svn_client__symmetric_merge_t *merge)
+{
+ return merge->mid != NULL;
+}
+
+svn_error_t *
+svn_client__symmetric_merge_get_locations(
+ svn_client__pathrev_t **yca,
+ svn_client__pathrev_t **base,
+ svn_client__pathrev_t **right,
+ svn_client__pathrev_t **target,
+ const svn_client__symmetric_merge_t *merge,
+ apr_pool_t *result_pool)
+{
+ if (yca)
+ *yca = svn_client__pathrev_dup(merge->yca, result_pool);
+ if (base)
+ *base = svn_client__pathrev_dup(merge->base, result_pool);
+ if (right)
+ *right = svn_client__pathrev_dup(merge->right, result_pool);
+ if (target)
+ *target = svn_client__pathrev_dup(merge->target, result_pool);
+ return SVN_NO_ERROR;
+}
\ No newline at end of file
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_client/mergeinfo.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_client/mergeinfo.c Mon Sep 24 18:16:17 2012
@@ -1729,7 +1729,10 @@ svn_client_mergeinfo_log2(svn_boolean_t
}
}
- /* Open RA sessions to the repository for the source and target.
+ /* Fetch the location history as mergeinfo, for the source branch
+ * (between the given start and end revisions), and, if we're finding
+ * merged revisions, then also for the entire target branch.
+ *
* ### TODO: As the source and target must be in the same repository, we
* should share a single session, tracking the two URLs separately. */
{
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_client/prop_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_client/prop_commands.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_client/prop_commands.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_client/prop_commands.c Mon Sep 24 18:16:17 2012
@@ -636,20 +636,15 @@ remote_propget(apr_hash_t *props,
if (kind == svn_node_dir)
{
- SVN_ERR(svn_ra_get_dir3(ra_session,
+ SVN_ERR(svn_ra_get_dir2(ra_session,
(depth >= svn_depth_files ? &dirents : NULL),
- NULL,
- props ? &prop_hash : NULL,
- inherited_props,
- target_relative, revnum, SVN_DIRENT_KIND,
- scratch_pool, scratch_pool));
+ NULL, &prop_hash, target_relative, revnum,
+ SVN_DIRENT_KIND, scratch_pool));
}
else if (kind == svn_node_file)
{
- SVN_ERR(svn_ra_get_file2(ra_session, target_relative, revnum,
- NULL, NULL,
- props ? &prop_hash : NULL,
- inherited_props, scratch_pool, scratch_pool));
+ SVN_ERR(svn_ra_get_file(ra_session, target_relative, revnum,
+ NULL, NULL, &prop_hash, scratch_pool));
}
else if (kind == svn_node_none)
{
@@ -664,6 +659,15 @@ remote_propget(apr_hash_t *props,
target_full_url);
}
+ if (inherited_props)
+ {
+ /* We will filter out all but PROPNAME later, making a final copy
+ in RESULT_POOL, so pass SCRATCH_POOL for both pools. */
+ SVN_ERR(svn_ra_get_inherited_props(ra_session, inherited_props,
+ target_relative, revnum,
+ scratch_pool, scratch_pool));
+ }
+
/* Make a copy of any inherited PROPNAME properties in RESULT_POOL. */
if (inherited_props)
{
@@ -1127,23 +1131,15 @@ remote_proplist(const char *target_prefi
return. */
if (kind == svn_node_dir)
{
- SVN_ERR(svn_ra_get_dir3(
- ra_session,
- (depth > svn_depth_empty) ? &dirents : NULL,
- NULL,
- get_explicit_props ? &prop_hash : NULL,
- get_target_inherited_props ? &inherited_props : NULL,
- target_relative, revnum,
- SVN_DIRENT_KIND, scratch_pool, scratch_pool));
+ SVN_ERR(svn_ra_get_dir2(ra_session,
+ (depth > svn_depth_empty) ? &dirents : NULL,
+ NULL, &prop_hash, target_relative, revnum,
+ SVN_DIRENT_KIND, scratch_pool));
}
else if (kind == svn_node_file)
{
- SVN_ERR(svn_ra_get_file2(
- ra_session, target_relative, revnum,
- NULL, NULL,
- get_explicit_props ? &prop_hash : NULL,
- get_target_inherited_props ? &inherited_props : NULL,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_ra_get_file(ra_session, target_relative, revnum,
+ NULL, NULL, &prop_hash, scratch_pool));
}
else
{
@@ -1152,14 +1148,12 @@ remote_proplist(const char *target_prefi
target_full_url);
}
- /* svn_ra_get_file2 and svn_ra_get_dir3 shouldn't be asking a server for
- inherited props if the server doesn't advertise the
- SVN_RA_CAPABILITY_INHERITED_PROPS capability, but better to check and
- error out than segfault. */
- if (get_target_inherited_props && inherited_props == NULL)
- return svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
- _("Server does not support retrieving "
- "inherited properties"));
+ if (get_target_inherited_props)
+ SVN_ERR(svn_ra_get_inherited_props(ra_session, &inherited_props,
+ target_relative, revnum,
+ result_pool, scratch_pool));
+ else
+ inherited_props = NULL;
if (get_explicit_props)
{
@@ -1188,13 +1182,6 @@ remote_proplist(const char *target_prefi
}
}
- if (get_target_inherited_props)
- inherited_props = svn_prop_inherited_array_dup(inherited_props,
- result_pool,
- scratch_pool);
- else
- inherited_props = NULL;
-
SVN_ERR(call_receiver(target_full_url, final_hash, inherited_props,
receiver, receiver_baton, result_pool));
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.c Mon Sep 24 18:16:17 2012
@@ -1023,25 +1023,11 @@ svn_fs_node_prop(svn_string_t **value_p,
}
svn_error_t *
-svn_fs_node_proplist2(apr_hash_t **table_p,
- apr_array_header_t **inherited_props,
- svn_fs_root_t *root,
- const char *path,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- return svn_error_trace(root->vtable->node_proplist(table_p, inherited_props,
- root, path,
- result_pool, scratch_pool));
-}
-
-
-svn_error_t *
svn_fs_node_proplist(apr_hash_t **table_p, svn_fs_root_t *root,
const char *path, apr_pool_t *pool)
{
- return svn_error_trace(root->vtable->node_proplist(table_p, NULL, root,
- path, pool, pool));
+ return svn_error_trace(root->vtable->node_proplist(table_p, root, path,
+ pool));
}
svn_error_t *
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.h?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_fs/fs-loader.h Mon Sep 24 18:16:17 2012
@@ -274,11 +274,8 @@ typedef struct root_vtable_t
svn_error_t *(*node_prop)(svn_string_t **value_p, svn_fs_root_t *root,
const char *path, const char *propname,
apr_pool_t *pool);
- svn_error_t *(*node_proplist)(apr_hash_t **table_p,
- apr_array_header_t **inherited_props,
- svn_fs_root_t *root,
- const char *path, apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
+ svn_error_t *(*node_proplist)(apr_hash_t **table_p, svn_fs_root_t *root,
+ const char *path, apr_pool_t *pool);
svn_error_t *(*change_node_prop)(svn_fs_root_t *root, const char *path,
const char *name,
const svn_string_t *value,
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_fs_base/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_fs_base/tree.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_fs_base/tree.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_fs_base/tree.c Mon Sep 24 18:16:17 2012
@@ -1244,56 +1244,21 @@ txn_body_node_proplist(void *baton, trai
static svn_error_t *
base_node_proplist(apr_hash_t **table_p,
- apr_array_header_t **inherited_props,
svn_fs_root_t *root,
const char *path,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
+ apr_pool_t *pool)
{
apr_hash_t *table;
struct node_proplist_args args;
args.table_p = &table;
args.root = root;
+ args.path = path;
- /* Get explicit properties if requested. */
- if (table_p)
- {
- args.path = path;
- SVN_ERR(svn_fs_base__retry_txn(root->fs, txn_body_node_proplist, &args,
- FALSE, result_pool));
- *table_p = table;
- }
-
-
- /* If the caller requested PATH's inherited properties, then walk from
- PATH to the repository root to gather PATH's inherited props. */
- if (inherited_props)
- {
- const char *parent_path = path;
-
- *inherited_props = apr_array_make(result_pool, 1,
- sizeof(svn_prop_inherited_item_t *));
- while (!(parent_path[0] == '/' && parent_path[1] == '\0'))
- {
- parent_path = svn_fspath__dirname(parent_path, scratch_pool);
- table = NULL;
- args.path = parent_path;
- SVN_ERR(svn_fs_base__retry_txn(root->fs, txn_body_node_proplist,
- &args, FALSE, result_pool));
- if (apr_hash_count(table))
- {
- svn_prop_inherited_item_t *i_props =
- apr_pcalloc(result_pool, sizeof(*i_props));
- i_props->path_or_url =
- apr_pstrdup(result_pool, parent_path + 1);
- i_props->prop_hash = table;
- /* Build the output array in depth-first order. */
- svn_sort__array_insert(&i_props, *inherited_props, 0);
- }
- }
- }
+ SVN_ERR(svn_fs_base__retry_txn(root->fs, txn_body_node_proplist, &args,
+ FALSE, pool));
+ *table_p = table;
return SVN_NO_ERROR;
}
@@ -3711,7 +3676,7 @@ window_consumer(svn_txdelta_window_t *wi
SVN_ERR(svn_stream_write(tb->target_stream,
tb->target_string->data,
&len));
- svn_stringbuf_set(tb->target_string, "");
+ svn_stringbuf_setempty(tb->target_string);
}
/* Is the window NULL? If so, we're done. */
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c Mon Sep 24 18:16:17 2012
@@ -48,7 +48,6 @@
#include "svn_mergeinfo.h"
#include "svn_fs.h"
#include "svn_props.h"
-#include "svn_sorts.h"
#include "fs.h"
#include "key-gen.h"
@@ -999,67 +998,22 @@ fs_node_prop(svn_string_t **value_p,
}
-/* If TABLE_P is not null, then set *TABLE_P to the entire property list
- of PATH under ROOT, as an APR hash table allocated in RESULT_POOL.
- The resulting property table maps property names to pointers to
- svn_string_t objects containing the property value.
-
- If INHERITED_PROPS is not null, then set *INHERITED_PROPS to a depth-first
- ordered array of svn_prop_inherited_item_t * structures (the path_or_url
- members of which are relative filesystem paths), allocated in RESULT_POOL,
- representing the properties inherited by PATH. If INHERITED_PROPS is not
- null and no properties are inherited, then set *INHERITED_PROPS to an
- empty array.
- */
+/* Set *TABLE_P to the entire property list of PATH under ROOT, as an
+ APR hash table allocated in POOL. The resulting property table
+ maps property names to pointers to svn_string_t objects containing
+ the property value. */
static svn_error_t *
fs_node_proplist(apr_hash_t **table_p,
- apr_array_header_t **inherited_props,
svn_fs_root_t *root,
const char *path,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
+ apr_pool_t *pool)
{
apr_hash_t *table;
dag_node_t *node;
- SVN_ERR(get_dag(&node, root, path, scratch_pool));
-
- if (table_p)
- {
- SVN_ERR(svn_fs_fs__dag_get_proplist(&table, node, result_pool));
- *table_p = table ? table : apr_hash_make(result_pool);
- }
-
- /* If the caller requested PATH's inherited properties, then walk from
- PATH to the repository root to gather PATH's inherited props. */
- if (inherited_props)
- {
- const char *parent_path = path;
- apr_hash_t *parent_properties;
- apr_pool_t *iterpool = svn_pool_create(scratch_pool);
-
- *inherited_props = apr_array_make(result_pool, 1,
- sizeof(svn_prop_inherited_item_t *));
- while (!(parent_path[0] == '/' && parent_path[1] == '\0'))
- {
- svn_pool_clear(iterpool);
- parent_path = svn_fspath__dirname(parent_path, iterpool);
- SVN_ERR(get_dag(&node, root, parent_path, iterpool));
- SVN_ERR(svn_fs_fs__dag_get_proplist(&parent_properties, node,
- result_pool));
- if (parent_properties && apr_hash_count(parent_properties))
- {
- svn_prop_inherited_item_t *i_props =
- apr_pcalloc(result_pool, sizeof(*i_props));
- i_props->path_or_url =
- apr_pstrdup(result_pool, parent_path + 1);
- i_props->prop_hash = parent_properties;
- /* Build the output array in depth-first order. */
- svn_sort__array_insert(&i_props, *inherited_props, 0);
- }
- }
- svn_pool_destroy(iterpool);
- }
+ SVN_ERR(get_dag(&node, root, path, pool));
+ SVN_ERR(svn_fs_fs__dag_get_proplist(&table, node, pool));
+ *table_p = table ? table : apr_hash_make(pool);
return SVN_NO_ERROR;
}
@@ -2398,7 +2352,7 @@ window_consumer(svn_txdelta_window_t *wi
SVN_ERR(svn_stream_write(tb->target_stream,
tb->target_string->data,
&len));
- svn_stringbuf_set(tb->target_string, "");
+ svn_stringbuf_setempty(tb->target_string);
}
/* Is the window NULL? If so, we're done. */
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_ra/compat.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_ra/compat.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_ra/compat.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_ra/compat.c Mon Sep 24 18:16:17 2012
@@ -871,3 +871,90 @@ svn_ra__get_deleted_rev_from_log(svn_ra_
*revision_deleted = log_path_deleted_baton.revision_deleted;
return SVN_NO_ERROR;
}
+
+
+svn_error_t *
+svn_ra__get_inherited_props_walk(svn_ra_session_t *session,
+ const char *path,
+ svn_revnum_t revision,
+ apr_array_header_t **inherited_props,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ const char *repos_root_url;
+ const char *session_url;
+ const char *parent_url;
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+
+ *inherited_props =
+ apr_array_make(result_pool, 1, sizeof(svn_prop_inherited_item_t *));
+
+ /* Walk to the root of the repository getting inherited
+ props for PATH. */
+ SVN_ERR(svn_ra_get_repos_root2(session, &repos_root_url, scratch_pool));
+ SVN_ERR(svn_ra_get_session_url(session, &session_url, scratch_pool));
+ parent_url = session_url;
+
+ while (strcmp(repos_root_url, parent_url))
+ {
+ apr_hash_index_t *hi;
+ apr_hash_t *parent_props;
+ apr_hash_t *final_hash = apr_hash_make(result_pool);
+ svn_error_t *err;
+
+ svn_pool_clear(iterpool);
+ parent_url = svn_uri_dirname(parent_url, iterpool);
+ SVN_ERR(svn_ra_reparent(session, parent_url, iterpool));
+ err = session->vtable->get_dir(session, NULL, NULL,
+ &parent_props, "",
+ revision, SVN_DIRENT_ALL,
+ iterpool);
+
+ /* If the user doesn't have read access to a parent path then
+ skip, but allow them to inherit from further up. */
+ if (err)
+ {
+ if ((err->apr_err == SVN_ERR_RA_NOT_AUTHORIZED)
+ || (err->apr_err == SVN_ERR_RA_DAV_FORBIDDEN))
+ {
+ svn_error_clear(err);
+ continue;
+ }
+ else
+ {
+ return svn_error_trace(err);
+ }
+ }
+
+ for (hi = apr_hash_first(scratch_pool, parent_props);
+ hi;
+ hi = apr_hash_next(hi))
+ {
+ const char *name = svn__apr_hash_index_key(hi);
+ apr_ssize_t klen = svn__apr_hash_index_klen(hi);
+ svn_string_t *value = svn__apr_hash_index_val(hi);
+
+ if (svn_property_kind(NULL, name) == svn_prop_regular_kind)
+ {
+ name = apr_pstrdup(result_pool, name);
+ value = svn_string_dup(value, result_pool);
+ apr_hash_set(final_hash, name, klen, value);
+ }
+ }
+
+ if (apr_hash_count(final_hash))
+ {
+ svn_prop_inherited_item_t *new_iprop =
+ apr_palloc(result_pool, sizeof(*new_iprop));
+ new_iprop->path_or_url = apr_pstrdup(result_pool, parent_url);
+ new_iprop->prop_hash = final_hash;
+ svn_sort__array_insert(&new_iprop, *inherited_props, 0);
+ }
+ }
+
+ /* Reparent session back to original URL. */
+ SVN_ERR(svn_ra_reparent(session, session_url, scratch_pool));
+
+ svn_pool_destroy(iterpool);
+ return SVN_NO_ERROR;
+}
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_ra/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_ra/deprecated.c?rev=1389505&r1=1389504&r2=1389505&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_ra/deprecated.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_ra/deprecated.c Mon Sep 24 18:16:17 2012
@@ -418,19 +418,6 @@ svn_error_t *svn_ra_do_status(svn_ra_ses
status_editor, status_baton, pool);
}
-svn_error_t *svn_ra_get_file(svn_ra_session_t *session,
- const char *path,
- svn_revnum_t revision,
- svn_stream_t *stream,
- svn_revnum_t *fetched_rev,
- apr_hash_t **props,
- apr_pool_t *pool)
-{
- SVN_ERR_ASSERT(*path != '/');
- return session->vtable->get_file(session, path, revision, stream,
- fetched_rev, props, NULL, pool, pool);
-}
-
svn_error_t *svn_ra_get_dir(svn_ra_session_t *session,
const char *path,
svn_revnum_t revision,
@@ -440,20 +427,6 @@ svn_error_t *svn_ra_get_dir(svn_ra_sessi
apr_pool_t *pool)
{
SVN_ERR_ASSERT(*path != '/');
- return session->vtable->get_dir(session, dirents, fetched_rev, props, NULL,
- path, revision, SVN_DIRENT_ALL, pool, pool);
-}
-
-svn_error_t *svn_ra_get_dir2(svn_ra_session_t *session,
- apr_hash_t **dirents,
- svn_revnum_t *fetched_rev,
- apr_hash_t **props,
- const char *path,
- svn_revnum_t revision,
- apr_uint32_t dirent_fields,
- apr_pool_t *pool)
-{
- SVN_ERR_ASSERT(*path != '/');
- return session->vtable->get_dir(session, dirents, fetched_rev, props, NULL,
- path, revision, dirent_fields, pool, pool);
+ return session->vtable->get_dir(session, dirents, fetched_rev, props,
+ path, revision, SVN_DIRENT_ALL, pool);
}