Checkout Tools
  • last updated 4 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1552441 is being indexed.

Move a backwards compatibility wrapper for svnserve versions 1.0-1.1 to the

ra layer. This will make the ra layer easier to use and maintain.

(Callers can stop worrying about this limitation in old svnserve versions)

We can't really move this in ra_svn as within ra_svn we can't use the normal

ra apis.

* subversion/libsvn_client/client.h

(svn_client__ra_stat_compatible): Remove function.

* subversion/libsvn_client/info.c

(svn_client_info4): Use the normal ra function.

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): Remove function. Move code to ra layer.

* subversion/libsvn_ra/ra_loader.c

(includes): Add svn_time.h.

(svn_ra_stat): Move svnserve fallback code here.

  1. … 3 more files in changeset.
Remove some unnecessary work from from our "ls" code.

* subversion/libsvn_client/list.c

(get_dir_contents): don't attempt to match locks when there are none

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_dir): according to the protocol spec, we send the name

of the dirents (i.e. 1 segment) -- never a multi-

segment relpath. There is nothing to canonicalize.

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

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.
Move some 'svn ls' functions handling externals from externals.c to list.c,

as they aren't generally reusable anyway.

* subversion/libsvn_client/client.h

(svn_client__list_internal): Make static.

(svn_client__list_externals): Make static.

* subversion/libsvn_client/externals.c

(list_external_items,

svn_client__list_externals): Move to list.c

* subversion/libsvn_client/list.c

(includes): Add svn_wc_private.h.

(list_externals,

list_internal): Add prototype.

(svn_client__list_internal): Rename to ...

(list_internal): ... this and add documentation from .h. Update caller.

(wrap_list_error): New function, based on externals helper.

(list_external_items): New function. Copied from svn_client__list_externals.

Update caller.

(svn_client_list3): Update caller.

  1. … 2 more files in changeset.
Fix issue #4225, "Add '--include-externals' option to svn list".

* subversion/include/svn_client.h

(svn_client_list_func2_t): New type used to notify externals information.

(svn_client_list_func_t): Deprecate type.

(svn_client_list3): New function, which has a new argument

include_externals.

(svn_client_list2): Deprecate it.

* subversion/libsvn_client/client.h

(svn_client__list_internal): New function.

(svn_client__list_externals): New function.

* subversion/libsvn_client/deprecated.c

(list_func_wrapper_baton): New struct to deprecate svn_client_list2().

(list_func_wrapper, wrap_list_func): Helper functions to deprecate

svn_client_list2().

(svn_client_list2): Call svn_client_list3 with include_externals set to

FALSE, and use svn_client_list_func2_t as callback implemented by

list_func_wrapper().

* subversion/libsvn_client/externals.c

(list_external_items): New static function that walks through all the

externals under list target recursively and list them using

svn_client_list3().

(svn_client__list_externals): New function to parse externals description

and list it using list_external_items().

* subversion/libsvn_client/list.c

(get_dir_contents): Populate the hash table 'externals'. Use

svn_client_list_func2_t instead of svn_client_list_func_t to report file

and directory entries. Use external_parent_url and external_target when

external items are being listed.

(svn_client__list_internal): New function. Same as svn_client_list3(), it

accepts few additional parameters that carries external information.

If include_externals is set, process all the externals which are populated

by get_dir_contents() using svn_client__list_externals().

(svn_client_list3): New function, thin wrapper around

svn_client__list_internal().

* subversion/svn/list-cmd.c

(print_baton): Add few structure members to keep track of last seen external

information.

(print_dirent): Implement svn_client_list_func2_t to control the output when

used with externals.

(print_dirent_xml): Implement svn_client_list_func2_t. Enclose the external

items in the element <external parent_url=.. target= ..><..></external>

(svn_cl__list): Call svn_client_list3(). Handle if there are any errors

during externals processing.

* subversion/svn/main.c

(svn_cl__cmd_table): Enable include_externals for 'list' and give a short

description about the option.

* subversion/tests/cmdline/externals_tests.py

(include_externals): Rename it to 'commit_include_externals'.

(list_include_externals): New test.

(test_list): Add a reference to the new test. Rename 'include_externals' to

'commit_include_externals'.

Patch by: Vijayaguru G <vijay{_AT_}collab.net>

Review by: stsp

julianfoad

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

(svn_client__ra_stat_compatible): Avoid theoretical null reference, when the

ra session root disappeared during the call to this function.

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): Avoid unneeded work in the common case

where the ra layer supports svn_ra_stat(). Rename some variables.

Use a single copy of a duplicated static function. This makes 'svn info'

report some otherwise unavailable values (such as last author, etc.)

when used against a pre 1.2 svnserve repository root.

* subversion/libsvn_client/client.h

(svn_client__ra_stat_compatible): New prototype.

* subversion/libsvn_client/info.c

(ra_stat_compatible): Remove function.

(svn_client_info3): Update caller. Remove pre-1.2 handling as we can now get

everything we need.

* subversion/libsvn_client/list.c

(ra_stat_compatible): Rename to ...

(svn_client__ra_stat_compatible): ... this and make library public.

Use subpool for temp ra session.

(svn_client_list2): Update caller.

  1. … 2 more files in changeset.
Convert the remaining callers of svn_client__ra_session_from_path() to use

svn_client__ra_session_from_path2(), which returns the resolved location as

a path-rev structure. Remove svn_client__ra_session_from_path().

The revving of the function name was only useful for the period over which

this conversion took place, and the "2" suffix can be dropped from the new

function's name after this commit.

* subversion/libsvn_client/client.h,

subversion/libsvn_client/ra.c

(svn_client__ra_session_from_path): Delete.

* subversion/libsvn_client/blame.c

(svn_client_blame5): Use svn_client__ra_session_from_path2() instead.

* subversion/libsvn_client/cat.c

(svn_client_cat2): Same.

* subversion/libsvn_client/export.c

(svn_client_export5): Same.

* subversion/libsvn_client/list.c

(svn_client_list2): Same.

* subversion/libsvn_client/log.c

(svn_client__get_copy_source, svn_client_log5): Same.

* subversion/libsvn_client/mergeinfo.c

(get_mergeinfo): Same.

* subversion/libsvn_client/prop_commands.c

(svn_client_propget4, svn_client_proplist3): Same.

  1. … 8 more files in changeset.
Simplify use of svn_client__path_relative_to_root().

[I missed ra_loader.c in this commit, and committed it in r1199164.]

* subversion/include/private/svn_ra_private.h,

subversion/libsvn_ra/ra_loader.c

(svn_ra__get_fspath_relative_to_root): New function.

* subversion/libsvn_client/client.h

(svn_client__path_relative_to_root): Document that the repos root input is

not required for resolving a WC path, as this seems to have been the

case since r1091786.

* subversion/libsvn_client/list.c

(svn_client_list2): Use svn_ra__get_fspath_relative_to_root instead.

* subversion/libsvn_client/merge.c

(fix_deleted_subtree_ranges, do_file_merge, do_directory_merge): Same.

(calculate_remaining_ranges, calculate_left_hand_side): Same, and remove

unused repos-root input.

(populate_remaining_ranges): Remove unused repos-root input.

(get_mergeinfo_paths): Remove already-unused repos-root input.

(merge_reintegrate_locked): Don't pass a repos root: it's not needed.

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_mergeinfo_catalog): Don't pass a repos root: it's not

needed.

  1. … 4 more files in changeset.
Simplify some sorted-hash iteration code.

* subversion/libsvn_client/list.c

(get_dir_contents): Read the item's value from the iterator instead of

looking it up in the hash table.

* subversion/libsvn_ra/compat.c

(prev_log_path): Same.

* subversion/svn/log-cmd.c

(log_entry_receiver): Same.

  1. … 2 more files in changeset.
Hoist out two rather similar chunks of compatibility code in two different

places. This is a move towards combining them.

* subversion/libsvn_client/info.c

(ra_stat_compatible): New function, factored out of ...

(svn_client_info3): ... here.

* subversion/libsvn_client/list.c

(ra_stat_compatible): New function, factored out of ...

(svn_client_list2): ... here.

  1. … 1 more file in changeset.
Rename the 'svn_error_return' macro to 'svn_error_trace'.

See email thread "[RFC] Rename 'svn_error_return' to 'svn_error_trace'?" on

2011-06-23, <http://svn.haxx.se/dev/archive-2011-06/0708.shtml>.

* subversion/include/svn_error.h

(svn_error_return): Rename to svn_error_trace.

(SVN_ERR, svn_error_purge_tracing): Track the rename.

* [everywhere]: Track the rename.

  1. … 120 more files in changeset.
Improve an error message.

* subversion/libsvn_client/list.c

(svn_client_list2): Specify in which revision a missing URL is missing.

Reintegrate the 'uris-as-urls' branch into trunk.

(Merged /subversion/branches/uris-as-urls:r1060426-1064427.)

This should wrap up issue #2028.

  1. … 73 more files in changeset.
* subversion/include/svn_dirent_uri.h

Move all svn_fspath__* function prototypes out of here, and...

* subversion/include/private/svn_fspath.h

...into here, a new private header file for those functions.

* subversion/libsvn_client/list.c,

* subversion/libsvn_client/merge.c,

* subversion/libsvn_client/mergeinfo.c,

* subversion/libsvn_delta/path_driver.c,

* subversion/libsvn_fs_base/dag.c,

* subversion/libsvn_fs_base/tree.c,

* subversion/libsvn_fs_fs/dag.c,

* subversion/libsvn_fs_fs/lock.c,

* subversion/libsvn_fs_fs/tree.c,

* subversion/libsvn_ra_local/ra_plugin.c,

* subversion/libsvn_repos/reporter.c,

* subversion/libsvn_subr/dirent_uri.c,

* subversion/libsvn_subr/mergeinfo.c,

* subversion/libsvn_wc/status.c,

* subversion/svnlook/main.c,

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

Now include "private/svn_fspath.h"

  1. … 17 more files in changeset.
Use the svn_fspath__* API instead of svn_uri_* for FS paths. Tested with

and without FSPATH_USE_URI defined.

* subversion/libsvn_client/list.c

(get_dir_contents): s/svn_uri_/svn_fspath__/ where appropriate.

* subversion/libsvn_client/merge.c

(get_inoperative_immediate_children, record_mergeinfo_for_dir_merge,

log_noop_revs, log_find_operative_revs): Same.

* subversion/libsvn_client/mergeinfo.c

(svn_client__adjust_mergeinfo_source_paths,

filter_log_entry_with_rangelist): Same.

* subversion/libsvn_fs_base/dag.c

(make_entry, svn_fs_base__dag_clone_child, svn_fs_base__dag_copy): Same.

* subversion/libsvn_fs_base/tree.c

(parent_path_path, open_path, deltify_mutable, merge, verify_locks,

txn_body_history_prev, prev_location,

txn_body_get_mergeinfo_data_and_entries, crawl_directory_for_mergeinfo,

append_to_merged_froms): Same.

* subversion/libsvn_fs_fs/dag.c

(make_entry, svn_fs_fs__dag_clone_child, svn_fs_fs__dag_copy): Same.

* subversion/libsvn_fs_fs/lock.c

(get_locks_filter_func): Same.

* subversion/libsvn_fs_fs/tree.c

(parent_path_path, open_path, prev_location, history_prev,

crawl_directory_dag_for_mergeinfo, append_to_merged_froms): Same.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__do_check_path): Same.

* subversion/libsvn_repos/reporter.c

(fake_dirent): Same.

* subversion/libsvn_subr/mergeinfo.c

(svn_mergeinfo__remove_prefix_from_catalog): Same.

* subversion/libsvn_wc/status.c

(send_status_structure, close_file): Same.

* subversion/svnlook/main.c

(print_tree): Same.

  1. … 12 more files in changeset.
For issue #3709 ("Inconsistency between "svn list" and "svn

checkout"), ignore authz errors raised when recursing.

* subversion/libsvn_client/list.c

(get_dir_contents): Catch and ignore SVN_ERR_RA_NOT_AUTHORIZED and

SVN_ERR_RA_DAV_FORBIDDEN errors returned from the server.

Reintegrate the issue-2779-dev branch. Permanent redirect responses

from an HTTP server now cause the client -- in particular

circumstances -- to automatically follow the redirect.

NOTE: The test suite changes brought in by this merge require

modifications to developers' httpd.conf files. So if you see the

redirect_tests.py all failing, make sure you've updated your Apache

configuration per the instructions in the

subversion/tests/cmdline/README file.

  1. … 44 more files in changeset.
Switch the argument order of (the new in 1.7) svn_dirent_split(),

svn_uri_split() and svn_relpath_split() functions to our new standard

order: output arguments before input arguments.

* subversion/include/svn_dirent_uri.h

(svn_dirent_split, svn_relpath_split, svn_uri_split): Reorder arguments.

* subversion/libsvn_client/add.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/path_driver.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/diff.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/merge.c

* subversion/libsvn_wc/node.c

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

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db_pdh.c

* subversion/mod_dav_svn/repos.c

* subversion/svn/util.c

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

(*): Update callers.

  1. … 29 more files in changeset.
Finish issue #3661: RA get-locks inefficiencies.

Add depth support to the process of querying repository locks in the

repository and RA layers for the sake of performance. Prior to this

change, 'svn ls -v SOME_PATH' (non-recursive) asked the repository for

the locks on all paths in and under SOME_PATH (fully recursive),

resulting in potentially far more information being transmitted across

the network than is necessary.

* subversion/include/svn_fs.h

(svn_fs_get_locks2): New.

(svn_fs_get_locks): Deprecate this.

* subversion/libsvn_fs/fs-loader.h

(fs_vtable_t): Add 'depth' to get_locks() vtable function.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_get_locks2): New.

(svn_fs_get_locks): Make this just a wrapper around svn_fs_get_locks2().

* subversion/libsvn_fs_base/lock.h

(svn_fs_base__get_locks): Add 'depth' parameter.

* subversion/libsvn_fs_base/lock.c

(struct locks_get_args): Add 'depth' member.

(svn_fs_base__allow_locked_operation, txn_body_get_locks): Update

call to svn_fs_bdb__locks_get().

(svn_fs_base__get_locks): Add 'depth' parameter, used to populate

new baton member.

* subversion/libsvn_fs_base/bdb/locks-table.h

(svn_fs_bdb__locks_get): Add 'depth' parameter.

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

(svn_fs_bdb__locks_get): Add 'depth' parameter, and use it to filter

the reported depths.

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__get_locks): Add 'depth' paramater.

* subversion/libsvn_fs_fs/lock.c

(get_locks_filter_baton_t): New baton structure.

(get_locks_filter_func): New callback wrapper function.

(svn_fs_fs__get_locks): Add 'depth' paramater, and employ the

get_locks_filter_func and baton when calling walk_digest_files().

* subversion/include/svn_repos.h

(svn_repos_fs_get_locks2): New revision of svn_repos_fs_get_locks()

which adds support for a specified 'depth'.

(svn_repos_fs_get_locks): Deprecate this.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_get_locks2): Was svn_repos_fs_get_locks(). Now calls

svn_fs_get_locks2().

(svn_repos_fs_get_locks): Make this just a wrapper around

svn_repos_fs_get_locks2(), now.

* subversion/mod_dav_svn/reports/get-locks.c

(dav_svn__get_locks_report): Look for new (optional) depth

parameter, and use it to drive what's now a call to

svn_repos_fs_get_locks2().

* build.conf

(svnserve): Add dependency on libsvn_ra.

* subversion/svnserve/serve.c

(get_locks): Look for optional depth in the get-locks request, and

use it in what is now a call to svn_repos_fs_get_locks2().

* subversion/include/svn_ra.h

(svn_ra_get_locks2): New flavor of svn_ra_get_lock(), this time with

depth support.

(svn_ra_get_lock): Deprecate.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add 'depth' parameter to 'get_locks' function.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_locks2): New.

(svn_ra_get_locks): Make this just a wrapper around

svn_ra_get_locks2().

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_locks): Add 'depth' parameter, and now use

svn_repos_fs_get_locks2().

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__get_locks): Add 'depth' parameter.

* subversion/libsvn_ra_neon/get_locks.c

(get_locks_baton_t): Add 'path' and 'requested_depth' members.

(getlocks_end_element): Filter unwanted locks out of the hash.

(svn_ra_neon__get_locks): Add 'depth' parameter, embed it into the

get-locks request, and populate the new baton members.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__get_locks): Add 'depth' parameter.

* subversion/libsvn_ra_serf/getlocks.c

(lock_context_t): Add 'path' and 'requested_depth' members.

(end_getlocks): Filter unwanted locks out of the hash.

(create_getlocks_body): Stuff depth value from baton into the

request body.

(svn_ra_serf__get_locks): Add 'depth' parameter,

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_locks): Add 'depth' parameter, and pass it to the server

in case the server can make use of it. Also, filter out unwanted

locks (returned by servers that *can't* make use of it).

* subversion/libsvn_client/list.c

(svn_client_list2): Now use svn_ra_get_locks2(), passing depth along.

  1. … 23 more files in changeset.
Test out my new and fancy ASF commit priviledges by changing the copyright

wording in our license headers to reflect ownership by the ASF.

* NOTICE:

Change terminology to ASF, and update a link.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the ASF, and update the project website.

* everywhere:

Change license text to reflect ASF ownership.

  1. … 891 more files in changeset.
Resolve some deprecation warnings.

* subversion/libsvn_client/list.c

(get_dir_contents): Use `svn_relpath_join()' and `svn_uri_join()'.

Patch by: Kannan R <kannanr{_AT_}collab.net>

* subversion/libsvn_client/client.h

(svn_client__open_ra_session_internal): Remove access baton parameter,

and update docs.

* subversion/libsvn_client/ra.c

(svn_client__open_ra_session_internal): Remove the now-unused access baton

parameter.

* subversion/libsvn_client/relocate.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/url.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/commit.c:

Update callers throughout by removing the access baton parameter.

  1. … 17 more files in changeset.
Replace a single svn_wc__entry_versioned() call with

svn_wc__get_entry_versioned(),greatly simplify a couple of other functions

dependent on the first one, and update all their callers to stop passing

access batons around.

* subversion/libsvn_client/util.c

(wc_path_to_repos_url): Directly fetch an entry, instead of possibly opening

up an access baton to do it.

(svn_client__path_relative_to_root, svn_client_get_repos_root):

Don't use an access baton to call the above function, and greatly simplify

these functions by not worrying about cleaning up the access baton.

Also, add scratch_pools.

* subversion/libsvn_client/client.h

(svn_client__path_relative_to_root, svn_client_get_repos_root):

Update params and docstrings.

* subversion/libsvn_client/externals.c,

subversion/libsvn_client/cmdline.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/url.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/list.c:

Update various callers of svn_client__path_relative_to_root() and

svn_client_get_repos_root().

  1. … 8 more files in changeset.