Fix issue #3067, 'subtrees that don't exist at the start or end of a merge range shouldn't break the merge' Fixes the core problem of issue #3076: Don't try to describe invalid subtrees to the merge report editor. Also fixes the ancillary problem described in http://subversion.tigris.org/issues/show_bug.cgi?id=3067#desc34 where subtrees with empty mergeinfo don't get their mergeinfo updated properly. * subversion/libsvn_client/merge.c (init_rangelist, push_range): New helpers. (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 its nearest parent if target is a subtree. Update call to filter_merged_revisions(). (populate_remaining_ranges, do_file_merge): Update calls to calculate_remaining_ranges(). (get_mergeinfo_walk_cb): Stop doing any 'preemptive' elision on subtrees. This leaves a local mod on the subtree and the subtree is to be deleted by the requested merge,the local mod will cause the subtree to be skipped. Just add subtrees with empty mergeinfo and let prepare_subtree_ranges() handle it. (get_mergeinfo_paths): Note in doc string that we always include children with empty mergeinfo. * subversion/tests/cmdline/merge_tests.py (dont_merge_revs_into_subtree_that_predate_it): Remove comment about XFail. Tweak expected merge notification range output. (subtrees_with_empty_mergeinfo): Remove comment about XFail. (test_list): Remove XFail from subtrees_with_empty_mergeinfo and dont_merge_revs_into_subtree_that_predate_it. Patch by: me, kameshj