Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Record the move target path in a moved-away tree conflict skel.

Updates can modify the NODES table in ways which discard local move

information about tree conflict victims. One example is:

echo foo >> epsilon/foo.txt

svn mv epsilon alpha

svn ci # create r2

svn up -r1

svn mv epsilon beta

svn up -r2

When 'epsilon' is updated to r2, a tree conflict is raised and the move

'epsilon' -> 'beta' is deleted from the NODES table. 'beta' remains a copy.

$ svn status

A + beta

! C epsilon

> local dir moved away, incoming dir delete or move upon update

$

The conflict skel for the tree conflict on 'epsilon' now contains:

(tree () moved-away deleted epsilon)

This leaves the resolver with insufficient information about the local

move 'epsilon' -> 'beta' which existed before the update. To resolve this

conflict we must be able to identify the copy 'beta' as one potential move

target. The fact that copyfrom on 'beta' points to 'epsilon' is insufficient

because, in the general case, this copy could have occurred independently

of the tree conflict.

As of this commit, the tree conflict skel also records a move destination

path, 'beta' in our example:

(tree () moved-away deleted epsilon beta)

Apart from recording the path in the skel, this commit introduces no other

visible change in behaviour. In the future, the conflict resolver will be

able to make use of this new information to correlate the copy 'beta' with

the conflict victim 'epsilon' in the above example.

Note that old clients will simply ignore the new extra element at the end

of the conflict skel.

* subversion/libsvn_wc/conflicts.c

(svn_wc__conflict_skel_add_tree_conflict): Add move_dst_op_root_abspath

parameter and append it to the skel if it is non-NULL.

(svn_wc__conflict_read_tree_conflict): Return the move_dst_op_root_abspath

if present in the conflict skel.

(read_tree_conflict_desc, resolve_tree_conflict_on_node,

svn_wc__conflict_tree_update_break_moved_away,

svn_wc__conflict_tree_update_incoming_move,

svn_wc__conflict_tree_update_local_add): Update callers.

* subversion/libsvn_wc/conflicts.h

(svn_wc__conflict_skel_add_tree_conflict,

svn_wc__conflict_read_tree_conflict): Update declaration and docstring.

* subversion/libsvn_wc/questions.c

(internal_conflicted_p): Update caller.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__add_tree_conflict): Update caller.

* subversion/libsvn_wc/update_editor.c

(open_root, check_tree_conflict, add_directory, open_directory,

add_file, open_file, change_file_prop): Update callers.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_conflict_skel_from_raw): Update caller.

* subversion/libsvn_wc/wc_db.c

(revert_maybe_raise_moved_away): Update caller.

* subversion/libsvn_wc/wc_db_update_move.c

(create_tree_conflict, fetch_conflict_details): Update callers.

* subversion/tests/libsvn_wc/conflict-data-test.c

(test_serialize_tree_conflict): Update test expectations.

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

(check_db_conflicts): Update caller.

  1. … 9 more files in changeset.
Following up on r1807584, remove unnecessary SQL statements from

the WC schema definition and simplify a step in the upgrade process.

* subversion/libsvn_wc/wc-metadata.sql

(STMT_CREATE_NODES): Remove and include into STMT_CREATE_SCHEMA.

(STMT_CREATE_NODES_TRIGGERS): Likewise.

(STMT_CREATE_EXTERNALS): Likewise.

(STMT_UPGRADE_TO_31_ALTER_TABLE, STMT_UPGRADE_TO_31_FINALIZE):

Combine these statements into a single ...

(STMT_UPGRADE_TO_31): ... which is new.

(STMT_UPGRADE_TO_32): Remove as unused.

(-- format: YYY): Remove as unused, it converted to a comment anyway.

* subversion/libsvn_wc/wc_db.c

(init_db): Remove use of deleted SQL statements.

* subversion/libsvn_wc/upgrade.c

(bump_to_31): Remove the manual check for the existence of the

NODES.inherited_props column since we no longer support the

unreleased formats prior to format 20 that did not have

a NODES table.

* subversion/tests/libsvn_wc/utils.c

(svn_test__create_fake_wc): Remove use of deleted SQL statements.

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

(schema_statements): Remove use of deleted SQL statements.

  1. … 4 more files in changeset.
Following up on r1807584 remove more dead code, which should fix the build

breakage caused by that previous patch.

* subversion/libsvn_wc/upgrade.c

(read_tree_conflicts,

migrate_single_tree_conflict_data,

migrate_tree_conflict_data): Remove functions.

Drop support for upgrading working copies created with Subversion 1.7

development versions (using WC-NG development formats). Users can use

Subversion 1.7, 1.8 or 1.9 to perform an upgrade if they really need to.

We never promised to support these after the release of 1.7.0... And

not before that either ;-)

* subversion/libsvn_wc/upgrade.c

(bump_to_20,

bump_to_21,

bump_to_22,

bump_to_23,

bump_to_24,

bump_to_25,

bump_to_26,

bump_to_27,

bump_to_28,

rename_pristine_file,

upgrade_externals,

bump_to_29): Remove unused code.

(svn_wc__upgrade_sdb): Handle now unsupported formats with a proper

error.

* subversion/libsvn_wc/wc-metadata.sql

(STMT_UPGRADE_TO_20,

STMT_UPGRADE_TO_21,

STMT_UPGRADE_TO_22,

STMT_UPGRADE_TO_23,

STMT_UPGRADE_TO_23_HAS_WORKING_NODES,

STMT_UPGRADE_TO_24,

STMT_UPGRADE_TO_25,

STMT_UPGRADE_TO_26,

STMT_UPGRADE_TO_27,

STMT_UPGRADE_TO_27_HAS_ACTUAL_NODE_CONFLICTS,

STMT_UPGRADE_TO_28,

STMT_UPGRADE_TO_29): Remove unused statements.

* subversion/tests/cmdline/upgrade_tests.py

(upgrade_from_format_28): Remove test.

(test_list): Update list.

  1. … 2 more files in changeset.
Implement svn_io_file_rename2() with FLUSH_TO_DISK flag to require OS to

wait until rename operation is actually written to disk. Discussed in thread

"svn commit: r1682265 - /subversion/trunk/subversion/libsvn_fs_fs/util.c" on

dev@s.a.o [1]

[1] http://svn.haxx.se/dev/archive-2015-05/0211.shtml

* subversion/include/svn_io.h

(svn_io_file_rename2): New function declaration.

(svn_io_file_rename): Deprecate.

* subversion/libsvn_subr/io.c

(win32_file_rename): Use MOVEFILE_WRITE_THROUGH flag in call to

MoveFileExW if FLUSH_TO_DISK is non-zero.

(svn_io_file_rename2): Revv from svn_io_file_rename(). Add FLUSH_TO_DISK

parameter and perform flush to disk operation depending on the platform:

use MoveFileEx flag on Windows, fsync() target directory on POSIX and

fsync() target file on all other platforms. This logic mostly copied

from svn_fs_fs__move_into_place().

(svn_io_copy_link, svn_io_copy_file, svn_io_write_atomic,

svn_io_write_version_file): Use svn_io_rename2() with

FLUSH_TO_DISK=FALSE instead of svn_io_rename().

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

(test_file_rename2): Simple tests for svn_io_file_rename2().

(test_funcs): Add test_file_rename2.

* subversion/libsvn_subr/deprecated.c

(svn_io_file_rename): Call svn_io_file_rename2() with FLUSH_TO_DISK=FALSE.

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/stream.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_pristine.c

* subversion/libsvn_wc/workqueue.c

(*): Use svn_io_file_rename2() with FLUSH_TO_DISK=FALSE instead of

svn_io_file_rename().

  1. … 21 more files in changeset.
Use consistent form for cancel callback invocation. No functional changes

intended.

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_wc/upgrade.c

(svn_fs_fs__delete_revprops_shard, svn_fs_x__delete_revprops_shard,

svn_io_remove_dir2, svn_wc__wipe_postupgrade): Use "cancel_func(baton)"

form instead of "(*cancel_func)(baton)" like we in all other code.

  1. … 3 more files in changeset.
Simplify a few more code paths using the smarter Sqlite macros introduced

some time ago.

* subversion/libsvn_wc/upgrade.c

(upgrade_working_copy_baton_t,

upgrade_working_copy_txn): Remove helpers, as we can just...

(svn_wc_upgrade): ... use SVN_SQLITE__WITH_LOCK() and call the function

directly.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_txn_callback_t): Move callback type here.

(with_finalization): Write out some portions of SVN_SQLITE__WITH_LOCK(),

in a function that has initimite knowledge anyway, to avoid keeping

further unused code alive.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_txn_callback_t): Remove type.

(svn_wc__db_with_txn): Remove function.

* subversion/libsvn_wc/wc_db_util.c

(db_txn_callback_t,

txn_baton_t): Remove type.

(run_txn,

svn_wc__db_with_txn): Remove function.

* subversion/tests/cmdline/entries-dump.c

(tree_dump_txn): Remove function.

(tree_dump): Directly call svn_wc__internal_walk_children().

  1. … 4 more files in changeset.
* subversion/libsvn_wc/upgrade.c

(upgrade_apply_props): Remove redundant, shadowing, variable.

Move some upgrade specific code from wc_db.c to upgrade.c. This code doesn't

depend on wc_db.c internals and wc_db.c is long enough as-is. No behaviour

changes.

* subversion/libsvn_wc/upgrade.c

(includes): Add token-map.h.

(upgrade_apply_props): Move here with docs from wc_db.h.

Include a few portions of set_actual_props.

(migrate_node_props): Update caller.

(upgrade_apply_dav_cache): Move here.

(upgrade_to_wcng): Update caller.

* subversion/libsvn_wc/wc_db.c

(set_actual_props): Use standard wcroot argument as similer apis.

(insert_base_node,

insert_working_node): Update caller.

(set_actual_props): Use wcroot argument.

(svn_wc__db_op_set_props_internal): Update caller.

(svn_wc__db_upgrade_apply_dav_cache,

svn_wc__db_upgrade_apply_props): Move to upgrade.c

(svn_wc__db_upgrade_get_repos_id): Remove unused function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_upgrade_apply_dav_cache,

svn_wc__db_upgrade_apply_props,

svn_wc__db_upgrade_get_repos_id): Remove functions.

  1. … 2 more files in changeset.
Undo the introduction of svn_wc_conflict_description3_t.

Instead of revving svn_wc_conflict_description2_t ("desc2"), we can extend the

struct with new fields or a pointer to private data to be accessed via functions,

and keep the existing fields as they are now.

This approach avoids an unwieldy cascade of changes to callbacks and other API

elements which already use desc2. This commit does not add new fields or private

data for desc2 -- that is future work.

Discussed with philip, julianfoad, rhuijben, and breser.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_tree_conflict, svn_wc__add_tree_conflict): Switch back to desc2.

(svn_wc__cd3_to_cd2, svn_wc__cd3_array_to_cd2_array ): Remove declaration.

* subversion/include/svn_wc.h

(svn_wc_conflict_description_private_t): New typedef.

(svn_wc_conflict_description3_t): Remove.

(svn_wc_conflict_description2_t): Enhance documentation based on improvements

made for desc3. Extend this structure with a pointer to private data.

(svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc_conflict_description_create_tree3,

svn_wc__conflict_description3_dup,

svn_wc_conflict_resolver_func3_t): Un-declare.

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2,

svn_wc_conflict_resolver_func2_t): Un-deprecate.

(svn_wc_info_t): Remove 'conflicts2' field.

* subversion/libsvn_client/merge.c

(merge_dir_baton_t): Document that 'new_tree_conflicts' array now has

desc2 elements again.

(record_tree_conflict, merge_file_opened, merge_dir_opened): Use desc2.

* subversion/libsvn_wc/conflicts.c

(local_change_map): Rename back to reason_map for consistency.

(incoming_change_map): Rename back to action_map for consistency.

(svn_wc__conflict_skel_add_tree_conflict,

svn_wc__conflict_read_prop_conflict,

svn_wc__conflict_read_tree_conflict): Rename local_change and

incoming_change parameters back to reason and action for consistency.

(generate_propconflict, resolve_text_conflict, read_text_conflict_desc,

svn_wc__conflict_invoke_resolver, read_prop_conflict_descs,

svn_wc__read_conflicts, conflict_status_walker): Use desc2.

(eval_text_conflict_func_result): Rename 'merged_abspath' parameter back to

'merged_file' for consistency. Use desc2.

* subversion/libsvn_wc/deprecated.c

(svn_wc__status2_from_3): Use desc2.

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2): Moved back to libsvn_wc/util.c.

* subversion/libsvn_wc/entries.c

(read_one_entry, write_entry): Use desc2.

* subversion/libsvn_wc/info.c

(svn_wc_info_dup, build_info_for_node, svn_wc__get_info): Use desc2 and drop

support for removed 'conflicts2' member of svn_wc_info_t.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__deserialize_conflict, svn_wc__serialize_conflict,

svn_wc__add_tree_conflict, svn_wc__get_tree_conflict): Use desc2.

* subversion/libsvn_wc/tree_conflicts.h

(svn_wc__serialize_conflict,

svn_wc__deserialize_conflict): Tweak declarations for desc2.

* subversion/libsvn_wc/upgrade.c

(read_tree_conflicts, migrate_single_tree_conflict_data,

svn_wc__upgrade_conflict_skel_from_raw): Use desc2.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description_create_text3,

svn_wc_conflict_description_create_prop3,

svn_wc_conflict_description_create_tree3,

svn_wc__conflict_description3_dup,

svn_wc__cd3_array_to_cd2_array, svn_wc__cd3_to_cd2): Remove.

(svn_wc_conflict_description_create_text2,

svn_wc_conflict_description_create_prop2,

svn_wc_conflict_description_create_tree2): Move back here

from libsvn_wc/deprecated.c

* subversion/libsvn_wc/wc.h

(svn_wc__read_conflicts): Change mention in docstring back to desc2.

* subversion/svn/cl-conflicts.c

(svn_cl__get_human_readable_prop_conflict_description,

svn_cl__get_human_readable_tree_conflict_description,

append_tree_conflict_info_xml, svn_cl__append_conflict_info_xml): Use desc2.

* subversion/svn/cl-conflicts.h

(svn_cl__get_human_readable_prop_conflict_description,

svn_cl__get_human_readable_tree_conflict_description,

svn_cl__append_conflict_info_xml): Change declarations for desc2.

* subversion/svn/cl.h

(svn_cl__conflict_func_interactive): Change declaration back to desc2.

* subversion/svn/conflict-callbacks.c

(show_diff, show_conflicts, merge_prop_conflict, show_prop_conflict,

edit_prop_conflict, handle_text_conflict, handle_prop_conflict,

handle_tree_conflict, handle_obstructed_add,

conflict_func_interactive): Use desc2. In handle_prop_conflict, restore

workaround for wrongly filled in fields in desc2 for now.

* subversion/svn/info-cmd.c

(print_info_xml, print_info): Use desc2.

* subversion/svn/status.c

(print_status): Use desc2.

* subversion/tests/libsvn_wc/conflict-data-test.c

(compare_version, compare_file_content, compare_prop_conflict,

tree_conflict_create, test_deserialize_tree_conflict,

test_read_write_tree_conflicts, test_serialize_tree_conflict): Use desc2.

* tools/dev/svnraisetreeconflict/svnraisetreeconflict.c

(raise_tree_conflict): Use desc2.

  1. … 19 more files in changeset.
Rename 'action' and 'reason' fields in svn_wc_conflict_description3_t

to 'incoming_change' and 'local_change', respectively. The new names

make it more apparent whether a given change was made in the source

or the target of an operation, especially with tree conflicts.

No functional change.

* subversion/include/svn_wc.h

(svn_wc_conflict_description3_t): Rename 'action' to 'incoming_change'

and 'reason' to 'local_change'. Enhance related documentation.

* subversion/libsvn_client/merge.c

(record_tree_conflict, merge_file_opened, merge_dir_opened): Track renames.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict, read_tree_conflict_desc,

read_prop_conflict_descs): Track renames.

* subversion/libsvn_wc/entries.c

(write_entry): Track rename.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__deserialize_conflict, svn_wc__serialize_conflict,

svn_wc__add_tree_conflict): Track renames.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_conflict_skel_from_raw): Track renames.

* subversion/libsvn_wc/util.c

(svn_wc_conflict_description_create_text3, svn_wc__cd3_to_cd2): Track renames.

* subversion/tests/libsvn_wc/conflict-data-test.c

(compare_conflict, tree_conflict_create, test_deserialize_tree_conflict,

test_serialize_tree_conflict_data): Track renames.

* tools/dev/svnraisetreeconflict/svnraisetreeconflict.c

(raise_tree_conflict): Track renames.

  1. … 8 more files in changeset.
Following the availability of apr_hash_this_key() etc. in APR v1.5, use

these in Subversion code instead of svn__apr_hash_index_key() etc. Provide

substitutes only when APR is too old to provide them.

* subversion/include/svn_types.h,

subversion/libsvn_subr/iter.c

(svn__apr_hash_index_key,

svn__apr_hash_index_klen,

svn__apr_hash_index_val):

Rename to apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val.

Declare and define them only if APR is older than 1.5.

Everywhere else: track the renames.

  1. … 102 more files in changeset.
Revert r1508225, which moved the include of svn_private_config.h before all

includes of our public headers. Public headers shouldn't depend on private

headers and all changes that required this are long reverted on trunk.

This patch excludes all conflicting cases.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs_base/bdb/changes-table.c

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/old-and-busted.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

* subversion/tests/libsvn_fs/fs-test.c

* subversion/tests/libsvn_repos/repos-test.c

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

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

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

* subversion/tests/libsvn_wc/conflict-data-test.c

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

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

* subversion/tests/svn_test_fs.c

* tools/server-side/fsfs-stats.c

Move the svn_string_private.h include back to the original location.

  1. … 162 more files in changeset.
Teach Sqlite a bit of how we use our working copy database files, like that

we only have one true value in wc_id.

By adding this tiny bit of information Sqlite 3.8.0, 3.8.1 and the preview

of 3.8.2 use the intended query plans for our working copy queries, just

like Sqlite 3.7.12-3.7.17 already did without these hints.

(The older versions do use this information though!)

For more details on why this is important and how this works see

- the wc-metadata.sql patch

- http://www.sqlite.org/queryplanner-ng.html

- http://www.sqlite.org/fileformat2.html#stat1tab

And for reference also check the users@sqlite archive where Richard Hipp

recommends this approach for our current use of Sqlite.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_sdb): Call svn_wc__db_install_schema_statistics() after the

final format bump.

* subversion/libsvn_wc/wc-metadata.sql

(STMT_INSTALL_SCHEMA_STATISTICS): New statement.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_install_schema_statistics): New function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_install_schema_statistics): New function.

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

(schema_statements): Install the statistics.

(parse_stat_data): New helper function.

(test_schema_statistics): New test.

(test_funcs): Add test_schema_statistics.

  1. … 4 more files in changeset.
Add a working copy query test to automatically find queries with an idential

query plan as not having duplicates reduces maintenance and helps avoiding

query planner costs.

* subversion/libsvn_wc/upgrade.c

(migrate_single_tree_conflict_data): Use existing instead of specialized

queries.

* subversion/libsvn_wc/wc-queries.sql

(STMT_DELETE_MOVED_BACK): Remove duplicate.

(STMT_UPDATE_ACTUAL_CONFLICT_DATA,

STMT_INSERT_ACTUAL_CONFLICT_DATA): Remove duplicates.

* subversion/libsvn_wc/wc_db.c

(handle_move_back): Update query user.

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

(includes): Add svn_hash.h.

(test_query_duplicates): New function.

(test_funcs): Add test_query_duplicates.

  1. … 3 more files in changeset.
Introduce a null-pointer constant that we can use as a termination sentinel

in variable argument lists. This avoids the ugliness of writing

"(char *) NULL" all over the place.

* subversion/include/svn_types.h (SVN_VA_NULL): New symbol.

* subversion/include/svn_dirent_uri.h (svn_dirent_join_many),

subversion/include/svn_path.h (svn_path_join_many),

subversion/include/svn_xml.h (svn_xml_make_open_tag):

Update docstrings, mentioning SVN_VA_NULL as the argument list terminator.

[Lots of implementation files]: Replace typecast-NULL with SVN_VA_NULL in

function calls with variable argument lists.

  1. … 89 more files in changeset.
Cast NULL to (char *) in vararg calls to svn_dirent_join_many

and svn_path_join_many.

* subversion/libsvn_fs_fs/lock.c

(digest_path_from_digest, digest_path_from_path): here

* subversion/libsvn_fs_fs/transaction.c

(create_txn_dir, create_txn_dir_pre_1_5): here

* subversion/libsvn_fs_fs/util.c

(svn_fs_fs__path_rev_packed, svn_fs_fs__path_rev_shard,

svn_fs_fs__path_rev, svn_fs_fs__path_revprops_shard,

svn_fs_fs__path_revprops_pack_shard, svn_fs_fs__path_revprops,

svn_fs_fs__path_txn_dir, svn_fs_fs__path_txn_proto_rev,

svn_fs_fs__path_txn_proto_rev_lock, svn_fs_fs__path_node_origin): here

* subversion/libsvn_fs_x/lock.c

(digest_path_from_digest, digest_path_from_path): here

* subversion/libsvn_fs_x/transaction.c

(create_txn_dir): here

* subversion/libsvn_fs_x/util.c

(svn_fs_x__path_rev_packed, svn_fs_x__path_rev_shard,

svn_fs_x__path_revprops_shard,

svn_fs_x__path_revprops_pack_shard,

svn_fs_x__path_txn_dir, svn_fs_x__path_txn_proto_rev,

svn_fs_x__path_txn_proto_rev_lock, svn_fs_x__path_node_origin): here

* subversion/libsvn_subr/config_file.c

(svn_config__sys_config_path, svn_config_get_user_config_path): here

* subversion/libsvn_wc/adm_files.c

(svn_wc__adm_child): here

* subversion/libsvn_wc/upgrade.c

(build_lockfile_path, bump_to_29): here

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_temp_wcroot_tempdir): here

* subversion/libsvn_wc/wc_db_pristine.c

(get_pristine_fname): here

* subversion/mod_authz_svn/mod_authz_svn.c

(get_access_conf): here

* subversion/tests/cmdline/entries-dump.c

(entries_dump): here

* subversion/tests/libsvn_client/client-test.c

(test_patch): here

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

(pack_filesystem, pack_even_filesystem, recover_fully_packed): here

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(pack_filesystem, pack_even_filesystem, recover_fully_packed): here

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

(test_dirent_join): here

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

(test_path_join): here

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

(test_entries_alloc, test_stubs): here

  1. … 18 more files in changeset.
Fix the #include order such that svn_private_config.h is always

included first before any other svn header - if we also include

svn_hash.h.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_ConfigImpl_Category.cpp,

subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,

subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c,

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

subversion/libsvn_fs_base/bdb/changes-table.c,

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

subversion/tests/libsvn_fs/fs-test.c,

subversion/tests/libsvn_repos/repos-test.c,

subversion/tests/libsvn_subr/hashdump-test.c,

subversion/tests/libsvn_subr/mergeinfo-test.c,

subversion/tests/libsvn_subr/subst_translate-test.c,

subversion/tests/libsvn_wc/conflict-data-test.c,

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

subversion/tests/libsvn_wc/wc-test.c,

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

tools/server-side/fsfs-stats.c): #include svn_private_config.h first

  1. … 180 more files in changeset.
Make svn_wc__serialize_conflict() and svn_wc__deserialize_conflict() use the

new conflict description structure (svn_wc_conflict_description3_t).

* subversion/libsvn_wc/entries.c

(read_one_entry): Remove now unneeded conversion to old conflict description.

(write_entry): Pass new conflict description svn_wc__deserialize_conflict().

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__deserialize_conflict, svn_wc__serialize_conflict): Use new conflict

description. As far as tree conflicts are concerned, both descriptions are

still equivalent so this is not a functional change yet.

* subversion/libsvn_wc/tree_conflicts.h

(svn_wc__deserialize_conflict, svn_wc__serialize_conflict): Update docstrings

and declarations.

* subversion/libsvn_wc/upgrade.c

(read_tree_conflicts, migrate_single_tree_conflict_data,

svn_wc__upgrade_conflict_skel_from_raw): Update callers.

* subversion/tests/libsvn_wc/conflict-data-test.c

(tree_conflict_data, test_deserialize_tree_conflict,

test_serialize_tree_conflict_data): Update callers.

  1. … 4 more files in changeset.
Perform an upgrade notification on every successfull working copy upgrade,

instead of only from pre-1.7 working copies.

This helps GUI clients to determine if the format bump was successfull.

* subversion/libsvn_wc/upgrade.c

(svn_wc_upgrade): Update caller. Notify on format bumps withing WC-NG range.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_bump_format): Re-order arguments to match common form. Provide

optional output argument to tell about an actual format bump.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_bump_format): Update prototype.

  1. … 2 more files in changeset.
* subversion/libsvn_wc/upgrade.c

(bump_to_31): Reset SQLite statements on error.

* **/**

Run tools/dev/remove-trailing-whitespace.sh to remove all trailing whitespace

before we branch 1.8, like we did before creating previous branches.

No functional changes.

  1. … 199 more files in changeset.
Fix WC upgrades from old formats that didn't yet have a NODES table to

format 31 and beyond.

Format 31 introduced a new column in NODES, called inherited_props. When an

svn client which uses format 31 or greater is used to upgrade a pre-NODES WC,

this new column will be created as part of the CREATE TABLE statement which

creates the NODES table.

The format 31 upgrade code would unconditionally attempt to add a new

inherited_props column, which raises an error if the column already exists.

To fix this, check whether the inherited_props column exists before

attempting to create the column. Unfortunately this has to be done

from C as there doesn't seem to be a way of executing an ALTER TABLE

statement based on the result of a PRAGMA table_info() statement.

(If somebody knows a better way of doing this, I welcome any suggestions.)

* subversion/libsvn_wc/wc-metadata.sql

(STMT_UPGRADE_TO_31): Split this query into two parts, ...

(STMT_UPGRADE_TO_31_ALTER_TABLE): ... this one, which creates the new

column and can be skipped if needed, and ...

(STMT_UPGRADE_TO_31_FINALIZE): ... this one, which runs other upgrade

statements which are idempotent.

* subversion/libsvn_wc/wc-queries.sql

(STMT_PRAGMA_TABLE_INFO_NODES): New statement which returns info about

the NODES table, such as the names of existing columns.

* subversion/libsvn_wc/upgrade.c

(bump_to_31): Check if the inherited_props column exists before running

the SQL statement which attempts to create it.

  1. … 2 more files in changeset.
Use svn_hash_gets and svn_hash_puts.

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/old-and-busted.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/translate.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/libsvn_wc/workqueue.c

  1. … 19 more files in changeset.
Merge svn_kind_t into svn_node_kind_t, leaving only one public enumeration

that describes node kinds.

* subversion/include/svn_types.h (svn_kind_t): Removed.

All uses of svn_kind_t were replaced with svn_node_kind_t.

(svn_node_kind_t): New enumeration constant, svn_node_symlink.

Replaces all previous uses of svn_kind_symlink.

(svn__node_kind_from_kind): Removed. All call sites updated.

(svn__kind_from_node_kind): Removed. All call sites updated.

* subversion/libsvn_wc/tree_conflicts.c (node_kind_map):

Added comment about incompatible representation of svn_node_unknown.

* subversion/libsvn_wc/node.c (convert_db_kind_to_node_kind):

May be redundant, and comment is out of date. Added a note about that.

There are also a zillion changes in dependent files, and they all result

from the following renames:

svn_kind_t to svn_node_kind_t

svn_kind_none to svn_node_none

svn_kind_file to svn_node_file

svn_kind_dir to svn_node_dir

svn_kind_unknown to svn_node_unknown

svn_kind_symlink to svn_node_symlink

  1. … 65 more files in changeset.
Allow move-update to handle replaced nodes. This change adds a path

to the moved-away conflict stored in ACTUAL_NODE and paves the way

for handling multiple moved-to at one local_relpath.

* subversion/libsvn_wc/conflicts.h

* subversion/libsvn_wc/conflicts.c

(svn_wc__conflict_skel_add_tree_conflict): Add path parameter.

(svn_wc__conflict_read_tree_conflict): Add path parameter.

* subversion/include/private/svn_wc_private.h

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__add_tree_conflict): Add path parameter.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_moved_to): New.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_op_depth_moved_to): New.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_op_depth_moved_to, svn_wc__db_base_moved_to): New.

* subversion/libsvn_wc/update_editor.c

(check_tree_conflict): Raise a moved-away conflict for replaces that

overlay a move, store the new path in the conflict.

(delete_entry, add_directory, open_directory, add_file, open_file,

change_file_prop): Pass NULL.

* subversion/libsvn_wc/wc_db_update_move.c

(mark_tree_conflict, get_tc_info): Add path parameter.

(check_tree_conflict): Use new functions.

(tc_editor_add_directory, tc_editor_add_file, tc_editor_delete): Pass NULL.

(update_moved_away_conflict_victim): Add path parameter, use new function.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_LOWEST_WORKING_NODE): Select moved-to.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_conflict_skel_from_raw): Pass NULL.

* subversion/libsvn_client/merge.c

(tree_conflict): Add path parameter.

(tree_conflict_on_add): Adjust call.

(check_moved_away): Replace boolean parameter with path.

(merge_file_changed, merge_file_deleted, merge_dir_opened,

merge_dir_props_changed, merge_dir_deleted): Use path instead of boolean.

* tools/dev/svnraisetreeconflict/svnraisetreeconflict.c

(raise_tree_conflict): Pass NULL.

* subversion/tests/libsvn_wc/conflict-data-test.c

(test_read_write_tree_conflicts): Pass NULL.

(test_serialize_tree_conflict): Pass and retrieve new path.

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

(layered_moved_to): New XFail test.

(test_funcs): Mark move_replace as PASS, add new test.

  1. … 14 more files in changeset.
Following up on the explicit 'svn upgrade' requirement, reinstate the option of

opening a wc.db without upgrading for the upgrade process itself. This allows the

upgrade code to use a limited subset of the wc_db api to avoid having to

reimplement code just for upgrades.

* subversion/libsvn_wc/upgrade.c

(bump_to_30): Obtain wc_db without upgrading to allow creating conflicts.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_to_relpath,

svn_wc__db_from_relpath,

svn_wc__db_get_wcroot): Apply the same check for wcroots using a new macro.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_open): Rename argument. Update documentation.

(svn_wc__db_to_relpath

svn_wc__db_from_relpath,

svn_wc__db_get_wcroot): Document non-upgraded compatibility.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_t): Remove auto upgrade variable (always FALSE), and introduce

verify_format and exclusive.

(svn_wc__db_pdh_create_wcroot): Rename argument.

(CHECK_MINIMAL_WCROOT): New macro.

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_open): Initialize variables that affect opening db files.

(svn_wc__db_pdh_create_wcroot): Remove upgrade code. Only verify versions.

(svn_wc__db_wcroot_parse_local_abspath): Use config from db instead of

reparsing it from inside a loop. Update caller.

* subversion/tests/cmdline/upgrade_tests.py

(upgrade_from_1_7): Rename to ...

(upgrade_from_1_7_conflict): ... this, update comment and remove XFail.

(test_list): Update reference.

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

(create_open): Update comment.

  1. … 6 more files in changeset.
Make sure we properly reset an sqlite statement in the upgrade code to avoid

an sqlite assertion which hides the actual error.

* subversion/libsvn_wc/upgrade.c

(bump_30_upgrade_one_conflict): New function, extracted from...

(bump_to_30): ... this function. Properly handle errors from

bump_30_upgrade_one_conflict.

* subversion/libsvn_wc/upgrade.c

(bump_to_30): Reduce the scope of 'stmt_store', preventing the statement

from being prepared without also being used and reset.

Since file moves now start introducing 'update induced' conflicts on WORKING

nodes the assumption that the location can be read from BASE is no longer

valid. So start recording the full repository location in the conflict skel.

This avoid something the update_move handling calls the 'scan dance'.

* subversion/libsvn_wc/conflicts.c

(svn_wc__conflict_skel_set_op_update,

svn_wc__conflict_skel_set_op_switch): Store additional location.

(setup_tree_conflict_desc): Assume the location is there, or a legacy (1.7)

conflict.

* subversion/libsvn_wc/conflicts.h

(svn_wc__conflict_skel_set_op_update,

svn_wc__conflict_skel_set_op_switch): Add argument.

* subversion/libsvn_wc/update_editor.c

(complete_conflict): Receive target location info.

(delete_entry,

add_directory,

open_directory,

close_directory,

add_file,

open_file): Update caller.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_conflict_skel_from_raw): Update caller.

* subversion/libsvn_wc/wc_db_update_move.c

(check_tree_conflict,

mark_unversioned_add_conflict,

create_conflict_markers): Update caller.

(get_tc_info): Remove the scan dance.

* subversion/tests/libsvn_wc/conflict-data-test.c

(test_serialize_prop_conflict,

test_serialize_tree_conflict): Update caller.

  1. … 5 more files in changeset.