subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pbu...@apache.org
Subject 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...
Date Mon, 24 Sep 2012 18:16:20 GMT
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);
 }



Mime
View raw message