* subversion/libsvn_wc/adm_ops.c (resolve_conflict_on_entry): Do not clear tree conflicts that are recorded in this entry. Do not send a notification, but instead report (through a new boolean output parameter) whether something was resolved. (resolve_found_entry_callback): Resolve any tree conflict for this victim. Send a notification if any conflict was resolved. (svn_wc_resolved_conflict4): Use an entries-walker function that visits unversioned tree conflict victims as well as ordinary entries.
Allow sched-deleted nodes to be resolved (fixes update_tests.py 15).
* subversion/libsvn_wc/adm_ops.c (resolve_found_entry_callback): Allow sched-deleted nodes to be resolved.
* subversion/libsvn_wc/entries.c (visit_tc_too_found_entry): Only try to retrieve the ADM_ACCESS in presence of tree-conflicts. (visit_tc_too_error_handler): Get the ADM_ACCESS on the parent instead of on the node itself, thus avoid an error upon an unversioned tree-conflict victim. ### TODO: check for greater subdir depths.
Fix a crash in del_tree_conflict().
* subversion/libsvn_wc/tree_conflicts.c (svn_wc__del_tree_conflict): Only write and run the log if LOG_ACCUM is not NULL.
Fix per-victim "resolved" on directory tree-conflict victims.
* subversion/libsvn_client/resolved.c (svn_client_resolve): Get the ADM_ACCESS on the target's parent directory to be able to resolve tree-conflicted directories. Extend the ADM_LOCK_LEVEL to still be able to lock the target node for text/prop conflicts.
* subversion/libsvn_wc/adm_ops.c (resolve_found_entry_callback): Completely split tree-conflict resolution from text and prop conflicts, because tree-conflicts need a different ADM_ACCESS when handling directories. Change use of RESOLVED to already reflect the sanity-check, and sanity-check separately for tree-conflicts. Clarify some conditions. Also remove the debugging conditions that exited prematurely.
* subversion/libsvn_wc/tree_conflicts.c (svn_wc__loggy_del_tree_conflict): Extend an assertion by a NULL check. Add another assertion to make sure the VICTIM_PATH is a child node of the ADM_ACCESS' path.
* subversion/libsvn_wc/tree_conflicts.h (svn_wc__loggy_add_tree_conflict, svn_wc__loggy_del_tree_conflict, svn_wc__del_tree_conflict, svn_wc__write_tree_conflicts_to_entry, svn_wc__tree_conflict_exists): Comments, add "@since New in 1.6.".
Fix the behaviour of "resolved" that descends into unversioned tree-conflicts even if the depth doesn't allow that.
* subversion/libsvn_wc/entries.c (visit_tc_too_baton_t): Add TARGET and DEPTH fields. (visit_tc_too_found_entry): Use new TARGET and DEPTH fields in the baton to determine whether to descend into unversioned tree-conflicted children of a directory. (svn_wc__walk_entries_and_tc): Supply TARGET and DEPTH to the baton.
* subversion/tests/cmdline/commit_tests.py (tree_conflicts_resolved): Adjust for resolving per victim.
* subversion/tests/cmdline/depth_tests.py (tree_conflicts_resolved_depth_empty, tree_conflicts_resolved_depth_files, tree_conflicts_resolved_depth_immediates, tree_conflicts_resolved_depth_infinity, make_depth_tree_conflicts): Four new tests and a helper. The tests are XFAIL because the helper make_depth_tree_conflicts() exposes an error in update code that is not related to "resolved". Separate trials suggest that these tests will pass as soon as the update issue is resolved. See inline comment in make_depth_tree_conflicts() marked "##". (test_list): Add the new tests.
* subversion/tests/cmdline/log_tests.py (merge_history_repos): Resolve the victim, not the parent.
* subversion/tests/cmdline/tree_conflict_tests.py (ensure_tree_conflict): Resolve the victim, not the parent. Make a "resolved" test also try run "resolved" on the victim's parent first, to make sure it doesn't resolve its children. Remove comment about not supporting "resolved" per victim.
* subversion/tests/cmdline/update_tests.py (another_hudson_problem): Resolve the victim, not the parent.
Fix update/switch to skip all tree conflict victims and their descendants. Skip both newly-discovered and existing tree conflicts.
Create only one tree conflict at the root of each conflicted tree, not a tree conflict in every directory.
Notify the user just once about any given tree conflict if the target contains a tree conflict, is itself tree-conflicted, or is inside a tree conflict.
Tweak test expectations to reflect these new features. Add tests that run update/switch in trees that already contain tree conflict victims. Add tests that chdir into conflicted trees and attempt to update/switch.
* subversion/libsvn_wc/update_editor.c (edit_baton): Add field current_tree_conflict. (make_editor): Initialize new field. (dir_baton): Remove unused field tree_conflicted. (make_dir_baton): Track field removal. (open_root): TODO comment, for now. (check_tree_conflict): Thin out the comments a bit. Remove useless checks for entry validity. Remove the redundant (delete:obstructed) and (delete:missing) conflicts. (already_in_a_tree_conflict): New function. (do_entry_deletion add_directory, open_directory, add_file, open_file): Skip the operation if there is an existing or new tree conflict. Notify the user once per tree conflict. (close_directory): Unset current_tree_conflict when returning to the victim dir. Don't notify about tree conflicts. (complete_directory): Do nothing if inside a tree conflict.
* subversion/tests/cmdline/update_tests.py (update_deleted_missing_dir, another_hudson_problem): Don't treat a missing item as a tree conflict. (update_delete_modified_files, tree_conflicts_on_update_1_1, tree_conflicts_on_update_1_2, tree_conflicts_on_update_2_1, tree_conflicts_on_update_2_2, tree_conflicts_on_update_3): Tweak expected output and disk to reflect the consistent skipping. (tree_conflicts_on_update_2_3): New test function. (test_list): Add the new test function, make it XFail().
* subversion/tests/cmdline/switch_tests.py (failed_anchor_is_target, switch_with_obstructing_local_adds, tree_conflicts_on_switch_1_1, tree_conflicts_on_switch_1_2, tree_conflicts_on_switch_2_1, tree_conflicts_on_switch_2_2, tree_conflicts_on_switch_3): Tweak expected output and disk to reflect the consistent skipping. (test_list): XFail 3 tests due to problems with 'svn status': forced_switch_failures tree_conflicts_on_switch_2_1 tree_conflicts_on_switch_3
* subversion/tests/cmdline/svntest/actions.py (deep_trees_conflict_output): Tweak expected output. (deep_trees_conflict_output_skipped, deep_trees_status_local_tree_del, deep_trees_status_local_leaf_edit): New. (deep_trees_run_tests_scheme_for_update): Allow status check to be optional. (deep_trees_skipping_on_update): New function.
* subversion/tests/cmdline/revert_tests.py (revert_tree_conflicts_in_updated_files): Tweak expected output and disk to reflect the consistent skipping.
* subversion/tests/cmdline/stat_tests.py (status_with_tree_conflicts): Tweak expected output and disk to reflect the consistent skipping.
* subversion/tests/cmdline/commit_tests.py (tree_conflicts_resolved): Tweak expected output and disk to reflect the consistent skipping.
* subversion/tests/cmdline/info_tests.py (test_list): Remove XFail from info_with_tree_conflicts.
* subversion/tests/cmdline/tree_conflict_tests.py (test_list): Remove XFail from up_sw_file_add_onto_add.
* subversion/tests/cmdline/svntest/tree.py (build_tree_from_checkout): Correct a comment.