[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] really skip tree conflict victims (2)

From: Stephen Butler <sbutler_at_elego.de>
Date: Tue, 11 Nov 2008 18:14:32 +0100

Hi tree conflict fans,

This patch is almost ready to commit. I just need to fix up about ten
tests (for switch et al.).

If anyone would like to review it, the changes to check_tree_conflict()
and the new function already_in_a_tree_conflict() are probably the most
interesting part. Along with the usage of eb->current_tree_conflict.

Regards,
Steve

[[[

Fix update/switch to skip all tree conflict victims and their
descendants.

Create only one tree conflict at the root of each conflicted tree, not a
tree conflict in every directory.

Notify the user once about any given 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.

TODO:

More tests! As always....

The tree conflict 2_1 and 3 tests show that an incoming tree delete
bumps the revision number inside a victim tree. I don't know how to
solve this without leaving the parent dirs incomplete. Maybe I need to
hack something in complete_directory().

If an update targets a single file or dir that has been deleted from the
repo, there's an error (see test 2_1). Should be a tree conflict.
Fixing it requires moving some functions, so I'll do it in a separate
commit for clarity.

* 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.

* 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_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/svntest/tree.py
   (build_tree_from_checkout): Correct a comment.

* subversion/tests/cmdline/svntest/actions.py
   (deep_trees_run_tests_scheme for update): Allow status check to be
    optional.
   (deep_trees_skipping_on_update): New function.

]]]

-- 
Stephen Butler | Software Developer
elego Software Solutions GmbH
Gustav-Meyer-Allee 25 | 13355 Berlin | Germany
fon: +49 30 2345 8696 | mobile: +49 163 25 45 015
fax: +49 30 2345 8695 | http://www.elegosoft.com
Geschäftsführer: Olaf Wagner | Sitz der Gesellschaft: Berlin
Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org

Received on 2008-11-11 18:14:53 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.