If update or switch skips a conflicted tree, don't set the new revision, URL, etc. on anything in the conflicted tree.
On updating or switching a prop-conflicted directory, skip the directory and its descendants as we do for tree conflicts.
This is a follow-up to the skip-conflicts improvements in r34158.
* subversion/libsvn_wc/adm_ops.c (tweak_entries): When finishing an update or switch, skip all descendants of an excluded path.
* subversion/libsvn_wc/update_editor.c (edit_baton): Note in comments the new (recursive) meaning of the skipped_paths field. Rename current_tree_conflict to current_conflict to reflect that it may contain the path of a prop-conflicted dir. (complete_directory, do_entry_deletion, add_directory, close_directory, add_file, open_file, make_editor): Track field renames. (open_directory): Track field renames. Ensure that an existing property conflict causes the dir tree to be skipped.
* subversion/tests/cmdline/switch_tests.py (tree_conflicts_on_switch_2_1, tree_conflicts_on_switch_3): Expected status shows old revision numbers. Now consistent with the other tests.
* subversion/tests/cmdline/update_tests.py (update_delete_modified_files, update_conflicted): Expected output and status show improved skipping and old revision numbers. (tree_conflicts_on_update_2_1, tree_conflicts_on_update_2_3, tree_conflicts_on_update_3): Expected status shows old revision numbers. Now consistent with the other tests.
* subversion/tests/cmdline/svntest/actions.py (deep_trees_skipping_on_update): Check status before the skipping, too. Comment out a print statement (whoops).
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.