You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2012/12/06 21:23:58 UTC

svn commit: r1418054 [1/3] - in /subversion/branches/in-repo-authz: ./ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_ra_serf/ subversion/libsvn_subr/ subversion/libsvn_wc/ subversion/mod_dav_svn/ subversion...

Author: breser
Date: Thu Dec  6 20:23:54 2012
New Revision: 1418054

URL: http://svn.apache.org/viewvc?rev=1418054&view=rev
Log:
Sync the 'in-repo-authz' branch with recent trunk changes.
(Merged /subversion/trunk:r1417565-r1418053.)


Modified:
    subversion/branches/in-repo-authz/   (props changed)
    subversion/branches/in-repo-authz/COMMITTERS
    subversion/branches/in-repo-authz/subversion/include/private/svn_skel.h
    subversion/branches/in-repo-authz/subversion/include/private/svn_wc_private.h
    subversion/branches/in-repo-authz/subversion/include/svn_config.h
    subversion/branches/in-repo-authz/subversion/libsvn_client/add.c
    subversion/branches/in-repo-authz/subversion/libsvn_client/client.h
    subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/commit.c
    subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/serf.c
    subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/update.c
    subversion/branches/in-repo-authz/subversion/libsvn_subr/config_file.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_files.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/ambient_depth_filter_editor.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.h
    subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_editor.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_local.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/entries.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/externals.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/info.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/merge.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/node.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/props.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/props.h
    subversion/branches/in-repo-authz/subversion/libsvn_wc/status.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/update_editor.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/util.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/wc_db.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/wc_db.h
    subversion/branches/in-repo-authz/subversion/libsvn_wc/wc_db_private.h
    subversion/branches/in-repo-authz/subversion/libsvn_wc/wc_db_update_move.c
    subversion/branches/in-repo-authz/subversion/libsvn_wc/workqueue.c
    subversion/branches/in-repo-authz/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/in-repo-authz/subversion/mod_dav_svn/mod_dav_svn.c
    subversion/branches/in-repo-authz/subversion/mod_dav_svn/reports/update.c
    subversion/branches/in-repo-authz/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/in-repo-authz/subversion/tests/cmdline/prop_tests.py
    subversion/branches/in-repo-authz/subversion/tests/libsvn_wc/db-test.c

Propchange: subversion/branches/in-repo-authz/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1417565-1418053

Modified: subversion/branches/in-repo-authz/COMMITTERS
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/COMMITTERS?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/COMMITTERS [UTF-8] (original)
+++ subversion/branches/in-repo-authz/COMMITTERS [UTF-8] Thu Dec  6 20:23:54 2012
@@ -131,7 +131,7 @@ Commit access for specific areas:
           nori   Kobayashi Noritada <no...@dolphin.c.u-tokyo.ac.jp> (Ruby tools,
                                                               po: ja) [EMAIL IS
                                                               BOUNCING]
-            mf   Martin Furter <mf...@rola.ch>                  (svnmirror.sh
+            mf   Martin Furter <mf...@apache.org>               (svnmirror.sh
                                                           svn-backup-dumps.py)
        adejong   Arthur de Jong <ar...@ch.tudelft.nl>       (svn2cl)
       wsanchez   Wilfredo Sánchez <ws...@wsanchez.net>    (various contrib)

Modified: subversion/branches/in-repo-authz/subversion/include/private/svn_skel.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/include/private/svn_skel.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/include/private/svn_skel.h (original)
+++ subversion/branches/in-repo-authz/subversion/include/private/svn_skel.h Thu Dec  6 20:23:54 2012
@@ -213,7 +213,7 @@ svn_skel__parse_prop(svn_string_t **prop
                      apr_pool_t *result_pool);
 
 /* Unparse a PROPLIST hash (which has const char * property names and
-   svn_stringbuf_t * values) into a `PROPLIST' skel *SKEL_P.  Use POOL
+   svn_string_t * values) into a `PROPLIST' skel *SKEL_P.  Use POOL
    for all allocations.  */
 svn_error_t *
 svn_skel__unparse_proplist(svn_skel_t **skel_p,

Modified: subversion/branches/in-repo-authz/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/include/private/svn_wc_private.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/in-repo-authz/subversion/include/private/svn_wc_private.h Thu Dec  6 20:23:54 2012
@@ -1594,7 +1594,11 @@ svn_wc__get_switch_editor(const svn_delt
  * and for top-level file entries as well (if any).  If
  * #svn_depth_immediates, do the same as #svn_depth_files but also diff
  * top-level subdirectories at #svn_depth_empty.  If #svn_depth_infinity,
- * then diff fully recursively.
+ * then diff fully recursively. If @a depth is #svn_depth_unknown, then...
+ *
+ *   ### ... then the @a server_performs_filtering option is meaningful.
+ *   ### But what does this depth mean exactly? Something about 'ambient'
+ *   ### depth? How does it compare with depth 'infinity'?
  *
  * @a ignore_ancestry determines whether paths that have discontinuous node
  * ancestry are treated as delete/add or as simple modifications.  If
@@ -1621,7 +1625,7 @@ svn_wc__get_switch_editor(const svn_delt
  * it's a member of one of those changelists.  If @a changelist_filter is
  * empty (or altogether @c NULL), no changelist filtering occurs.
  *
-  * If @a server_performs_filtering is TRUE, assume that the server handles
+ * If @a server_performs_filtering is TRUE, assume that the server handles
  * the ambient depth filtering, so this doesn't have to be handled in the
  * editor.
  *

Modified: subversion/branches/in-repo-authz/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/include/svn_config.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/include/svn_config.h (original)
+++ subversion/branches/in-repo-authz/subversion/include/svn_config.h Thu Dec  6 20:23:54 2012
@@ -87,6 +87,8 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG_OPTION_STORE_SSL_CLIENT_CERT_PP_PLAINTEXT \
                                           "store-ssl-client-cert-pp-plaintext"
 #define SVN_CONFIG_OPTION_USERNAME                  "username"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_BULK_UPDATES              "bulk-updates"
 
 #define SVN_CONFIG_CATEGORY_CONFIG          "config"
 #define SVN_CONFIG_SECTION_AUTH                 "auth"

Modified: subversion/branches/in-repo-authz/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_client/add.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_client/add.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_client/add.c Thu Dec  6 20:23:54 2012
@@ -381,20 +381,15 @@ add_file(const char *local_abspath,
  * If DIR_ABSPATH (or any item below DIR_ABSPATH) is already scheduled for
  * addition, add will fail and return an error unless FORCE is TRUE.
  *
- * Files and directories that match ignore patterns will not be added unless
- * NO_IGNORE is TRUE.
- *
  * Use MAGIC_COOKIE (which may be NULL) to detect the mime-type of files
  * if necessary.
  *
- * If not NULL, *CONFIG_AUTOPROPS is a hash representing the config file and
+ * If not NULL, CONFIG_AUTOPROPS is a hash representing the config file and
  * svn:auto-props autoprops which apply to DIR_ABSPATH.  It maps
  * const char * file patterns to another hash which maps const char *
- * property names to const char *property values.  If *CONFIG_AUTOPROPS is
- * NULL and DIR_ABSPATH is unversioned, then this function will populate
- * *CONFIG_AUTOPROPS (allocated in RESULT_POOL) using DIR_ABSPATH's nearest
- * versioned parent to determine the svn:auto-props which DIR_ABSPATH
- * will inherit once added.
+ * property names to const char *property values.  If CONFIG_AUTOPROPS is
+ * NULL and the config file and svn:auto-props autoprops are required by this
+ * function, then such will be obtained.
  *
  * If IGNORES is not NULL, then it is an array of const char * ignore patterns
  * that apply to any children of DIR_ABSPATH.  If REFRESH_IGNORES is TRUE, then
@@ -413,14 +408,12 @@ static svn_error_t *
 add_dir_recursive(const char *dir_abspath,
                   svn_depth_t depth,
                   svn_boolean_t force,
-                  svn_boolean_t no_ignore,
                   svn_boolean_t no_autoprops,
                   svn_magic__cookie_t *magic_cookie,
-                  apr_hash_t **config_autoprops,
+                  apr_hash_t *config_autoprops,
                   svn_boolean_t refresh_ignores,
                   apr_array_header_t *ignores,
                   svn_client_ctx_t *ctx,
-                  apr_pool_t *result_pool,
                   apr_pool_t *scratch_pool)
 {
   svn_error_t *err;
@@ -438,8 +431,8 @@ add_dir_recursive(const char *dir_abspat
 
   if (refresh_ignores)
     SVN_ERR(svn_client__get_all_ignores(&ignores, dir_abspath,
-                                        no_ignore, ctx, scratch_pool,
-                                        scratch_pool));
+                                        ctx, scratch_pool,
+                                        iterpool));
 
   /* Add this directory to revision control. */
   err = svn_wc_add_from_disk(ctx->wc_ctx, dir_abspath,
@@ -458,19 +451,21 @@ add_dir_recursive(const char *dir_abspat
         }
     }
 
-  /* For the root of any unversioned subtree, get some or all of the
-     following:
+  /* If DIR_ABSPATH is the root of an unversioned subtree then get the
+     following "autoprops":
 
        1) Explicit and inherited svn:auto-props properties on
           DIR_ABSPATH
-       2) Explicit and inherited svn:global-ignores properties on
-          DIR_ABSPATH
-       3) auto-props from the CTX->CONFIG hash */
-  if (!entry_exists && *config_autoprops == NULL)
+       2) auto-props from the CTX->CONFIG hash
+
+     Since this set of autoprops applies to all unversioned children of
+     DIR_ABSPATH, we will pass these along to any recursive calls to
+     add_dir_recursive() and calls to add_file() below.  Thus sparing
+     these callees from looking up the same information. */
+  if (!entry_exists && config_autoprops == NULL)
     {
-      SVN_ERR(svn_client__get_all_auto_props(config_autoprops, dir_abspath,
-                                             ctx, result_pool,
-                                             scratch_pool));
+      SVN_ERR(svn_client__get_all_auto_props(&config_autoprops, dir_abspath,
+                                             ctx, scratch_pool, iterpool));
       found_unversioned_root = TRUE;
     }
 
@@ -518,15 +513,15 @@ add_dir_recursive(const char *dir_abspat
             refresh_ignores = FALSE;
 
           SVN_ERR(add_dir_recursive(abspath, depth_below_here,
-                                    force, no_ignore, no_autoprops,
+                                    force, no_autoprops,
                                     magic_cookie, config_autoprops,
                                     refresh_ignores, ignores, ctx,
-                                    iterpool, iterpool));
+                                    iterpool));
         }
       else if ((dirent->kind == svn_node_file || dirent->special)
                && depth >= svn_depth_files)
         {
-          err = add_file(abspath, magic_cookie, *config_autoprops,
+          err = add_file(abspath, magic_cookie, config_autoprops,
                          no_autoprops, ctx, iterpool);
           if (err && err->apr_err == SVN_ERR_ENTRY_EXISTS && force)
             svn_error_clear(err);
@@ -538,11 +533,6 @@ add_dir_recursive(const char *dir_abspat
   /* Destroy the per-iteration pool. */
   svn_pool_destroy(iterpool);
 
-  /* Reset CONFIG_AUTOPROPS if we just finished processing the root
-     of an unversioned subtree. */
-  if (found_unversioned_root)
-    *config_autoprops = NULL;
-
   return SVN_NO_ERROR;
 }
 
@@ -898,7 +888,6 @@ svn_error_t *svn_client__get_inherited_i
 
 svn_error_t *svn_client__get_all_ignores(apr_array_header_t **ignores,
                                          const char *local_abspath,
-                                         svn_boolean_t no_ignore,
                                          svn_client_ctx_t *ctx,
                                          apr_pool_t *result_pool,
                                          apr_pool_t *scratch_pool)
@@ -957,11 +946,8 @@ svn_error_t *svn_client__get_all_ignores
 
   /* Now that we are sure we have an existing parent, get the config ignore
      and the local ignore patterns... */
-  if (!no_ignore)
-    SVN_ERR(svn_wc_get_ignores2(ignores, ctx->wc_ctx, local_abspath,
-                                ctx->config, result_pool, scratch_pool));
-  else
-    *ignores = apr_array_make(result_pool, 16, sizeof(const char *));
+  SVN_ERR(svn_wc_get_ignores2(ignores, ctx->wc_ctx, local_abspath,
+                              ctx->config, result_pool, scratch_pool));
 
   /* ...and add the inherited ignores to it. */
   for (i = 0; i < inherited_ignores->nelts; i++)
@@ -997,7 +983,6 @@ add(const char *local_abspath,
   svn_node_kind_t kind;
   svn_error_t *err;
   svn_magic__cookie_t *magic_cookie;
-  apr_hash_t *config_autoprops = NULL;
   apr_array_header_t *ignores = NULL;
 
   svn_magic__init(&magic_cookie, scratch_pool);
@@ -1048,12 +1033,12 @@ add(const char *local_abspath,
       /* We use add_dir_recursive for all directory targets
          and pass depth along no matter what it is, so that the
          target's depth will be set correctly. */
-      err = add_dir_recursive(local_abspath, depth, force, no_ignore,
-                              no_autoprops, magic_cookie, &config_autoprops,
-                              TRUE, ignores, ctx, scratch_pool, scratch_pool);
+      err = add_dir_recursive(local_abspath, depth, force,
+                              no_autoprops, magic_cookie, NULL,
+                              !no_ignore, ignores, ctx, scratch_pool);
     }
   else if (kind == svn_node_file)
-    err = add_file(local_abspath, magic_cookie, config_autoprops,
+    err = add_file(local_abspath, magic_cookie, NULL,
                    no_autoprops, ctx, scratch_pool);
   else if (kind == svn_node_none)
     {

Modified: subversion/branches/in-repo-authz/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_client/client.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_client/client.h (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_client/client.h Thu Dec  6 20:23:54 2012
@@ -394,7 +394,6 @@ svn_error_t *svn_client__get_all_auto_pr
    RESULT_POOL.  Use SCRATCH_POOL for temporary allocations. */
 svn_error_t *svn_client__get_all_ignores(apr_array_header_t **ignores,
                                          const char *local_abspath,
-                                         svn_boolean_t no_ignore,
                                          svn_client_ctx_t *ctx,
                                          apr_pool_t *result_pool,
                                          apr_pool_t *scratch_pool);

Modified: subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/commit.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/commit.c Thu Dec  6 20:23:54 2012
@@ -1466,16 +1466,10 @@ open_root(void *edit_baton,
       for (hi = apr_hash_first(ctx->pool, ctx->revprop_table); hi;
            hi = apr_hash_next(hi))
         {
-          const void *key;
-          void *val;
-          const char *name;
-          svn_string_t *value;
+          const char *name = svn__apr_hash_index_key(hi);
+          svn_string_t *value = svn__apr_hash_index_val(hi);
           const char *ns;
 
-          apr_hash_this(hi, &key, NULL, &val);
-          name = key;
-          value = val;
-
           if (strncmp(name, SVN_PROP_PREFIX, sizeof(SVN_PROP_PREFIX) - 1) == 0)
             {
               ns = SVN_DAV_PROP_NS_SVN;

Modified: subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/ra_serf.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/ra_serf.h Thu Dec  6 20:23:54 2012
@@ -223,6 +223,11 @@ struct svn_ra_serf__session_t {
   /*** End HTTP v2 stuff ***/
 
   svn_ra_serf__blncache_t *blncache;
+
+  /* Flag that indicates if we request the server for bulk updates (TRUE) with
+     all the properties and content in the update-report response. If FALSE,
+     request a skelta update-report with inlined properties. */
+  svn_boolean_t bulk_updates;
 };
 
 #define SVN_RA_SERF__HAVE_HTTPV2_SUPPORT(sess) ((sess)->me_resource != NULL)

Modified: subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/serf.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/serf.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/serf.c Thu Dec  6 20:23:54 2012
@@ -218,6 +218,13 @@ load_config(svn_ra_serf__session_t *sess
   svn_config_get(config, &session->ssl_authorities, SVN_CONFIG_SECTION_GLOBAL,
                  SVN_CONFIG_OPTION_SSL_AUTHORITY_FILES, NULL);
 
+  /* If set, read the flag that tells us to do bulk updates or not. Defaults
+     to skelta updates. */
+  SVN_ERR(svn_config_get_bool(config, &session->bulk_updates,
+                              SVN_CONFIG_SECTION_GLOBAL,
+                              SVN_CONFIG_OPTION_BULK_UPDATES,
+                              FALSE));
+
   if (config)
     server_group = svn_config_find_group(config,
                                          session->session_url.hostname,
@@ -254,6 +261,12 @@ load_config(svn_ra_serf__session_t *sess
                                   TRUE));
       svn_config_get(config, &session->ssl_authorities, server_group,
                      SVN_CONFIG_OPTION_SSL_AUTHORITY_FILES, NULL);
+
+      /* Load the group bulk updates flag. */
+      SVN_ERR(svn_config_get_bool(config, &session->bulk_updates,
+                                  server_group,
+                                  SVN_CONFIG_OPTION_BULK_UPDATES,
+                                  FALSE));
     }
 
   /* Parse the connection timeout value, if any. */

Modified: subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/update.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_ra_serf/update.c Thu Dec  6 20:23:54 2012
@@ -3161,19 +3161,23 @@ make_update_reporter(svn_ra_session_t *r
                                    svn_io_file_del_on_pool_cleanup,
                                    report->pool, scratch_pool));
 
-#ifdef SVN_RA_SERF__UPDATES_SEND_ALL
-  svn_xml_make_open_tag(&buf, scratch_pool, svn_xml_normal, "S:update-report",
-                        "xmlns:S", SVN_XML_NAMESPACE, "send-all", "true",
-                        NULL);
-#else
-  svn_xml_make_open_tag(&buf, scratch_pool, svn_xml_normal, "S:update-report",
-                        "xmlns:S", SVN_XML_NAMESPACE,
-                        NULL);
-  /* Subversion 1.8+ servers can be told to send properties for newly
-     added items inline even when doing a skelta response. */
-  make_simple_xml_tag(&buf, "S:include-props", "yes", scratch_pool);
-#endif
-
+  if (sess->bulk_updates)
+    {
+      svn_xml_make_open_tag(&buf, scratch_pool, svn_xml_normal,
+                            "S:update-report",
+                            "xmlns:S", SVN_XML_NAMESPACE, "send-all", "true",
+                            NULL);
+    }
+  else
+    {
+      svn_xml_make_open_tag(&buf, scratch_pool, svn_xml_normal,
+                            "S:update-report",
+                            "xmlns:S", SVN_XML_NAMESPACE,
+                            NULL);
+      /* Subversion 1.8+ servers can be told to send properties for newly
+       added items inline even when doing a skelta response. */
+      make_simple_xml_tag(&buf, "S:include-props", "yes", scratch_pool);
+    }
 
   make_simple_xml_tag(&buf, "S:src-path", report->source, scratch_pool);
 
@@ -3215,11 +3219,13 @@ make_update_reporter(svn_ra_session_t *r
   /* When in 'send-all' mode, mod_dav_svn will assume that it should
      calculate and transmit real text-deltas (instead of empty windows
      that merely indicate "text is changed") unless it finds this
-     element.  When not in 'send-all' mode, mod_dav_svn will never
-     send text-deltas at all.
+     element.
 
      NOTE: Do NOT count on servers actually obeying this, as some exist
-     which obey send-all, but do not check for this directive at all! */
+     which obey send-all, but do not check for this directive at all!
+
+     NOTE 2: When not in 'send-all' mode, mod_dav_svn can still be configured to
+     override our request and send text-deltas. */
   if (! text_deltas)
     {
       make_simple_xml_tag(&buf, "S:text-deltas", "no", scratch_pool);

Modified: subversion/branches/in-repo-authz/subversion/libsvn_subr/config_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_subr/config_file.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_subr/config_file.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_subr/config_file.c Thu Dec  6 20:23:54 2012
@@ -814,6 +814,10 @@ svn_config_ensure(const char *config_dir
         "###   http-library               Which library to use for http/https"
                                                                              NL
         "###                              connections."                      NL
+        "###   bulk_updates               Whether to request bulk update" NL
+        "###                              responses, or fetch each file in "
+                                                                             NL
+        "###                              an individual request. "           NL
         "###   store-passwords            Specifies whether passwords used"  NL
         "###                              to authenticate against a"         NL
         "###                              Subversion server may be cached"   NL

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_crawler.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_crawler.c Thu Dec  6 20:23:54 2012
@@ -659,7 +659,7 @@ svn_wc_crawl_revisions5(svn_wc_context_t
                                  &repos_relpath, &repos_root_url,
                                  NULL, NULL, NULL, NULL, &target_depth,
                                  NULL, NULL, &target_lock,
-                                 NULL, NULL,
+                                 NULL, NULL, NULL,
                                  db, local_abspath, scratch_pool,
                                  scratch_pool);
 
@@ -807,7 +807,7 @@ svn_wc_crawl_revisions5(svn_wc_context_t
       err = svn_wc__db_base_get_info(&parent_status, NULL, NULL,
                                      &parent_repos_relpath, NULL, NULL, NULL,
                                      NULL, NULL, NULL, NULL, NULL, NULL,
-                                     NULL, NULL,
+                                     NULL, NULL, NULL,
                                      db, parent_abspath,
                                      scratch_pool, scratch_pool);
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_files.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_files.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_files.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/adm_files.c Thu Dec  6 20:23:54 2012
@@ -175,7 +175,7 @@ svn_wc__text_base_path_to_read(const cha
   const svn_checksum_t *checksum;
 
   SVN_ERR(svn_wc__db_read_pristine_info(&status, &kind, NULL, NULL, NULL, NULL,
-                                        &checksum, NULL, NULL,
+                                        &checksum, NULL, NULL, NULL,
                                         db, local_abspath,
                                         scratch_pool, scratch_pool));
 
@@ -231,7 +231,7 @@ svn_wc__get_pristine_contents(svn_stream
     *size = SVN_INVALID_FILESIZE;
 
   SVN_ERR(svn_wc__db_read_pristine_info(&status, &kind, NULL, NULL, NULL, NULL,
-                                        &sha1_checksum, NULL, NULL,
+                                        &sha1_checksum, NULL, NULL, NULL,
                                         db, local_abspath,
                                         scratch_pool, scratch_pool));
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/ambient_depth_filter_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/ambient_depth_filter_editor.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/ambient_depth_filter_editor.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/ambient_depth_filter_editor.c Thu Dec  6 20:23:54 2012
@@ -132,7 +132,7 @@ ambient_read_info(svn_wc__db_status_t *s
 
   err = svn_wc__db_base_get_info(status, kind, NULL, NULL, NULL, NULL,
                                  NULL, NULL, NULL, depth, NULL, NULL,
-                                 NULL, NULL, NULL,
+                                 NULL, NULL, NULL, NULL,
                                  db, local_abspath,
                                  scratch_pool, scratch_pool);
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.c Thu Dec  6 20:23:54 2012
@@ -1804,7 +1804,7 @@ setup_tree_conflict_desc(svn_wc_conflict
       err = svn_wc__db_base_get_info(&status, &kind, &revision,
                                      &repos_relpath, &repos_root_url,
                                      &repos_uuid, NULL, NULL, NULL,
-                                     NULL, NULL, NULL, NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                      db, local_abspath,
                                      scratch_pool, scratch_pool);
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.h (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/conflicts.h Thu Dec  6 20:23:54 2012
@@ -261,6 +261,8 @@ svn_wc__conflict_skel_resolve(svn_boolea
  * Output arguments can be NULL if the value is not necessary.
  *
  * ### stsp asks: what is LOCATIONS?
+ * ### Set *LOCATIONS to an array of (svn_wc_conflict_version_t *)
+ *     representing ...
  *
  * TEXT_, PROP_ and TREE_CONFLICTED (when not NULL) will be set to TRUE
  * when the conflict contains the specified kind of conflict, otherwise

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_editor.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_editor.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_editor.c Thu Dec  6 20:23:54 2012
@@ -170,7 +170,7 @@ get_pristine_file(const char **result_ab
   if (!use_base)
     {
       SVN_ERR(svn_wc__db_read_pristine_info(NULL, NULL, NULL, NULL, NULL, NULL,
-                                            &checksum, NULL, NULL,
+                                            &checksum, NULL, NULL, NULL,
                                             db, local_abspath,
                                             scratch_pool, scratch_pool));
     }
@@ -178,7 +178,7 @@ get_pristine_file(const char **result_ab
     {
       SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL,
                                        NULL, NULL, NULL, NULL, &checksum,
-                                       NULL, NULL, NULL, NULL,
+                                       NULL, NULL, NULL, NULL, NULL,
                                        db, local_abspath,
                                        scratch_pool, scratch_pool));
     }
@@ -557,7 +557,7 @@ file_diff(struct edit_baton *eb,
   if (have_base)
     SVN_ERR(svn_wc__db_base_get_info(&base_status, NULL, &revert_base_revnum,
                                      NULL, NULL, NULL, NULL, NULL, NULL,
-                                     NULL, NULL, NULL, NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                      db, local_abspath,
                                      scratch_pool, scratch_pool));
 
@@ -1468,7 +1468,7 @@ open_file(const char *path,
 
   SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                    NULL, NULL, NULL, &fb->base_checksum, NULL,
-                                   NULL, NULL, NULL,
+                                   NULL, NULL, NULL, NULL,
                                    eb->db, fb->local_abspath,
                                    fb->pool, fb->pool));
 
@@ -1647,7 +1647,7 @@ close_file(void *file_baton,
                                          NULL, NULL, NULL, NULL,
                                          &pristine_checksum,
                                          NULL, NULL,
-                                         &had_props, NULL,
+                                         &had_props, NULL, NULL,
                                          db, fb->local_abspath,
                                          scratch_pool, scratch_pool));
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_local.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_local.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_local.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/diff_local.c Thu Dec  6 20:23:54 2012
@@ -172,7 +172,7 @@ file_diff(struct diff_baton *eb,
                                            &base_revision,
                                            NULL, NULL, NULL, NULL, NULL, NULL,
                                            NULL, &base_checksum, NULL,
-                                           NULL, NULL, NULL,
+                                           NULL, NULL, NULL, NULL,
                                            db, local_abspath,
                                            scratch_pool, scratch_pool));
 
@@ -244,7 +244,8 @@ file_diff(struct diff_baton *eb,
 
           SVN_ERR(svn_wc__db_read_pristine_info(NULL, NULL, NULL, NULL, NULL,
                                                 NULL, &del_checksum, NULL,
-                                                NULL, db, local_abspath,
+                                                NULL, NULL,
+                                                db, local_abspath,
                                                 scratch_pool, scratch_pool));
         }
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/entries.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/entries.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/entries.c Thu Dec  6 20:23:54 2012
@@ -231,7 +231,7 @@ get_info_for_deleted(svn_wc_entry_t *ent
                                        checksum,
                                        NULL,
                                        NULL /* lock */,
-                                       &entry->has_props,
+                                       &entry->has_props, NULL,
                                        NULL,
                                        db,
                                        entry_abspath,
@@ -255,7 +255,7 @@ get_info_for_deleted(svn_wc_entry_t *ent
                                             &entry->depth,
                                             checksum,
                                             NULL,
-                                            &entry->has_props,
+                                            &entry->has_props, NULL,
                                             db,
                                             entry_abspath,
                                             result_pool,
@@ -297,6 +297,7 @@ get_info_for_deleted(svn_wc_entry_t *ent
           SVN_ERR(svn_wc__db_base_get_info(&status, NULL, &entry->revision,
                                            NULL, NULL, NULL, NULL, NULL, NULL,
                                            NULL, NULL, NULL, NULL, NULL, NULL,
+                                           NULL,
                                            db, entry_abspath,
                                            result_pool, scratch_pool));
 
@@ -565,7 +566,7 @@ read_one_entry(const svn_wc_entry_t **ne
                                            NULL, NULL, NULL,
                                            NULL, NULL, NULL,
                                            NULL, NULL, NULL,
-                                           NULL, NULL, NULL,
+                                           NULL, NULL, NULL, NULL,
                                            db, entry_abspath,
                                            scratch_pool,
                                            scratch_pool));

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/externals.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/externals.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/externals.c Thu Dec  6 20:23:54 2012
@@ -515,7 +515,7 @@ open_file(const char *path,
                                    NULL, NULL, NULL, &eb->changed_rev,
                                    &eb->changed_date, &eb->changed_author,
                                    NULL, &eb->original_checksum, NULL, NULL,
-                                   &eb->had_props, NULL,
+                                   &eb->had_props, NULL, NULL,
                                    eb->db, eb->local_abspath,
                                    eb->pool, file_pool));
 
@@ -738,14 +738,10 @@ close_file(void *file_baton,
                                       &new_pristine_props,
                                       &new_actual_props,
                                       eb->db, eb->local_abspath,
-                                      svn_kind_file,
                                       NULL /* server_baseprops*/,
                                       base_props,
                                       actual_props,
                                       regular_prop_changes,
-                                      TRUE /* base_merge */,
-                                      FALSE /* dry_run */,
-                                      eb->cancel_func, eb->cancel_baton,
                                       pool, pool));
         }
       else
@@ -1071,7 +1067,7 @@ svn_wc__crawl_file_external(svn_wc_conte
   err = svn_wc__db_base_get_info(NULL, &kind, &revision,
                                  &repos_relpath, &repos_root_url, NULL, NULL,
                                  NULL, NULL, NULL, NULL, NULL, &lock,
-                                 NULL, &update_root,
+                                 NULL, NULL, &update_root,
                                  db, local_abspath,
                                  scratch_pool, scratch_pool);
 
@@ -1238,7 +1234,7 @@ is_external_rolled_out(svn_boolean_t *is
 
   err = svn_wc__db_base_get_info(NULL, NULL, NULL, &repos_relpath,
                                  &repos_root_url, NULL, NULL, NULL, NULL,
-                                 NULL, NULL, NULL, NULL, NULL, NULL,
+                                 NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                  wc_ctx->db, xinfo->local_abspath,
                                  scratch_pool, scratch_pool);
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/info.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/info.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/info.c Thu Dec  6 20:23:54 2012
@@ -172,7 +172,7 @@ build_info_for_node(svn_wc__info2_t **in
             SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, &tmpinfo->rev, NULL,
                                              NULL, NULL, NULL, NULL, NULL,
                                              NULL, NULL, NULL, NULL, NULL,
-                                             NULL,
+                                             NULL, NULL,
                                              db, local_abspath,
                                              scratch_pool, scratch_pool));
         }
@@ -226,7 +226,7 @@ build_info_for_node(svn_wc__info2_t **in
                                             &tmpinfo->last_changed_author,
                                             &wc_info->depth,
                                             &wc_info->checksum,
-                                            NULL, NULL,
+                                            NULL, NULL, NULL,
                                             db, local_abspath,
                                             result_pool, scratch_pool));
 
@@ -265,7 +265,7 @@ build_info_for_node(svn_wc__info2_t **in
                                            &tmpinfo->repos_root_URL,
                                            &tmpinfo->repos_UUID, NULL, NULL,
                                            NULL, NULL, NULL, NULL,
-                                           NULL, NULL, NULL,
+                                           NULL, NULL, NULL, NULL,
                                            db, local_abspath,
                                            result_pool, scratch_pool));
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/merge.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/merge.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/merge.c Thu Dec  6 20:23:54 2012
@@ -1145,7 +1145,7 @@ svn_wc_merge5(enum svn_wc_merge_outcome_
   svn_skel_t *work_items;
   svn_skel_t *conflict_skel = NULL;
   apr_hash_t *pristine_props = NULL;
-  apr_hash_t *actual_props = NULL;
+  apr_hash_t *actual_props;
   apr_hash_t *new_actual_props = NULL;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(left_abspath));
@@ -1222,7 +1222,7 @@ svn_wc_merge5(enum svn_wc_merge_outcome_
                                       scratch_pool, scratch_pool));
       }
     else if (pristine_props)
-      actual_props = apr_hash_copy(scratch_pool, pristine_props);
+      actual_props = pristine_props;
     else
       actual_props = apr_hash_make(scratch_pool);
   }
@@ -1230,7 +1230,7 @@ svn_wc_merge5(enum svn_wc_merge_outcome_
   if (merge_props_outcome)
     {
       int i;
-      apr_hash_t *new_pristine_props;
+
       /* The PROPCHANGES may not have non-"normal" properties in it. If entry
          or wc props were allowed, then the following code would install them
          into the BASE and/or WORKING properties(!).  */
@@ -1249,12 +1249,10 @@ svn_wc_merge5(enum svn_wc_merge_outcome_
 
       SVN_ERR(svn_wc__merge_props(&conflict_skel,
                                   merge_props_outcome,
-                                  &new_pristine_props, &new_actual_props,
-                                  wc_ctx->db, target_abspath, svn_kind_file,
+                                  NULL, &new_actual_props,
+                                  wc_ctx->db, target_abspath,
                                   original_props, pristine_props, actual_props,
-                                  prop_diff, FALSE /* base_merge */,
-                                  dry_run,
-                                  cancel_func, cancel_baton,
+                                  prop_diff,
                                   scratch_pool, scratch_pool));
     }
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/node.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/node.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/node.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/node.c Thu Dec  6 20:23:54 2012
@@ -723,7 +723,7 @@ svn_wc__node_get_base(svn_revnum_t *revi
   err = svn_wc__db_base_get_info(NULL, NULL, revision, repos_relpath,
                                  repos_root_url, repos_uuid, NULL,
                                  NULL, NULL, NULL, NULL, NULL, NULL,
-                                 NULL, NULL,
+                                 NULL, NULL, NULL,
                                  wc_ctx->db, local_abspath,
                                  result_pool, scratch_pool);
   if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
@@ -782,7 +782,7 @@ svn_wc__node_get_pre_ng_status_data(svn_
     SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, revision, NULL, NULL, NULL,
                                      changed_rev, changed_date, changed_author,
                                      NULL, NULL, NULL,
-                                     NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL,
                                      wc_ctx->db, local_abspath,
                                      result_pool, scratch_pool));
   else
@@ -811,7 +811,7 @@ svn_wc__node_get_lock_info(const char **
 
   err = svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
                                  NULL, NULL, NULL, NULL, NULL, &lock, NULL,
-                                 NULL,
+                                 NULL, NULL,
                                  wc_ctx->db, local_abspath,
                                  result_pool, scratch_pool);
 
@@ -1117,7 +1117,7 @@ svn_wc__internal_get_origin(svn_boolean_
         SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, revision, repos_relpath,
                                          repos_root_url, repos_uuid, NULL,
                                          NULL, NULL, NULL, NULL, NULL, NULL,
-                                         NULL, NULL,
+                                         NULL, NULL, NULL,
                                          db, local_abspath,
                                          result_pool, scratch_pool));
       }
@@ -1203,7 +1203,7 @@ svn_wc__node_get_commit_status(svn_boole
     {
       SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, revision, NULL, NULL, NULL,
                                        NULL, NULL, NULL, NULL, NULL, NULL,
-                                       NULL, NULL, NULL,
+                                       NULL, NULL, NULL, NULL,
                                        wc_ctx->db, local_abspath,
                                        scratch_pool, scratch_pool));
     }

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/props.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/props.c Thu Dec  6 20:23:54 2012
@@ -200,7 +200,7 @@ svn_wc__perform_props_merge(svn_wc_notif
   svn_wc__db_status_t status;
   svn_kind_t kind;
   apr_hash_t *pristine_props = NULL;
-  apr_hash_t *actual_props = NULL;
+  apr_hash_t *actual_props;
   apr_hash_t *new_pristine_props;
   apr_hash_t *new_actual_props;
   svn_boolean_t had_props, props_mod;
@@ -289,18 +289,18 @@ svn_wc__perform_props_merge(svn_wc_notif
     SVN_ERR(svn_wc__get_actual_props(&actual_props, db, local_abspath,
                                      scratch_pool, scratch_pool));
   else
-    actual_props = apr_hash_copy(scratch_pool, pristine_props);
+    actual_props = pristine_props;
 
   /* Note that while this routine does the "real" work, it's only
      prepping tempfiles and writing log commands.  */
   SVN_ERR(svn_wc__merge_props(&conflict_skel, state,
-                              &new_pristine_props, &new_actual_props,
-                              db, local_abspath, kind,
+                              base_merge ? &new_pristine_props : NULL,
+                              &new_actual_props,
+                              db, local_abspath,
                               baseprops /* server_baseprops */,
                               pristine_props,
                               actual_props,
-                              propchanges, base_merge, dry_run,
-                              cancel_func, cancel_baton,
+                              propchanges,
                               scratch_pool, scratch_pool));
 
   if (dry_run)
@@ -342,11 +342,11 @@ svn_wc__perform_props_merge(svn_wc_notif
 /* See props.h  */
 #ifdef SVN__SUPPORT_BASE_MERGE
     if (status == svn_wc__db_status_added)
-      SVN_ERR(svn_wc__db_temp_working_set_props(db, local_abspath,
-                                                new_base_props, scratch_pool));
+      SVN_ERR(svn_wc__db_temp_working_set_props(
+                db, local_abspath, new_pristine_props, scratch_pool));
     else
-      SVN_ERR(svn_wc__db_temp_base_set_props(db, local_abspath,
-                                             new_base_props, scratch_pool));
+      SVN_ERR(svn_wc__db_temp_base_set_props(
+                db, local_abspath, new_pristine_props, scratch_pool));
 #else
     if (base_merge)
       return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
@@ -785,7 +785,8 @@ set_prop_merge_state(svn_wc_notify_state
 }
 
 /* Add the property with name PROPNAME to the set of ACTUAL_PROPS on
- * PATH, setting *STATE or *CONFLICT_REMAINS according to merge outcomes.
+ * DB/LOCAL_ABSPATH, setting *STATE or *CONFLICT_REMAINS according to
+ * the merge outcome.
  *
  * *STATE is an input and output parameter, its value is to be
  * set using set_merge_prop_state().
@@ -868,9 +869,9 @@ apply_single_prop_add(svn_wc_notify_stat
 }
 
 
-/* Delete the property with name PROPNAME from the set of
- * ACTUAL_PROPS on PATH, setting *STATE or *CONFLICT_REMAINS according to
- * merge outcomes.
+/* Delete the property with name PROPNAME from the set of ACTUAL_PROPS on
+ * DB/LOCAL_ABSPATH, setting *STATE or *CONFLICT_REMAINS according to
+ * the merge outcome.
  *
  * *STATE is an input and output parameter, its value is to be
  * set using set_merge_prop_state().
@@ -1087,8 +1088,9 @@ apply_single_generic_prop_change(svn_wc_
   return SVN_NO_ERROR;
 }
 
-/* Change the property with name PROPNAME in the set of ACTUAL_PROPS
- * on PATH, setting *STATE or *CONFLICT_REMAINS according to the merge outcome.
+/* Change the property with name PROPNAME in the set of ACTUAL_PROPS on
+ * DB/LOCAL_ABSPATH, setting *STATE or *CONFLICT_REMAINS according to
+ * the merge outcome.
  *
  * *STATE is an input and output parameter, its value is to be
  * set using set_prop_merge_state(). (May be null.).
@@ -1179,36 +1181,27 @@ svn_wc__merge_props(svn_skel_t **conflic
                     apr_hash_t **new_actual_props,
                     svn_wc__db_t *db,
                     const char *local_abspath,
-                    svn_kind_t kind,
                     apr_hash_t *server_baseprops,
                     apr_hash_t *pristine_props,
                     apr_hash_t *actual_props,
                     const apr_array_header_t *propchanges,
-                    svn_boolean_t base_merge,
-                    svn_boolean_t dry_run,
-                    svn_cancel_func_t cancel_func,
-                    void *cancel_baton,
                     apr_pool_t *result_pool,
                     apr_pool_t *scratch_pool)
 {
   apr_pool_t *iterpool;
   int i;
   apr_hash_t *conflict_props = NULL;
-  apr_hash_t *old_actual_props;
   apr_hash_t *their_props;
 
   SVN_ERR_ASSERT(pristine_props != NULL);
   SVN_ERR_ASSERT(actual_props != NULL);
 
-  /* Just copy the pointers as we copy the data in the skel if
-     necessary */
-  old_actual_props = apr_hash_copy(scratch_pool, actual_props);
-
-  *new_pristine_props = NULL;
-  *new_actual_props = NULL;
+  if (new_pristine_props)
+    *new_pristine_props = apr_hash_copy(result_pool, pristine_props);
+  *new_actual_props = apr_hash_copy(result_pool, actual_props);
 
   if (!server_baseprops)
-    server_baseprops = apr_hash_copy(scratch_pool, pristine_props);
+    server_baseprops = pristine_props;
 
   their_props = apr_hash_copy(scratch_pool, server_baseprops);
 
@@ -1234,10 +1227,6 @@ svn_wc__merge_props(svn_skel_t **conflic
 
       svn_pool_clear(iterpool);
 
-      /* Should we stop the prop merging process?  */
-      if (cancel_func)
-        SVN_ERR(cancel_func(cancel_baton));
-
       /* For the incoming propchange, figure out the TO and FROM values. */
       incoming_change = &APR_ARRAY_IDX(propchanges, i, svn_prop_t);
       propname = incoming_change->name;
@@ -1247,8 +1236,9 @@ svn_wc__merge_props(svn_skel_t **conflic
 
       base_val = apr_hash_get(pristine_props, propname, APR_HASH_KEY_STRING);
 
-      if (base_merge)
-        apr_hash_set(pristine_props, propname, APR_HASH_KEY_STRING, to_val);
+      if (new_pristine_props)
+        apr_hash_set(*new_pristine_props, propname, APR_HASH_KEY_STRING,
+                     to_val);
 
       apr_hash_set(their_props, propname, APR_HASH_KEY_STRING, to_val);
 
@@ -1260,21 +1250,21 @@ svn_wc__merge_props(svn_skel_t **conflic
       if (! from_val)  /* adding a new property */
         SVN_ERR(apply_single_prop_add(state, &conflict_remains,
                                       db, local_abspath,
-                                      actual_props,
+                                      *new_actual_props,
                                       propname, base_val, to_val,
                                       result_pool, iterpool));
 
       else if (! to_val) /* delete an existing property */
         SVN_ERR(apply_single_prop_delete(state, &conflict_remains,
                                          db, local_abspath,
-                                         actual_props,
+                                         *new_actual_props,
                                          propname, base_val, from_val,
                                          result_pool, iterpool));
 
       else  /* changing an existing property */
         SVN_ERR(apply_single_prop_change(state, &conflict_remains,
                                          db, local_abspath,
-                                         actual_props,
+                                         *new_actual_props,
                                          propname, base_val, from_val, to_val,
                                          result_pool, iterpool));
 
@@ -1286,14 +1276,10 @@ svn_wc__merge_props(svn_skel_t **conflic
         {
           set_prop_merge_state(state, svn_wc_notify_state_conflicted);
 
-          if (dry_run)
-            continue;   /* skip to next incoming change */
-
           if (!conflict_props)
-            conflict_props = apr_hash_make(result_pool);
+            conflict_props = apr_hash_make(scratch_pool);
 
-          apr_hash_set(conflict_props, apr_pstrdup(result_pool, propname),
-                       APR_HASH_KEY_STRING, "");
+          apr_hash_set(conflict_props, propname, APR_HASH_KEY_STRING, "");
         }
 
     }  /* foreach propchange ... */
@@ -1301,12 +1287,6 @@ svn_wc__merge_props(svn_skel_t **conflic
 
   /* Finished applying all incoming propchanges to our hashes! */
 
-  if (dry_run)
-    return SVN_NO_ERROR;
-
-  *new_pristine_props = pristine_props;
-  *new_actual_props = actual_props;
-
   if (conflict_props != NULL)
     {
       /* Ok, we got some conflict. Lets store all the property knowledge we
@@ -1318,7 +1298,7 @@ svn_wc__merge_props(svn_skel_t **conflic
       SVN_ERR(svn_wc__conflict_skel_add_prop_conflict(*conflict_skel,
                                                       db, local_abspath,
                                                       NULL /* reject_path */,
-                                                      old_actual_props,
+                                                      actual_props,
                                                       server_baseprops,
                                                       their_props,
                                                       conflict_props,
@@ -1685,7 +1665,7 @@ get_file_for_validation(const svn_string
     {
       svn_stream_t *read_stream;
 
-      /* Open PATH. */
+      /* Open GB->LOCAL_ABSPATH. */
       SVN_ERR(svn_stream_open_readonly(&read_stream, gb->local_abspath,
                                        pool, pool));
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/props.h
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/props.h?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/props.h (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/props.h Thu Dec  6 20:23:54 2012
@@ -73,25 +73,20 @@ svn_wc__internal_propget(const svn_strin
    SERVER_BASEPROPS, calculate what changes should be applied to the working
    copy.
 
-   Return working queue operations in WORK_ITEMS and a new set of actual
-   (NEW_ACTUAL_PROPS) and pristine properties (NEW_PRISTINE_PROPS).
-
    We return the new property collections to the caller, so the caller
    can combine the property update with other operations.
 
    If SERVER_BASEPROPS is NULL then use the pristine props as PROPCHANGES
    base.
 
-   If BASE_MERGE is FALSE then only change working properties; if TRUE,
-   change both the pristine and working properties. (Only the update editor
-   should use BASE_MERGE is TRUE)
-
-   If conflicts are found when merging, create a temporary .prej file,
-   and provide working queue operations to write the conflict information
-   into the .prej file later. Modify base properties unconditionally,
-   if BASE_MERGE is TRUE, they do not generate conficts.
-
-   TODO ### DRY_RUN ...
+   Return the new set of actual properties in *NEW_ACTUAL_PROPS.  If
+   NEW_PRISTINE_PROPS is non-null, then also apply PROPCHANGES to
+   PRISTINE_PROPS and return the new set of pristine properties in
+   *NEW_PRISTINE_PROPS.
+
+   Return any conflicts of the actual props in *CONFLICT_SKEL.  (Changes
+   made to the pristine properties, if BASE_MERGE is TRUE, do not
+   generate conficts.)
 
    If STATE is non-null, set *STATE to the state of the local properties
    after the merge.  */
@@ -102,15 +97,10 @@ svn_wc__merge_props(svn_skel_t **conflic
                     apr_hash_t **new_actual_props,
                     svn_wc__db_t *db,
                     const char *local_abspath,
-                    svn_kind_t kind,
-                    apr_hash_t *server_baseprops,
-                    apr_hash_t *pristine_props,
-                    apr_hash_t *actual_props,
+                    /*const*/ apr_hash_t *server_baseprops,
+                    /*const*/ apr_hash_t *pristine_props,
+                    /*const*/ apr_hash_t *actual_props,
                     const apr_array_header_t *propchanges,
-                    svn_boolean_t base_merge,
-                    svn_boolean_t dry_run,
-                    svn_cancel_func_t cancel_func,
-                    void *cancel_baton,
                     apr_pool_t *result_pool,
                     apr_pool_t *scratch_pool);
 
@@ -144,7 +134,13 @@ svn_wc__create_prejfile(const char **tmp
                         apr_pool_t *scratch_pool);
 
 
-/* Just like svn_wc_merge_props3(), but WITH a BASE_MERGE parameter.  */
+/* Just like svn_wc_merge_props3(), but WITH a BASE_MERGE parameter.
+
+   If SVN__SUPPORT_BASE_MERGE is defined and BASE_MERGE is true, then
+   also use PROPCHANGES to modify the node's pristine properties.  (That
+   cannot generate conficts.)  If SVN__SUPPORT_BASE_MERGE is not defined
+   and BASE_MERGE is true, throw an error.
+ */
 svn_error_t *
 svn_wc__perform_props_merge(svn_wc_notify_state_t *state,
                             svn_wc__db_t *db,

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/status.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/status.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/status.c Thu Dec  6 20:23:54 2012
@@ -286,7 +286,7 @@ read_info(const struct svn_wc__db_info_t
 
       SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL,
                                        NULL, NULL, NULL, NULL, NULL, NULL,
-                                       lock_arg, NULL, &update_root,
+                                       lock_arg, NULL, NULL, &update_root,
                                        db, local_abspath,
                                        result_pool, scratch_pool));
 

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/update_editor.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/update_editor.c Thu Dec  6 20:23:54 2012
@@ -496,19 +496,6 @@ cleanup_edit_baton(void *edit_baton)
   return APR_SUCCESS;
 }
 
-/* An APR pool cleanup handler.  This is a child handler, it removes
-   the mail pool handler.
-   <stsp> mail pool?
-   <hwright> that's where the missing commit mails are going!  */
-static apr_status_t
-cleanup_edit_baton_child(void *edit_baton)
-{
-  struct edit_baton *eb = edit_baton;
-  apr_pool_cleanup_kill(eb->pool, eb, cleanup_edit_baton);
-  return APR_SUCCESS;
-}
-
-
 /* Make a new dir baton in a subpool of PB->pool. PB is the parent baton.
    If PATH and PB are NULL, this is the root directory of the edit; in this
    case, make the new dir baton in a subpool of EB->pool.
@@ -1200,7 +1187,7 @@ open_root(void *edit_baton,
                                        &db->old_repos_relpath, NULL, NULL,
                                        &db->changed_rev, &db->changed_date,
                                        &db->changed_author, &db->ambient_depth,
-                                       NULL, NULL, NULL, NULL, NULL,
+                                       NULL, NULL, NULL, NULL, NULL, NULL,
                                        eb->db, db->local_abspath,
                                        db->pool, pool));
       db->was_incomplete = (status == svn_wc__db_status_incomplete);
@@ -1660,7 +1647,7 @@ delete_entry(const char *path,
     SVN_ERR(svn_wc__db_base_get_info(&base_status, &base_kind, &old_revision,
                                      &repos_relpath,
                                      NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                                     NULL, NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL, NULL,
                                      eb->db, local_abspath,
                                      scratch_pool, scratch_pool));
 
@@ -2236,7 +2223,7 @@ open_directory(const char *path,
                                      &db->old_repos_relpath, NULL, NULL,
                                      &db->changed_rev, &db->changed_date,
                                      &db->changed_author, &db->ambient_depth,
-                                     NULL, NULL, NULL, NULL, NULL,
+                                     NULL, NULL, NULL, NULL, NULL, NULL,
                                      eb->db, db->local_abspath,
                                      db->pool, pool));
 
@@ -2502,15 +2489,10 @@ close_directory(void *dir_baton,
                                     &new_actual_props,
                                     eb->db,
                                     db->local_abspath,
-                                    svn_kind_dir,
                                     NULL /* use baseprops */,
                                     base_props,
                                     actual_props,
                                     regular_prop_changes,
-                                    TRUE /* base_merge */,
-                                    FALSE /* dry_run */,
-                                    eb->cancel_func,
-                                    eb->cancel_baton,
                                     db->pool,
                                     scratch_pool),
                 _("Couldn't do property merge"));
@@ -2563,7 +2545,7 @@ close_directory(void *dir_baton,
             /* ### We just check if there is some node in BASE at this path */
             err = svn_wc__db_base_get_info(&status, NULL, NULL, NULL, NULL,
                                            NULL, NULL, NULL, NULL, NULL, NULL,
-                                           NULL, NULL, NULL, NULL,
+                                           NULL, NULL, NULL, NULL, NULL,
                                            eb->db, child_abspath,
                                            iterpool, iterpool);
 
@@ -3298,7 +3280,7 @@ open_file(const char *path,
                                      &fb->changed_rev, &fb->changed_date,
                                      &fb->changed_author, NULL,
                                      &fb->original_checksum, NULL, NULL,
-                                     NULL, NULL,
+                                     NULL, NULL, NULL,
                                      eb->db, fb->local_abspath,
                                      fb->pool, scratch_pool));
 
@@ -4117,14 +4099,10 @@ close_file(void *file_baton,
                                   &new_actual_props,
                                   eb->db,
                                   fb->local_abspath,
-                                  svn_kind_file,
                                   NULL /* server_baseprops (update, not merge)  */,
                                   current_base_props,
                                   current_actual_props,
                                   regular_prop_changes, /* propchanges */
-                                  TRUE /* base_merge */,
-                                  FALSE /* dry_run */,
-                                  eb->cancel_func, eb->cancel_baton,
                                   scratch_pool,
                                   scratch_pool));
       /* We will ALWAYS have properties to save (after a not-dry-run merge). */
@@ -4252,14 +4230,10 @@ close_file(void *file_baton,
                                   &new_actual_props,
                                   eb->db,
                                   fb->local_abspath,
-                                  svn_kind_file,
                                   NULL /* server_baseprops (not merging) */,
                                   current_base_props /* pristine_props */,
                                   fake_actual_props /* actual_props */,
                                   regular_prop_changes, /* propchanges */
-                                  TRUE /* base_merge */,
-                                  FALSE /* dry_run */,
-                                  eb->cancel_func, eb->cancel_baton,
                                   scratch_pool,
                                   scratch_pool));
 
@@ -4476,7 +4450,7 @@ close_edit(void *edit_baton,
              have to worry about removing it. */
           err = svn_wc__db_base_get_info(&status, NULL, NULL, NULL, NULL, NULL,
                                          NULL, NULL, NULL, NULL, NULL, NULL,
-                                         NULL, NULL, NULL,
+                                         NULL, NULL, NULL, NULL,
                                          eb->db, eb->target_abspath,
                                          scratch_pool, scratch_pool);
           if (err)
@@ -4633,7 +4607,7 @@ make_editor(svn_revnum_t *target_revisio
   eb->ext_patterns             = preserved_exts;
 
   apr_pool_cleanup_register(edit_pool, eb, cleanup_edit_baton,
-                            cleanup_edit_baton_child);
+                            apr_pool_cleanup_null);
 
   /* Construct an editor. */
   tree_editor->set_target_revision = set_target_revision;
@@ -4674,7 +4648,7 @@ make_editor(svn_revnum_t *target_revisio
       err = svn_wc__db_base_get_info(&dir_status, &dir_kind, NULL,
                                      &dir_repos_relpath, NULL, NULL, NULL,
                                      NULL, NULL, &dir_depth, NULL, NULL, NULL,
-                                     NULL, NULL,
+                                     NULL, NULL, NULL,
                                      db, eb->target_abspath,
                                      scratch_pool, scratch_pool);
 
@@ -4730,7 +4704,7 @@ make_editor(svn_revnum_t *target_revisio
                                                    NULL, &dir_repos_relpath,
                                                    NULL, NULL, NULL, NULL,
                                                    NULL, &dir_depth, NULL,
-                                                   NULL, NULL, NULL,
+                                                   NULL, NULL, NULL, NULL,
                                                    NULL,
                                                    db, child_abspath,
                                                    iterpool, iterpool));

Modified: subversion/branches/in-repo-authz/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/in-repo-authz/subversion/libsvn_wc/util.c?rev=1418054&r1=1418053&r2=1418054&view=diff
==============================================================================
--- subversion/branches/in-repo-authz/subversion/libsvn_wc/util.c (original)
+++ subversion/branches/in-repo-authz/subversion/libsvn_wc/util.c Thu Dec  6 20:23:54 2012
@@ -610,8 +610,9 @@ svn_wc__fetch_base_func(const char **fil
 
   err = svn_wc__db_base_get_info(NULL, NULL, NULL, NULL, NULL, NULL,
                                  NULL, NULL, NULL, NULL, &checksum,
-                                 NULL, NULL, NULL, NULL, sfb->db,
-                                 local_abspath, scratch_pool, scratch_pool);
+                                 NULL, NULL, NULL, NULL, NULL,
+                                 sfb->db, local_abspath,
+                                 scratch_pool, scratch_pool);
   if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
     {
       svn_error_clear(err);