More work in issue #2953.  Change the way merge source normalization happens to account for the annoyance that given a segment of path FOO and revision coverage from N to M (inclusive), you can't actually do anything useful unless you expand the range to N-1 (exclusive) to M (inclusive), and path location for N-1 (which might not be FOO, but perhaps is whatever FOO was copied from in rN).
More work in issue #2953.  Change the way merge source normalization
happens to account for the annoyance that given a segment of path FOO
and revision coverage from N to M (inclusive), you can't actually do
anything useful unless you expand the range to N-1 (exclusive) to M
(inclusive), and path location for N-1 (which might not be FOO, but
perhaps is whatever FOO was copied from in rN).

Sadly, I'm having trouble figuring out what to do with gaps in the
history, so this code remains dead at the moment.  :-(

* subversion/libsvn_client/merge.c
  (merge_source_link_t, struct nls_receiver_baton_t, merge_source_ranges_t): 
    Removed structures.
  (merge_source_t): New structure.
  (merge_source_link_split, nls_receiver, merge_source_links_to_array):
    Removed functions.
  (compare_merge_source_ts, combine_range_with_segments): New functions.
  (normalize_merge_sources): Add 'ctx' parameter, and rework this function
    to fetch segment locations in full, combine those with the ranges,
    and then return the results.

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion