You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2010/03/10 19:28:10 UTC

svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Author: cmpilato
Date: Wed Mar 10 18:28:10 2010
New Revision: 921503

URL: http://svn.apache.org/viewvc?rev=921503&view=rev
Log:
Continue doing what it takes to get deprecated stuff into deprecated.c.

* subversion/libsvn_wc/wc.h
  (svn_wc__process_committed_internal): New prototype (and real
    docstring!) for what was adm_ops.c:process_committed_internal().
  (svn_wc__prop_array_to_hash): New prototype (for the function that
    was adm_ops.c:convert_to_hash()).

* subversion/libsvn_wc/adm_ops.c
  (svn_wc__prop_array_to_hash): Was convert_to_hash().
  (svn_wc_queue_committed3): Track renamed function.
  (svn_wc__process_committed_internal): Was process_committed_internal().
  (svn_wc_process_committed_queue2): Track renamed function.
  (svn_wc_process_committed4): Move to deprecated.c

* subversion/libsvn_wc/deprecated.c
  (): Include some necessary headers (svn_time.h, workqueue.h).
  (svn_wc_process_committed4): Moved here from adm_ops.c.  Also, track
    renamed functions.

Modified:
    subversion/trunk/subversion/libsvn_wc/adm_ops.c
    subversion/trunk/subversion/libsvn_wc/deprecated.c
    subversion/trunk/subversion/libsvn_wc/wc.h

Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=921503&r1=921502&r2=921503&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Wed Mar 10 18:28:10 2010
@@ -459,19 +459,19 @@ process_committed_leaf(svn_wc__db_t *db,
 
 
 /* Sets *ADM_ABSPATH to the path of the work queue. */
-static svn_error_t *
-process_committed_internal(svn_wc__db_t *db,
-                           const char *local_abspath,
-                           svn_boolean_t recurse,
-                           svn_revnum_t new_revnum,
-                           apr_time_t new_date,
-                           const char *rev_author,
-                           apr_hash_t *new_dav_cache,
-                           svn_boolean_t no_unlock,
-                           svn_boolean_t keep_changelist,
-                           const svn_checksum_t *checksum,
-                           const svn_wc_committed_queue_t *queue,
-                           apr_pool_t *scratch_pool)
+svn_error_t *
+svn_wc__process_committed_internal(svn_wc__db_t *db,
+                                   const char *local_abspath,
+                                   svn_boolean_t recurse,
+                                   svn_revnum_t new_revnum,
+                                   apr_time_t new_date,
+                                   const char *rev_author,
+                                   apr_hash_t *new_dav_cache,
+                                   svn_boolean_t no_unlock,
+                                   svn_boolean_t keep_changelist,
+                                   const svn_checksum_t *checksum,
+                                   const svn_wc_committed_queue_t *queue,
+                                   apr_pool_t *scratch_pool)
 {
   svn_wc__db_kind_t kind;
 
@@ -533,13 +533,14 @@ process_committed_internal(svn_wc__db_t 
              this one committed item. */
           if (kind == svn_wc__db_kind_dir)
             {
-              SVN_ERR(process_committed_internal(db, this_abspath,
-                                                 TRUE /* recurse */,
-                                                 new_revnum, new_date,
-                                                 rev_author,
-                                                 NULL, TRUE /* no_unlock */,
-                                                 keep_changelist, NULL,
-                                                 queue, iterpool));
+              SVN_ERR(svn_wc__process_committed_internal(db, this_abspath,
+                                                         TRUE /* recurse */,
+                                                         new_revnum, new_date,
+                                                         rev_author,
+                                                         NULL,
+                                                         TRUE /* no_unlock */,
+                                                         keep_changelist, NULL,
+                                                         queue, iterpool));
               SVN_ERR(svn_wc__wq_run(db, this_abspath, NULL, NULL, iterpool));
             }
           else
@@ -576,10 +577,9 @@ process_committed_internal(svn_wc__db_t 
 }
 
 
-/* */
-static apr_hash_t *
-convert_to_hash(const apr_array_header_t *wcprop_changes,
-                apr_pool_t *result_pool)
+apr_hash_t *
+svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
+                           apr_pool_t *result_pool)
 {
   int i;
   apr_hash_t *dav_cache;
@@ -642,7 +642,7 @@ svn_wc_queue_committed3(svn_wc_committed
   cqi->no_unlock = !remove_lock;
   cqi->keep_changelist = !remove_changelist;
   cqi->checksum = checksum;
-  cqi->new_dav_cache = convert_to_hash(wcprop_changes, queue->pool);
+  cqi->new_dav_cache = svn_wc__prop_array_to_hash(wcprop_changes, queue->pool);
 
   APR_ARRAY_PUSH(queue->queue, committed_queue_item_t *) = cqi;
 
@@ -704,13 +704,14 @@ svn_wc_process_committed_queue2(svn_wc_c
       if (queue->have_recursive && have_recursive_parent(queue->queue, i))
         continue;
 
-      SVN_ERR(process_committed_internal(wc_ctx->db, cqi->local_abspath,
-                                         cqi->recurse,
-                                         new_revnum, new_date, rev_author,
-                                         cqi->new_dav_cache,
-                                         cqi->no_unlock,
-                                         cqi->keep_changelist,
-                                         cqi->checksum, queue, iterpool));
+      SVN_ERR(svn_wc__process_committed_internal(wc_ctx->db, cqi->local_abspath,
+                                                 cqi->recurse, new_revnum,
+                                                 new_date, rev_author,
+                                                 cqi->new_dav_cache,
+                                                 cqi->no_unlock,
+                                                 cqi->keep_changelist,
+                                                 cqi->checksum, queue,
+                                                 iterpool));
 
       SVN_ERR(svn_wc__wq_run(wc_ctx->db, cqi->local_abspath, NULL, NULL,
                              iterpool));
@@ -723,48 +724,6 @@ svn_wc_process_committed_queue2(svn_wc_c
   return SVN_NO_ERROR;
 }
 
-svn_error_t *
-svn_wc_process_committed4(const char *path,
-                          svn_wc_adm_access_t *adm_access,
-                          svn_boolean_t recurse,
-                          svn_revnum_t new_revnum,
-                          const char *rev_date,
-                          const char *rev_author,
-                          const apr_array_header_t *wcprop_changes,
-                          svn_boolean_t remove_lock,
-                          svn_boolean_t remove_changelist,
-                          const unsigned char *digest,
-                          apr_pool_t *pool)
-{
-  svn_wc__db_t *db = svn_wc__adm_get_db(adm_access);
-  const char *local_abspath;
-  const svn_checksum_t *checksum;
-  apr_time_t new_date;
-
-  if (rev_date)
-    SVN_ERR(svn_time_from_cstring(&new_date, rev_date, pool));
-  else
-    new_date = 0;
-
-  if (digest)
-    checksum = svn_checksum__from_digest(digest, svn_checksum_md5, pool);
-  else
-    checksum = NULL;
-
-  SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
-
-  SVN_ERR(process_committed_internal(db, local_abspath, recurse,
-                                     new_revnum, new_date, rev_author,
-                                     convert_to_hash(wcprop_changes, pool),
-                                     !remove_lock,!remove_changelist,
-                                     checksum, NULL,
-                                     pool));
-
-  /* Run the log file(s) we just created. */
-  return svn_error_return(svn_wc__wq_run(db, local_abspath, NULL, NULL, pool));
-}
-
-
 
 /* Recursively mark a tree DIR_ABSPATH with schedule svn_wc_schedule_delete
    and a KEEP_LOCAL flag. */

Modified: subversion/trunk/subversion/libsvn_wc/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/deprecated.c?rev=921503&r1=921502&r2=921503&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_wc/deprecated.c Wed Mar 10 18:28:10 2010
@@ -30,6 +30,7 @@
 #include "svn_subst.h"
 #include "svn_pools.h"
 #include "svn_props.h"
+#include "svn_time.h"
 #include "svn_dirent_uri.h"
 
 #include "private/svn_wc_private.h"
@@ -37,6 +38,7 @@
 #include "wc.h"
 #include "lock.h"
 #include "props.h"
+#include "workqueue.h"
 
 #include "svn_private_config.h"
 
@@ -547,6 +549,49 @@ svn_wc_get_pristine_contents(svn_stream_
 
 
 svn_error_t *
+svn_wc_process_committed4(const char *path,
+                          svn_wc_adm_access_t *adm_access,
+                          svn_boolean_t recurse,
+                          svn_revnum_t new_revnum,
+                          const char *rev_date,
+                          const char *rev_author,
+                          const apr_array_header_t *wcprop_changes,
+                          svn_boolean_t remove_lock,
+                          svn_boolean_t remove_changelist,
+                          const unsigned char *digest,
+                          apr_pool_t *pool)
+{
+  svn_wc__db_t *db = svn_wc__adm_get_db(adm_access);
+  const char *local_abspath;
+  const svn_checksum_t *checksum;
+  apr_time_t new_date;
+  apr_hash_t *wcprop_changes_hash;
+
+  if (rev_date)
+    SVN_ERR(svn_time_from_cstring(&new_date, rev_date, pool));
+  else
+    new_date = 0;
+
+  if (digest)
+    checksum = svn_checksum__from_digest(digest, svn_checksum_md5, pool);
+  else
+    checksum = NULL;
+
+  SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
+
+  wcprop_changes_hash = svn_wc__prop_array_to_hash(wcprop_changes, pool);
+  SVN_ERR(svn_wc__process_committed_internal(db, local_abspath, recurse,
+                                             new_revnum, new_date, rev_author,
+                                             wcprop_changes_hash,
+                                             !remove_lock, !remove_changelist,
+                                             checksum, NULL, pool));
+
+  /* Run the log file(s) we just created. */
+  return svn_error_return(svn_wc__wq_run(db, local_abspath, NULL, NULL, pool));
+}
+
+
+svn_error_t *
 svn_wc_process_committed3(const char *path,
                           svn_wc_adm_access_t *adm_access,
                           svn_boolean_t recurse,

Modified: subversion/trunk/subversion/libsvn_wc/wc.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc.h?rev=921503&r1=921502&r2=921503&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc.h (original)
+++ subversion/trunk/subversion/libsvn_wc/wc.h Wed Mar 10 18:28:10 2010
@@ -191,6 +191,44 @@ apr_pool_t *
 svn_wc__get_committed_queue_pool(struct svn_wc_committed_queue_t *queue);
 
 
+/** Internal helper for svn_wc_process_committed_queue2().
+ *
+ * Bump an item from @a queue (the one associated with @a
+ * local_abspath) to @a new_revnum after a commit succeeds, recursing
+ * if @a recurse is set.
+ *
+ * @a new_date is the (server-side) date of the new revision, or 0.
+ *
+ * @a rev_author is the (server-side) author of the new
+ * revision; it may be @c NULL.
+ *
+ * @a new_dav_cache is a hash of dav property changes to be made to
+ * the @a local_abspath.
+ *
+ * If @a no_unlock is set, don't release any user locks on @a
+ * local_abspath; otherwise release them as part of this processing.
+ *
+ * If @keep_changelist is set, don't remove any changeset assignments
+ * from @a local_abspath; otherwise, clear it of such assignments.
+ *
+ * If @a local_abspath is a file and @a checksum is non-NULL, use @a checksum
+ * as the checksum for the new text base. Otherwise, calculate the checksum
+ * if needed.
+ */
+svn_error_t *
+svn_wc__process_committed_internal(svn_wc__db_t *db,
+                                   const char *local_abspath,
+                                   svn_boolean_t recurse,
+                                   svn_revnum_t new_revnum,
+                                   apr_time_t new_date,
+                                   const char *rev_author,
+                                   apr_hash_t *new_dav_cache,
+                                   svn_boolean_t no_unlock,
+                                   svn_boolean_t keep_changelist,
+                                   const svn_checksum_t *checksum,
+                                   const svn_wc_committed_queue_t *queue,
+                                   apr_pool_t *scratch_pool);
+
 
 /*** Update traversals. ***/
 
@@ -273,6 +311,27 @@ struct svn_wc_traversal_info_t
 /* Ensure that DIR exists. */
 svn_error_t *svn_wc__ensure_directory(const char *path, apr_pool_t *pool);
 
+
+/* Return a hash keyed by 'const char *' property names and with
+   'svn_string_t *' values built from PROPS (which is an array of
+   pointers to svn_prop_t's) or to NULL if PROPS is NULL or empty.
+   PROPS items which lack a value will be ignored.  If PROPS contains
+   multiple properties with the same name, each successive such item
+   reached in a walk from the beginning to the end of the array will
+   overwrite the previous in the returned hash.
+
+   NOTE: While the returned hash will be allocated in RESULT_POOL, the
+   items it holds will share storage with those in PROPS.
+
+   ### This is rather the reverse of svn_prop_hash_to_array(), except
+   ### that function's arrays contains svn_prop_t's, whereas this
+   ### one's contains *pointers* to svn_prop_t's.  So much for
+   ### consistency.  */
+apr_hash_t *
+svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
+                           apr_pool_t *result_pool);
+
+
 /* Baton for svn_wc__compat_call_notify_func below. */
 typedef struct svn_wc__compat_notify_baton_t {
   /* Wrapped func/baton. */



Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Wed, 2010-03-17, C. Michael Pilato wrote:
> Julian Foad wrote:
> > On Thu, 2010-03-11, I (Julian Foad) wrote:
> >> Excellent, too.  Just one nit: it looks like you intended to rename the
> >> argument "wcprop_changes" to "props".
> > 
> > Renamed in r924229.
> 
> Thanks.  For the record, I hadn't ignored your review -- I just had left the
> changes sitting uncommitted in my working copy yesterday when Distraction
> #1587 came to visit or something.

No problem.  I just came back to it because I'm trying to understand the
code that uses it.

- Julian


Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Wed, 2010-03-17, C. Michael Pilato wrote:
> Julian Foad wrote:
> > On Thu, 2010-03-11, I (Julian Foad) wrote:
> >> Excellent, too.  Just one nit: it looks like you intended to rename the
> >> argument "wcprop_changes" to "props".
> > 
> > Renamed in r924229.
> 
> Thanks.  For the record, I hadn't ignored your review -- I just had left the
> changes sitting uncommitted in my working copy yesterday when Distraction
> #1587 came to visit or something.

No problem.  I just came back to it because I'm trying to understand the
code that uses it.

- Julian



Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by "C. Michael Pilato" <cm...@collab.net>.
Julian Foad wrote:
> On Thu, 2010-03-11, I (Julian Foad) wrote:
>> Excellent, too.  Just one nit: it looks like you intended to rename the
>> argument "wcprop_changes" to "props".
> 
> Renamed in r924229.

Thanks.  For the record, I hadn't ignored your review -- I just had left the
changes sitting uncommitted in my working copy yesterday when Distraction
#1587 came to visit or something.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by "C. Michael Pilato" <cm...@collab.net>.
Julian Foad wrote:
> On Thu, 2010-03-11, I (Julian Foad) wrote:
>> Excellent, too.  Just one nit: it looks like you intended to rename the
>> argument "wcprop_changes" to "props".
> 
> Renamed in r924229.

Thanks.  For the record, I hadn't ignored your review -- I just had left the
changes sitting uncommitted in my working copy yesterday when Distraction
#1587 came to visit or something.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Thu, 2010-03-11, I (Julian Foad) wrote:
> Excellent, too.  Just one nit: it looks like you intended to rename the
> argument "wcprop_changes" to "props".

Renamed in r924229.

- Julian



Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Thu, 2010-03-11, I (Julian Foad) wrote:
> Excellent, too.  Just one nit: it looks like you intended to rename the
> argument "wcprop_changes" to "props".

Renamed in r924229.

- Julian


Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Wed, 2010-03-10, cmpilato@apache.org wrote:
> Author: cmpilato
> Date: Wed Mar 10 18:28:10 2010
> New Revision: 921503
> 
> URL: http://svn.apache.org/viewvc?rev=921503&view=rev
> Log:
> Continue doing what it takes to get deprecated stuff into deprecated.c.
> 
> * subversion/libsvn_wc/wc.h
>   (svn_wc__process_committed_internal): New prototype (and real
>     docstring!)

Hoorrah!  Thank you, Mike.

>  for what was adm_ops.c:process_committed_internal().

>   (svn_wc__prop_array_to_hash): New prototype (for the function that
>     was adm_ops.c:convert_to_hash()).

Excellent, too.  Just one nit: it looks like you intended to rename the
argument "wcprop_changes" to "props".

- Julian


[...]
> -/* */
> -static apr_hash_t *
> -convert_to_hash(const apr_array_header_t *wcprop_changes,
> -                apr_pool_t *result_pool)
> +apr_hash_t *
> +svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
> +                           apr_pool_t *result_pool)
[...]
> +/* Return a hash keyed by 'const char *' property names and with
> +   'svn_string_t *' values built from PROPS (which is an array of
> +   pointers to svn_prop_t's) or to NULL if PROPS is NULL or empty.
> +   PROPS items which lack a value will be ignored.  If PROPS contains
> +   multiple properties with the same name, each successive such item
> +   reached in a walk from the beginning to the end of the array will
> +   overwrite the previous in the returned hash.
> +
> +   NOTE: While the returned hash will be allocated in RESULT_POOL, the
> +   items it holds will share storage with those in PROPS.
> +
> +   ### This is rather the reverse of svn_prop_hash_to_array(), except
> +   ### that function's arrays contains svn_prop_t's, whereas this
> +   ### one's contains *pointers* to svn_prop_t's.  So much for
> +   ### consistency.  */
> +apr_hash_t *
> +svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
> +                           apr_pool_t *result_pool);
> +
> +
>  /* Baton for svn_wc__compat_call_notify_func below. */
>  typedef struct svn_wc__compat_notify_baton_t {
>    /* Wrapped func/baton. */
> 
> 


Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Wed, 2010-03-10, cmpilato@apache.org wrote:
> Author: cmpilato
> Date: Wed Mar 10 18:28:10 2010
> New Revision: 921503
> 
> URL: http://svn.apache.org/viewvc?rev=921503&view=rev
> Log:
> Continue doing what it takes to get deprecated stuff into deprecated.c.
> 
> * subversion/libsvn_wc/wc.h
>   (svn_wc__process_committed_internal): New prototype (and real
>     docstring!)

Hoorrah!  Thank you, Mike.

>  for what was adm_ops.c:process_committed_internal().

>   (svn_wc__prop_array_to_hash): New prototype (for the function that
>     was adm_ops.c:convert_to_hash()).

Excellent, too.  Just one nit: it looks like you intended to rename the
argument "wcprop_changes" to "props".

- Julian


[...]
> -/* */
> -static apr_hash_t *
> -convert_to_hash(const apr_array_header_t *wcprop_changes,
> -                apr_pool_t *result_pool)
> +apr_hash_t *
> +svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
> +                           apr_pool_t *result_pool)
[...]
> +/* Return a hash keyed by 'const char *' property names and with
> +   'svn_string_t *' values built from PROPS (which is an array of
> +   pointers to svn_prop_t's) or to NULL if PROPS is NULL or empty.
> +   PROPS items which lack a value will be ignored.  If PROPS contains
> +   multiple properties with the same name, each successive such item
> +   reached in a walk from the beginning to the end of the array will
> +   overwrite the previous in the returned hash.
> +
> +   NOTE: While the returned hash will be allocated in RESULT_POOL, the
> +   items it holds will share storage with those in PROPS.
> +
> +   ### This is rather the reverse of svn_prop_hash_to_array(), except
> +   ### that function's arrays contains svn_prop_t's, whereas this
> +   ### one's contains *pointers* to svn_prop_t's.  So much for
> +   ### consistency.  */
> +apr_hash_t *
> +svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
> +                           apr_pool_t *result_pool);
> +
> +
>  /* Baton for svn_wc__compat_call_notify_func below. */
>  typedef struct svn_wc__compat_notify_baton_t {
>    /* Wrapped func/baton. */
> 
> 



Re: svn commit: r921503 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c deprecated.c wc.h

Posted by Julian Foad <ju...@wandisco.com>.
On Wed, 2010-03-10, cmpilato@apache.org wrote:
> Author: cmpilato
> Date: Wed Mar 10 18:28:10 2010
> New Revision: 921503
> 
> URL: http://svn.apache.org/viewvc?rev=921503&view=rev
> Log:
> Continue doing what it takes to get deprecated stuff into deprecated.c.
> 
> * subversion/libsvn_wc/wc.h
>   (svn_wc__process_committed_internal): New prototype (and real
>     docstring!)

Hoorrah!  Thank you, Mike.

>  for what was adm_ops.c:process_committed_internal().

>   (svn_wc__prop_array_to_hash): New prototype (for the function that
>     was adm_ops.c:convert_to_hash()).

Excellent, too.  Just one nit: it looks like you intended to rename the
argument "wcprop_changes" to "props".

- Julian


[...]
> -/* */
> -static apr_hash_t *
> -convert_to_hash(const apr_array_header_t *wcprop_changes,
> -                apr_pool_t *result_pool)
> +apr_hash_t *
> +svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
> +                           apr_pool_t *result_pool)
[...]
> +/* Return a hash keyed by 'const char *' property names and with
> +   'svn_string_t *' values built from PROPS (which is an array of
> +   pointers to svn_prop_t's) or to NULL if PROPS is NULL or empty.
> +   PROPS items which lack a value will be ignored.  If PROPS contains
> +   multiple properties with the same name, each successive such item
> +   reached in a walk from the beginning to the end of the array will
> +   overwrite the previous in the returned hash.
> +
> +   NOTE: While the returned hash will be allocated in RESULT_POOL, the
> +   items it holds will share storage with those in PROPS.
> +
> +   ### This is rather the reverse of svn_prop_hash_to_array(), except
> +   ### that function's arrays contains svn_prop_t's, whereas this
> +   ### one's contains *pointers* to svn_prop_t's.  So much for
> +   ### consistency.  */
> +apr_hash_t *
> +svn_wc__prop_array_to_hash(const apr_array_header_t *wcprop_changes,
> +                           apr_pool_t *result_pool);
> +
> +
>  /* Baton for svn_wc__compat_call_notify_func below. */
>  typedef struct svn_wc__compat_notify_baton_t {
>    /* Wrapped func/baton. */
> 
>