Noorul Islam K M <noo...@collab.net> writes: > Philip Martin <philip.mar...@wandisco.com> writes: > >> Noorul Islam K M <noo...@collab.net> writes: >> >>> +static svn_error_t * >>> +props_only_receiver(void *baton, svn_log_entry_t *log_entry, apr_pool_t >>> *pool) >>> +{ >>> + props_only_receiver_baton_t *rb = baton; >>> + >>> + if (log_entry->changed_paths2) >>> + { >>> + apr_array_header_t *sorted_paths; >>> + int i; >>> + svn_boolean_t text_modified = FALSE; >>> + >>> + /* Get an array of sorted hash keys. */ >>> + sorted_paths = svn_sort__hash(log_entry->changed_paths2, >>> + svn_sort_compare_items_as_paths, pool); >> >> Why sort? >> > > I just used an existing function. If this is going to be performance hit > then I can modify this part.
Sorting when not necessary is a performance penalty. Why not simply iterate over the hash? > >>> + >>> + for (i = 0; i < sorted_paths->nelts; i++) >>> + { >>> + svn_sort__item_t *item = &(APR_ARRAY_IDX(sorted_paths, i, >>> + svn_sort__item_t)); >>> + svn_log_changed_path2_t *log_item >>> + = apr_hash_get(log_entry->changed_paths2, item->key, >>> item->klen); >>> + >>> + if (log_item->text_modified == svn_tristate_true) >>> + { >>> + text_modified = TRUE; >>> + break; >>> + } >>> + >>> + } >>> + >>> + if ((text_modified && rb->props_only) >>> + || (! text_modified && rb->ignore_props_only)) >>> + return SVN_NO_ERROR; >>> + } >>> + >>> + if (! rb->discover_changed_paths) >>> + log_entry->changed_paths2 = NULL; >> >> Set changed_paths as well? >> > > This is necessary because, if the user is not passing the verbose option > then they are not requesting this particular detail. > > But I have to pass discover_changed_paths as TRUE for these new options > because changed_paths2 information is required to filter. If you set changed_paths2 to NULL I think you need to set changed_paths to NULL as well. -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com