Checkout Tools
  • last updated 6 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Fix Ev2 shims over ra_neon by providing the correct repos_relpath and

base_relpath to the cshim callback inserter.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__get_repos_root): Make not static.

* subversion/libsvn_ra_neon/commit.c

(svn_ra_neon__get_commit_editor): Fetch and use the repos root.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__get_repos_root): Add.

  1. … 2 more files in changeset.
Fix test breakage over ra_neon as a result of r1291593, by implementing the

shim callback registration function for ra_neon.

Note: I don't have a neon build environment on this box, so this is somewhat

of a shot in the dark.

* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__register_editor_shim_callbacks): New.

* subversion/libsvn_ra_neon/session.c

(neon_vtable): Add additional function.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__session_t): Add shim_callbacks member.

(svn_ra_neon__register_editor_shim_callbacks): New.

* subversion/libsvn_ra_neon/commit.c

(svn_ra_neon__get_commit_editor): Use the registered callbacks.

  1. … 3 more files in changeset.
Following up on r1235831, apply the same change to neon:

Improve the handle of the ssl-authority-files config option: allow

leading and trailing whitespace on the filenames to make it easier for

the user to format the list of files.

In 1.7.x neon is still our default dav transport layer.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): switch to svn_cstring_split() and use its builtin param

to trim whitespace. then process the resulting array.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Avoid SEGV from new wrapped strtok.

Improve parsing speed of IDs and other structures by introducing

a wrapper around apr_strtok(). Since the latter has abysmal

performance if the number of separators is small, the new wrapper

uses its own implementation for the frequent case that there is

exactly one separator.

Replace calls to apr_strtok with calls to the new function if there

is the separator string may contain just one char (not always known

for pass-through parameters).

* subversion/include/svn_string.h

(svn_cstring_tokenize): declare new API function

* subversion/libsvn_subr/svn_string.c

(svn_cstring_tokenize): implement new API function

(svn_cstring_split_append): replace apr_strtok

* subversion/libsvn_fs_base/id.c

(svn_fs_base__id_parse): replace apr_strtok

* subversion/libsvn_fs_fs/id.c

(svn_fs_fs__id_parse): ditto

* subversion/libsvn_fs_fs/tree.c

(fs_copied_from): ditto

* subversion/libsvn_fs_fs/fs_fs.c

(read_rep_offsets_body, svn_fs_fs__read_noderev,

read_rep_line, parse_dir_entries, read_change,

read_next_ids, get_next_revision_ids,

recover_find_max_ids): ditto

* subversion/libsvn_ra_serf/util.c

(load_authorities): more apr_strtok replacing

* subversion/libsvn_ra_serf/serf.c

(load_http_auth_types): ditto

* subversion/libsvn_ra_neon/session.c

(get_server_settings, svn_ra_neon__open): ditto

  1. … 8 more files in changeset.
Use svn_uri_skip_ancestor() wherever svn_uri__is_child() was being used with

an extra string comparison to achieve the same effect.

* subversion/libsvn_client/commit_util.c

(svn_client__condense_commit_items): Same.

* subversion/libsvn_client/copy.c

(repos_to_repos_copy): Same.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__get_path_relative_to_root): Same.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_path_relative_to_root): Same.

* subversion/libsvn_ra_svn/client.c

(path_relative_to_root): Same.

* tools/client-side/svnmucc/svnmucc.c

(subtract_anchor): Same.

  1. … 5 more files in changeset.
Make an output parameter of a private function optional because three out

of four callers don't want it.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__has_capability): Make the 'youngest_rev' output parameter


* subversion/libsvn_ra_neon/options.c

(parse_capabilities, svn_ra_neon__exchange_capabilities): Make the

'youngest_rev' output parameter optional.

(svn_ra_neon__get_activity_collection, svn_ra_neon__has_capability):

Update calls to svn_ra_neon__exchange_capabilities, eliminating an

'ignored_rev' variable.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Update a call to svn_ra_neon__exchange_capabilities,

eliminating an 'ignored_rev' variable.

  1. … 2 more files in changeset.
* subversion/libsvn_ra_neon/session.c

(get_server_settings): Conditionally declare a variable which is only

used conditionally.

Found by: Philipp Kloke <>

Make these new APIs private: svn_uri_is_child(), svn_relpath_is_child().

* subversion/include/svn_dirent_uri.h,


(svn_uri_is_child): Rename to svn_uri__is_child().

(svn_relpath_is_child): Rename to svn_relpath__is_child().

* Everywhere else: Adjust calls.

  1. … 26 more files in changeset.
Follow-up to r1125391: Use svn_tristate_t instead of hardcoded values.

Suggested by: gstein

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__session_t): Change type of supports_deadprop_count to


* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Initialize supports_deadprop_count to


* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__get_deadprop_count_support): Update.

  1. … 2 more files in changeset.
ra_neon: Cache information about deadprop-count support in ra_session object.

* subversion/libsvn_ra_neon/fetch.c

(deadprop_count_support_props): Move to subversion/libsvn_ra_neon/util.c.

(svn_ra_neon__get_dir): Use svn_ra_neon__get_deadprop_count_support()

function instead of requesting this information from server.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__session_t): Add supports_deadprop_count tri-state variable to

cache information about deadprop-count support.

(svn_ra_neon__get_deadprop_count_support): New.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Initialize supports_deadprop_count to zero (unknown).

* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__get_deadprop_count_support): New, extracted from


  1. … 3 more files in changeset.
Simplify ra_neon code a bit.

* subversion/libsvn_ra_neon/props.c

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__get_baseline_info): Return regular NULL terminated string,

instead of svn_string_t.

(svn_ra_neon__do_check_path, svn_ra_neon__do_stat): Update callers.

* subversion/libsvn_ra_neon/session.c

* subversion/libsvn_ra_neon/commit.c

* subversion/libsvn_ra_neon/fetch.c

* subversion/libsvn_ra_neon/file_revs.c

* subversion/libsvn_ra_neon/get_deleted_rev.c

* subversion/libsvn_ra_neon/get_location_segments.c

* subversion/libsvn_ra_neon/get_locations.c

* subversion/libsvn_ra_neon/lock.c

* subversion/libsvn_ra_neon/log.c

* subversion/libsvn_ra_neon/mergeinfo.c

(get_version_url, copy_resource, svn_ra_neon__get_file,

svn_ra_neon__get_dir, reporter_link_path, svn_ra_neon__get_file_revs,

svn_ra_neon__get_deleted_rev, svn_ra_neon__get_location_segments,

svn_ra_neon__get_locations, do_lock, svn_ra_neon__get_lock_internal,

svn_ra_neon__get_log, svn_ra_neon__get_mergeinfo,

svn_ra_neon__get_repos_root): Update callers.

  1. … 11 more files in changeset.
Shave another 29.5K requests (26%) off of our ra_neon regression test

suite by using HTTPv2 semantics for calculating "baseline info"!

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__get_baseline_info): Remove 'is_dir' parameter and handling.

* subversion/libsvn_ra_neon/props.c

(svn_ra_neon__get_baseline_info): Remove 'is_dir' parameter and handling.

(svn_ra_neon__do_check_path): Update call to

svn_ra_neon__get_baseline_info(), and now do the is-dir work that

that function used to do.

(svn_ra_neon__do_stat): Update call to svn_ra_neon__get_baseline_info().

* subversion/libsvn_ra_neon/fetch.c

(svn_ra_neon__get_file, svn_ra_neon__get_dir, reporter_link_path):

Update call to svn_ra_neon__get_baseline_info().

(svn_ra_neon__get_latest_revnum): Update call to

svn_ra_neon__get_baseline_info(), and now leave the HTTPv2 stuff

to that function.

* subversion/libsvn_ra_neon/commit.c

(get_version_url, copy_resource): Update call to


* subversion/libsvn_ra_neon/file_revs.c

(svn_ra_neon__get_file_revs): Update call to


* subversion/libsvn_ra_neon/get_deleted_rev.c

(svn_ra_neon__get_deleted_rev): Update call to


* subversion/libsvn_ra_neon/get_location_segments.c

(svn_ra_neon__get_location_segments): Update call to


* subversion/libsvn_ra_neon/get_locations.c

(svn_ra_neon__get_locations): Update call to


* subversion/libsvn_ra_neon/lock.c

(do_lock, svn_ra_neon__get_lock_internal): Update call to


* subversion/libsvn_ra_neon/log.c

(svn_ra_neon__get_log): Update call to


* subversion/libsvn_ra_neon/mergeinfo.c

(svn_ra_neon__get_mergeinfo): Update call to


* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__get_repos_root): Update call to


  1. … 11 more files in changeset.
* subversion/libsvn_ra_serf/ra_serf.h,

* subversion/libsvn_ra_neon/session.c

Replace instances of SVN_VERSION in User-Agent header strings with


  1. … 1 more file in changeset.
Remove 'svn obliterate' related code.

* subversion/libsvn_ra/ra_loader.h,


(svn_ra__vtable_t, svn_ra__obliterate_path_rev):

Remove obliterate related code.

* subversion/libsvn_fs/fs-loader.h,


(fs_vtable_t, svn_fs__begin_obliteration_txn,

svn_fs__commit_obliteration_txn): Remove obliterate related code.

* subversion/svn/cl.h,


(svn_opt_subcommand_t, svn_cl__cmd_table): Remove obliterate related code.

* subversion/libsvn_ra_local/ra_plugin.c,




(svn_ra_local__obliterate_path_rev, ra_local_vtable, ra_svn_vtable,

neon_vtable, serf_vtable): Remove obliterate related code.

* subversion/libsvn_fs_base/tree.h,









(svn_fs_base__commit_obliteration_txn, svn_fs_base__obliterate_rep,

txn_body_commit_obliteration, txn_body_obliterate_rep,

svn_fs_base__rep_obliterate, svn_fs_base__dag_commit_obliteration_txn,

svn_fs_base__dag_obliterate_rep, svn_fs_base__begin_obliteration_txn,

txn_vtable, txn_body_begin_obliteration_txn, fs_vtable,

node_origins_update, copies_update, changes_dup):

Remove obliterate related code.

* subversion/include/private/svn_client_private.h,




(svn_client__obliterate_path_rev, svn_repos__obliterate_path_rev,

svn_repos__pre_obliterate_hook, svn_repos__post_obliterate_hook,

svn_ra__obliterate_path_rev, svn_fs__begin_obliteration_txn,

svn_fs__commit_obliteration_txn): Remove obliterate related code.

* subversion/libsvn_repos/repos.h,



(svn_repos__hooks_pre_obliterate, svn_repos__hooks_post_obliterate,

create_hooks, check_hook_result): Remove obliterate related code.

* subversion/libsvn_fs_fs/tree.h,





(svn_fs_fs__commit_obliteration_txn, svn_fs_fs__commit_obliteration,

svn_fs_fs__begin_obliteration_txn, txn_vtable,

svn_fs_fs__create_obliteration_txn, commit_obliteration_body,

svn_fs_fs__commit_obliteration, svn_fs_fs__begin_obliteration_txn,

fs_vtable): Remove obliterate related code.

* subversion/svn/obliterate-cmd.c,






Remove obliterate related files.

* subversion/tests/libsvn_fs/fs-test.c,


(obliterate_1, test_funcs, SvnRepository.obliterate_node_rev):

Remove obliterate related test.

Patch by: Noorul Islam K M <noorul{_AT_}>

  1. … 38 more files in changeset.
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.
Ensure the correct type of NULL pointer is passed as a sentinel to the

variadic function apr_pstrcat().

Starting with version 4, gcc has been printing irritating warnings about

"missing sentinels in function call" for virtually every call to apr_pstrcat().

There is an issue about this in the APR bug tracker:

The fix proposed there is to include stddef.h in apr.h, in order to make

sure that NULL is defined as a pointer type, such as (void *)0.

Unfortunately, this doesn't work for all systems, since some (e.g. OpenBSD)

define NULL as 0L, rather than (void *)0.

So in spite of regrets about churn, I whipped up a sed script that changed

all places triggering the warning to use (char *)NULL instead of NULL as

sentinel, and adjusted the result to fix overlong lines and other minor

formatting issues. This fixes all current instances of the warning for me,

making it much easier to spot important warnings. No functional change.

* subversion/mod_authz_svn/mod_authz_svn.c

(get_access_conf, req_check_access, req_check_access): Use (char *)NULL

as sentinel for apr_pstrcat(), instead of NULL.

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__generate_lock_token): Same.

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

(svn_fs_bdb__locks_get): Same.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__reparent): Same.

* subversion/libsvn_ra_svn/cyrus_auth.c

(try_auth, svn_ra_svn__get_addresses, svn_ra_svn__do_cyrus_auth): Same.

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_locks): Same.

* subversion/mod_dav_svn/mirror.c

(static void proxy_request_fixup, dav_svn__proxy_request_fixup,

dav_svn__location_header_filter): Same.

* subversion/mod_dav_svn/reports/update.c

(malformed_element_error): Same.

* subversion/mod_dav_svn/reports/replay.c

(malformed_element_error): Same.

* subversion/mod_dav_svn/mod_dav_svn.c

(dav_svn__get_special_uri): Same.

* subversion/mod_dav_svn/lock.c

(svn_lock_to_dav_lock, unescape_xml): Same.

* subversion/mod_dav_svn/repos.c

(create_private_resource, get_parentpath_resource, get_resource,

deliver, do_walk, dav_svn__create_working_resource): Same.

* subversion/mod_dav_svn/version.c

(get_option): Same.

* subversion/libsvn_ra_neon/get_locks.c

(svn_ra_neon__get_locks): Same.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Same.

* subversion/libsvn_ra_neon/lock.c

(do_lock): Same.

* subversion/libsvn_ra_neon/props.c

(end_element, svn_ra_neon__get_props, svn_ra_neon__get_one_prop,

append_setprop): Same.

* subversion/libsvn_ra_neon/fetch.c

(add_props, filter_props, end_element): Same.

* subversion/libsvn_ra_serf/getlocks.c

(svn_ra_serf__get_locks): Same.

* subversion/libsvn_ra_serf/locks.c

(svn_ra_serf__unlock): Same.

* subversion/libsvn_ra_serf/update.c

(link_path): Same.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__open): Same.

* subversion/libsvn_ra_serf/property.c

(set_bare_props, svn_ra_serf__set_baton_props,

svn_ra_serf__set_baton_props): Same.

* subversion/libsvn_ra_serf/commit.c

(proppatch_walker, setup_proppatch_headers,

setup_put_headers, setup_delete_headers): Same.

* subversion/libsvn_fs_fs/caching.c

(svn_fs_fs__initialize_caches): Same.

* subversion/libsvn_fs_fs/lock.c

(svn_fs_fs__generate_lock_token): Same.

* subversion/libsvn_fs_fs/fs_fs.c

(path_txn_dir, path_txn_proto_rev, path_txn_proto_rev_lock,

path_txn_node_props, create_txn_dir, get_new_txn_node_id,

svn_fs_fs__reserve_copy_id, svn_fs_fs__set_uuid): Same.

* subversion/svn/notify.c

(notify): Same.

* subversion/svn/conflict-callbacks.c

(svn_cl__conflict_handler): Same.

* subversion/libsvn_subr/auth.c

(svn_auth_first_credentials): Same.

* subversion/libsvn_subr/checksum.c

(svn_checksum_serialize): Same.

* subversion/libsvn_subr/cache-memcache.c

(build_key): Same.

* subversion/libsvn_subr/log.c

(log_depth): Same.

* subversion/libsvn_subr/utf.c

(get_xlate_key, invalid_utf8): Same.

* subversion/libsvn_subr/opt.c

(svn_opt_format_option, svn_opt__args_to_target_array): Same.

* subversion/libsvn_subr/dirent_uri.c

(svn_uri_get_file_url_from_dirent): Same.

* subversion/libsvn_subr/sqlite.c

(internal_open): Same.

* subversion/tests/libsvn_ra_local/ra-local-test.c

(check_split_url): Same.

* subversion/tests/libsvn_repos/repos-test.c

(print_chrevs): Same.

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

(substitute_and_verify): Same.

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

(test_text_retrieval, test_boolean_retrieval, test_has_section): Same.

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

(test_dirent_get_absolute): Same.

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

(condense_targets_tests_helper): Same.

* subversion/libsvn_wc/adm_files.c

(simple_extend): Same.

* subversion/libsvn_wc/update_editor.c

(create_tree_conflict): Same.

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

(svn_wc__serialize_file_external): Same.

* subversion/libsvn_wc/upgrade.c

(migrate_node_props): Same.

* subversion/libsvn_wc/wc_db.c

(construct_like_arg, wclock_obtain_cb): Same.

* subversion/libsvn_client/util.c

(svn_client__path_relative_to_root): Same.

* subversion/libsvn_client/info.c

(push_dir_info): Same.

* subversion/libsvn_client/mergeinfo.c

(svn_client__mergeinfo_from_segments): Same.

* subversion/libsvn_client/cmdline.c

(resolve_repos_relative_url, svn_client_args_to_target_array,

(svn_client_args_to_target_array): Same.

* subversion/libsvn_client/externals.c

(resolve_relative_external_url): Same.

* subversion/libsvn_client/patch.c

(copy_lines_to_target): Same.

* subversion/libsvn_repos/hooks.c

(check_hook_cmd): Same.

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_trace_node_locations, svn_repos_node_location_segments): Same.

* subversion/libsvn_repos/authz.c

(authz_get_path_access, authz_get_tree_access,

authz_get_global_access): Same.

* subversion/libsvn_repos/reporter.c

(add_file_smartly): Same.

  1. … 57 more files in changeset.
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 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.
Following up on r982952, make ra_neon store the authorization credentials

after every successful authenticated request (just like serf), instead

of *before* every request. This should make sure that we don't just store

invalid credentials.

We can do this by replacing the unused auth_user field of the session

with an auth_used boolean and check it when we get the result from the

neon request.

* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__request_create): Don't store credentials here.

(svn_ra_neon__request_dispatch): Store the credentials here if we received a

success response on a request that used authorization.

* subversion/libsvn_ra_neon/session.c

(request_auth): Set auth_used to TRUE if we got credentials,

otherwise to FALSE.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__session_t): Replace auth_username with auth_used.

  1. … 2 more files in changeset.
While working on a wc of a repo which needs authentication, 'store

password unencrypted' prompt is getting invoked only for those svn

commands that access the repo URL or that have an URL as argument

(eg. svn ls http://localhost/repo) and not for wc oriented commands

such as `svn ls' or `svn cat -r 5 test.c' which also require

authentication, which is solved here. This also fixes redundant

invokation of the function 'svn_ra_neon__maybe_store_auth_info' at

various places.

* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__request_create): Store auth credentials if we can.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__do_get_uuid): Remove redundant invocation.

* subversion/libsvn_ra_neon/commit.c

(commit_close_edit): Remove redundant invocation.

* subversion/libsvn_ra_neon/fetch.c

(svn_ra_neon__get_latest_revnum, reporter_finish_report): Remove

redundant invocation.

Patch by: Kannan R <>


  1. … 3 more files in changeset.
Duplicate a utility function in a couple of places to prevent library

dependency cycles.

* subversion/libsvn_ra_svn/client.c

(path_relative_to_root): New, copied (with mods) from


(ra_svn_get_locks): Use path_relative_to_root() instead of


* subversion/libsvn_ra_neon/ra_neon.h,

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__get_path_relative_to_root): New, copied (with mods) from


* subversion/libsvn_ra_neon/get_locks.c

(svn_ra_neon__get_locks): Use path_relative_to_root() instead of


* build.conf

(svnserve): Lose now-unnecessary dependency on libsvn_ra.

  1. … 4 more files in changeset.
Update the svn_atomic__init_once() interface to take a baton, and update all

callers. The new caller (that needs the baton) will be added shortly.

* subversion/include/private/svn_atomic.h,



Add a BATON parameter to be passed to INIT_FUNC, and update INIT_FUNC's

signature to accept it.

* subversion/libsvn_fs_base/bdb/env.c








Update svn_atomic__init_once() calls and callbacks to pass/accept a baton.

  1. … 9 more files in changeset.
Improve the progress information from libsvn_ra_neon, for the case where

no total is available, by combining the results to one grand total like

how the other RA-layers do this.

Client applications such as TortoiseSVN, Subclipse and AnkhSVN who handle

these progress callbacks, can't identify the two internal sessions inside

neon and therefore had a hard time guessing the number of bytes neon really

transfers; especially for short requests.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__session_t): Add total_progress variable and name the struct

to provide better debug information.

* subversion/libsvn_ra_neon/session.c

(neonprogress_baton_t): Add ra session and last_progress variables. Remove

now unused progress handler.

(ra_neon_neonprogress): Calculate total number of bytes over multiple


(svn_ra_neon__open): Only hook progress callback if we need it. Use two

separate batons for the separate neon sessions.

  1. … 1 more file in changeset.
Perform some path->uri/dirent cleanup in libsvn_ra_neon.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Assert that the uri is canonical and remove some

cleanups that are better handled in svn_uri_canonicalize(). Also

fix a call to svn_path_local_style().

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

(test_uri_is_canonical): Add a few more http targeted testcases.

  1. … 1 more file in changeset.
Rename some of the present obliterate functions to clarify that they operate

on a single path at a single revision, and to make way for other kinds of

obliterate functions.

[Note from the future: I missed the header files here. Done in r909464.]

* subversion/svn/obliterate-cmd.c

(svn_cl__obliterate): Adjust the call of svn_client__obliterate() to call

svn_client__obliterate_path_rev() instead.

* subversion/libsvn_client/obliterate.c

(svn_client__obliterate): Rename to svn_client__obliterate_path_rev().

Adjust the call of svn_ra__obliterate() to call

svn_ra__obliterate_path_rev() instead.

* subversion/libsvn_ra/ra_loader.c

(svn_ra__obliterate): Rename to svn_ra__obliterate_path_rev().

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Adjust a comment.

* subversion/libsvn_ra_neon/session.c

(neon_vtable): Adjust a comment.

* subversion/libsvn_ra_serf/serf.c

(serf_vtable): Adjust a comment.

* subversion/libsvn_ra_svn/client.c

(ra_svn_vtable): Adjust a comment.

  1. … 6 more files in changeset.
Teach ra_neon to use OPTIONS requests for youngest-rev checks where

HTTPv2 is available (versus a batch of PROPFINDs).

(This shaves off 6% of the network requests.)

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__exchange_capabilities): Add 'youngest_rev' parameter.

* subversion/libsvn_ra_neon/options.c

(parse_capabilities): Add 'youngest_rev' parameter, and populate it

with data from the OPTIONS request if so provided.

(svn_ra_neon__exchange_capabilities): Add 'youngest_rev' parameter,

populated from the OPTIONS request if possible. Update call to


(svn_ra_neon__get_activity_collection, svn_ra_neon__has_capability):

Update calls to svn_ra_neon__exchange_capabilities().

* subversion/libsvn_ra_neon/fetch.c

(svn_ra_neon__get_latest_revnum): If HTTPv2 is available, use an

OPTIONS request to fetch the latest revision. While here, remove

stale comment.

* subversion/libsvn_ra_neon/session.c

(svn_ra_neon__open): Update call to svn_ra_neon__exchange_capabilities().

  1. … 3 more files in changeset.
Make "obliterate" fail gracefully on the RA layers that don't yet support it

(which is all except RA-local).

* subversion/libsvn_ra/ra_loader.c

(svn_ra__obliterate): Throw an error if the vtable obliterate method is


* subversion/libsvn_ra_neon/session.c

(neon_vtable): Add a NULL entry for the obliterate_node_rev method.

* subversion/libsvn_ra_serf/serf.c

(serf_vtable): Add a NULL entry for the obliterate_node_rev method.

* subversion/libsvn_ra_svn/client.c

(ra_svn_vtable): Add a NULL entry for the obliterate_node_rev method.

  1. … 3 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.


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.
Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.



subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

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

copyrighted by the SVN Corp, and that it contains contributions from

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

Change copyright notices in file headers to reflect the Apache 2.0 license.

  1. … 882 more files in changeset.
Move all the libsvn_ra_neon OPTIONS-related stuff to the same source file.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__exchange_capabilities): New prototype.

* subversion/libsvn_ra_neon/session.c

(capability_yes, capability_no, capability_server_yes,

parse_capabilities, svn_ra_neon__has_capability): Moved to options.c.

(exchange_capabilities): Renamed to svn_ra_neon__exchange_capabilities(),

and moved to options.c. Callers updated.

(svn_ra_neon__open): Track rename of exchange_capabilities().

* subversion/libsvn_ra_neon/options.c

(capability_yes, capability_no, capability_server_yes,

parse_capabilities, svn_ra_neon__has_capability): Moved from session.c.

(svn_ra_neon__exchange_capabilities): Was session.c:exchange_capabilities().

  1. … 2 more files in changeset.