Fix issue #4421, diff --summarize crashes when diffing deeply added trees.

This issue basically boils down to our diff implementation starting to use
multiple component targets after r1201824 (which was backported to 1.7.x in
1207351).  However, ra_serf and ra_neon don't properly deal with multiple
component targets since our API says you can't use them.  This change only
is known to make using svn_ra_do_diff*() with a multiple component target safe
since the other update report paths are still protected against multiple
component targets with assertions.

1.8.x and trunk have already fixed this by a much more complicated change to
the diff implementation to avoid using multiple component targets entirely.

* subversion/libsvn_ra_neon/fetch.c
  (start_element): calculate the proper root to account for multiple component
    targets.

* subversion/libsvn_ra_serf/update.c
  (open_dir): use the lack of a parent_dir as indication of root, not an
    empty base_name.
  (start_report): calculate the proper root to account for multiple component
    targets.

* subversion/tests/cmdline/diff_tests.py
  (basic_diff_summarize): Add test cases that excercise the issue.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/1.7.x-issue4421@1521673 13f79535-47bb-0310-9956-ffa450edef68
3 files changed