Support setting and elision of empty rev range mergeinfo and elision to repos. Prior to this patch we supported empty revision range merge info, e.g. svn:mergeinfo '/A/B:', in the sqlite db but we didn't allow it to be set on a working copy path. This patch allows that and also makes the mergeinfo elision code DTRT with empty revision range merge info, basically this means that if empty revision range merge info has no meaning it elides. This patch also introduces the new concept of 'partial' elision, where only paths mapped to empty rev ranges elide, leaving other path mappings behind. Again, this is only done where the elision of the empty ranges has no semantic impact on the total merg einfo. Lastly this patch allows elision not only to a path's nearest WC ancestor but also it's nearest REPOS ancestor if a WC ancestor doesn't exist. * subversion/include/private/svn_fs_mergeinfo.h (svn_fs_mergeinfo__get_mergeinfo): * subversion/include/svn_fs.h (svn_fs_get_mergeinfo): * subversion/include/svn_ra.h (svn_ra_get_mergeinfo): * subversion/include/svn_repos.h (svn_repos_fs_get_mergeinfo): Add argument specifying retrieval of inherited merge info only. * subversion/libsvn_client/copy.c (calculate_target_mergeinfo): Update call to svn_client__get_repos_mergeinfo(). * subversion/libsvn_client/merge.c (get_wc_or_repos_mergeinfo): Add two new boolean arguments, one signaling retrieval of inherited merge info only, one signaling retrieval of merge info only from the repository. Update call to svn_client__get_repos_mergeinfo(). (get_child_only_empty_revs): New helper for mergeinfo_elides(), finds merge info for paths in a child hash that map to empty revision ranges and don't exist in the parent hash. (mergeinfo_elides): Renamed to elide_mergeinfo() (elide_mergeinfo): New, replacement for mergeinfo_elides, now not only determines if elision occurs, but also performs the elision. (elide_children): Replace call to mergeinfo_elides() with elide_mergeinfo(). (svn_client__elide_mergeinfo): Let helper elide_mergeinfo() test for *and* perform elision. If no working copy ancestor with mergeinfo is found permit possible check of the repository for ancestor mergeinfo. Rename elision_limit_path argument to more accurate wc_elision_limit_path and use it as a flag indicating whether to check the repos for ancestor merge info. (update_wc_mergeinfo): Allow empty revision range merge info to be set. (do_merge, do_single_file_merge): Update callers of get_wc_or_repos_mergeinfo(). (svn_client_get_mergeinfo): Update calls to svn_client__get_repos_mergeinfo() and get_wc_or_repos_mergeinfo(). * subversion/libsvn_client/mergeinfo.h (svn_client__get_repos_mergeinfo): Add boolean flag indicating only inherited mergeinfo should be accquired. (svn_client__elide_mergeinfo): Rename elision_limit_path argument to more accurate wc_elision_limit_path. Tweak docstring to reflect new empty rev range elision and repos elision behaviors. * subversion/libsvn_client/mergeinfo.c (svn_client__get_repos_mergeinfo): Add inherited_only arg, update call to svn_ra_get_mergeinfo(). * subversion/libsvn_fs/fs-loader.h (struct root_vtable_t): Add parents_only arg to 'get_mergeinfo' hook. * subversion/libsvn_fs/fs-loader.c (svn_fs_get_mergeinfo): Add parents_only argument, update call to get_mergeinfo(). * subversion/libsvn_fs_util/mergeinfo-sqlite-index.c (get_mergeinfo_for_path): Add parents_only argument, update recursive call. (index_path_mergeinfo): Update call to get_mergeinfo_for_path(). (get_mergeinfo): Add parents_only arg, update call to get_mergeinfo_for_path(). (svn_fs_mergeinfo__get_mergeinfo): Add parents_only argument, update call to get_mergeinfo(). (svn_fs_mergeinfo__get_mergeinfo_for_tree): Update call to get_mergeinfo(). * subversion/libsvn_ra/ra_loader.h (struct svn_ra__vtable_t): Add parents_only arg to 'get_mergeinfo' hook. * subversion/libsvn_ra/ra_loader.c (svn_ra_dav__get_mergeinfo): * subversion/libsvn_ra_dav/mergeinfo.c (svn_ra_dav__get_mergeinfo): * subversion/libsvn_ra_dav/ra_dav.h (svn_ra_dav__get_mergeinfo): * subversion/libsvn_ra_serf/mergeinfo.c (svn_ra_serf__get_mergeinfo): * subversion/libsvn_ra_svn/client.c (ra_svn_get_merge_info): Add parents_only argument. * subversion/libsvn_ra_local/ra_plugin.c (svn_ra_local__get_mergeinfo): Add parents_only argument, update call to svn_repos_fs_get_mergeinfo(). * subversion/libsvn_repos/fs-wrap.c (svn_repos_fs_get_mergeinfo): Add parents_only argument, update call to svn_fs_get_mergeinfo(): * subversion/mod_dav_svn/reports/mergeinfo.c (dav_svn__get_mergeinfo_report): Update call to svn_repos_fs_get_mergeinfo(). * subversion/svnserve/serve.c (get_merge_info): Parse parents_only, update call to svn_repos_fs_get_mergeinfo(). * subversion/tests/cmdline/merge_tests.py (test_list): Remove Xfail from empty_rev_range_mergeinfo. * subversion/tests/libsvn_fs/fs-test.c (get_mergeinfo): Update calls to svn_fs_get_mergeinfo().