[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1166332 - in /subversion/trunk/subversion: libsvn_delta/compat.c tests/libsvn_delta/editor-test.c

From: Hyrum K Wright <hyrum.wright_at_wandisco.com>
Date: Tue, 13 Sep 2011 15:20:17 -0500

On Wed, Sep 7, 2011 at 10:52 PM, Daniel Shahaf <d.s_at_daniel.shahaf.name> wrote:
> hwright_at_apache.org wrote on Wed, Sep 07, 2011 at 19:36:01 -0000:
>> @@ -276,6 +345,60 @@ ev2_close_edit(void *edit_baton,
>>                 apr_pool_t *scratch_pool)
>>  {
>>    struct ev2_edit_baton *eb = edit_baton;
>> +  apr_array_header_t *sorted_hash;
>> +  apr_pool_t *iterpool;
>> +  int i;
>> +
>> +  /* Sort the paths touched by this edit.
>> +   * Ev2 doesn't really have any particular need for depth-first-ness, but
>> +   * we want to ensure all parent directories are handled before children in
>> +   * the case of adds (which does introduce an element of depth-first-ness). */
>> +  sorted_hash = svn_sort__hash(eb->paths, svn_sort_compare_items_as_paths,
>> +                               scratch_pool);
>> +
>> +  iterpool = svn_pool_create(scratch_pool);
>> +  for (i = 0; i < sorted_hash->nelts; i++)
>> +    {
>> +      svn_sort__item_t *item = &APR_ARRAY_IDX(sorted_hash, i, svn_sort__item_t);
>> +      apr_array_header_t *actions = item->value;
>> +      const char *path = item->key;
>> +      apr_hash_t *props;
>> +      int j;
>> +
>> +      svn_pool_clear(iterpool);
>> +
>> +      props = apr_hash_make(iterpool);
>> +
>> +      /* Go through all of our actions, populating various datastructures
>> +       * dependent on them. */
>> +      for (j = 0; j < actions->nelts; j++)
>> +        {
>> +          struct path_action *action = APR_ARRAY_IDX(actions, j,
>> +                                                     struct path_action *);
>> +
>> +          switch (action->action)
>> +            {
>> +              case set_prop:
>> +                {
>> +                  struct prop_args *p_args = action->args;
>> +
>> +                  apr_hash_set(props, p_args->name, APR_HASH_KEY_STRING,
>> +                               p_args->value);
>> +                  break;
>> +                }
>> +
>> +              default:
>> +                break;
>> +            }
>> +        }
>> +
>> +      /* We've now got a wholistic view of what has happened to this node,
>> +       * so we can call our own editor APIs on it. */
>> +      if (apr_hash_count(props) > 0)
>
> What if ACTIONS contains only property deletions?

I *think* I addressed this in subsequent commits, but it did raise a
question which I added to svn_editor.h.

-Hyrum

>> +        SVN_ERR(svn_editor_set_props(eb->editor, path, SVN_INVALID_REVNUM,
>> +                                     props, TRUE));
>> +    }
>> +  svn_pool_destroy(iterpool);
>>
>>    return svn_error_trace(svn_editor_complete(eb->editor));
>>  }
>

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com/
Received on 2011-09-13 22:20:52 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.