+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
Received on 2012-12-20 15:39:46 CET