Currently, we set the moved-here flag in NODES on the op-root
of a move and on all of its children.
Philip and I want to change that in order to eventually handle moves
in mixed-revision working copies better, because we cannot mark
every node inside a mixed-revision tree as "moved-here" since nodes
at different revisions cannot be considered part of the same move
operation (see http://wiki.apache.org/subversion/MultiLayerMoveUpdate).
Here's a work-in-progress patch towards setting moved-here only on
the op-root. I'm sending this to dev@ because it is not ready for
commit yet but I wanted to share it. Review and further contributions
are appreciated.
It's not clear whether this approach will be used. An alternative
approach is setting moved-here only on children with the same op-depth
as the op-root.
I've only been running the op-depth-tests with this so far, and they
all pass except for the last one (a test which involves mixed-revisions,
so the test is probably not quite correct yet).
No log message yet either :P
Index: subversion/libsvn_wc/wc-metadata.sql
===================================================================
--- subversion/libsvn_wc/wc-metadata.sql (revision 1391059)
+++ subversion/libsvn_wc/wc-metadata.sql (working copy)
@@ -387,9 +387,11 @@ CREATE TABLE NODES (
perhaps add a column called "moved_from". */
/* Boolean value, specifying if this node was moved here (rather than just
- copied). This is set on all the nodes in the moved tree. The source of
- the move is implied by a different node with a moved_to column pointing
- at the root node of the moved tree. */
+ copied). This is set on the op-root of the moved tree. Children at the
+ same op_depth inherit the flag, while children at higher op-depths appear
+ as separate op-roots which are disjoint from the moved-here layer.
+ The source of the move is implied by a different node with a moved_to
+ column pointing at the root node of the moved tree. */
moved_here INTEGER,
/* If the underlying node was moved away (rather than just deleted), this
Index: subversion/libsvn_wc/wc_db.c
===================================================================
--- subversion/libsvn_wc/wc_db.c (revision 1391059)
+++ subversion/libsvn_wc/wc_db.c (working copy)
@@ -3974,27 +3974,6 @@ db_op_copy(svn_wc__db_wcroot_t *src_wcroot,
(status == svn_wc__db_status_copied && op_root)))
SVN_ERR(svn_sqlite__bind_int(stmt, 7, 1));
}
- else
- {
- svn_sqlite__stmt_t *info_stmt;
- svn_boolean_t have_row;
-
- /* We're moving a child along with the root of the move.
- *
- * Set moved-here depending on dst_parent, propagating
- * the above decision to moved-along children.
- * We can't use scan_addition() to detect moved-here because
- * the delete-half of the move might not yet exist. */
- SVN_ERR(svn_sqlite__get_statement(&info_stmt, dst_wcroot->sdb,
- STMT_SELECT_NODE_INFO));
- SVN_ERR(svn_sqlite__bindf(info_stmt, "is", dst_wcroot->wc_id,
- dst_parent_relpath));
- SVN_ERR(svn_sqlite__step(&have_row, info_stmt));
- SVN_ERR_ASSERT(have_row);
- if (svn_sqlite__column_boolean(info_stmt, 15))
- SVN_ERR(svn_sqlite__bind_int(stmt, 7, 1));
- SVN_ERR(svn_sqlite__reset(info_stmt));
- }
}
SVN_ERR(svn_sqlite__step_done(stmt));
@@ -4255,19 +4234,21 @@ db_op_copy_shadowed_layer(svn_wc__db_wcroot_t *src
if (dst_presence == svn_wc__db_status_normal
&& src_wcroot == dst_wcroot) /* ### Remove limitation */
{
+ svn_boolean_t moved_here;
+
SVN_ERR(svn_sqlite__get_statement(&stmt, src_wcroot->sdb,
STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH));
/* Perhaps we should avoid setting moved_here to 0 and leave it
null instead? */
+ moved_here = (is_move && dst_op_depth == relpath_depth(dst_relpath));
SVN_ERR(svn_sqlite__bindf(stmt, "issdstdd",
src_wcroot->wc_id, src_relpath,
dst_relpath,
dst_op_depth,
svn_relpath_dirname(dst_relpath, iterpool),
presence_map, dst_presence,
- (is_move ? 1 : 0),
- src_op_depth));
+ moved_here, src_op_depth));
SVN_ERR(svn_sqlite__step_done(stmt));
@@ -4641,7 +4622,6 @@ svn_wc__db_op_copy_dir(svn_wc__db_t *db,
iwb.changed_rev = changed_rev;
iwb.changed_date = changed_date;
iwb.changed_author = changed_author;
- iwb.moved_here = is_move;
if (original_root_url != NULL)
{
@@ -4658,6 +4638,7 @@ svn_wc__db_op_copy_dir(svn_wc__db_t *db,
original_repos_relpath, original_revision,
wcroot, local_relpath, scratch_pool));
+ iwb.moved_here = (is_move && iwb.op_depth == relpath_depth(local_relpath));
iwb.children = children;
iwb.depth = depth;
@@ -4718,7 +4699,6 @@ svn_wc__db_op_copy_file(svn_wc__db_t *db,
iwb.changed_rev = changed_rev;
iwb.changed_date = changed_date;
iwb.changed_author = changed_author;
- iwb.moved_here = is_move;
if (original_root_url != NULL)
{
@@ -4735,6 +4715,7 @@ svn_wc__db_op_copy_file(svn_wc__db_t *db,
original_repos_relpath, original_revision,
wcroot, local_relpath, scratch_pool));
+ iwb.moved_here = (is_move && iwb.op_depth == relpath_depth(local_relpath));
iwb.checksum = checksum;
if (update_actual_props)
@@ -11133,7 +11114,8 @@ follow_moved_to(apr_array_header_t **moved_tos,
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
STMT_SELECT_MOVED_HERE));
- SVN_ERR(svn_sqlite__bindf(stmt, "isd", wcroot->wc_id, node_moved_to,
+ SVN_ERR(svn_sqlite__bindf(stmt, "isd", wcroot->wc_id,
+ ancestor_moved_to,
relpath_depth(ancestor_moved_to)));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
if (!have_row)
Index: subversion/tests/libsvn_wc/op-depth-test.c
===================================================================
--- subversion/tests/libsvn_wc/op-depth-test.c (revision 1391059)
+++ subversion/tests/libsvn_wc/op-depth-test.c (working copy)
@@ -1746,7 +1746,7 @@ test_wc_move(const svn_test_opts_t *opts, apr_pool
{ 2, "A/B", "base-deleted", NO_COPY_FROM, "A/B-move" },
{ 2, "A/B/C", "base-deleted", NO_COPY_FROM},
{ 2, "A/B-move", "normal", 1, "A/B", MOVED_HERE },
- { 2, "A/B-move/C", "normal", 1, "A/B/C", MOVED_HERE },
+ { 2, "A/B-move/C", "normal", 1, "A/B/C"},
{ 3, "A/B-move/C", "base-deleted", NO_COPY_FROM, "A/B-move/C-move" },
{ 3, "A/B-move/C-move", "normal", 1, "A/B/C", MOVED_HERE },
{ 0 }
@@ -3803,7 +3803,7 @@ nested_moves_child_first(const svn_test_opts_t *op
{2, "A/B", "base-deleted", NO_COPY_FROM, "A/B2"},
{2, "A/B/C", "base-deleted", NO_COPY_FROM},
{2, "A/B2", "normal", 1, "A/B", MOVED_HERE},
- {2, "A/B2/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "A/B2/C", "normal", 1, "A/B/C"},
{3, "A/B2/C", "base-deleted", NO_COPY_FROM, "A/B2/C2"},
{3, "A/B2/C2", "normal", 1, "A/B/C", MOVED_HERE},
{0}
@@ -3821,12 +3821,12 @@ nested_moves_child_first(const svn_test_opts_t *op
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{2, "A2/B", "base-deleted", NO_COPY_FROM, "A2/B2"},
{2, "A2/B/C", "base-deleted", NO_COPY_FROM},
{2, "A2/B2", "normal", 1, "A/B", MOVED_HERE},
- {2, "A2/B2/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "A2/B2/C", "normal", 1, "A/B/C"},
{3, "A2/B2/C", "base-deleted", NO_COPY_FROM, "A2/B2/C2"},
{3, "A2/B2/C2","normal", 1, "A/B/C", MOVED_HERE},
{0}
@@ -3847,8 +3847,8 @@ nested_moves_child_first(const svn_test_opts_t *op
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -3891,8 +3891,8 @@ nested_moves_child_last(const svn_test_opts_t *opt
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -3908,12 +3908,12 @@ nested_moves_child_last(const svn_test_opts_t *opt
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{2, "A2/B", "base-deleted", NO_COPY_FROM, "A2/B2"},
{2, "A2/B/C", "base-deleted", NO_COPY_FROM},
{2, "A2/B2", "normal", 1, "A/B", MOVED_HERE},
- {2, "A2/B2/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "A2/B2/C", "normal", 1, "A/B/C"},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -3929,12 +3929,12 @@ nested_moves_child_last(const svn_test_opts_t *opt
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{2, "A2/B", "base-deleted", NO_COPY_FROM, "A2/B2"},
{2, "A2/B/C", "base-deleted", NO_COPY_FROM},
{2, "A2/B2", "normal", 1, "A/B", MOVED_HERE},
- {2, "A2/B2/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "A2/B2/C", "normal", 1, "A/B/C"},
{3, "A2/B2/C", "base-deleted", NO_COPY_FROM, "A2/B2/C2"},
{3, "A2/B2/C2","normal", 1, "A/B/C", MOVED_HERE},
{0}
@@ -3955,8 +3955,8 @@ nested_moves_child_last(const svn_test_opts_t *opt
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -4162,7 +4162,7 @@ move_to_swap(const svn_test_opts_t *opts, apr_pool
{1, "A", "base-deleted", NO_COPY_FROM, "A2"},
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
{2, "A2/B", "base-deleted", NO_COPY_FROM, "X/B"},
{2, "A2/Y", "normal", 1, "X/Y", MOVED_HERE},
{2, "X/Y", "base-deleted", NO_COPY_FROM, "A2/Y"},
@@ -4183,9 +4183,9 @@ move_to_swap(const svn_test_opts_t *opts, apr_pool
{0, "X/Y", "normal", 1, "X/Y"},
{1, "A", "normal", 1, "X", FALSE, "A2", TRUE},
{1, "A/B", "base-deleted", NO_COPY_FROM},
- {1, "A/Y", "normal", 1, "X/Y", MOVED_HERE},
+ {1, "A/Y", "normal", 1, "X/Y"},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
{1, "X", "base-deleted", NO_COPY_FROM, "A"},
{1, "X/Y", "base-deleted", NO_COPY_FROM},
{2, "A/B", "normal", 1, "A/B", MOVED_HERE},
@@ -4207,10 +4207,10 @@ move_to_swap(const svn_test_opts_t *opts, apr_pool
{0, "X", "normal", 1, "X"},
{0, "X/Y", "normal", 1, "X/Y"},
{1, "A", "normal", 1, "X", FALSE, "X", TRUE},
- {1, "A/Y", "normal", 1, "X/Y", MOVED_HERE},
+ {1, "A/Y", "normal", 1, "X/Y"},
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "X", "normal", 1, "A", FALSE, "A", TRUE},
- {1, "X/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "X/B", "normal", 1, "A/B"},
{1, "X/Y", "base-deleted", NO_COPY_FROM},
{2, "A/Y", "base-deleted", NO_COPY_FROM, "X/Y"},
{2, "X/B", "base-deleted", NO_COPY_FROM, "A/B"},
@@ -4236,10 +4236,10 @@ move_to_swap(const svn_test_opts_t *opts, apr_pool
{0, "X", "normal", 1, "X"},
{0, "X/Y", "normal", 1, "X/Y"},
{1, "A", "normal", 1, "X", FALSE, "X", TRUE},
- {1, "A/Y", "normal", 1, "X/Y", MOVED_HERE},
+ {1, "A/Y", "normal", 1, "X/Y"},
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "X", "normal", 1, "A", FALSE, "A", TRUE},
- {1, "X/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "X/B", "normal", 1, "A/B"},
{1, "X/Y", "base-deleted", NO_COPY_FROM},
{0}
};
@@ -4257,10 +4257,10 @@ move_to_swap(const svn_test_opts_t *opts, apr_pool
{0, "X", "normal", 1, "X"},
{0, "X/Y", "normal", 1, "X/Y"},
{1, "A", "normal", 1, "X", FALSE, "X", TRUE},
- {1, "A/Y", "normal", 1, "X/Y", MOVED_HERE},
+ {1, "A/Y", "normal", 1, "X/Y"},
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "X", "normal", 1, "A", FALSE, "A", TRUE},
- {1, "X/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "X/B", "normal", 1, "A/B"},
{1, "X/Y", "base-deleted", NO_COPY_FROM},
{2, "A/Y", "base-deleted", NO_COPY_FROM, "X/Y"},
{2, "X/B", "base-deleted", NO_COPY_FROM, "A/B"},
@@ -4287,8 +4287,8 @@ revert_nested_move(const svn_test_opts_t *opts, ap
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{0}
};
nodes_row_t nodes_AB_moved[] = {
@@ -4300,12 +4300,12 @@ revert_nested_move(const svn_test_opts_t *opts, ap
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{2, "A2/B", "base-deleted", NO_COPY_FROM, "A2/B2"},
{2, "A2/B/C", "base-deleted", NO_COPY_FROM},
{2, "A2/B2", "normal", 1, "A/B", MOVED_HERE},
- {2, "A2/B2/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "A2/B2/C", "normal", 1, "A/B/C"},
{0}
};
nodes_row_t nodes_ABC_moved[] = {
@@ -4317,12 +4317,12 @@ revert_nested_move(const svn_test_opts_t *opts, ap
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A/B/C", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
+ {1, "A2/B/C", "normal", 1, "A/B/C"},
{2, "A2/B", "base-deleted", NO_COPY_FROM, "A2/B2"},
{2, "A2/B/C", "base-deleted", NO_COPY_FROM},
{2, "A2/B2", "normal", 1, "A/B", MOVED_HERE},
- {2, "A2/B2/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "A2/B2/C", "normal", 1, "A/B/C"},
{3, "A2/B2/C", "base-deleted", NO_COPY_FROM, "A2/B2/C2"},
{3, "A2/B2/C2", "normal", 1, "A/B/C", MOVED_HERE},
{0}
@@ -4451,7 +4451,7 @@ move_on_move2(const svn_test_opts_t *opts, apr_poo
{0, "X", "normal", 1, "X"},
{0, "X/B", "normal", 1, "X/B"},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
{1, "A", "normal", 1, "X", FALSE, "A2"},
{1, "A/B", "normal", 1, "X/B"},
{0}
@@ -4468,7 +4468,7 @@ move_on_move2(const svn_test_opts_t *opts, apr_poo
{0, "X", "normal", 1, "X"},
{0, "X/B", "normal", 1, "X/B"},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
{1, "B3", "normal", 1, "X/B", MOVED_HERE},
{1, "A", "normal", 1, "X", FALSE, "A2"},
{1, "A/B", "normal", 1, "X/B"},
@@ -4507,7 +4507,7 @@ move_added(const svn_test_opts_t *opts, apr_pool_t
{1, "A", "base-deleted", NO_COPY_FROM, "A2"},
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
{3, "A2/B/C", "normal", NO_COPY_FROM},
{3, "A2/B/C2", "normal", NO_COPY_FROM},
{0}
@@ -4542,7 +4542,7 @@ move_update(const svn_test_opts_t *opts, apr_pool_
{1, "A", "base-deleted", NO_COPY_FROM, "A2"},
{1, "A/B", "base-deleted", NO_COPY_FROM},
{1, "A2", "normal", 1, "A", MOVED_HERE},
- {1, "A2/B", "normal", 1, "A/B", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A/B"},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -4562,7 +4562,7 @@ move_update(const svn_test_opts_t *opts, apr_pool_
{1, "A2", "normal", 1, "A", MOVED_HERE},
{1, "A2/B", "not-present", 2, "A/B"}, /* XFAIL */
{2, "A2/B", "normal", 2, "A/B", MOVED_HERE},
- {2, "A2/B/C", "normal", 2, "A/B/C", MOVED_HERE},
+ {2, "A2/B/C", "normal", 2, "A/B/C"},
{0}
};
SVN_ERR(check_db_rows(&b, "", nodes));
@@ -4651,11 +4651,11 @@ test_scan_delete(const svn_test_opts_t *opts, apr_
{1, "A2/B", "base-deleted", NO_COPY_FROM},
{1, "Z", "normal", 1, "A2/B", MOVED_HERE},
{1, "X", "normal", 1, "A2", MOVED_HERE},
- {1, "X/B", "normal", 1, "A2/B", MOVED_HERE},
+ {1, "X/B", "normal", 1, "A2/B"},
{2, "A/B", "base-deleted", NO_COPY_FROM, "X/B"},
{2, "A/B/C", "base-deleted", NO_COPY_FROM},
{2, "X/B", "normal", 1, "A/B", FALSE, "Z", TRUE},
- {2, "X/B/C", "normal", 1, "A/B/C", MOVED_HERE},
+ {2, "X/B/C", "normal", 1, "A/B/C"},
{1, "Y", "normal", 1, "A/B/C", MOVED_HERE},
{1, "C2", "base-deleted", NO_COPY_FROM, "X/B/C"},
{3, "X/B/C", "normal", 1, "C2", FALSE, "Y", TRUE},
@@ -4794,46 +4794,46 @@ test_follow_moved_to(const svn_test_opts_t *opts,
{0, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
{1, "A1", "normal", 1, "A2", FALSE, "A3", TRUE},
- {1, "A1/B", "normal", 1, "A2/B", MOVED_HERE},
- {1, "A1/B/C", "normal", 1, "A2/B/C", MOVED_HERE},
- {1, "A1/B/C/D", "normal", 1, "A2/B/C/D", MOVED_HERE},
- {1, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+ {1, "A1/B", "normal", 1, "A2/B"},
+ {1, "A1/B/C", "normal", 1, "A2/B/C"},
+ {1, "A1/B/C/D", "normal", 1, "A2/B/C/D"},
+ {1, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
{1, "A2", "normal", 1, "A3", FALSE, "A1", TRUE},
- {1, "A2/B", "normal", 1, "A3/B", MOVED_HERE},
- {1, "A2/B/C", "normal", 1, "A3/B/C", MOVED_HERE},
- {1, "A2/B/C/D", "normal", 1, "A3/B/C/D", MOVED_HERE},
- {1, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+ {1, "A2/B", "normal", 1, "A3/B"},
+ {1, "A2/B/C", "normal", 1, "A3/B/C"},
+ {1, "A2/B/C/D", "normal", 1, "A3/B/C/D"},
+ {1, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
{1, "A3", "normal", 1, "A1", FALSE, "A2", TRUE},
- {1, "A3/B", "normal", 1, "A1/B", MOVED_HERE},
- {1, "A3/B/C", "normal", 1, "A1/B/C", MOVED_HERE},
- {1, "A3/B/C/D", "normal", 1, "A1/B/C/D", MOVED_HERE},
- {1, "A3/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+ {1, "A3/B", "normal", 1, "A1/B"},
+ {1, "A3/B/C", "normal", 1, "A1/B/C"},
+ {1, "A3/B/C/D", "normal", 1, "A1/B/C/D"},
+ {1, "A3/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
{2, "A1/B", "normal", 1, "A3/B", FALSE, "A3/B", TRUE},
- {2, "A1/B/C", "normal", 1, "A3/B/C", MOVED_HERE},
- {2, "A1/B/C/D", "normal", 1, "A3/B/C/D", MOVED_HERE},
- {2, "A1/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+ {2, "A1/B/C", "normal", 1, "A3/B/C"},
+ {2, "A1/B/C/D", "normal", 1, "A3/B/C/D"},
+ {2, "A1/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
{2, "A2/B", "normal", 1, "A1/B", FALSE, "A1/B", TRUE},
- {2, "A2/B/C", "normal", 1, "A1/B/C", MOVED_HERE},
- {2, "A2/B/C/D", "normal", 1, "A1/B/C/D", MOVED_HERE},
- {2, "A2/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+ {2, "A2/B/C", "normal", 1, "A1/B/C"},
+ {2, "A2/B/C/D", "normal", 1, "A1/B/C/D"},
+ {2, "A2/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
{2, "A3/B", "normal", 1, "A2/B", FALSE, "A2/B", TRUE},
- {2, "A3/B/C", "normal", 1, "A2/B/C", MOVED_HERE},
- {2, "A3/B/C/D", "normal", 1, "A2/B/C/D", MOVED_HERE},
- {2, "A3/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+ {2, "A3/B/C", "normal", 1, "A2/B/C"},
+ {2, "A3/B/C/D", "normal", 1, "A2/B/C/D"},
+ {2, "A3/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
{4, "A1/B/C/D", "normal", 1, "A1/B/C/D", FALSE, "A3/B/C/D", TRUE},
- {4, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+ {4, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
{4, "A2/B/C/D", "normal", 1, "A2/B/C/D", FALSE, "A1/B/C/D", TRUE},
- {4, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+ {4, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
{4, "A3/B/C/D", "normal", 1, "A3/B/C/D", FALSE, "A2/B/C/D", TRUE},
- {4, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+ {4, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
{5, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E", FALSE, "A3/B/C/D/E", TRUE},
{5, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E", FALSE, "A1/B/C/D/E", TRUE},
Received on 2012-09-27 19:08:44 CEST