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

Re: Tree-conflicts branch - log message / review

From: Stephen Butler <sbutler_at_elego.de>
Date: Wed, 03 Sep 2008 16:58:42 +0200

Quoting Julian Foad <julianfoad_at_btopenworld.com>:

> The most helpful thing I/we can produce right now is, I think, a summary
> of what behaviours the branch improves vs. where it fails, so that we
> can see at a glance if there are any regressions and how much fixing is
> required to make it a definite win for putting on trunk.
>
> I think that's the only thing needed before merging to trunk. (I also
> need to check how much it meets its goals, but that is not holding it
> off the trunk.)
>
> If you (anyone) can help evaluate it - perhaps by running the tests and
> looking at the verbose output - I'd very much appreciate it.
>
> Tests (on the branch) that are directly testing tree conflicts:
> libsvn_wc/tree-conflict-data-test.c
> cmdline/info_tests.py 1
> cmdline/update_tests.py 46 47 48 49 50
> cmdline/switch_tests.py 31 32 33 34 35
> cmdline/merge_tests.py 107 108 109 110 111 112 113 114 115 116
> cmdline/tree_conflict_tests.py # 1 through 16
>
> Tests (on the branch) that are failing for related reasons:

Here's some annotations on two themes:

   1. What test-patch will make the test pass on the tree-conflicts branch?

      As a stopgap, we can patch tests so they pass. We've done this
      in the past with quite a few tests that inadvertently create tree
      conflicts. At the least, this is an instructive exercise. For
      some tests, the "innocent victims", this is good enough.

   2. What must we change in the test design to accommodate the new
      tree-conflicts design?

      On trunk, I understand we want XFAIL tests that describe the
      correct behavior:

      a. Detect "deep" tree conflicts.

      b. Skip the operation (checkout/update/switch/merge) on a tree
         that is conflicted, even if the tree is a single file.

         Yes, I added another operation to the list. Doh!! When faced
         with obstructions, checkout acts like update, and (already)
         reports tree conflicts.

Are there any other features to take into account? Soon we'll need
some new tests for new features:

    * Resolve tree conflicts interactively.

    * Handle tree conflicts involving properties.

    * Report and resolve tree conflicts directly, not via the parent
      directory (where the implementation just happens to store the
      data).

I don't think we need them before merging to trunk, since we haven't
started on those features yet.

Here are my notes on the failing tests:

> cmdline/checkout_tests.py
       13 co_with_obstructing_local_adds

Patching:

Needs 'C ' conflict markers in output and status.

Also, the client no longer aborts, so the "ensure checkout fails"
subtests need to become normal run_and_verify_* function calls. I
haven't sorted out yet what the exact output, etc ought to be.

Design:

Need to skip the checkout of a tree upon detecting a tree conflict.

> cmdline/update_tests.py 14 15 31 33 34

cmdline/update_tests.py
   14 update_deleted_missing_dir
   15 another_hudson_problem

This is a known crash (when updating or checking out an item, and the
item itself turns out to be tree-conflicted). I was working on a fix
when I decided to take a step back and write this email. No need to
change the tests yet.

cmdline/update_tests.py
   31 forced_update_failures
   33 update_wc_with_replaced_file
   34 update_with_obstructing_additions

Patching:

Add 'C ' and stir, to fix the output and status. Some subtests
expecting failure need to be rewritten with run_and_verify_* function
calls.

Design:

Need to skip the update of a tree upon detecting a tree conflict.

> cmdline/switch_tests.py
   21 forced_switch_failures
   24 switch_with_obstructing_local_adds

Same as update tests.py 31 33 34.

> cmdline/merge_tests.py 19 20 39 68 106

A side note: 19, 20, 39 and 68 are all marked XFail on the
tree-conflicts branch, but not on trunk. I assume we want to patch
them so they pass.

cmdline/merge_tests.py 19 merge_skips_obstructions

Patching:

The usual 'C ' added to output & status of the fourth and fifth
subtests, plus the resolution of a tree conflict in '/A/B' revealed by
the fourth subtest.

Design:

Individual skipped items should not appear in the output of 'svn
merge'. Instead, each tree conflict path should be printed with a
warning that the conflicted path has been skipped. Of course,
eventually the user will have a chance to resolve the conflict
interactively.

In this test, the merge commands are applied to the whole wc_dir. The
client output should report the tree conflict at the root of wc_dir,
not at the /A/B subdir.

(Here are the remaining merge tests. I'll annotate them tomorrow if
nobody else takes them.)

cmdline/merge_tests.py 20 merge_into_missing

cmdline/merge_tests.py 34 merge_dir_and_file_replace

cmdline/merge_tests.py 39 merge_add_over_versioned_file_conflicts

cmdline/merge_tests.py 68 mergeinfo_recording_in_skipped_merge

cmdline/merge_tests.py 103 del_differing_file
(fails for me)

cmdline/merge_tests.py 106 tree_conflicts_and_obstructions

Regards,
Steve

-- 
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-09-03 16:59:06 CEST

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