[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

From: Stephen Butler <sbutler_at_elego.de>
Date: Tue, 11 Nov 2008 01:33:38 +0100

Hi tree conflict fans,

I've been working on the skipping feature for a while now. It's
been educational, especially when I added tests to update inside
a tree-conflicted tree.

Anyway, I have a patch against trunk that is starting to look good.
Tomorrow I should have it ready to commit. But if anyone
wants to mess with it, by all means let's set up an experimental
branch.

Probably of interest: I got rid of some marginal types of tree
conflicts, that are of no interest to update/switch. I allow
only 4 types:

  (edit:deleted)
  (delete:edited)
  (delete:deleted)
  (add:added)

Regards,
Steve

[[[

Fix update/switch to skip the victim of an already-reported tree
conflict, including the descendants of directory victims. Notify the
user once about any given tree conflict.

Revert test changes made in r33983, i.e., disallow deletions in
conflicted trees. Incoming deletions are now skipped, which is
consistent wih how we handle adds and edits.

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! And some current test funcs need their expected status
to be tweaked.

Tests 1.1, 1.2 show some nasty bugs inside a conflicted tree.
Erroneous conflicts in output, and file add is not skipped.

Need to handle updates to just one file or dir that has been deleted
from the repo. That's missing in our basic tree conflict detection.
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.
   (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): Skip if there is an existing or new tree conflict.
   (close_directory): Unset the current_tree_conflict.

* subversion/tests/cmdline/update_tests.py
   (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 for
    consistent skipping.
   (tree_conflicts_on_update_2_3): New function.
   (test_list): Add new function.

* subversion/tests/cmdline/svntest/tree.py
   (build_tree_from_checkout): Correct a comment. I guess no one cares
    about the 'writelocked' flag.

* 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 01:33:58 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.