+1 on this patch. All looks good, just one minor point below. Bert Huijben wrote:
> URL: http://svn.apache.org/viewvc?rev=1424469&view=rev > Log: > In the repository-repository diff handler: Don't retrieve pristine > properties > when we already know that there are no differences to report on them. > > By checking whether we really need the properties we avoid about 1000 ra calls > over running our test suite (ra local). This also resolves many spurious merge > changes that just change entry props. > > On top of that stop reporting entry prop only changes as a file/directory > change to avoid doing unneeded work in the merge and diff handling. > > This fixes some issues identified when the merge code was updated to do a > better obstruction detection, as originally we just skipped these non-changes > there in the merge code. > > It is possible that this obscures some tree conflicts which were identified by > entry prop changes that should have been detected by the real change down the > tree (which might have been skipped). > > * subversion/libsvn_client/repos_diff.c > (dir_baton, > file_baton): Add has_propchange boolean. > (close_file, > close_directory): Only retrieve the pristine properties if we may be going > to use them in a callback. > > (change_file_prop, > change_dir_prop): Detect if we have a real property change and if we have > store that information. > > * subversion/tests/cmdline/merge_reintegrate_tests.py > (reintegrate_on_shallow_wc): Don't assume to get spurious change event. > > * subversion/tests/cmdline/merge_tests.py > (merge_to_sparse_directories): Don't expect entry prop change only skips. > > * subversion/tests/cmdline/merge_tree_conflict_tests.py > (tree_conflicts_merge_edit_onto_missing, > tree_conflicts_merge_del_onto_missing): > Remove some unexpected change notifications. > Modified: subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py > ============================================================================== > @@ -825,15 +825,6 @@ def reintegrate_on_shallow_wc(sbox): > 'Some more work on the A_COPY branch', wc_dir) > # Reuse the same expectations as the prior merge, except that > # non-inheritable mergeinfo is set on the root of the missing subtree... You deleted the code that "except that..." refers to. (It was expecting non-inheritable mergeinfo '/A_COPY/D:2-4*'.) > - expected_mergeinfo_output.add({ > - 'D' : Item(status=' U') > - }) > - expected_A_status.tweak('D', status=' M') > - expected_A_disk.tweak('D', props={SVN_PROP_MERGEINFO : > '/A_COPY/D:2-4*'}) > - # ... a depth-restricted item is skipped ... > - expected_A_skip.add({ > - 'D/H' : Item() > - }) > # ... and the mergeinfo on the target root includes the latest rev on the > branch. > expected_A_disk.tweak('', props={SVN_PROP_MERGEINFO : > '/A_COPY:2-4'}) > svntest.actions.run_and_verify_merge(A_path, None, None, - Julian