Fix issue #3067, 'subtrees that don't exist at the start or end of a merge range shouldn't break the merge' Fix the core problem of issue #3076: Don't try to describe invalid subtrees to the merge report editor. * subversion/libsvn_client/merge.c (init_rangelist, push_range): New helpers. (does_merge_delete_subtree): New helper for filter_merged_revisions() when operating on a subtree. (prepare_subtree_ranges): New helper for filter_merged_revisions() when operating on subtrees. (filter_merged_revisions): Use new prepare_subtree_ranges() helper to address various issue #3067 problems. Do away with entry argument and instead pass a svn_client__merge_path_t representing the working copy target path, along with another svn_client__merge_path_t representing the path's parent if the path is a subtree. Cascade some additional args from calculate_remaining_ranges(). (calculate_remaining_ranges): Improve doc string. Tweak signature to get svn_client__merge_path_t for target and parent if a subtree. Update call to filter_merged_revisions(). (populate_remaining_ranges, do_file_merge): Update calls to calculate_remaining_ranges(). * subversion/tests/cmdline/merge_tests.py (dont_merge_revs_into_subtree_that_predate_it): Remove comment about XFail. Tweak expected merge notification range output. (test_list): Remove XFail from dont_merge_revs_into_subtree_that_predate_it. Patch by: me, kameshj