This change breaks the api contract of svn_ra_replay_range() * If @a send_deltas is @c TRUE, the actual text and property changes in
* the revision will be sent, otherwise dummy text deltas and NULL property * changes will be sent instead. Bert On Fri, Feb 24, 2012 at 7:29 PM, <hwri...@apache.org> wrote: > Author: hwright > Date: Fri Feb 24 18:29:43 2012 > New Revision: 1293375 > > URL: http://svn.apache.org/viewvc?rev=1293375&view=rev > Log: > When replaying revisions, actually send real prop changes, rather than > "dummy" > ones. This is a general correctness fix of an abuse of the delta editor, > but > this change also fixes an Ev2 test failure. > > Current number of Ev2 test failures: 5 > > * subversion/libsvn_repos/replay.c > (path_drive_cb_func): Always send bona fide prop mods. > > Modified: > subversion/trunk/subversion/libsvn_repos/replay.c > > Modified: subversion/trunk/subversion/libsvn_repos/replay.c > URL: > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/replay.c?rev=1293375&r1=1293374&r2=1293375&view=diff > > ============================================================================== > --- subversion/trunk/subversion/libsvn_repos/replay.c (original) > +++ subversion/trunk/subversion/libsvn_repos/replay.c Fri Feb 24 18:29:43 > 2012 > @@ -597,45 +597,31 @@ path_driver_cb_func(void **dir_baton, > { > if (change->prop_mod) > { > - if (cb->compare_root) > - { > - apr_array_header_t *prop_diffs; > - apr_hash_t *old_props; > - apr_hash_t *new_props; > - int i; > - > - if (source_root) > - SVN_ERR(svn_fs_node_proplist(&old_props, source_root, > - source_fspath, pool)); > - else > - old_props = apr_hash_make(pool); > - > - SVN_ERR(svn_fs_node_proplist(&new_props, root, edit_path, > pool)); > - > - SVN_ERR(svn_prop_diffs(&prop_diffs, new_props, old_props, > - pool)); > - > - for (i = 0; i < prop_diffs->nelts; ++i) > - { > - svn_prop_t *pc = &APR_ARRAY_IDX(prop_diffs, i, > svn_prop_t); > - if (change->node_kind == svn_node_dir) > - SVN_ERR(editor->change_dir_prop(*dir_baton, pc->name, > - pc->value, pool)); > - else if (change->node_kind == svn_node_file) > - SVN_ERR(editor->change_file_prop(file_baton, > pc->name, > - pc->value, pool)); > - } > - } > + apr_array_header_t *prop_diffs; > + apr_hash_t *old_props; > + apr_hash_t *new_props; > + int i; > + > + if (source_root) > + SVN_ERR(svn_fs_node_proplist(&old_props, source_root, > + source_fspath, pool)); > else > + old_props = apr_hash_make(pool); > + > + SVN_ERR(svn_fs_node_proplist(&new_props, root, edit_path, > pool)); > + > + SVN_ERR(svn_prop_diffs(&prop_diffs, new_props, old_props, > + pool)); > + > + for (i = 0; i < prop_diffs->nelts; ++i) > { > - /* Just do a dummy prop change to signal that there are > *any* > - propmods. */ > - if (change->node_kind == svn_node_dir) > - SVN_ERR(editor->change_dir_prop(*dir_baton, "", NULL, > - pool)); > - else if (change->node_kind == svn_node_file) > - SVN_ERR(editor->change_file_prop(file_baton, "", NULL, > - pool)); > + svn_prop_t *pc = &APR_ARRAY_IDX(prop_diffs, i, svn_prop_t); > + if (change->node_kind == svn_node_dir) > + SVN_ERR(editor->change_dir_prop(*dir_baton, pc->name, > + pc->value, pool)); > + else if (change->node_kind == svn_node_file) > + SVN_ERR(editor->change_file_prop(file_baton, pc->name, > + pc->value, pool)); > } > } > > > >