Create distinct conflict option IDs for our current tree conflict resolution options (there are only 2 options which actually resolve a tree conflict).
The new options are only used in libsvn_client and 'svn' for now. The current libsvn_wc interfaces still force us to map conflict option IDs to svn_wc_conflict_choice_t. As a side effect, --accept mine-conflict still works with these tree conflicts, but that may change later (we'll need a different system than a single --accept option to resolve arbitrary tree conflicts in a non-interactive way).
* subversion/include/svn_client.h (svn_client_conflict_option_update_move_destination, svn_client_conflict_option_update_any_moved_away_children): Declare. (svn_client_conflict_option_id_to_wc_conflict_choice): Declare. This is a temorary interface which maps option ID to legacy conflict choice.
* subversion/libsvn_client/resolved.c (conflict_option_id_to_wc_conflict_choice): Rename to ... (svn_client_conflict_option_id_to_wc_conflict_choice): ... this and expose as a temporary public API function. Map the new option IDs to the legacy conflict choice 'mine-conflict' so libsvn_wc will still resolve these conflicts correctly. (resolve_conflict): Update caller. (svn_client_conflict_tree_get_resolution_options): Assign the new option IDs to their respective tree conflict options.
* subversion/svn/conflict-callbacks.c (builtin_resolver_options): Add new options IDs. Use code "u" for them, a mnemonic for "update", instead of "mc" ("mine-conflict"). (conflict_option_id_to_wc_conflict_choice): Remove. This was a copy of the same function in libsvn_client. (mark_conflict_resolved): Use the new svn_client_conflict_option_id_to_wc_conflict_choice() interface.
Refactor code in 'svn resolve' such that a call to the function svn_client_conflict_prop_get_propname() can be removed.
This function should not exist because an svn_client_conflict_t object represents all conflicts on a given node, including multiple property conflicts. So a function returning just one property name makes no sense. The function was added while transitioning away from the legacy conflict API. We cannot remove it yet becuase a call in 'svn info' remains.
This change requires the property conflict handler to loop over multiple properties and resolve them one by one. The previous logic assumed the text/prop/tree conflict handlers will return one answer from the user which indicates how the conflict should be resolved. Change them all to mark the conflict resolved internally, and make other related tweaks.
* subversion/include/svn_client.h (svn_client_conflict_prop_get_propvals): Add 'propname' parameter. This function must know which property it is being asked about.
* subversion/libsvn_client/resolved.c (svn_client_conflict_prop_get_propvals): Return conflicted property values for the specific property named by the caller.
* subversion/svn/conflict-callbacks.c (handle_text_conflict): Remove option_id output parameter and the ineffective save_merged parameter. The functionalty of save_merged is not supported by the new conflict API and there are no plans to add it. Resolve the text conflict here rather than relying on the caller to do so. Add new arguments necessary for calling mark_conflict_resolved(). (handle_prop_conflict): Rename to ... (handle_one_prop_conflict): ... this. Add a 'propname' argument which identifies the property to be handled. (handle_prop_conflicts): New helper function. Tries to resolve multiple property conflicts on a node. (handle_text_conflict): Remove option_id output parameter. Resolve the tree conflict here rather than relying on the caller to do so. Add new arguments necessary for calling mark_conflict_resolved(). (conflict_func_interactive): Rename to ... (resolve_conflict_interactively): ... this. Handle property conflicts using the new libsvn_client conflict API rather than its backwards compat shims. Remove the option_id, save_merged, and merged_propval output parameters. The latter two were ineffective and option_id is being replaced by a boolean output parameter which indicates whether the conflict was resolved. Resolve conflicts according to the --accept option if applicable. Update calls to handle_text_conflict() and friends with new parameter lists. (svn_cl__resolve_conflict): Rely on resolve_conflict_interactively() to mark conflicts as resolved. Don't check prop_conflicts against NULL. Check for an empty array instead. The conflict API returns an empty array if there are no property conflicts.