Author: julianfoad
Date: Mon Apr 13 13:27:51 2015
New Revision: 1673180

URL: http://svn.apache.org/r1673180
Log:
On the 'move-tracking-2' branch: catch up to trunk@1673179.

Modified:
    subversion/branches/move-tracking-2/   (props changed)
    subversion/branches/move-tracking-2/subversion/   (props changed)
    subversion/branches/move-tracking-2/subversion/include/svn_fs.h
    subversion/branches/move-tracking-2/subversion/include/svn_repos.h
    subversion/branches/move-tracking-2/subversion/include/svn_wc.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs_base/tree.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/   (props 
changed)
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c
    subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/deprecated.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-metadata.sql
    subversion/branches/move-tracking-2/subversion/mod_dav_svn/liveprops.c
    subversion/branches/move-tracking-2/subversion/po/de.po
    subversion/branches/move-tracking-2/subversion/svn/auth-cmd.c
    subversion/branches/move-tracking-2/subversion/svn/list-cmd.c
    subversion/branches/move-tracking-2/subversion/svn/status-cmd.c
    subversion/branches/move-tracking-2/subversion/svnserve/serve.c
    subversion/branches/move-tracking-2/subversion/tests/cmdline/commit_tests.py
    subversion/branches/move-tracking-2/subversion/tests/libsvn_ra/ra-test.c
    
subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/wc-queries-test.c

Propchange: subversion/branches/move-tracking-2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Apr 13 13:27:51 2015
@@ -88,4 +88,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1606692-1671790
+/subversion/trunk:1606692-1673179

Propchange: subversion/branches/move-tracking-2/subversion/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Apr 13 13:27:51 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/subversion:1462039-1462408
 /subversion/branches/verify-keep-going/subversion:1439280-1546110
 /subversion/branches/wc-collate-path/subversion:1402685-1480384
-/subversion/trunk/subversion:1606692-1671790
+/subversion/trunk/subversion:1606692-1673179

Modified: subversion/branches/move-tracking-2/subversion/include/svn_fs.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_fs.h?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_fs.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_fs.h Mon Apr 13 
13:27:51 2015
@@ -1820,6 +1820,18 @@ svn_fs_node_proplist(apr_hash_t **table_
                      const char *path,
                      apr_pool_t *pool);
 
+/** Set @a *has_props to TRUE if the node @a path in @a root has properties
+ * and to FALSE if it doesn't have properties. Perform temporary allocations
+ * in @a scratch_pool.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_node_has_props(svn_boolean_t *has_props,
+                      svn_fs_root_t *root,
+                      const char *path,
+                      apr_pool_t *scratch_pool);
+
 
 /** Change a node's property's value, or add/delete a property.
  *

Modified: subversion/branches/move-tracking-2/subversion/include/svn_repos.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_repos.h?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_repos.h 
(original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_repos.h Mon Apr 
13 13:27:51 2015
@@ -250,7 +250,7 @@ typedef enum svn_repos_notify_action_t
   svn_repos_notify_hotcopy_rev_range
 } svn_repos_notify_action_t;
 
-/** The type of error occurring.
+/** The type of warning occurring.
  *
  * @since New in 1.7.
  */

Modified: subversion/branches/move-tracking-2/subversion/include/svn_wc.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_wc.h?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_wc.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_wc.h Mon Apr 13 
13:27:51 2015
@@ -1911,8 +1911,9 @@ typedef struct svn_wc_conflict_descripti
   /** The path that is in conflict (for a tree conflict, it is the victim) */
   const char *path;
 
-  /** The node type of the path being operated on (for a tree conflict,
-   *  ### which version?) */
+  /** The local node type of the path being operated on (for a tree conflict,
+   *  this specifies the local node kind, which may be (and typically is)
+   *  different than the left and right kind) */
   svn_node_kind_t node_kind;
 
   /** What sort of conflict are we describing? */
@@ -2063,7 +2064,7 @@ svn_wc_conflict_description_create_prop(
  *
  * 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_tree, the @c local_node_kind to @a local_node_kind,
+ * #svn_wc_conflict_kind_tree, the @c node_kind to @a node_kind,
  * the @c operation to @a operation, the @c src_left_version field to
  * @a src_left_version, and the @c src_right_version field to
  * @a src_right_version.
@@ -2104,7 +2105,7 @@ svn_wc_conflict_description_create_tree(
 /** Return a duplicate of @a conflict, allocated in @a result_pool.
  * A deep copy of all members will be made.
  *
- * @since New in 1.7.
+ * @since New in 1.9.
  */
 svn_wc_conflict_description2_t *
 svn_wc_conflict_description2_dup(
@@ -2131,8 +2132,11 @@ svn_wc__conflict_description2_dup(
  */
 typedef enum svn_wc_conflict_choice_t
 {
-  /** Undefined; for internal use only.
-      This value is never returned in svn_wc_conflict_result_t.
+  /** Undefined; for private use only.
+      This value must never be returned in svn_wc_conflict_result_t,
+      but a separate value, unequal to all other pre-defined values may
+      be useful in conflict resolver implementations to signal that no
+      choice is made yet.
    * @since New in 1.9
    */
   svn_wc_conflict_choose_undefined = -1,
@@ -4657,6 +4661,9 @@ svn_wc_delete(const char *path,
  * If @a local_abspath does not exist as file, directory or symlink, return
  * #SVN_ERR_WC_PATH_NOT_FOUND.
  *
+ * If @a notify_func is non-NULL, invoke it with @a notify_baton to report
+ * the item being added.
+ *
  * ### TODO: Split into add_dir, add_file, add_symlink?
  *
  * @since New in 1.9.
@@ -4672,7 +4679,7 @@ svn_wc_add_from_disk3(svn_wc_context_t *
 
 /**
  * Similar to svn_wc_add_from_disk3(), but always passes FALSE for
- * @a skip_som_prop_canon
+ * @a skip_checks
  *
  * @since New in 1.8.
  * @deprecated Provided for backward compatibility with the 1.8 API.
@@ -7304,6 +7311,12 @@ svn_wc_get_pristine_copy_path(const char
  * points during the operation.  If it returns an error (typically
  * #SVN_ERR_CANCELLED), return that error immediately.
  *
+ * If @a notify_func is non-NULL, invoke it with @a notify_baton to report
+ * the progress of the operation.
+ *
+ * @note In 1.9, @a notify_func does not get called at all.  This may change
+ * in later releases.
+ *
  * @since New in 1.9.
  */
 svn_error_t *

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.c Mon 
Apr 13 13:27:51 2015
@@ -1196,6 +1196,16 @@ svn_fs_node_proplist(apr_hash_t **table_
 }
 
 svn_error_t *
+svn_fs_node_has_props(svn_boolean_t *has_props,
+                      svn_fs_root_t *root,
+                      const char *path,
+                      apr_pool_t *scratch_pool)
+{
+  return svn_error_trace(root->vtable->node_has_props(has_props, root, path,
+                                                      scratch_pool));
+}
+
+svn_error_t *
 svn_fs_change_node_prop(svn_fs_root_t *root, const char *path,
                         const char *name, const svn_string_t *value,
                         apr_pool_t *pool)

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs/fs-loader.h Mon 
Apr 13 13:27:51 2015
@@ -346,6 +346,8 @@ typedef struct root_vtable_t
                             apr_pool_t *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 *(*node_has_props)(svn_boolean_t *has_props, svn_fs_root_t *root,
+                                 const char *path, apr_pool_t *scratch_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/move-tracking-2/subversion/libsvn_fs_base/tree.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_base/tree.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_base/tree.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_base/tree.c Mon 
Apr 13 13:27:51 2015
@@ -1285,6 +1285,21 @@ base_node_proplist(apr_hash_t **table_p,
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+base_node_has_props(svn_boolean_t *has_props,
+                    svn_fs_root_t *root,
+                    const char *path,
+                    apr_pool_t *scratch_pool)
+{
+  apr_hash_t *props;
+
+  SVN_ERR(base_node_proplist(&props, root, path, scratch_pool));
+
+  *has_props = (0 < apr_hash_count(props));
+
+  return SVN_NO_ERROR;
+}
+
 
 struct change_node_prop_args {
   svn_fs_root_t *root;
@@ -5492,6 +5507,7 @@ static root_vtable_t root_vtable = {
   base_closest_copy,
   base_node_prop,
   base_node_proplist,
+  base_node_has_props,
   base_change_node_prop,
   base_props_changed,
   base_dir_entries,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c Mon Apr 
13 13:27:51 2015
@@ -1515,6 +1515,20 @@ fs_node_proplist(apr_hash_t **table_p,
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+fs_node_has_props(svn_boolean_t *has_props,
+                  svn_fs_root_t *root,
+                  const char *path,
+                  apr_pool_t *scratch_pool)
+{
+  apr_hash_t *props;
+
+  SVN_ERR(fs_node_proplist(&props, root, path, scratch_pool));
+
+  *has_props = (0 < apr_hash_count(props));
+
+  return SVN_NO_ERROR;
+}
 
 static svn_error_t *
 increment_mergeinfo_up_tree(parent_path_t *pp,
@@ -4238,6 +4252,7 @@ static root_vtable_t root_vtable = {
   fs_closest_copy,
   fs_node_prop,
   fs_node_proplist,
+  fs_node_has_props,
   fs_change_node_prop,
   fs_props_changed,
   fs_dir_entries,

Propchange: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Apr 13 13:27:51 2015
@@ -90,4 +90,4 @@
 
/subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639,1546002-1546110
 /subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
 
/subversion/trunk/subversion/libsvn_fs_fs:1415133-1596500,1596567,1597414,1597989,1598273,1599140,1600872,1601633,1603485-1603487,1603499,1603605,1604128,1604188,1604413-1604414,1604416-1604417,1604421,1604442,1604700,1604717,1604720,1604726,1604755,1604794,1604802,1604824,1604836,1604844,1604902-1604903,1604911,1604925,1604933,1604947,1605059-1605060,1605064-1605065,1605068,1605071-1605073,1605075,1605123,1605188-1605189,1605191,1605197,1605444,1605633,1606132,1606142,1606144,1606514,1606526,1606528,1606551,1606554,1606564,1606598-1606599,1606656,1606658,1606662,1606744,1606840,1607085,1607572,1612407,1612810,1613339,1613872,1614611,1615348,1615351-1615352,1615356,1616338-1616339,1616613,1617586,1617688,1618138,1618151,1618153,1618226,1618641,1618653,1618662,1619068,1619358,1619413,1619769,1619774,1620602,1620909,1620912,1620928,1620930,1621275,1621635,1622931,1622937,1622942,1622946,1622959-1622960,1622963,1622987,1623007,1623368,1623373,1623377,1623379,1623381,1623398,1623402,162
 
4011,1624265,1624512,1626246,1626871,1626873,1626886,1627497-1627498,1627502,1627947-1627949,1627966,1628083,1628093,1628158-1628159,1628161,1628392-1628393,1628415,1628427,1628676,1628738,1628762,1628764,1629854-1629855,1629857,1629865,1629873,1629875,1629879,1630067,1630070,1631049-1631051,1631075,1631115,1631171,1631180,1631185-1631186,1631196-1631197,1631239-1631240,1631548,1631550,1631563,1631567,1631588,1631598,1632646,1632776,1632849,1632851-1632853,1632856-1632857,1632868,1632908,1632926,1633232,1633617-1633618,1634872,1634875,1634879-1634880,1634920,1636478,1636483,1636629,1636644,1637184,1637186,1637330,1637358,1637363,1637393,1639319,1639322,1639335,1639348,1639352,1639355,1639358,1639414,1639419,1639426,1639430,1639436,1639440,1639549,1640061-1640062,1640197,1640915,1640966,1641013,1643139,1643233,1645567,1646021,1646712,1646716,1647537,1647540-1647541,1647820,1647905,1648230,1648238,1648241-1648243,1648253,1648272,1648532,1648537-1648539,1648542,1648591,1648612,1653608,
 1658482
-/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1606692-1671790
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1606692-1673179

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c Mon Apr 
13 13:27:51 2015
@@ -1500,6 +1500,20 @@ x_node_proplist(apr_hash_t **table_p,
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+x_node_has_props(svn_boolean_t *has_props,
+                 svn_fs_root_t *root,
+                 const char *path,
+                 apr_pool_t *scratch_pool)
+{
+  apr_hash_t *props;
+
+  SVN_ERR(x_node_proplist(&props, root, path, scratch_pool));
+
+  *has_props = (0 < apr_hash_count(props));
+
+  return SVN_NO_ERROR;
+}
 
 static svn_error_t *
 increment_mergeinfo_up_tree(parent_path_t *pp,
@@ -4214,6 +4228,7 @@ static root_vtable_t root_vtable = {
   x_closest_copy,
   x_node_prop,
   x_node_proplist,
+  x_node_has_props,
   x_change_node_prop,
   x_props_changed,
   x_dir_entries,

Modified: 
subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c 
Mon Apr 13 13:27:51 2015
@@ -1509,7 +1509,6 @@ svn_ra_local__get_dir(svn_ra_session_t *
   apr_hash_t *entries;
   apr_hash_index_t *hi;
   svn_ra_local__session_baton_t *sess = session->priv;
-  apr_pool_t *subpool;
   const char *abs_path = svn_fspath__join(sess->fs_path->data, path, pool);
 
   /* Open the revision's root. */
@@ -1525,29 +1524,28 @@ svn_ra_local__get_dir(svn_ra_session_t *
 
   if (dirents)
     {
+      apr_pool_t *iterpool = svn_pool_create(pool);
       /* Get the dir's entries. */
       SVN_ERR(svn_fs_dir_entries(&entries, root, abs_path, pool));
 
       /* Loop over the fs dirents, and build a hash of general
          svn_dirent_t's. */
       *dirents = apr_hash_make(pool);
-      subpool = svn_pool_create(pool);
       for (hi = apr_hash_first(pool, entries); hi; hi = apr_hash_next(hi))
         {
           const void *key;
           void *val;
-          apr_hash_t *prophash;
           const char *datestring, *entryname, *fullpath;
           svn_fs_dirent_t *fs_entry;
           svn_dirent_t *entry = svn_dirent_create(pool);
 
-          svn_pool_clear(subpool);
+          svn_pool_clear(iterpool);
 
           apr_hash_this(hi, &key, NULL, &val);
           entryname = (const char *) key;
           fs_entry = (svn_fs_dirent_t *) val;
 
-          fullpath = svn_dirent_join(abs_path, entryname, subpool);
+          fullpath = svn_dirent_join(abs_path, entryname, iterpool);
 
           if (dirent_fields & SVN_DIRENT_KIND)
             {
@@ -1562,15 +1560,15 @@ svn_ra_local__get_dir(svn_ra_session_t *
                 entry->size = 0;
               else
                 SVN_ERR(svn_fs_file_length(&(entry->size), root,
-                                           fullpath, subpool));
+                                           fullpath, iterpool));
             }
 
           if (dirent_fields & SVN_DIRENT_HAS_PROPS)
             {
               /* has_props? */
-              SVN_ERR(svn_fs_node_proplist(&prophash, root, fullpath,
-                                           subpool));
-              entry->has_props = (apr_hash_count(prophash) != 0);
+              SVN_ERR(svn_fs_node_has_props(&entry->has_props,
+                                            root, fullpath,
+                                            iterpool));
             }
 
           if ((dirent_fields & SVN_DIRENT_TIME)
@@ -1581,7 +1579,7 @@ svn_ra_local__get_dir(svn_ra_session_t *
               SVN_ERR(svn_repos_get_committed_info(&(entry->created_rev),
                                                    &datestring,
                                                    &(entry->last_author),
-                                                   root, fullpath, subpool));
+                                                   root, fullpath, iterpool));
               if (datestring)
                 SVN_ERR(svn_time_from_cstring(&(entry->time), datestring,
                                               pool));
@@ -1592,7 +1590,7 @@ svn_ra_local__get_dir(svn_ra_session_t *
           /* Store. */
           svn_hash_sets(*dirents, entryname, entry);
         }
-      svn_pool_destroy(subpool);
+      svn_pool_destroy(iterpool);
     }
 
   /* Handle props if requested. */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/util.c Mon 
Apr 13 13:27:51 2015
@@ -1107,7 +1107,9 @@ svn_ra_serf__expect_empty_body(serf_requ
 
   hdrs = serf_bucket_response_get_headers(response);
   val = serf_bucket_headers_get(hdrs, "Content-Type");
-  if (val && strncasecmp(val, "text/xml", sizeof("text/xml") - 1) == 0)
+  if (val
+      && (handler->sline.code < 200 || handler->sline.code >= 300)
+      && strncasecmp(val, "text/xml", sizeof("text/xml") - 1) == 0)
     {
       svn_ra_serf__server_error_t *server_err;
 
@@ -1120,7 +1122,7 @@ svn_ra_serf__expect_empty_body(serf_requ
     }
   else
     {
-      /* The body was not text/xml, so we don't know what to do with it.
+      /* The body was not text/xml, or we got a success code.
          Toss anything that arrives.  */
       handler->discard_body = TRUE;
     }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c Mon Apr 
13 13:27:51 2015
@@ -2083,9 +2083,7 @@ svn_repos_stat(svn_dirent_t **dirent,
   if (kind == svn_node_file)
     SVN_ERR(svn_fs_file_length(&(ent->size), root, path, pool));
 
-  SVN_ERR(svn_fs_node_proplist(&prophash, root, path, pool));
-  if (apr_hash_count(prophash) > 0)
-    ent->has_props = TRUE;
+  SVN_ERR(svn_fs_node_has_props(&ent->has_props, root, path, pool));
 
   SVN_ERR(svn_repos_get_committed_info(&(ent->created_rev),
                                        &datestring,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/x509parse.c Mon 
Apr 13 13:27:51 2015
@@ -685,6 +685,8 @@ x509_get_ext(apr_array_header_t *dnsname
                   *p += len;
                   continue;
                 }
+
+              return svn_error_trace(err);
             }
           else
             {
@@ -1052,7 +1054,7 @@ svn_x509_parse_cert(svn_x509_certinfo_t
    */
   err = asn1_get_tag(&p, end, &len, ASN1_CONSTRUCTED | ASN1_SEQUENCE);
   if (err)
-    return svn_error_create(SVN_ERR_X509_CERT_INVALID_FORMAT, NULL, NULL);
+    return svn_error_create(SVN_ERR_X509_CERT_INVALID_FORMAT, err, NULL);
 
   if (len != (end - p))
     {

Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/deprecated.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/deprecated.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/deprecated.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/deprecated.c Mon 
Apr 13 13:27:51 2015
@@ -948,12 +948,12 @@ svn_wc_delete(const char *path,
 svn_error_t *
 svn_wc_add_from_disk2(svn_wc_context_t *wc_ctx,
                      const char *local_abspath,
-                      const apr_hash_t *props,
+                     const apr_hash_t *props,
                      svn_wc_notify_func2_t notify_func,
                      void *notify_baton,
                      apr_pool_t *scratch_pool)
 {
-  SVN_ERR(svn_wc_add_from_disk3(wc_ctx, local_abspath, NULL, FALSE,
+  SVN_ERR(svn_wc_add_from_disk3(wc_ctx, local_abspath, props, FALSE,
                                  notify_func, notify_baton, scratch_pool));
   return SVN_NO_ERROR;
 }

Modified: 
subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-metadata.sql
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-metadata.sql?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-metadata.sql 
(original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-metadata.sql 
Mon Apr 13 13:27:51 2015
@@ -619,6 +619,11 @@ INSERT OR REPLACE INTO sqlite_stat1(tbl,
 INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
     ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1',           '100 100 1');
 
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+    ('EXTERNALS','sqlite_autoindex_EXTERNALS_1',        '100 100 1');
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+    ('EXTERNALS','I_EXTERNALS_DEFINED',                 '100 100 3 1');
+
 /* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is
    a INTEGER PRIMARY KEY AUTOINCREMENT table */
 

Modified: subversion/branches/move-tracking-2/subversion/mod_dav_svn/liveprops.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/mod_dav_svn/liveprops.c?rev=1673180&r1=1673179&r2=1673180&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/mod_dav_svn/liveprops.c 
(original)
+++ subversion/branches/move-tracking-2/subversion/mod_dav_svn/liveprops.c Mon 
Apr 13 13:27:51 2015
@@ -787,30 +787,58 @@ insert_prop_internal(const dav_resource
 
     case SVN_PROPID_deadprop_count:
       {
-        unsigned int propcount;
-        apr_hash_t *proplist;
-
         if (resource->type != DAV_RESOURCE_TYPE_REGULAR)
           return DAV_PROP_INSERT_NOTSUPP;
 
-        serr = svn_fs_node_proplist(&proplist,
-                                    resource->info->root.root,
-                                    resource->info->repos_path, scratch_pool);
-        if (serr != NULL)
+        if (resource->info->repos->is_svn_client)
           {
-            ap_log_rerror(APLOG_MARK, APLOG_ERR, serr->apr_err,
-                          resource->info->r,
-                          "Can't fetch proplist of '%s': "
-                          "%s",
-                          resource->info->repos_path,
-                          serr->message);
-            svn_error_clear(serr);
-            value = error_value;
-            break;
+            svn_boolean_t has_props;
+            /* Retrieving the actual properties is quite expensive while
+               svn clients only want to know if there are properties, and
+               in many cases aren't interested at all (see r1673153) */
+            serr = svn_fs_node_has_props(&has_props,
+                                         resource->info->root.root,
+                                         resource->info->repos_path,
+                                         scratch_pool);
+
+            if (serr != NULL)
+              {
+                ap_log_rerror(APLOG_MARK, APLOG_ERR, serr->apr_err,
+                              resource->info->r,
+                              "Can't fetch has props of '%s': "
+                              "%s",
+                              resource->info->repos_path,
+                              serr->message);
+                svn_error_clear(serr);
+                value = error_value;
+                break;
+              }
+
+            value = has_props ? "99" /* Magic (undocumented) value */ : "0";
           }
+        else
+          {
+            unsigned int propcount;
+            apr_hash_t *proplist;
+            serr = svn_fs_node_proplist(&proplist,
+                                        resource->info->root.root,
+                                        resource->info->repos_path, 
scratch_pool);
+            if (serr != NULL)
+              {
+                ap_log_rerror(APLOG_MARK, APLOG_ERR, serr->apr_err,
+                              resource->info->r,
+                              "Can't fetch proplist of '%s': "
+                              "%s",
+                              resource->info->repos_path,
+                              serr->message);
+                svn_error_clear(serr);
+                value = error_value;
+                break;
+              }
 
-        propcount = apr_hash_count(proplist);
-        value = apr_psprintf(scratch_pool, "%u", propcount);
+            propcount = apr_hash_count(proplist);
+            value = apr_psprintf(scratch_pool, "%u", propcount);
+          }
         break;
       }
 


Reply via email to