Checkout Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
* subversion/libsvn_client/copy.c

(copy_or_move): Allow a versioned item to exist at the destination in

case of a meta-data only copy or move. This feature will be used by

the conflict resolver.

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.
When obtaining conflicts from wc-db, also allow directly obtaining properties.

We already read from the records that have the data, so this doesn't have a

real cost, while reading them separately (introduced in r1667228) does.

The final result after the combination of these patches is that we provide

better information using less database transactions, so this provides an

overall performance improvement.

This patch also makes the resolver avoid creating temporary files during

resolves where the code already knows that nobody is using these files,

because there is no resolver callback.

* subversion/libsvn_wc/conflicts.c

(read_prop_conflict_descs): Stop abusing no tempfile flag for not showing

details. Only read base properties if we don't already have them.

(svn_wc__read_conflicts): Allow obtaining skel in one step, and not reading

not-tree conflicts.

(resolve_tree_conflict_on_node,

svn_wc__mark_resolved_text_conflict,

svn_wc__mark_resolved_prop_conflicts): Update caller.

(conflict_status_walker): Use one db operation instead of two.

* subversion/libsvn_wc/copy.c

(copy_versioned_file,

remove_node_conflict_markers): Update caller.

* subversion/libsvn_wc/delete.c

(create_delete_wq_items): Update caller.

* subversion/libsvn_wc/entries.c

(read_one_entry): Update caller.

* subversion/libsvn_wc/info.c

(build_info_for_node): Update caller.

(svn_wc__get_info): Update caller.

* subversion/libsvn_wc/props.c

(svn_wc__create_prejfile): Update caller.

* subversion/libsvn_wc/questions.c

(internal_conflicted_p): Update caller.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__get_tree_conflict): Update caller.

* subversion/libsvn_wc/wc.h

(svn_wc__read_conflicts): Add two arguments.

* subversion/libsvn_wc/wc_db.c

(op_revert_txn): Update caller.

(svn_wc__db_read_conflict,

svn_wc__db_read_conflict_internal): Handle properties.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_conflict): Add optional properties argument.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_read_conflict_internal): Add optional properties argument.

* subversion/libsvn_wc/wc_db_update_move.c

(create_tree_conflict,

bump_moved_layer,

svn_wc__db_op_raise_moved_away): Update caller.

* subversion/libsvn_wc/workqueue.c

(run_prej_install,

run_set_text_conflict_markers,

run_set_property_conflict_marker): Update caller.

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

(test_prop_conflict_resolving,

test_binary_file_conflict): Update caller.

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

(check_db_conflicts): Update caller.

  1. … 15 more files in changeset.
Keep wc.db's move tracking stable when a 'svn mv' fails to rename the

target.

* subversion/libsvn_wc/copy.c

(remove_all_conflict_markers): Add cancel support.

(svn_wc__move2): Call svn_wc__db_op_delete on the already created

target when the wc move operation failed. This keeps the moves

state as before the operation.

Fix some issue #3899 related problems: delete conflict markers of a moved

file in the right location.

* subversion/libsvn_wc/copy.c

(remove_node_conflict_markers): Fix variable name.

(remove_all_conflict_markers): Fix argument name.

(svn_wc__move2): Fix removing conflicts on a moved file.

Enable directly reading the node kind when reading conflicts from wc_db.

This avoids a database transaction for a common operation during conflict

resolving (and when retrieving conflicts via apis like 'svn info').

* subversion/libsvn_wc/conflicts.c

(read_tree_conflict_desc): Add node kind argument and use that to

fill kind.

(svn_wc__conflict_invoke_resolver): Update caller. Fetch kind.

(svn_wc__read_conflicts): Fetch and pass kind.

(resolve_prop_conflict_on_node): Add conflicts argument.

(svn_wc__mark_resolved_text_conflict,

svn_wc__mark_resolved_prop_conflicts,

conflict_status_walker): Update caller.

* subversion/libsvn_wc/copy.c

(copy_versioned_file,

remove_node_conflict_markers): Update caller.

* subversion/libsvn_wc/delete.c

(create_delete_wq_items): Update caller.

* subversion/libsvn_wc/entries.c

(read_one_entry): Update caller.

* subversion/libsvn_wc/props.c

(svn_wc__create_prejfile): Update caller.

* subversion/libsvn_wc/questions.c

(internal_conflicted_p): Update caller.

* subversion/libsvn_wc/wc_db.c

(op_revert_txn,

svn_wc__db_read_conflict): Update caller.

(svn_wc__db_read_conflict_internal): Extend usage of error handling query.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_conflict): Add optional argument.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_read_conflict_internal): Add optional argument.

* subversion/libsvn_wc/wc_db_update_move.c

(create_tree_conflict,

get_tc_info,

bump_moved_layer): Update caller.

* subversion/libsvn_wc/workqueue.c

(run_prej_install): Update caller.

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

(test_read_write_tree_conflicts): Add file to allow retrieving kind from db.

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

(check_db_conflicts,

check_tree_conflict_repos_path): Update caller.

  1. … 12 more files in changeset.
Commit some currently disabled experimental logic to allow moving mixed

revision trees. Extend some tests.

* subversion/libsvn_wc/copy.c

(RECORD_MIXED_MOVE): Document macro.

(copy_or_move): Rename argument to make it more generic. Tweak setting.

(svn_wc__move2): Update caller.

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

(mixed_rev_move): Extend this WIMP test to verify mixed revision moves.

Add some nodes and tests on them.

(move_depth_expand): Extend test to capture current not-present behavior.

  1. … 1 more file in changeset.
Following up on r1632286, optimize copying versioned directories a bit by

enabling existing optimized logic.

* subversion/libsvn_wc/copy.c

(copy_to_tmpdir): Create directory from the workqueue instead of doing a

lot of work in a tempdir.

(copy_versioned_dir): Pass dirent to copy_to_tmpdir. Update recursive call

and comment.

(copy_or_move): Update caller.

In 'svn cp A B' run the workqueue per directory instead of per file, like how

we do this in similar operations.

The db reflects that the operation was already done and the workqueue ensures

that the operation will be performed eventually. This matches how we do this

in operations like update and commit. In general performance is much better

if we run the workqueue in batches.

* subversion/libsvn_wc/copy.c

(copy_versioned_file): Remove unneeded ensurance that was added during WC-NG

conversion work.

When performing a recursive 'svn cp DIR NEW-DIR' avoid a db transaction

per copied unmodified file and a filestat on all descendants.

* subversion/libsvn_wc/copy.c

(copy_to_tmpdir,

copy_versioned_file): Add a few arguments, to optionally allow testing

if the on-disk information matches the recorded information without

performing a filestat and a db transaction.

(copy_versioned_dir): Update caller.

(copy_or_move): Update caller.

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.
Reintegrated the remote-only-status branch.
  1. … 25 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.
Remove a very obsolete wc_db api that was just a wrapper for

svn_wc__db_base_get_info() since far before 1.7.

* subversion/libsvn_wc/adm_files.c

(svn_wc__internal_ensure_adm): Update caller.

* subversion/libsvn_wc/adm_ops.c

(check_can_add_to_parent): Update caller.

(svn_wc_add4): Update caller.

* subversion/libsvn_wc/copy.c

(copy_or_move): Update caller.

* subversion/libsvn_wc/entries.c

(read_one_entry): Update caller.

* subversion/libsvn_wc/status.c

(get_repos_root_url_relpath): Update caller.

* subversion/libsvn_wc/update_editor.c

(make_dir_baton,

make_file_baton): Update caller.

(make_editor): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_scan_base_repos): Remove function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_scan_base_repos): Remove function.

  1. … 7 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.
* **/**

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.
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.
Split a query used for updating moves after a delete in two separate

queries that are easier to understand to us and to the query optimizer.

This resolves a segfault when using the delete wc_db operation with

a path moved back to its original location.

* subversion/libsvn_wc/copy.c

(copy_or_move): Stop reporting moved back nodes as degraded to delete.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_MOVED_PAIR): Remove selection of moves into the target

tree.

(STMT_UPDATE_MOVED_TO): New query, updating all moved-to's in a tree.

* subversion/libsvn_wc/wc_db.c

(delete_node): Split usage of STMT_SELECT_MOVED_PAIR and replace some

usage with STMT_UPDATE_MOVED_TO.

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

(test_funcs): Remove XFail from move_back test.

  1. … 3 more files in changeset.
Make move error condition handling a bit more secure by hiding

an api and making a few checks occur earlier.

* subversion/include/private/svn_wc_private.h

(svn_wc__delete_internal): Remove function. Users can just use

svn_wc_delete4 or svn_wc__move2().

* subversion/libsvn_wc/copy.c

(svn_wc__move2): Call svn_wc__db_op_delete() directly.

* subversion/libsvn_wc/delete.c

(copy_or_move): Check for some cases of invalid moves.

(svn_wc__delete_internal): Rename to...

(svn_wc_delete4): ... this.

(svn_wc_delete4): Remove wrapper function.

  1. … 2 more files in changeset.
Add a new svn_wc__db_scan_moved() function based on the internal scan_added()

which allows access to a bit more information. Use this information to fix

a case where a specific move could never be committed.

* subversion/libsvn_wc/adm_files.c

(svn_wc__internal_ensure_adm): Update caller.

* subversion/libsvn_wc/adm_ops.c

(check_can_add_to_parent): Update caller.

* subversion/libsvn_wc/copy.c

(copy_or_move): Update caller.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted,

read_one_entry): Update caller.

* subversion/libsvn_wc/info.c

(build_info_for_node): Update caller. Only read moved_from for

op-roots, like how we handle copies.

* subversion/libsvn_wc/node.c

(svn_wc__internal_get_repos_info): Update caller.

(svn_wc__internal_get_origin): Update caller.

(svn_wc__node_was_moved_here): Use new api.

* subversion/libsvn_wc/status.c

(read_info): Use different output argument of svn_wc__db_scan_addition.

(assemble_status): Reduce scope of err. Use new api for obtaining moved

from information.

* subversion/libsvn_wc/update_editor.c

(check_tree_conflict,

add_directory,

add_file): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_scan_addition): Remove two arguments. Tell implementation which

arguments are not needed to avoid additional queries in generic cases.

(svn_wc__db_scan_moved): New function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_scan_addition): Remove moved_from handling additional

information as no api user is really depending on it.

(svn_wc__db_scan_moved): New function.

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

(test_scan_addition): Update caller. Also call svn_wc__db_scan_moved.

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

(nested_move_commit): Use new api.

(test_funcs): Remove XFail from commit_moved_descendant.

  1. … 11 more files in changeset.
* subversion/libsvn_wc/copy.c

(copy_versioned_dir): Use the right path in two error messages.

When mixed revision moves are not an error, make the move handling degrade

to a proper copy+delete when encountering mixed revisions instead of still

recording a move, which most likely breaks later.

Also degrade/convert to a no-move when a node is moved back to its original

location.

* subversion/libsvn_wc/copy.c

(copy_or_move):

Always degrade to copy and delete when doing a multi-db move.

Mixed revision-ness is only interesting when moving base nodes as

the result only applies to BASE anyway. Degrade to copy when the

mixed revision check says we can't move instead of recording a

move for mixed revisions anyway.

After a move ask wc_db to undo move-backs.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_MOVED_BACK,

STMT_DELETE_MOVED_BACK): New query.

* subversion/libsvn_wc/wc_db.c

(handle_move_back,

svn_wc__db_op_handle_move_back): New function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_handle_move_back): New function.

* subversion/tests/cmdline/copy_tests.py

(move_file_back_and_forth,

move_dir_back_and_forth): Update expected result.

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

(move_to_swap): Extend testcase. Add commented section testing a different

problem.

(test_list): Mark mixed_rev_move() as WIMP, because this triggers a copy

and delete now.

  1. … 5 more files in changeset.
* subversion/libsvn_wc/copy.c

(svn_wc__move2): Typo in comment.

* subversion/libsvn_wc/copy.c

(remove_node_conflict_markers): Indentation fix.

* subversion/libsvn_wc/copy.c

(svn_wc__move2): Move some local variable declarations up to the beginning

of the function. It is small enough to make do without a nested scope.

No functional change.

Following up on r1431352, apply some simplifications in the copy code.

Perform the mixed revision test for moving trees with tracking once per move

instead of once for every directory moved.

* subversion/libsvn_client/merge.c

(ensure_wc_is_suitable_merge_target): Use proper format for svn_revnum_t.

* subversion/libsvn_wc/copy.c

(copy_versioned_file): Remove unused argument.

(copy_versioned_dir): Move the mixed revision copy test to the caller, and

remove now unused arguments. Update caller.

(copy_or_move): Remove unneeded checksum handling. Perform the mixed revision

test here. Use proper format for svn_revnum_t. Update caller.

  1. … 1 more file in changeset.
Use Sqlite to determine which pristines must be transferred on copy/move

operations to avoid having to do this for every node separately.

Extracting this from the copy/move code allows moving more copy handling in

the db state.

Avoid copying pristines that already exist in the destination working copy.

* subversion/libsvn_wc/copy.c

(copy_versioned_file): Instead of moving every separate pristine here...

(copy_or_move): Do this in a single step here.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_COPY_PRISTINES): New query, selecting pristines of all relevant

layers.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_pristine_transfer): Document as recursive.

* subversion/libsvn_wc/wc_db_pristine.c

(includes): Add svn_pools.h.

(pristine_transfer_txn2): Remove function.

(maybe_transfer_one_pristine): New function.

(pristine_transfer_txn1): Rename to ...

(pristine_transfer_txn): ... this. Use STMT_SELECT_COPY_PRISTINES to iterate

through all nodes and to keep a read lock on src_wcroot.

(svn_wc__db_pristine_transfer): Update caller.

  1. … 3 more files in changeset.
Degrade cross-wc moves to a copy+delete. We cannot currently track cross-wc

moves, and trying to do so leaves a broken move in the source WC.

Found by: danielsh

See for related discussion:

http://svn.haxx.se/dev/archive-2013-01/0147.shtml

* subversion/libsvn_wc/copy.c

(copy_or_move): Add a new optional output parameter move_degraded_to_copy

to let the caller know whether a move had to be degraded. Set this parameter

for cross-WC moves.

(svn_wc_copy3): Pass NULL for move_degraded_to_copy.

(svn_wc__move2): If we find that a move has been degraded to a copy, perform

a regular deletion of the move source.

* subversion/libsvn_wc/copy.c

(svn_wc__move2): Add note.