Checkout
rhuijben
committed
on 18 Feb 15
Fix svn_wc__db_op_make_copy_internal()'s handling of mixed revision BASE trees.

This fixes some issues around tree conflict handling, and i… Show more
Fix svn_wc__db_op_make_copy_internal()'s handling of mixed revision BASE trees.

This fixes some issues around tree conflict handling, and improves

database consistency.

* build/transform_sql.py

 (process_file): Allow passing columns and binding variables as argument of

   IS_STRICT_DESCENDANT_OF, like the other macros.

* subversion/libsvn_wc/wc-checks.sql

 (STMT_STATIC_VERIFY): Add documentation to the older statements. Extend.

* subversion/libsvn_wc/wc-queries.sql

 (STMT_DELETE_WORKING_BASE_DELETE): Split into non-recursive...

 (STMT_DELETE_WORKING_BASE_DELETE_RECURSIVE): ... and recursive variants.

 (STMT_INSERT_WORKING_NODE_FROM_BASE_COPY): Allow replacing nodes, and

   handle moved_to when doing that.

* subversion/libsvn_wc/wc_db.c

 (db_base_remove): Update caller.

 (make_copy_txn): Add recursion arguments to determine when a new op-depth

   is needed. Simplify code, by moving the initial shadowing to the calling

   function.

 (make_copy_move_moved_to): New function.

 (svn_wc__db_op_make_copy_internal): Update caller. Shadow all nodes with

   base-deleted before calling make_copy_txn. Move moved-to information

   to this layer.

* subversion/tests/cmdline/tree_conflict_tests.py

 (update_delete_mixed_rev): Remove XFail. Tweak status value.

* subversion/tests/libsvn_wc/op-depth-test.c

 (make_copy_mixed): New function. Tests svn_wc__db_op_make_copy_internal.

  make_copy_and_delete_mixed): New functions. Tests svn_wc__db_base_remove

    and shows an existing issue with move handling on base-delete.

 (test_list): Add new items.

Show less