Instead of applying changes directly to the WC, the changes now go through the standard svn_delta_editor_t API. When completed, this will allow a much more exact transfer of the possible changes, and a more resuable implementation.
The ability to merge file text changes is lost, for the time being. This will need to be re-implemented in the WC local mods editor. (Note that the implementation of merging here was incomplete anyway.)
* subversion/libsvn_client/shelf.c (wc_file_merge, wc_dir_props_merge, wc_node_delete, wc_node_add): Remove. (apply_prop_mods, apply_file_mods, path_driver_cb_baton_t, path_driver_cb_func, shelf_replay_path_baton_t, shelf_replay_path_visitor, shelf_replay): New. (test_apply_files_baton_t, test_apply_file_visitor): Renamed remnants of a combined function. (svn_client__shelf_test_apply_file): Update the caller. (wc_mods_editor): New. (svn_client__shelf_apply): Use wc_mods_editor() and shelf_replay() instead.
* subversion/tests/cmdline/shelf_tests.py (unshelve_text_mod_merge, unshelve_text_mod_conflict, unshelve_undeclared_binary_mod_conflict unshelve_binary_mod_conflict, unshelve_text_prop_conflict): Mark as XFail, as merge and conflict behaviour has changed.