Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Upgrade uses of the editor path driver callback, following r1852526.

* subversion/libsvn_client/add.c

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(mkdir_urls): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_client/commit_util.c

(item_commit_baton): Remove the editor and edit-baton from here.

(do_item_commit): Take the editor and edit-baton as direct parameters.

(svn_client__do_commit): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_client/copy.c

(path_driver_cb_baton): Remove the editor and edit-baton from here.

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(repos_to_repos_copy): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_delta/branch_compat.c

(apply_change): Take the editor and edit-baton as direct parameters.

(drive_changes): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_delta/compat.c

(apply_change): Take the editor and edit-baton as direct parameters.

(drive_changes): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_repos/replay.c

(path_driver_cb_baton): Remove the editor and edit-baton from here.

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(svn_repos_replay2): Upgrade to svn_delta_path_driver3.

  1. … 5 more files in changeset.
Revert r1704048 (merge of 'reuse-ra-session' branch): unfortunately the code

is not ready for trunk. The most serious problem that we cannot assume that

API user doesn't change svn_client_ctx_t fields like AUTH_BATON or

OPEN_TUNNEL_FUNC between svn_client_*() functions invocation. JavaHL bindings

is one example of usage of such pattern.

I'll revive 'reuse-ra-session' branch and attempt to fix these problems there.

Discussion: "Merge ra-reuse-session branch to trunk or not?" [1]

http://svn.haxx.se/dev/archive-2015-09/0173.shtml

  1. … 33 more files in changeset.
[Reverted in r1704255]

Introduce RA session pool in libsvn_client for managing and reusing RA session

for different URLs.

Discussion: "Merge ra-reuse-session branch to trunk or not?" [1]

More details are available in branch history [2].

[1] http://svn.haxx.se/dev/archive-2015-09/0173.shtml

[2] ^/subversion/branches/reuse-ra-session@1704029

* subversion/include/private/svn_client_private.h

(svn_client__ra_session_from_path2): Update docstring to mention that RA

session may be returned back to RA session pool by

svn_client__ra_session_release() function.

(svn_client__ra_session_release): New function declaration.

* subversion/libsvn_client/add.c

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/checkout.c

(mkdir_urls, svn_client_blame5, svn_client_cat3,

svn_client__checkout_internal): Release locally created sessions if there

were no errors.

* subversion/libsvn_client/client.h

(svn_client__ra_cache_t): Add new type declare.

(svn_client__private_ctx_t): Add RA_CACHE field.

* subversion/libsvn_client/commit.c

(check_url_kind_baton): Remove POOL, SESSION and REPOS_ROOT_URL -- they

were used as local RA session pool.

(check_url_kind): Just use svn_client_open_ra_session2() and

svn_client__ra_session_release() instead of trying to reparent existing

RA session.

(svn_client_commit6): Update baton initialization and release locally

created sessions if there were no errors.

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/diff.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/mtcc.c

* subversion/libsvn_client/prop_commands.c

(pin_externals_prop, repos_to_repos_copy, repos_to_repos_copy,

wc_to_repos_copy, repos_to_wc_copy, svn_client__copy_foreign,

delete_urls_multi_repos, diff_repos_repos, diff_repos_wc,

svn_client_export5, handle_external_item_change, svn_client_import5,

svn_client_info4, get_inheritable_props, list_internal, release_locks,

svn_client__get_copy_source, svn_client_log5, svn_client__mtcc_commit,

propset_on_url): Release locally created sessions if there were no errors.

* subversion/libsvn_client/merge.c

(ensure_ra_session_url): Add TODO comment to use release RA sessions back

to RA session pool.

(do_merge): Reduce scope of second RA session and return it early back to

RA session pool.

(merge_locked, merge_peg_locked, find_automatic_merge_no_wc,

client_find_automatic_merge, do_automatic_merge_locked): Release locally

created sessions if there were no errors.

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalog, get_mergeinfo,

logs_for_mergeinfo_rangelist, svn_client__mergeinfo_log,

svn_client_suggest_merge_sources): Release locally created sessions if

there were no errors.

* subversion/libsvn_client/ra.c

(): Include "ra_cache.h"

(svn_client__open_ra_session_internal): Use

svn_client__ra_cache_open_session() to open RA session, instead of direct

call to svn_ra_open4().

(svn_client__repos_locations, svn_client__get_youngest_common_ancestor):

Release RA sessions after we finished using them.

(svn_client__ra_session_release): New.

* subversion/libsvn_client/ra_cache.c

* subversion/libsvn_client/ra_cache.h

(MAX_INACTIVE_SESSIONS, INACTIVE_SESSION_TIMEOUT, cache_entry_t,

open_tmp_file, get_wc_prop, set_wc_prop, push_wc_prop, invalidate_wc_props,

progress_func, cancel_func, get_client_string, get_wc_contents,

check_tunnel_func, open_tunnel_func, cleanup_ra_cache,

svn_client__ra_cache_init, close_ra_session, remove_inactive_entry,

expunge_cache_entries, find_session_by_url, open_new_session,

get_private_ra_cache, svn_client__ra_cache_open_session,

svn_client__ra_cache_release_session): New.

* subversion/libsvn_client/status.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

(reporter_finish_report, svn_client_status6, switch_internal,

svn_client__update_internal, svn_client_get_repos_root): Release locally

created sessions if there were no errors.

* tools/dev/ra-cache-summary.py: New script to analyze debugging output of

RA session reuse.

  1. … 33 more files in changeset.
* subversion/libsvn_client/add.c

(svn_client__get_inherited_ignores): Remove unused function.

* subversion/libsvn_client/client.h

(svn_client__get_inherited_ignores): Remove function.

  1. … 1 more file in changeset.
Fix a bug in 'svn mkdir --parents' whereby if the target directory already

existed on disk it was adding its entire contents recursively.

This reverts a change of depth empty to depth infinity made in r871175.

* subversion/libsvn_client/add.c

(svn_client__make_local_parents): Only add the directory we created (depth empty).

* subversion/tests/cmdline/basic_tests.py

(mkdir_parents_target_exists_on_disk): New test.

(test_list): Run it.

  1. … 1 more file 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.
Add new libsvn_client notification between transmitting deltas and

finalizing commit. The final stage of commit may consume significant

amount of time, especially if we have automatic packing someday.

NOTE: Subversion command line handling of this notification will come in

later commits.

* subversion/include/svn_wc.h

(svn_wc_notify_action_t): Add svn_wc_notify_commit_finalizing.

* subversion/libsvn_client/add.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/mtcc.c

* subversion/libsvn_client/prop_commands.c

(mkdir_urls, svn_client__do_commit, repos_to_repos_copy,

single_repos_delete, svn_client_mtcc_commit, propset_on_url): Send

svn_wc_notify_commit_finalizing notification before closing edit.

* subversion/libsvn_client/import.c

(import): Add URL argument and send svn_wc_notify_commit_finalizing

notification before closing edit.

(svn_client_import5): Update caller.

  1. … 7 more files in changeset.
* subversion/libsvn_client/add.c

(mkdir_urls): Add three traces on error returns.

Add svn_sort__array() -- simple wrapper around qsort() to sort APR array

and use where applicable.

* subversion/include/private/svn_sorts_private.h

(svn_sort__array): New declaration.

* subversion/libsvn_subr/sorts.c

(svn_sort__array): New.

* subversion/libsvn_client/add.c

(): Include svn_sorts_private.h.

(mkdir_urls): Use svn_sort__array().

* subversion/libsvn_client/commit.c

(): Include svn_sorts_private.h.

(determine_lock_targets): Use svn_sort__array().

* subversion/libsvn_client/commit_util.c

(): Remove stdlib.h and include svn_sorts_private.h.

(svn_client__condense_commit_items): Use svn_sort__array().

* subversion/libsvn_client/ra.c

(): Include svn_sorts_private.h.

(svn_client__repos_location_segments): Use svn_sort__array().

* subversion/libsvn_client/resolved.c

(): Remove stdlib.h and include svn_sorts_private.h.

(svn_client__resolve_conflicts): Use svn_sort__array().

* subversion/libsvn_delta/path_driver.c

(): Include svn_sorts_private.h.

(svn_delta_path_driver2): Use svn_sort__array().

* subversion/libsvn_diff/parse-diff.c

(): Include svn_sorts_private.h.

(svn_diff_parse_next_patch): Use svn_sort__array().

* subversion/libsvn_fs_fs/cached_data.c

(read_dir_entries): Use svn_sort__array().

* subversion/libsvn_fs_fs/transaction.c

(verify_locks): Use svn_sort__array().

* subversion/libsvn_ra/compat.c

(svn_ra__locations_from_log): Use svn_sort__array().

* subversion/libsvn_repos/log.c

(): Include svn_sorts_private.h.

(turn_unique_copies_into_moves, combine_mergeinfo_path_lists,

handle_merged_revisions): Use svn_sort__array().

* subversion/libsvn_repos/replay.c

(): Include svn_sorts_private.h.

(svn_repos__replay_ev2): Use svn_sort__array().

* subversion/libsvn_repos/rev_hunt.c

(): Include svn_sorts_private.h.

(find_merged_revisions): Use svn_sort__array().

* subversion/libsvn_subr/mergeinfo.c

(combine_with_lastrange, parse_revision_line, svn_mergeinfo_sort): Use

svn_sort__array().

* subversion/libsvn_wc/revert.c

(): Include svn_sorts_private.h.

(revert_restore_handle_copied_dirs): Use svn_sort__array().

* subversion/svndumpfilter/svndumpfilter.c

(): Include svn_sorts_private.h.

(do_filter): Use svn_sort__array().

  1. … 17 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.
Followup to r1572916, fix error return handling.

* subversion/include/private/svn_magic.h

* subversion/libsvn_subr/magic.c

(svn_magic__init): Change return type.

* subversion/libsvn_client/add.c

(add): Handle svn_magic__init return.

* subversion/libsvn_client/import.c

(import): Handle svn_magic__init return.

  1. … 3 more files in changeset.
Provide config:miscellany:enable-magic-file to control the use of

libmagic. There are environment variables that do this already but

they are not specific to Subversion and affect other applications.

* subversion/include/svn_config.h

(SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE): New.

* subversion/include/private/svn_magic.h

(svn_magic__init): Add config parameter.

* subversion/libsvn_subr/config_file.c

(svn_config_ensure): Document new setting.

* subversion/libsvn_subr/magic.c

(svn_magic__init): Check for enable-magic-file=no.

* subversion/libsvn_client/add.c

(add): Pass config to svn_magic__init.

* subversion/libsvn_client/import.c

(import): Pass config to svn_magic__init.

  1. … 5 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.
Make some 'svn mkdir' code use absolute paths internally, to avoid path length

limits on Windows.

* subversion/libsvn_client/add.c

(svn_client__make_local_parents): Document as taking absolute paths, and

don't hide errors.

(svn_client_mkdir4): Make dirents absolute before passing them to

svn_client__make_local_parents.

* subversion/libsvn_client/client.h

(svn_client__make_local_parents): Tweak prototype.

Found by: schabi

  1. … 1 more file 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.
Revert the "just-for-symmetry" changes made in r1483532 and keep only

those used for log and merge info in tight loops.

* subversion/libsvn_client/add.c

(svn_client__get_all_auto_props): switch back to svn_hash_[g|s]ets

* subversion/libsvn_client/commit_util.c

(svn_client__ensure_revprop_table): same

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): same

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): same

* subversion/libsvn_client/log.c

(pre_15_receiver): same

* subversion/libsvn_client/merge.c

(prepare_merge_props_changed, merge_file_added, merge_dir_added,

merge_dir_deleted): same

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalogue): same

* subversion/libsvn_fs_base/tree.c

(txn_body_get_mergeinfo_data_and_entries,

txn_body_get_mergeinfo_for_path): same

* subversion/libsvn_fs_fs/fs_fs.c

(write_revision_zero): same

* subversion/libsvn_fs_fs/tree.c

(get_mergeinfo_for_path_internal): same

* subversion/libsvn_ra/deprecated.c

(svn_ra_get_commit_editor2): same

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_commit_editor, svn_ra_local__get_commit_ev2): same

* subversion/libsvn_ra_svn/client.c

(ra_svn_commit): same

* subversion/libsvn_repos/commit.c

(svn_repos__get_commit_ev2): same

* subversion/libsvn_repos/delta.c

(delta_proplists): same

* subversion/libsvn_repos/deprecated.c

(svn_repos_get_commit_editor4): same

* subversion/libsvn_repos/dump.c

(dump_node, write_revision_record): same

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_begin_txn_for_commit2, svn_repos_fs_begin_txn_for_commit,

svn_repos_fs_revision_proplist): same

* subversion/libsvn_repos/reporter.c

(get_revision_info): same

* subversion/libsvn_wc/status.c

(collect_ignore_patterns): same

* subversion/mod_dav_svn/activity.c

(dav_svn__create_txn): same

* subversion/mod_dav_svn/lock.c

(append_locks): same

* subversion/svndumpfilter/svndumpfilter.c

(output_revision): same

* subversion/svnmucc/svnmucc.c

(execute, sanitize_log_sources): same

* subversion/svnrdump/load_editor.c

(new_node_record): same

* subversion/svnserve/serve.c

(commit): same

* subversion/svnsync/svnsync.c

(replay_rev_started): same

  1. … 26 more files in changeset.
We frequently use property name constants in conjunction with hash containers.

Provide new wrappers around apr_hash_get and apr_hash_set that accept such

string constants and statically determine their size. That minimizes the

hash access costs.

Mass change hash get and set calls for SVN_PROP_* constants.

* subversion/include/svn_hash.h

(svn_hash_gets,

svn_hash_sets): Doxygen-ize the docstring

(svn_hash_gets_fixed_key,

svn_hash_sets_fixed_key): define new apr_hash_* wrapper

* subversion/libsvn_client/add.c

(svn_client__get_all_auto_props): use faster hash wrappers with SVN_PROP_*

* subversion/libsvn_client/commit_util.c

(svn_client__ensure_revprop_table): ditto

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): ditto

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): ditto

* subversion/libsvn_client/log.c

(pre_15_receiver): ditto

* subversion/libsvn_client/merge.c

(prepare_merge_props_changed, merge_file_added, merge_dir_added,

merge_dir_deleted): ditto

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalog): ditto

* subversion/libsvn_fs_base/tree.c

(txn_body_get_mergeinfo_data_and_entries,

txn_body_get_mergeinfo_for_path): same

* subversion/libsvn_fs_fs/fs_fs.c

(write_revision_zero): same

* subversion/libsvn_fs_fs/tree.c

(crawl_directory_dag_for_mergeinfo, get_mergeinfo_for_path_internal): same

* subversion/libsvn_ra/deprecated.c

(svn_ra_get_commit_editor2): same

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_commit_editor, svn_ra_local__get_commit_ev2): same

* subversion/libsvn_ra_svn/client.c

(ra_svn_commit, ra_svn_log): same

* subversion/libsvn_repos/commit.c

(svn_repos__get_commit_ev2): same

* subversion/libsvn_repos/delta.c

(delta_proplists): same

* subversion/libsvn_repos/deprecated.c

(svn_repos_get_commit_editor4): same

* subversion/libsvn_repos/dump.c

(dump_node, write_revision_record):

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_begin_txn_for_commit2, svn_repos_fs_begin_txn_for_commit,

svn_repos_fs_revision_proplist): same

* subversion/libsvn_repos/log.c

(fill_log_entry): same

* subversion/libsvn_repos/reporter.c

(get_revision_info): same

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_get_committed_info): same

* subversion/libsvn_subr/compat.c

(svn_compat_log_revprops_clear, svn_compat_log_revprops_out): same

* subversion/libsvn_wc/status.c

(collect_ignore_patterns): same

* subversion/mod_dav_svn/activity.c

(dav_svn__create_txn): same

* subversion/mod_dav_svn/lock.c

(append_locks): same

* subversion/svndumpfilter/svndumpfilter.c

(output_revision): same

* subversion/svnmucc/svnmucc.c

(execute, sanitize_log_sources): same

* subversion/svnrdump/load_editor.c

(new_node_record): same

* subversion/svnserve/serve.c

(commit): same

* subversion/svnsync/svnsync.c

(replay_rev_started): same

[Most of this got reverted in r1483610]

[Remainder reverted in r1484181]

  1. … 30 more files in changeset.
Use svn_hash_gets() for an apr_hash containing a single item, instead of a

hash iterator.

* subversion/libsvn_client/add.c

(svn_client__get_all_auto_props): Use hash fetch. Leave whitespace change

for separate commit.

Spell-check translated error messages.

* subversion/include/svn_error_codes.h

SVN_ERR_NO_APR_MEMCACHE):

* subversion/libsvn_client/add.c

(mkdir_urls):

* subversion/libsvn_client/merge.c

(check_repos_match, get_wc_explicit_mergeinfo_catalog, do_file_merge):

* subversion/libsvn_client/ra.c

(push_wc_prop):

* subversion/libsvn_ra_serf/serf.c

(load_http_auth_types):

Copyedit some error strings.

* subversion/libsvn_subr/cache-membuffer.c

(svn_cache__membuffer_cache_create):

Don't try to translate the string "OOM".

  1. … 5 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_sets.

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.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/revert.c

* subversion/libsvn_client/status.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

  1. … 30 more files in changeset.
Resolve a slight regression in libsvn_client by stopping to use svn:ignore on

the first existing ancestor directory as the ignores on the directory itself.

We introduced this with the inherited property work, but the libsvn_wc

function we originally used here, now handles all ignores cases properly.

* subversion/libsvn_client/add.c

(add_dir_recursive): Add result pool. Use svn_wc_get_ignores2() after adding

as that properly obtains all svn:ignore and svn:global-ignores patterns.

Update recursion.

(svn_client__get_all_ignores): Remove function.

(add): Update caller.

* subversion/libsvn_client/client.h

(svn_client__get_all_ignores): Remove function.

  1. … 1 more file in changeset.
Rev the standard libsvn_client api used for opening ra sessions, to allow

access to the libsvn_wc pristine store in many more cases. This allows serf

to obtain texts from the local working copy in many cases where it first

couldn't.

For just merge_tests.py this patch makes libsvn_ra_serf avoid more than 550

http requests.

* subversion/include/private/svn_client_private.h

(svn_client__ra_session_from_path2): Update documentation.

* subversion/include/svn_client.h

(svn_client_open_ra_session2): New function.

(svn_client_open_ra_session): Deprecate function.

* subversion/libsvn_client/add.c

(mkdir_urls): Update caller.

* subversion/libsvn_client/client.h

(svn_client__open_ra_session_internal): Change some arguments. Update

documentation. Add scratch_pool.

* subversion/libsvn_client/commit.c

(check_url_kind): Update caller.

* subversion/libsvn_client/copy.c

(repos_to_repos_copy): Update caller.

(wc_to_repos_copy): Use session pool to avoid opening two sessions at the

same time. Remove unneeded wait for timestamps, as we do a repository only

commit here.

(repos_to_wc_copy): Update caller.

* subversion/libsvn_client/delete.c

(delete_urls_multi_repos): Update caller.

* subversion/libsvn_client/deprecated.c

(svn_client_open_ra_session): New function.

(svn_client_uuid_from_url): Wrap svn_client_get_repos_root, but with a

subpool to avoid keeping ra sessions open in functions without dual pools.

(svn_client_root_url_from_path): Use session pool, as there is no result_pool.

* subversion/libsvn_client/diff.c

(diff_prepare_repos_repos,

diff_repos_repos): Obtain wri_abspath and use it when opening ra

session.

(diff_repos_wc,

diff_summarize_repos_repos): Update caller.

* subversion/libsvn_client/import.c

(svn_client_import5): Update caller.

* subversion/libsvn_client/iprops.c

(get_inheritable_props): Update caller.

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): Update caller.

* subversion/libsvn_client/locking_commands.c

(svn_client_lock,

svn_client_unlock): Update caller.

* subversion/libsvn_client/merge.c

(ensure_ra_session_url): Pass wri_abspath to speed up merging.

(open_reintegrate_source_and_target,

svn_client_find_automatic_merge,

do_automatic_merge_locked): Update caller.

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalog): Update caller.

* subversion/libsvn_client/prop_commands.c

(propset_on_url,

svn_client_revprop_set2): Update caller.

(svn_client_revprop_get,

svn_client_revprop_list): Update caller. Introduce subpool for function

without result_pool argument.

* subversion/libsvn_client/ra.c

(callback_baton_t): Add wcroot_abspath argument to make looking this up

from the ra call a hashtable lookup.

(get_wc_contents): Use wcroot_abspath.

(svn_client__open_ra_session_internal): Separate wri_abspath and base

abspath handling. Use scratch_pool where possible.

(svn_client_open_ra_session): Rename to ...

(svn_client_open_ra_session2): ... this and update caller.

(svn_client__ra_session_from_path2): Update caller.

(svn_client__repos_locations): Update caller.

(svn_client__get_youngest_common_ancestor): Update caller.

* subversion/libsvn_client/status.c

(reporter_finish_report,

svn_client_status5): Update caller.

* subversion/libsvn_client/update.c

(update_internal): Update caller.

* subversion/libsvn_client/util.c

(svn_client_get_repos_root): Update caller.

  1. … 19 more files in changeset.
Simplify some libsvn_client and svn code by using the new svn_wc_read_kind2()

function.

* subversion/libsvn_client/add.c

(find_existing_parent): Avoid deleted check.

* subversion/libsvn_client/copy.c

(verify_wc_dsts): Avoid deleted check in error handling. Always use db check

before applying makeparents.

* subversion/libsvn_client/patch.c

(create_missing_parents,

install_patched_target): Simplify conditions by handling deleted as not

there.

* subversion/libsvn_client/prop_commands.c

(svn_client_propset_local): Simplify error logic.

(svn_client_propget5,

get_local_props): Handle deleted nodes as unversioned when not looking at

pristine properties.

* subversion/tests/cmdline/copy_tests.py

(copy_into_absent_dir): Rename to...

(copy_into_missing_dir): ... this, as it verifies missing directories, not

server excluded dirs.

(copy_deleted_dir): Update expected error code.

(test_list): Update reference to copy_into_missing_dir.

* subversion/tests/cmdline/input_validation_tests.py

(invalid_copy_target): Allow different error code.

* subversion/tests/cmdline/prop_tests.py

(rm_of_replaced_file): When calling proplist directly on a deleted node,

expect a warning and no output.

  1. … 7 more files in changeset.
Teach some WC and client 'add' functions to take the properties as a

parameter so that the whole addition including any properties can be done

all at once. This makes 'svn add' into a single DB operation per node and

makes the APIs ready for similar usage by code such as merge and patch.

* subversion/libsvn_client/add.c

(add_file): Simplify greatly by passing the props to svn_wc_add_from_disk()

instead of adding them one by one afterwards and trying to revert the

add if that fails. Delegate sending the notification too.

(add_dir_recursive, add): Track the API changes.

* subversion/libsvn_client/patch.c

(create_missing_parents,

install_patched_target,

install_patched_prop_targets): Track the API changes.

* subversion/include/svn_wc.h

(svn_wc_add_from_disk2): New revision of svn_wc_add_from_disk(), taking a

'props' parameter.

(svn_wc_add_from_disk): Deprecate.

* subversion/libsvn_wc/adm_ops.c

(add_from_disk): Take a 'props' parameter, pass them on, and install and

run a work queue item if necessary to set the on-disk executable and

read-only bits.

(svn_wc_add4): Track the API changes.

(svn_wc_add_from_disk2): Rename from 'svn_wc_add_from_disk'. Take a new

'props' parameter, check and canonicalize the props, and pass them on.

Adjust the notification to include the value of any mime-type property,

as that is what libsvn_client used to do.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add_from_disk): New function, wrapping svn_wc_add_from_disk2().

* subversion/libsvn_wc/props.h

(svn_wc__canonicalize_props): New function.

* subversion/libsvn_wc/props.c

(ensure_prop_is_regular_kind, svn_wc__canonicalize_props): New functions.

* subversion/libsvn_wc/wc_db.h,

subversion/libsvn_wc/wc_db.c

(svn_wc__db_op_add_directory,

svn_wc__db_op_add_file,

svn_wc__db_op_add_symlink): Take a 'props' parameter and pass it on.

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

(test_read_write_tree_conflicts): Track the API changes.

* subversion/tests/libsvn_wc/utils.c

(sbox_wc_add): Track the API changes.

  1. … 10 more files in changeset.
* subversion/libsvn_client/add.c

(add_file): Rearrange so that we first gather all required properties

and then set them, in anticipation of some day soon being able to

pass them to the 'wc add file' function to add the file all in one go.

* subversion/libsvn_client/add.c: (add_dir_recursive): Remove unused variable.

Ugh. Follow-up to r1409064, implement a behavior that change promised but

didn't deliver.

Morals: 1) Mega commits that deliver multiple behavior changes are never a

great idea and 2) if you promised a behavior change but didn't a) change an

existing test or b) add a new test, well then you had better well be

suspicious.

* subversion/libsvn_client/add.c

(add_dir_recursive): Remove one of the three arguments that control how

ignore patterns are considered, we only need two because since r1409064

we supposedly consider all ignore patterns or none, there's no in-between.

(svn_client__get_all_ignores): Remove NO_IGNORE argument, just get *all*

ignore patterns, unconditionally.

(add): Update call to add_dir_recursive().

* subversion/libsvn_client/client.h

(svn_client__get_all_ignores): Remove NO_IGNORE argument, just get *all*

ignore patterns, unconditionally.

* subversion/tests/cmdline/prop_tests.py

(inheritable_ignores): Alter test expectations such that the 'svn add

--no-ignore' disregards *all* ignore patterns. Also use sbox.ospath

in place of os.path.join where possible.

  1. … 2 more files in changeset.
Got iterpools? Then use them.

* subversion/libsvn_client/add.c

(add_dir_recursive): Use iterpools as scratch pools where applicable.

Follow-up to r1417672. Comment change only.

Suggested by: julianfoad

* subversion/libsvn_client/add.c

(add_dir_recursive): Improve doc string to better describe what we are

doing with the CONFIG_AUTOPROPS argument. Also tweak and internal

comment with the same goal in mind.