Checkout Tools
  • last updated 46 mins ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1660742 is being indexed.

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/

(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


(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/

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

Further improvements to the db-test test setup: fix shadowing

of 'J'.

* subversion/tests/libsvn_wc/db-test.c

(TESTING_DATA): Shadow node at the right op-depth.

(test_scan_deletion): Use SVN_TEST_STRING_ASSERT. Revert recent

assumption change.

More manual wc-db test scenario fixes: Make the entries-compat base-set

follow the rules of a valid wc-ng database.

* subversion/libsvn_wc/wc-checks.sql

(STMT_STATIC_VERIFY): Add another verification.

* subversion/tests/libsvn_wc/entries-compat.c

(TESTING_DATA): Fix op-depths. Add missing row. Use base-deleted for

actual deletes, not 'not-present'.

Fix bind offset in upgrade query.

(Somehow sqlite uses 0 based columns for getting, but 1 based columns for

binding... and I didn't see the difference in the db as the values were


* subversion/libsvn_wc/entries.c

(insert_node): Following up on r1660652, fix column offset.

Following up on r1660610 and r1660641, just get rid of the pool handling

inside the sqlite function callbacks. Our current users don't need it and

if needed by somebody else it can be handled via the baton.

* subversion/include/private/svn_sqlite.h

(svn_sqlite__func_t): Replace scratch_pool argument with baton.

* subversion/libsvn_subr/sqlite.c

(function_wrapper_baton_t): Remove pools.

(wrapped_func): Just pass the actual sqlite3 values to the inner




clear_sqlite_function_scratch): Remove.

(svn_sqlite__create_scalar_function): Remove pool registrations.


svn_sqlite__value_text): Assume other argument type.

* subversion/libsvn_wc/wc_db_util.c

(relpath_depth_sqlite): Change argument.

* subversion/tests/libsvn_subr/sqlite-test.c

(error_second): Change argument.

* subversion/libsvn_wc/entries.c

(insert_node): Don't write last_* values on local additions as that

trips the validation rules (and makes no sense).

* STATUS: Nominate r1660646.
* STATUS: Nominate r1660646.
Fix an ugly corner case in the upgrade from entries code where replaced

directories would receive an invalid repository location.

In general WC-NG wouldn't use the value, as they are never recorded

on an op-root, and commit only uses these paths from op-roots.

This case tripped the validation rules from upgrade tests #16.

* subversion/libsvn_wc/entries.c

(write_entry): Fix repository location for directories.

entry->name was "" for the directory itself. Use revision

from same source as repos-path and repos-id.

Following up on r1660610, add another pool cleanup handler to

handle the case where the root pool is cleaned up before

the state pool.

This should fix the problems in the swig bindings.

* subversion/libsvn_subr/sqlite.c

(function_wrapper_baton_t): Hold state pool reference.

(clear_sqlite_function_scratch): Add forward definition.

(clear_sqlite_function): Rename to...

(clear_sqlite_function_state): ... this. Reset registration.

(clear_sqlite_function_scratch): New function.

(svn_sqlite__create_scalar_function): Add second registration.

Fix the op-depth calculations in db-tests.c, to no longer trip +-

every validation rule of op-depths. This involved changing

a local added subdir (with descendants at the same op-depth!)

into a copy.

These testcases were written before NODES introduced op-depth,

and the tests were only updated to not trigger test failures.

* subversion/libsvn_wc/wc-checks.sql

(STMT_STATIC_VERIFY): Make ancestor check a bit stricter.

* subversion/tests/libsvn_wc/db-test.c

(TESTING_DATA): Tweak setup.

(test_pdh): Install ancestor for not-present to avoid


(validate_abspath): Tweak function to print paths on error.

(test_scan_addition): Tweak expectations after transforming

add into a copy.

(test_scan_deletion): Tweak test. Minor change to handle

working delete.

* STATUS: Vote -0 for r1536854 "Make 'svnadmin verify' detect inconsistencies".
Make it possible to run sqlite queries that use user defined functions

when the child pools of the pool containing the sqlite database

are being cleaned up.

This is necessary to use op-depth calculations in verification queries.

(or to run queries at all when the verification triggers are used)

* subversion/libsvn_subr/sqlite.c

(clear_sqlite_function): New function.

(svn_sqlite__create_scalar_function): Document nasty problem.

Create function pool in global pool.

* subversion/libsvn_wc/wc-checks.sql

(STMT_STATIC_VERIFY): Extend verifications.

* subversion/tests/libsvn_wc/wc-queries-test.c

(relpath_depth_sqlite): New function (stub).

(test_verify_parsable): Define relpath_depth.

* STATUS: Changing to +1 vote for the r1652182 / issue 4551 group.
On the '1.7.x-issue4551' branch: avoid requiring a recent APR version.^M^M* subversion/svnrdump/load_editor.c

(close_node): Avoid using apr_hash_this_key/val.

* STATUS: Nominate r1660593 via backport branch.
On the r1660593 branch: Merge r1660508,1660593 without verification changes.
Create backport branch for r1660593
* STATUS: First 1.9.x nomination: r1660593.
Stop setting last-rev, last-date and last-author on foreign repos copies

and merges. Fix consistency between svn_wc__db_op_copy_XXX() methods.

This fixes a bug in our entries compatibility code, as that assumes that

there is a copy if there is a last-rev.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_add4): Update caller.

* subversion/libsvn_wc/update_editor.c

(svn_wc__complete_directory_add): Update caller.

* subversion/libsvn_wc/wc_db.c

(insert_working_node): Don't set pristine properties on local additions.

(svn_wc__db_op_copy_dir): Move is_moved argument last. Don't set changed*

and properties on local additions.

(svn_wc__db_op_copy_file): Don't set changed* and properties on local


(svn_wc__db_op_copy_symlink): Calulate moved_to like the other operations.

Don't set changed* and properties on local


* subversion/tests/cmdline/

(repos_to_wc): Fix test expectation.

* STATUS: -0 on the r1652182 / issue 4551 group due to build problem.
* STATUS: Vote for and approve r1651759.
Fix more cases where the direct db operations in the C tests create nonstandard

db instances.

* subversion/libsvn_wc/wc-checks.sql

(STMT_STATIC_VERIFY): Extend tests.

* subversion/tests/libsvn_wc/db-test.c

(TESTING_DATA): Give present directories a depth and remove pristine data

from local additions that aren't copies.

* subversion/tests/libsvn_wc/entries-compat.c

(TESTING_DATA): Give present directories a depth; files a checksum and

remove pristine data from local additions.

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

(insert_actual): When turning a directory in a file, really make it a file.

* subversion/tests/libsvn_wc/wc-queries-test.c

(test_verify_parsable): New function, verifying the check statements.

(test_funcs): Add test_verify_parsable.

* subversion/tests/libsvn_wc/wc-test-queries.sql


(STMT_NODES_SET_FILE): Set checksum, remove depth.

* STATUS: Vote for r1542765, r1644158 and r1646785 groups.
* STATUS: Nominate r1532287.

* STATUS: Nominate very easy to review neon buildfix.
* build/generator/

(write): Don't prepend $(SolutionDir) before absolute paths.

Create backport branch for an issue building neon
Remove the '1.8.x-r1590751' branch, merged in r1660562.
Merge the 1.8.x-r1590751 branch:

* r1590751, r1660350

Use empty, rather than NULL, config if default is unreadable.


svn SEGV reported by user.


A test case is "HOME=/dev/null svn st".




+1: rhuijben, philip, julianfoad, danielsh