Checkout Tools
  • last updated 4 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
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.
Merge the pin-externals branch to trunk.

The discussion thread start in this post:

http://mail-archives.apache.org/mod_mbox/subversion-dev/201501.mbox/%3C20150128095434.GM26869%40ted.stsp.name%3E

has come to a consensus that the branch can be merged and additional

development of this feature can happen on trunk.

This merge adds a '--pin-externals' option to 'svn copy'.

This option enables automated pinning of URLs in svn:externals properties

during copy operations (issue #1258).

--pin-externals : pin externals with no explicit revision to their

last-changed revision (recommended when tagging)

This feature makes the svncopy.pl contrib script unnecessary.

Externals are "pinned" by adding a peg revision to the external's source URL.

For example, the external definition:

^/foo/bar ext_bar

might become:

^/foo/bar@400 ext_bar

This table shows which revision is used for pinning:

copy source: working copy (WC) REPOS

------------+------------------------+---------------------------+

copy WC | external's WC BASE rev | external's repos HEAD rev |

dest: |------------------------+---------------------------+

REPOS | external's WC BASE rev | external's repos HEAD rev |

------------+------------------------+---------------------------+

An external that is already pinned is left as-is.

Please see the branch log for details about these changes.

  1. … 22 more files in changeset.
Fix docstring; no functional change.

* subversion/libsvn_client/prop_commands.c

(remote_propget): The docstring referred to parameters

RA_LIB and SESSION, neither of which exist; mention RA_SESSION

instead.

Fill svn_client_commit_item3_t's kind field in more cases to help api

users that process these values during commit processing.

* subversion/libsvn_client/copy.c

(repos_to_repos_copy,

wc_to_repos_copy): Fill kind field.

* subversion/libsvn_client/prop_commands.c

(propset_on_url): Fill kind field.

  1. … 1 more file in changeset.
When calling ctx->notify_func2 always use the same source style.

* subversion/libsvn_client/cleanup.c

(cleanup_status_walk): Use one style.

* subversion/libsvn_client/commit_util.c

(do_item_commit): Use one style.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): Use one style.

* subversion/libsvn_client/export.c

(svn_client_export5): Use one style.

* subversion/libsvn_client/externals.c

(switch_file_external, handle_external_item_removal,

handle_external_item_change): Use one style.

* subversion/libsvn_client/import.c

(import_file, get_filtered_children, import_children,

import_dir): Use one style.

* subversion/libsvn_client/merge.c

(record_skip, record_tree_conflict, record_update_add,

record_update_update, handle_pending_notifications,

mark_dir_edited, mark_file_edited, notify_merge_begin): Use one style.

* subversion/libsvn_client/patch.c

(send_hunk_notification, send_patch_notification): Use one style.

* subversion/libsvn_client/prop_commands.c

(svn_client_revprop_set2): Use one style.

* subversion/libsvn_client/ra.c

(svn_client__open_ra_session_internal): Use one style.

* subversion/libsvn_client/revert.c

(revert): Use one style.

* subversion/libsvn_client/status.c

(svn_client_status6): Use one style.

* subversion/libsvn_client/switch.c

(switch_internal): Use one style.

* subversion/libsvn_client/update.c

(update_internal, svn_client_update4): Use one style.

  1. … 13 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.
Replace a few more tab characters with spaces. No functional changes.

* subversion/libsvn_client/prop_commands.c

(svn_client_revprop_set2):

* subversion/libsvn_delta/xdelta.c

(block):

* subversion/libsvn_fs_fs/dag.c

(svn_fs_fs__dag_serialize):

* subversion/libsvn_fs_x/dag.c

(svn_fs_x__dag_serialize):

* subversion/libsvn_ra_serf/commit.c

(proppatch_walker):

* subversion/libsvn_subr/utf_width.c

(mk_wcwidth):

* subversion/libsvn_wc/questions.c

(compare_and_verify):

* subversion/tests/cmdline/atomic-ra-revprop-change.c

(change_rev_prop): Replace tabs with spaces.

  1. … 7 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.
Replace assertions triggered in svn_dirent_get_absolute() triggered by

$ svn pl -r PREV https://svn.apache.org/repos/asf

$ svn pg Q -r PREV https://svn.apache.org/repos/asf

and

$ tortoiseproc /command:properties /path:https://svn.apache.org/repos/asf

(which tries to obtain the WORKING properties)

with a proper error.

* subversion/libsvn_client/prop_commands.c

(svn_client_propget5): Don't assert when we encounter a url.

Avoid second conversion to absolute path.

(get_remote_props): Don't assert when we encounter a url.

* subversion/tests/cmdline/prop_tests.py

(wc_propop_on_url): New function.

(test_list): Add wc_propop_on_url.

Found by: Baybora Aksoy <baksoy{_AT_}collab.net>

CollabNet QA

  1. … 1 more file 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.
Resolve a hard to find regression introduced in Subversion 1.8.8 proplist

handling of inherited properties when using absolute paths.

* subversion/libsvn_client/prop_commands.c

(recursive_proplist_receiver): When listing paths via an absolute path,

report the inherited properties on the root instead of on the first

reported path. (b->anchor is NULL when the original path is absolute)

Found by: brane

Remove two more WC-NG transient api functions that should have been removed

a long time ago.

* subversion/include/private/svn_wc_private.h

(svn_wc__node_get_depth): Remove function with single caller.

(svn_wc__node_get_origin): Add depth output argument.

(svn_wc__node_is_status_deleted): Remove function without public caller.

* subversion/libsvn_client/commit.c

(get_ra_editor): Update commented out caller.

* subversion/libsvn_client/commit_util.c

(harvest_not_present_for_copy,

harvest_status_callback): Update caller.

* subversion/libsvn_client/copy.c

(wc_to_repos_copy,

try_copy): Update caller.

* subversion/libsvn_client/diff.c

(diff_repos_wc): Update caller.

* subversion/libsvn_client/merge.c

(filter_self_referential_mergeinfo): Update caller.

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalog): Update caller.

* subversion/libsvn_client/prop_commands.c

(svn_client_propget5,

get_remote_props): Update caller. Remove unneeded output arguments.

* subversion/libsvn_client/ra.c

(svn_client__repos_locations): Update caller.

(svn_client__ra_provide_base,

svn_client__ra_provide_props): Update callers that should probably look

at BASE instead of the copy origin.

* subversion/libsvn_client/revisions.c

(svn_client__get_revision_number): Update caller.

* subversion/libsvn_client/util.c

(svn_client__wc_node_get_origin): Update caller.

* subversion/libsvn_wc/node.c

(svn_wc__node_is_status_deleted): Remove function, fold into caller.

(svn_wc__internal_get_origin): Add output argument handling.

(svn_wc__node_get_origin): Add output argument.

(svn_wc__node_was_moved_away): Add local implementation of

svn_wc__node_is_status_deleted.

* subversion/libsvn_wc/wc.h

(svn_wc__internal_get_origin): Add argument.

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

(test_node_get_origin): Update caller.

  1. … 14 more files in changeset.
* subversion/libsvn_client/prop_commands.c

(recursive_proplist_receiver): Resolve warning by removing const from

variable that should have been defined as const.

Make svn_client_proplist4() report iprops as documented: with the target,

instead of reporting the same target twice.

This makes it much easier for api users to process inherited properties that

can be changed on the node itself without copying everything and waiting until

the property walk completed before being able to do something.

* subversion/libsvn_client/prop_commands.c

(recursive_proplist_receiver_baton): Add variable.

(recursive_proplist_receiver): Report iprops with or before first target.

(get_local_props): Store iprops in baton before walking and only report iprops

if the recursive walk didn't do that.

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

(remote_propget): Combine two if blocks that run with inherited_props.

* **/**

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.
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.
Remove a result_pool argument from a new in 1.8 function that doesn't have

output arguments. Values passed to a callback shouldn't be allocated in a

global result pool, but in some iterpool. Storing everything in a result

hash breaks the streamy api pattern.

* subversion/include/svn_client.h

(svn_client_proplist4): Remove result_pool.

* subversion/libsvn_client/deprecated.c

(svn_client_proplist3): Update caller.

* subversion/libsvn_client/prop_commands.c

(pristine_or_working_props): Remove function. Fold in only caller.

(remote_proplist): Add cancel_func. Remove result pool. Don't duplicate the

entire hash to remove 3 or 4 entry props. Handle cancelation.

Rename subpool to iterpool.

(get_remote_props): Remove result pool. Update caller.

(get_local_props): Fold in pristine_or_working_props.

(svn_client_proplist4): Remove argument. Fix typo.

* subversion/svn/proplist-cmd.c

(svn_cl__proplist): Update caller.

  1. … 3 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.
Follow-up to r1424708: API simplification: Make

svn_ra_get_inherited_props() always return svn_prop_inherited_item_t

items with the path_or_url member set to repos relpaths. Let the caller

convert to URLs if required.

Suggested by: julianfoad

* subversion/include/private/svn_wc_private.h

(svn_wc__get_iprops): Document the type of

svn_prop_inherited_item_t->path_or_url's returned.

* subversion/include/svn_client.h

(svn_proplist_receiver2_t,

svn_client_propget5): Document the type of

svn_prop_inherited_item_t->path_or_url's returned.

* subversion/include/svn_ra.h

(svn_ra_get_inherited_props): Return to pre-r1424708 behavior, i.e. always

return repos relpath path_or_url member.

* subversion/libsvn_client/client.h

(svn_client__iprop_relpaths_to_urls): New.

(svn_client__get_inheritable_props): Return to pre-r1424708 behavior,

i.e. always return repos relpath path_or_url member.

* subversion/libsvn_client/externals.c

(switch_file_external): Update call to svn_ra_get_inherited_props().

* subversion/libsvn_client/iprops.c

(svn_props.h,

svn_path.h): New includes.

(svn_client__iprop_relpaths_to_urls): New.

(svn_client__get_inheritable_props): Remove use_relpath_keys argument.

(svn_client__get_inheritable_props): Update call to

svn_ra_get_inherited_props().

* subversion/libsvn_client/prop_commands.c

(remote_propget,

remote_proplist): Convert inherited props returned by

svn_ra_get_inherited_props() with new

svn_client__iprop_relpaths_to_urls() helper.

(svn_client_propget5,

get_local_props): Convert inherited props returned by

svn_wc__get_iprops() with new

svn_client__iprop_relpaths_to_urls() helper.

* subversion/libsvn_client/switch.c

(switch_internal): Update call to svn_ra_get_inherited_props().

* subversion/libsvn_client/update.c

(update_internal): Update call to svn_client__get_inheritable_props().

* subversion/libsvn_ra/compat.c

(svn_ra__get_inherited_props_walk): Return

svn_prop_inherited_item_t->path_or_url's as repos relpaths, not URLs.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_inherited_props): Remove use_relpath_keys argument.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__get_inherited_props_walk): Update doc string.

* subversion/libsvn_ra_local/ra_plugin.c

(get_node_props): Don't convert svn_prop_inherited_item_t->path_or_url's

to URLs, leave as repos relpaths.

* subversion/libsvn_wc/wc_db.c

(db_read_inherited_props): Don't convert

svn_prop_inherited_item_t->path_or_url's to URLs, leave as repos relpaths.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_inherited_props): Update doc string.

  1. … 14 more files in changeset.
Store repos root relative paths in NODES.INHERITED_PROPS rather than full

URLs.

See http://svn.haxx.se/dev/archive-2012-12/0427.shtml

* subversion/include/svn_ra.h

(svn_ra_get_inherited_props): Add a new argument allowing the API to

retrieve an array of svn_prop_inherited_item_t items with the path_or_url

member set to either a URL or (new) a repos relpath.

* subversion/libsvn_client/client.h

(svn_client__get_inheritable_props): Same as svn_ra_get_inherited_props().

* subversion/libsvn_client/externals.c

(switch_file_external):

* subversion/libsvn_client/update.c

(update_internal):

* subversion/libsvn_client/switch.c

(switch_internal):

Update calls to svn_ra_get_inherited_props() in all these functions,

getting svn_prop_inherited_item_t's keyed on relpaths rather than

URLs as before.

* subversion/libsvn_client/iprops.c

(svn_client__get_inheritable_props): Implement new argument.

* subversion/libsvn_client/prop_commands.c

(remote_propget,

remote_proplist): Update call to svn_ra_get_inherited_props(),

getting svn_prop_inherited_item_t's keyed on URLs as before.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_inherited_props): Implement new argument.

* subversion/libsvn_wc/wc_db.c

(read_inherited_props_baton_t): Add new member tracking the repos root URL.

(db_read_inherited_props): Convert repos rel paths to URLs in output.

(svn_wc__db_read_inherited_props): Initialize new baton member.

  1. … 8 more files in changeset.
Make public functions for testing whether a given property name is a known

"svn:" property of various kinds.

* subversion/include/svn_props.h

(svn_prop_is_known_svn_rev_prop, svn_prop_is_known_svn_node_prop,

svn_prop_is_known_svn_file_prop, svn_prop_is_known_svn_dir_prop): New

functions.

* subversion/libsvn_client/prop_commands.c

(is_revision_prop_name): Remove.

(check_prop_name): Use svn_prop_is_known_svn_rev_prop() instead of

is_revision_prop_name().

* subversion/libsvn_subr/properties.c

(SVN_PROP__NODE_COMMON_PROPS, SVN_PROP__NODE_DIR_ONLY_PROPS,

SVN_PROP__NODE_FILE_ONLY_PROPS): New macros.

(known_rev_props, known_node_props, known_dir_props,

known_file_props): New arrays.

(svn_prop_is_known_svn_rev_prop, svn_prop_is_known_svn_node_prop,

svn_prop_is_known_svn_file_prop, svn_prop_is_known_svn_dir_prop): New

functions.

* subversion/libsvn_wc/props.c

(validate_prop_against_node_kind): Use the new public functions.

  1. … 3 more files in changeset.
* subversion/libsvn_client/prop_commands.c

(svn_client_propget5): Fix scratch/result pool usage.

* subversion/libsvn_client/prop_commands.c

(svn_client_propset_local): Just return the error instead of performing

work to get the same error on the next wc call.

Merge the inheritable-props branch back to trunk.

See http://svn.haxx.se/dev/archive-2012-09/0177.shtml

  1. … 68 more files in changeset.
Optimize svn_client_propget4() for the case where we retrieve a specific

current property for all descendants of a node. This saves 10% CPU on the

ra_local mergeinfo tests and also on my profile testcase of

svn merge ^/subversion/trunk -c "1293945,1293972,1293976,1293998,1294136,

1294236,1294134,1294147,1294586" into 1.7.x.

* subversion/include/private/svn_wc_private.h

(svn_wc__prop_retrieve_recursive): New function.

* subversion/libsvn_client/prop_commands.c

(get_prop_from_wc): Return an hash, instead of filling one. Add an optimized

case.

(svn_client_propget4): Update caller.

* subversion/libsvn_wc/props.c

(svn_wc__prop_retrieve_recursive): New function.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_CURRENT_PROPS_RECURSIVE): New query.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_prop_retrieve_recursive): New function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_prop_retrieve_recursive): New function.

  1. … 5 more files in changeset.
To remove another slow query, remove a dead code path: streamily retrieving

the op_depth 0 properties.

* subversion/include/private/svn_wc_private.h

(svn_wc__prop_list_recursive): Remove argument.

* subversion/libsvn_client/prop_commands.c

(get_prop_from_wc,

svn_client_proplist3): Update caller.

* subversion/libsvn_wc/props.c

(svn_wc__prop_list_recursive): Remove argument. Update caller.

* subversion/libsvn_wc/wc-queries.sql

(STMT_CACHE_NODE_BASE_PROPS): Remove unused query.

* subversion/libsvn_wc/wc_db.c

(cache_props_baton_t): Remove variable.

(cache_props_recursive): Remove dead code path.

(svn_wc__db_read_props_streamily): Remove argument.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_props_streamily): Remove argument.

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

(slow_statements): Remove query.

  1. … 6 more files in changeset.