- changed 4 files
Add resolver support for incoming move vs local move of files during merges.Add two new resolution options for move vs move conflicts with filesafter a merge operation: (m) - apply changes to 'file-target' and revert addition of 'file-source' (M) - move 'file-target' to 'file-source' and merge where 'file-branch' is the path the file has on the merge target branch,and 'file-source' is the path the file has on the merge source branch.The 'm' option applies textual changes only and leaves the tree structureof the merge target as it is. The 'M' option changes the file's location inthe merge target to match that of the merge source before merging changes.I have not written related tests yet, but some manual testing was done.Proper tests will follow as soon.* subversion/include/svn_client.h (svn_client_conflict_option_both_moved_file_merge, svn_client_conflict_option_both_moved_file_move_merge): Declare new options.* subversion/libsvn_client/conflicts.c (follow_move_chains): Check for local candidates along all moves in the chain, not just for the final move in the chain. (resolve_incoming_move_file_text_merge): Implement support for the svn_client_conflict_option_both_moved_file_move_merge option. This case is similar enough to make sharing code written for other cases possible. (resolve_both_moved_file_text_merge): New resolution handler for the svn_client_conflict_option_both_moved_file_merge option. (configure_option_incoming_delete_ignore): Don't match move-vs-move cases. This causes the 'ignore deletion' option to show up in actual delete vs. delete conflict cases as a side-effect. (configure_option_incoming_delete_accept): Don't match move-vs-move cases. (describe_incoming_move_merge_conflict_option): Change 'details' parameter to a move target path, so this function can also be used for the new svn_client_conflict_option_both_moved_file_move_merge option. (configure_option_incoming_move_file_merge, configure_option_incoming_dir_merge): Update callers. (configure_option_both_moved_file_merge): Configure new options. (svn_client_conflict_option_get_moved_to_repos_relpaths, svn_client_conflict_option_set_moved_to_repos_relpaths svn_client_conflict_option_get_moved_to_abspath_candidates, svn_client_conflict_option_set_moved_to_abspath2): Accept new options and update calls to describe_incoming_move_merge_conflict_option(). (svn_client_conflict_tree_get_resolution_options): Enable new options.* subversion/libsvn_wc/conflicts.c (svn_wc__guess_incoming_move_target_nodes): Handle the case where the conflict victim is a 'local missing' victim. Needed for new options.* subversion/svn/conflict-callbacks.c (builtin_resolver_options): Set menu key bindings for new options.