+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

Reply via email to