- changed 7 files
Add resolver support for moved-file vs moved-file upon update.The resolver now supports move vs move tree conflicts for files afteran update operation.Two new resolution operations are available: (m) - override incoming move and merge incoming changes from 'alpha-moved' to 'alpha-also-moved' (M) - accept incoming move and merge local changes from 'alpha-also-moved' to 'alpha-moved'Where the file was originally called 'alpha', was renamed to 'alpha-moved'in the repository, and renamed to 'alpha-also-moved' in the working copy.Because the local move is broken during the update operation when thedelete-half of the move is updated, the resolver only has the copied halfmove available in the working copy. To find the local move destination theresolver queries the working copy database for nodes which are copies ofthe conflict victim's repository path. This can of course lead to ambiguousresults in case a node is first copied and then moved, in which case theresolver offers the user a choice of local move targets in the usual way.* subversion/include/private/svn_wc_private.h (svn_wc__find_copies_of_repos_path): Declare.* subversion/libsvn_client/conflicts.c (conflict_tree_update_local_moved_away_details): New conflict details struct. (resolve_both_moved_file_update_keep_local_move, resolve_both_moved_file_update_keep_incoming_move): New resolution handlers. (conflict_tree_get_details_update_local_moved_away): New details fetcher which locates copied nodes corresponding to the local move. (get_both_moved_file_paths): New helper function. (conflict_tree_get_description_update_both_moved_file_merge, conflict_tree_get_description_update_both_moved_file_move_merge): New functions which describe incoming move vs local move conflicts flagged during updates of files. (configure_option_both_moved_file_merge): Hook up the new options. (svn_client_conflict_option_get_moved_to_abspath_candidates2, svn_client_conflict_option_set_moved_to_abspath2, conflict_type_specific_setup): Support the newly added conflict options.* subversion/libsvn_wc/node.c (svn_wc__find_copies_of_repos_path): New.* subversion/libsvn_wc/wc-queries.sql (STMT_SELECT_COPIES_OF_REPOS_RELPATH): New query which locates copies of a particular repository relpath with a particular node kind in working copy.* subversion/libsvn_wc/wc_db.c (svn_wc__db_find_copies_of_repos_path): New wc_db API to execute above query.* subversion/libsvn_wc/wc_db.h (svn_wc__db_find_copies_of_repos_path): Declare.* subversion/tests/libsvn_client/conflicts-test.c (create_file_move_vs_file_move_update_conflict): New helper function. (test_update_file_move_vs_file_move, test_update_file_move_vs_file_move_accept_move, test_funcs): New tests which exercise both of the newly added conflict resolution options.