Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
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

additions.

(svn_wc__db_op_copy_symlink): Calulate moved_to like the other operations.

Don't set changed* and properties on local

additions.

* subversion/tests/cmdline/copy_tests.py

(repos_to_wc): Fix test expectation.

  1. … 4 more files in changeset.
Transfer the code of the final local bump of the commit handling from adm_ops.c

to wc_db.c. This allows performing the entire operation in a single db

transaction, which for certain use cases provides a huge performance boost.

Especially on remote filesystems this change will reduce the post commit

processing of huge commits containing many nodes from hours to seconds.

(On the local ramdrive I use for most of my testing the improvement is barely

measurable but you will certainly notice this on local harddisks.)

* subversion/libsvn_wc/adm_ops.c

(svn_wc_committed_queue_t): Just store svn_wc__db_commit_queue_t references.

(process_committed_leaf,

process_committed_internal): Move to wc_db.c.

(svn_wc_committed_queue_create): Update initialization.

(svn_wc_queue_committed4): Use svn_wc__db_commit_queue_add to perform the

actual queueing.

(have_recursive_parent,

compare_queue_items): Move to wc_db.c.

(svn_wc_process_committed_queue2): Extract part of the processing to

svn_wc__db_process_commit_queue.

* subversion/libsvn_wc/wc_db.c

(commit_queue_item_t,

svn_wc__db_commit_queue_t): New structs.

(svn_wc__db_create_commit_queue): New function.

(process_committed_leaf,

process_committed_internal,

have_recursive_parent,

compare_queue_items): Move from adm_ops.c. Use wc_db internal relpath

functions where easily possible.

(db_process_commit_queue): New function. Code extracted from

svn_wc_process_committed_queue2.

(svn_wc__db_process_commit_queue): New function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_commit_queue_t): New typedef.

(svn_wc__db_create_commit_queue,

svn_wc__db_commit_queue_add,

svn_wc__db_process_commit_queue):

  1. … 2 more files in changeset.
Avoid unnecessary database query for every node when retrieving all nodes in

a changelist.

* subversion/libsvn_wc/adm_ops.c

(get_node_changelist): Don't read node twice to read just the same value.

Only populate a hash of commit items when it is going to be used

by the legacy recursive commit logic. In almost all cases this isn't

necessary for the commit, and this makes it possible to move the

per working copy commit logic directly into the wc-db code.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_committed_queue_t): Remove hash.

(process_committed_internal): Tweak documentation. Add hash as

argument.

(svn_wc_committed_queue_create): Update initialization.

(svn_wc_queue_committed4): Remove setting.

(svn_wc_process_committed_queue2): Create hash if necessary. Use sorted

array for walking the working copies to allow clearing hash earlier.

Fix a bug in the legacy recursive commit support, which in most cases

would have always disabled the recursive commit logic.

* subversion/libsvn_wc/adm_ops.c

(process_committed_internal): Properly detect when to recurse.

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

(test_legacy_commit1): Remove intermediate state test, as that now

would fail now.

(test_legacy_commit2): New function. Testing the slightly newer but also

long deprecated commit support used around 1.6.

(test_funcs): Add test.

  1. … 1 more file in changeset.
Rename a few members of a private commit struct. Reverse a few booleans to

make it clearer how they are handled.

There should be no functional changes, although a few variables have

different values.

* subversion/libsvn_wc/adm_ops.c

(committed_queue_item_t): Update a few member names. Add more documentation.

(process_committed_leaf,

process_committed_internal): Rename arguments to match committed_queue_item_t.

(svn_wc_queue_committed4): Update initialization.

Update caller.

(svn_wc_process_committed_queue2): Update usage. Remove bail out as the

post processing that could be optimized is gone.

Instead of determining which working copies are affected while applying the

commit queue, do this while creating the queue by actually creating a queue

per working copy.

This allows performing a working copy commit in a future step.

I expected a slight performance slowdown in this step, but it appears things

already get slightly faster than before, most likely just caused by using pre

sorted items.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_committed_queue_t): Add member.

(svn_wc_committed_queue_create): Initialize new mapping.

(svn_wc_queue_committed4): Determine which working copy is affected here.

(compare_queue_items): New function.

(svn_wc_process_committed_queue2): Use two loops to avoid wcroot work.

Reimplement the svn_wc_process_committed4() which has been deprecated since

Subversion 1.6 slightly less efficient by making it produce a commit queue

and then committing that.

This intermediate step will then allow making the commit from the queue

more efficient.

Originally we added this intermediate function as api to allow requiring a

SHA hash in the final API, but that didn't work out as we did still go

through this code from the copy descendant handling.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__process_committed_internal): Make static and rename to...

(process_committed_internal): ... this. Update recursive call.

* subversion/libsvn_wc/deprecated.c

(svn_wc_process_committed4): Construct wc_ctx and commit queue.

* subversion/libsvn_wc/wc.h

(svn_wc__process_committed_internal): Remove function.

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

(global): Include apr_md5.h and suppress deprecation warnings.

(test_legacy_commit1): New function, exercising some otherwise dead

legacy code.

(test_funcs): Add test_legacy_commit1.

  1. … 3 more files in changeset.
Following up on r1603617 and r1603619, move the logic of the post commit

handling of nodes that shouldn't be bumped in the commit queue. This moves

the logic into the working copy and allows further improvements by reducing

the number of db transactions.

* subversion/include/svn_wc.h

(svn_wc_queue_committed4): New function.

(svn_wc_queue_committed3): Deprecate function.

* subversion/libsvn_client/commit.c

(post_process_commit_item): Update caller.

(post_process_no_commit_item): Remove function.

(svn_client_commit6): Remove no-commit filter and no-commit handling.

* subversion/libsvn_wc/adm_ops.c

(committed_queue_item_t): Add committed boolean.

(svn_wc_queue_committed3): Rename to ...

(svn_wc_queue_committed4): ... this and allow setting committed boolean.

(svn_wc_process_committed_queue2): Handle not bumping specific items.

* subversion/libsvn_wc/deprecated.c

(svn_wc_queue_committed3): New function.

  1. … 3 more files in changeset.
In preparation for running more of the post commit processing in a single

sqlite transaction, update read only status for unlock operations from the

working queue.

This probably introduces a temporary performance regression for this scenario.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_remove_lock2): Create work item and pass that to db operation.

* subversion/libsvn_wc/update_editor.c

(close_file): Update caller.

* subversion/libsvn_wc/wc_db.c

(lock_remove_txn,

svn_wc__db_lock_remove): Add work_items handling.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_lock_remove): Add work_items handling.

  1. … 3 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.
Make 'svn lock' and 'svn unlock' obtain a working copy lock around its

operation. This resolves an old TODO in libsvn_wc and a user reported

issue involving readonly working copies.

* subversion/libsvn_client/locking_commands.c

(lock_baton): Add base_url.

(store_locks_callback): Update caller. Calculate a proper url for

notifications, instead of passing a relpath as url.

(wc_lock_item_t): Store url.

(organize_lock_targets): Obtain working copy locks if necessary. Calculate

targets per working copy.

(svn_client_lock,

svn_client_unlock): Update caller. Release working copy locks.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_add_lock2,

svn_wc_remove_lock2): Remove commented out validations.

* subversion/tests/cmdline/lock_tests.py

(lock_multi_wc,

commit_stolen_lock): Update assumptions for tweaked output.

* subversion/tests/cmdline/svnadmin_tests.py

(test_lslocks_and_rmlocks): Update assumptions for tweaked output.

  1. … 3 more files in changeset.
Don't canonicalize properties when doing a foreign copy.

Presumably if you're doing a foreign copy you don't have control over the

remote repo and you need to pull in whatever it has so as to be useful.

* subversion/include/svn_wc.h

(svn_wc_add_from_disk2): deprecate in favor of ...

(svn_wc_add_from_disk3): which lets you skip property canonicalization

* subversion/libsvn_wc/adm_ops.c

(svn_wc_add_from_disk2): Replace with ...

(svn_wc_add_from_disk3): new version of function with skip_checks arg.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add_from_disk2): Deprecated function moved here.

* subversion/libsvn_client/copy_foreign.c

(ensure_added, file_close, svn_client__copy_foreign): Update

svn_wc_add_from_disk2() call to svn_wc_add_from_disk3() with TRUE

for skip_checks arg

(dir_change_prop, file_change_prop): Update comments to match new function

* subversion/libsvn_client/add.c

(add_file, add_dir_recursive, add): Update svn_wc_add_from_disk2() call to

svn_wc_add_from_disk3() with FALSE for the skip_checks arg

* subversion/libsvn/client/merge.c

(merge_dir_opened): ...

* subversion/libsvn/client/patch.c

(create_missing_parents, install_patched_target,

install_patched_prop_targets): ...

* subversion/tests/libsvn_wc/utils.c

(sbox_wc_add): ...

  1. … 7 more files in changeset.
Get rid of the ever increasing number of private apis in svn_sorts.h by adding

a new private/svn_sorts_private.h file with the private parts and updating the

needed #include-s.

*AND*

Improve error reporting during xml parsing in ra_serf a bit.

For 1.9 the number of private apis in this public header more than doubled,

doubling the original filesize, while our policy is to never add private

functions in public headers.

* build.conf

(libsvn_subr): Add export.

* subversion/include/private/svn_sorts_private.h

New file, copied from ../svn_sorts.h.

* subversion/include/svn_sorts.h

Remove everything possible in our private namespace. Keeping some

references.

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/status.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/lock.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/mod_dav_svn/repos.c

* subversion/svn/log-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/tests/libsvn_subr/priority-queue-test.c

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

Fix includes.

* subversion/libsvn_ra_serf/util.c

(expat_response_handler): Combine XML errors with our custom parser errors

instead of only reporting one or the other.

  1. … 42 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.
Fix issue #4364: Correctly remove the stale entries from the lock table when

committing deletions.

* subversion/libsvn_client/commit.c

(post_process_commit_item): always pass the flag to remove locks for deleted

and replaced items.

* subversion/libsvn_wc/wc-queries.sql

Add a new query which removes all lock rows recursively for a node.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_remove): Add a new parameter remove_locks to recursively

remove the lock rows.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_base_remove): Forward the new remove_locks parameter to

db_base_remove.

(db_base_remove): Add and implement remove_locks.

(commit_node): Also remove the locks recursively for subnodes of the

current node.

(bump_node_revision): Pass FALSE for remove_locks to get the old default

behaviour.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): In the shortcut for deleted nodes, pass TRUE to

remove the locks recursively.

* subversion/libsvn_wc/crop.c

(crop_children): Pass FALSE for remove_locks to get the old default

behaviour.

* subversion/libsvn_wc/externals.c

(svn_wc__external_remove): Pass FALSE for remove_locks to get the old

default behaviour.

* subversion/libsvn_wc/update_editor.c

(delete_entry

close_edit): Pass FALSE for remove_locks to get the old default behaviour.

* subversion/libsvn_wc/workqueue.c

(run_base_remove): Pass FALSE for remove_locks to get the old default

behaviour.

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

(base_dir_insert_remove): Pass FALSE for remove_locks to get the old default

behaviour.

* subversion/tests/cmdline/lock_tests.py

(def drop_locks_on_parent_deletion): Provide a regression test which catches

reappearing locks.

Patch by: Markus Schaber <m.schaber{_AT_}codesys.com>

(minor tweaks by me)

  1. … 10 more files in changeset.
Significantly reduce the number of open files during a typical update

over ra_serf by using lazy-opening streams to delay opening until the

HTTP response is received. This changes the new-in-1.8 lazy-open API.

* subversion/include/svn_io.h

(svn_stream_lazyopen_create): Add open_on_close boolean parameter.

* subversion/libsvn_subr/stream.c

(struct lazyopen_baton_t): Add open_on_close boolean member.

(close_handler_lazyopen): Open if required.

(svn_stream_lazyopen_create): Add open_on_close boolean parameter.

* subversion/libsvn_wc/update_editor.c

(lazy_open_source, lazy_open_target, struct lazy_target_baton): New.

(apply_textdelta): Use lazy-open streams for source and target.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__get_pristine_contents_by_checksum): Adjust call.

  1. … 3 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.
Following r1459058, include the necessary header to make the build work with

APR < 1.3.0.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_process_committed_queue2): Include 'svn_dep_compat.h'.

* subversion/svn/notify.c

(svn_cl__notifier_reset_conflict_stats): Same.

* subversion/svnrdump/dump_editor.c

(do_dump_props, close_directory, close_file): Same.

  1. … 2 more files in changeset.
Make a compatibility macro for 'apr_hash_clear()', to be used when APR <

1.3.0, similar to the compatibility macro 'apr_array_clear' that we already

have for the same reason, so that we can use it regardless of which APR we

compile against. Call apr_hash_clear() instead of svn_hash__clear(),

everywhere (that is, in a grand total of four files).

Change the signature of svn_hash__clear() to match apr_hash_clear() and use

it to implement the compatibility macro. It now uses the hash's own private

iterator (which we don't generally use in Subversion), like APR's

apr_hash_clear() does.

* subversion/include/private/svn_subr_private.h

(svn_hash__clear): Remove this declaration.

* subversion/include/private/svn_dep_compat.h

(svn_hash__clear): Declare (the new signature) when APR < 1.3.0.

(apr_hash_clear): New macro, when APR < 1.3.0; calls svn_hash__clear.

* subversion/libsvn_subr/hash.c

(svn_hash__clear): Remove the pool argument, and return void.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__get_dir): Call apr_hash_clear() instead of svn_hash__clear().

* subversion/libsvn_wc/adm_ops.c

(svn_wc_process_committed_queue2): Same.

* subversion/svn/notify.c

(svn_cl__notifier_reset_conflict_stats): Same.

* subversion/svnrdump/dump_editor.c

(do_dump_props, close_directory, close_file): Same.

  1. … 6 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.
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.
Resolve issue #4304, by detecting some kinds of shadowed nodes before trying to

set a file read only.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_remove_lock2): Handle invalid status err.

* subversion/tests/cmdline/lock_tests.py

(lock_unlock_deleted): Remove XFail marker.

  1. … 1 more file in changeset.
* subversion/libsvn_wc/adm_ops.c

(svn_wc_add_lock2,

svn_wc_remove_lock2): Add disabled write check, as the callers are currently

not properly obtaining a lock.

Extract the delete and revert code from adm_ops.h and place it in specific

files. They don't share any static functions with the rest of the code there.

No functional changes.

* subversion/libsvn_wc/adm_ops.c

(includes): Remove now unused includes.

(erase_unversioned_from_wc,

create_delete_wq_items,

svn_wc__delete_many,

svn_wc__delete_internal,

svn_wc_delete4): Move to delete.c

(remove_conflict_file,

compare_revert_list_copied_children,

revert_restore_handle_copied_dirs,

revert_restore,

svn_wc__revert_internal,

revert_changelist,

revert_partial,

svn_wc_revert4): Move to revert.c

(svn_wc__internal_remove_from_revision_control,

remove_from_revision_status_callback,

svn_wc_remove_from_revision_control2): Move to delete.c

* subversion/libsvn_wc/delete.c

(includes): Remove now unused includes.

(erase_unversioned_from_wc,

create_delete_wq_items,

svn_wc__delete_many,

svn_wc__delete_internal,

svn_wc_delete4,

svn_wc__internal_remove_from_revision_control,

remove_from_revision_status_callback,

svn_wc_remove_from_revision_control2): Remove all functions except these.

* subversion/libsvn_wc/revert.c

(includes): Remove now unused includes.

(remove_conflict_file,

compare_revert_list_copied_children,

revert_restore_handle_copied_dirs,

revert_restore,

svn_wc__revert_internal,

revert_changelist,

revert_partial,

svn_wc_revert4): Remove all functions except these.

  1. … 2 more files in changeset.
Following up on my previous issue #4288 fix, and the recent test extension in

r1432612, resolve the rest of issue #4288 which appears to be invisible on

Windows.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): Update caller.

* subversion/libsvn_wc/crop.c

(crop_children): Update caller. Pass the right path.

* subversion/libsvn_wc/externals.c

(svn_wc__external_remove): Update caller.

* subversion/libsvn_wc/update_editor.c

(delete_entry): Ask svn_wc__db_base_remove() not to queue deletes if the

node or one of its ancestors is shadowed or obstructed.

* subversion/libsvn_wc/wc_db.c

(db_base_remove,

svn_wc__db_base_remove): Make queueing wq items for deletes optional.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_remove): Add argument and update documentation.

* subversion/libsvn_wc/workqueue.c

(run_base_remove): Update caller.

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

(base_dir_insert_remove): Update caller.

  1. … 7 more files in changeset.
Expose revert_internal() from libsvn_wc/adm_ops.c to other libsvn_wc files.

* subversion/libsvn_wc/adm_ops.c

(revert_internal): Drop 'static', and rename to ...

(svn_wc__revert_internal): ... this.

(revert_changelist, revert_partial, svn_wc_revert4): Update callers.

* subversion/libsvn_wc/wc.h

(svn_wc__revert_internal): Declare.

  1. … 1 more file in changeset.
Per discussion on IRC, and in compliance with one of the suggestions

found at http://subversion.tigris.org/issues/show_bug.cgi?id=3348#desc10,

revert the changes (r1159286, r1159299, and r1160691) which caused the

empty-string changelist name (as applied to the --changelist option)

to be specially handled.

  1. … 4 more files in changeset.