Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
* everywhere: Run tools/dev/remove-trailing-whitespace.sh to remove

trailing whitespace before we branch 1.14.

  1. … 105 more files in changeset.
* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn5): Further clarify docstring, after r1825979.

Patch by: brane

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn5): Minor clarification to docstring.

Tweaks to doc strings and Doxygen mark-up of 1.10 API changes.

  1. … 7 more files in changeset.
ra_svn: Advertise acceptance of svndiff2 deltas.

Add an "accepts-svndiff2" wire capability, and have both the client and

the server advertise it. While currently neither the client nor the

server sends svndiff2 over the wire, this capability will allow

1.11 endpoints to send svndiff2 to 1.10 endpoints.

No change was needed beyond the capability addition; the incumbent code

would already accept svndiff2 if a (non-compliant) remote endpoint used it.

* subversion/libsvn_ra_svn/protocol

(accepts-svndiff2): New wire capability.

* subversion/include/svn_ra_svn.h

(SVN_RA_SVN_CAP_SVNDIFF2_ACCEPTED): New.

* subversion/svnserve/serve.c

(file_rev_handler): Note that this is where we could act on the

new capability.

(construct_server_baton): Advertise the new capability.

* subversion/libsvn_ra_svn/editorp.c

(ra_svn_apply_textdelta): Note that this is where we could act on the

new capability.

* subversion/libsvn_ra_svn/client.c

(open_session): Advertise the new capability.

  1. … 4 more files in changeset.
Implement svn_ra_list in ra_svn. The wire protocol for this command

has been insprired by the get-log and get-dir commands alike.

* subversion/libsvn_ra_svn/protocol

(2.1 Capabilities): Add the 'list' capability.

(3.1.1. Main Command Set): Add the protocol of the 'list' command.

* subversion/include/svn_ra_svn.h

(SVN_RA_CAPABILITY_LIST): Declare this new capability in code.

* subversion/svnserve/serve.c

(list_receiver_baton_t,

list_receiver,

list): Implement the new command.

(main_commands): Register the new command handler.

(construct_server_baton): Advertise the new capability.

* subversion/libsvn_ra_svn/client.c

(ra_svn_has_capability): Check for the new capability as well.

(ra_svn_list): Client-side implementation of the protocol.

(ra_svn_vtable): Register the new list function.

* subversion/include/private/svn_log.h

(svn_log__list): Add a new internal API to allow for logging the

new list command.

* subversion/libsvn_subr/log.c

(svn_log__list): Implement.

  1. … 5 more files in changeset.
Following up on r1714330, implement a similar limit to svnserve responses.

If --max-response-size is specified and a response exceeds that limit,

it gets truncated and the connetion will be reset. This allows us to limit

the server load caused by "don't do that" type of requests like exporting

the root of the repository instead of some project branch.

By default, this limit is 0, i.e. inactive.

* subversion/include/svn_error_codes.h

(SVN_ERR_RA_SVN_RESPONSE_SIZE): New error code.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn5): Add another limit parameter.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn_conn_st): Add fields for the new data counter and its limit.

* subversion/libsvn_ra_svn/deprecated.c

(svn_ra_svn_create_conn4): Update.

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_create_conn5): Initialize the new struct elements.

(svn_ra_svn__reset_command_io_counters): One more counter to reset.

(check_io_limits): One more limit to check.

(writebuf_output): Count outgoing data and enforce limits.

* subversion/svnserve/server.h

(serve_params_t): Add field for the new --max-response-size option.

* subversion/svnserve/serve.c

(serve_interruptable): Pass the new option to the bumped API.

* subversion/svnserve/svnserve.c

(SVNSERVE_OPT_MAX_RESPONSE): Declare the new option.

(svnserve__options): Define and document the new option.

(sub_main): Handle the new option and pass it to the bumped API.

  1. … 7 more files in changeset.
Add the equivalent of LimitXMLRequestBody to svnserve.

The idea is simple, whenever we fill our receive buffer, we update the sum

total and compare it to some limit. Reset the counter sum at each new

command / request coming in.

If a client request exceeds the --max-request-size parameter given to

svnserve (16MB by default, twice the httpd default), the processing gets

terminated and the connection will be closed. The latter is necessary

because the protocol is stateful and we just skipped / ignored a potential

state transition.

As a result, the memory usage of a threaded server is now bound to approx.

(max-request-size + 4M) x max-threads even in high-load scenarios. On the

flip side, propsets are limited to around 15M per property by default.

* subversion/include/svn_error_codes.h

(SVN_ERR_RA_SVN_REQUEST_SIZE): New error code.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn5): Bumped API, adding the new limit parameter.

(svn_ra_svn_create_conn4): Deprecate.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn_conn_st): Add fields for the data counter and its limit.

(svn_ra_svn__reset_command_io_counters): Declare a function to reset the

counter - to be called before

each new command.

* subversion/libsvn_ra_svn/deprecated.c

(svn_ra_svn_create_conn4): Implement in terms of the new API.

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_create_conn5): Implement like the predecessor but init the

new struct elements as well.

(svn_ra_svn__reset_command_io_counters): Implement new private API.

(check_io_limits): New function performing the actual error detection.

(readbuf_input): Count incoming data and enforce limits.

(svn_ra_svn__has_command): Be sure to count I/O per command.

(svn_ra_svn__handle_command): Same. Also handle the case that we truncated

I/O and are now in a potentially inconsistent

state.

* subversion/libsvn_ra_svn/editorp.c

(svn_ra_svn_drive_editor2): Limit the request size separately for each

editor command - not the whole editor drive.

* subversion/svnserve/server.h

(serve_params_t): Add field for the new --max-request-size option.

* subversion/svnserve/serve.c

(serve_interruptable): Pass the new option to the bumped API.

* subversion/svnserve/svnserve.c

(MAX_REQUEST_SIZE): Define the default value for the new option.

(SVNSERVE_OPT_MAX_REQUEST): Declare the new option.

(svnserve__options): Define and document the new option.

(sub_main): Handle the new option and pass it to the bumped API.

  1. … 8 more files in changeset.
Complete the migration of the ra_svn code to using a private item data type.

This patch actually makes svn_ra_svn__item_t a separate data structure.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_item_kind_t): Make the variant selector a named type such

that it can be reused.

(svn_ra_svn_item_t): Update.

* subversion/include/private/svn_ra_svn_private.h

(svn_ra_svn__item_t): This is now a verbatim copy of svn_ra_svn_item_t

and will diverge from it in the future.

  1. … 1 more file in changeset.
Document the specific requirements of commit editors to be given a URL

rather than a relative path in the copyfrom_path argument of their

add_file() and add_directory() methods.

* subversion/include/svn_ra.h

(svn_ra_get_commit_editor3): Add a comment: requires a URL.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_get_editor): Add a comment: passes on either kind, verbatim.

(svn_ra_svn_drive_editor2): Add a comment: canonicalizes either kind.

* subversion/include/svn_repos.h

(svn_repos_get_commit_editor5): Add a comment: requires a URL.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__get_commit_editor): Add a comment: requires a URL.

* subversion/libsvn_repos/commit.c

(add_file_or_directory): Add a comment: requires a URL.

* subversion/svnrdump/load_editor.c

(new_node_record): Add a comment: provides a URL.

  1. … 5 more files in changeset.
Make libsvn_ra_svn use proper svn_stream_t based streams for its

communication channels.

* subversion/bindings/javahl/native/OperationContext.cpp

(OperationContext::openTunnel): Use stream around apr file.

* subversion/bindings/javahl/native/OperationContext.h

(OperationContext::openTunnel): Use stream around apr file.

* subversion/include/svn_ra.h

(svn_ra_open_tunnel_func_t): Update callback to use svn_stream_t.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn4): New function.

(svn_ra_svn_create_conn3): Deprecate function.

* subversion/libsvn_ra_svn/client.c

(handle_child_process_error,

make_tunnel,

open_session): Update caller.

* subversion/libsvn_ra_svn/cyrus_auth.c

(sasl_read_full_cb): New function.

(sasl_pending_cb): Implement svn_stream_data_available_fn_t.

(svn_ra_svn__enable_sasl_encryption): Provide streams instead of callbacks.

* subversion/libsvn_ra_svn/deprecated.c

(header): Declare SVN_DEPRECATED to avoid deprecation warnings in

this file.

(svn_ra_svn_create_conn3): New function.

* subversion/libsvn_ra_svn/editorp.c

(check_for_error_internal): Update caller.

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_create_conn3): Rename to...

(svn_ra_svn_create_conn4): ... this and pass streams.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn__has_item): Update caller.

(svn_ra_svn__input_waiting): Update prototype to match

svn_stream_data_waiting().

(svn_ra_svn__stream_from_files): Rename to...

(svn_ra_svn__stream_from_streams): ... this.

(svn_ra_svn__stream_create): Update arguments to accept two streams instead

of callbacks to install on a new stream.

(svn_ra_svn__stream_pending): Update prototype to match

svn_stream_data_waiting().

* subversion/libsvn_ra_svn/streams.c

(includes): Add private/svn_io_private.h.

(svn_ra_svn__stream_st): Store two streams instead of one, to allow directly

calling into existing callbacks.

(file_baton_t,

file_read_cb,

file_write_cb): Remove functions. We can use the new short read stream api

for this if the single caller handles the non-standard error behavior.

(file_timeout_cb): Use file as baton and allow NULL file.

(file_pending_cb): Remove function.

(svn_ra_svn__stream_from_files): Rename to...

(svn_ra_svn__stream_from_streams): ... this and check if the output stream

is an apr_file_t for the timeout callback.

(sock_read_cb): Remove nonstandard error behavior, which belongs in the

caller.

(sock_read_full_cb): Add unused stub.

(sock_pending_cb): Implement svn_stream_data_available_fn_t.

(svn_ra_svn__stream_from_sock): Create a stream here and pass that.

(svn_ra_svn__stream_create): Stop creating a stream and store the passed

streams instead.

(svn_ra_svn__stream_write): Use out_stream.

(svn_ra_svn__stream_read): Use in_stream and check for 0 byte reads as was

done in the internal stream before.

(svn_ra_svn__stream_timeout,

svn_ra_svn__stream_pending): Update caller.

* subversion/svnserve/serve.c

(serve_interruptable): Update caller.

* subversion/svnserve/svnserve.c

(sub_main): Update caller.

* subversion/tests/libsvn_ra/ra-test.c

(open_tunnel): Return streams.

  1. … 13 more files in changeset.
[Temporarily revert r1561387, until the svn_stream_t type is extended to

properly support incomplete reads]

  1. … 11 more files in changeset.
[Reverted in r1561424, to avoid svn_stream_t limitation]

Following up on r1531610 and related revisions, extend the ra-svn tunnel

creation callback to allow providing Subversion streams instead of only

apr_file_t * handles to allow hooking in third party libraries without

requiring external applications and/or advanced multithread synchronization

in any application that wants to use this.

This should allow things like using libssh2 as in-process ssh client on

Windows, with callbacks for authentication in the primary thread without

patching Subversion.

(It should also allow simplifying the test of the callback in JavaHL,

which now uses a simplified multithreading implementation)

* subversion/bindings/javahl/native/OperationContext.cpp

* subversion/bindings/javahl/native/OperationContext.h

(OperationContext::openTunnel): Update callback.

* subversion/include/svn_ra.h

(svn_ra_open_tunnel_func_t): Update argument type.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn4): New function.

(svn_ra_svn_create_conn3): Deprecate function.

* subversion/libsvn_ra_svn/client.c

(handle_child_process_error,

make_tunnel,

open_session): Update caller.

* subversion/libsvn_ra_svn/deprecated.c

(SVN_DEPRECATED): Declare here to suppress deprecated warnings.

(svn_ra_svn_create_conn3): New function.

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_create_conn3): Rename to ...

(svn_ra_svn_create_conn4): ... this and update caller. Rename pool.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn__stream_from_streams): New function.

* subversion/libsvn_ra_svn/streams.c

(includes): Add svn_io_private.h.

* subversion/svnserve/serve.c

(serve_interruptable): Update caller.

* subversion/svnserve/svnserve.c

(sub_main): Reduce scope of some variables. Update caller.

* subversion/tests/libsvn_ra/ra-test.c

(open_tunnel): Update callback.

  1. … 11 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.
Some deprecation cleanup in ra_svn.h: Add DEPRECATED marker where it

was missing and update callers where necessary.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn2): add missing deprecation maker

(svn_ra_svn_drive_editor2): add missing "@since" spec

(svn_ra_svn_drive_editor): deprecate old API

* subversion/svnserve/serve.c

(commit): use newer API

Found by: julianfoad

  1. … 1 more file in changeset.
Make the internals of our ra_svn protocol private.

Move svn_ra_svn__write_cmd_* functions to private/svn_ra_svn_private.h,

deprecate all low-level functions in svn_ra_svn and provide private

variants of them in the private header where necessary.

Implement the deprecated public functions in terms of our private API

and put that code into the new deprecated.c source file. Update all

API users to call our non-deprecated private API.

* subversion/include/private/svn_ra_svn_private.h

(svn_ra_svn__write_number,

svn_ra_svn__write_string,

svn_ra_svn__write_cstring,

svn_ra_svn__write_word,

svn_ra_svn__write_proplist,

svn_ra_svn__start_list,

svn_ra_svn__end_list,

svn_ra_svn__flush,

svn_ra_svn__write_tuple,

svn_ra_svn__read_item,

svn_ra_svn__skip_leading_garbage,

svn_ra_svn__parse_tuple,

svn_ra_svn__read_tuple,

svn_ra_svn__parse_proplist,

svn_ra_svn__read_cmd_response,

svn_ra_svn__handle_commands2,

svn_ra_svn__write_cmd_response,

svn_ra_svn__write_cmd_failure): declare private, non-deprecated variants

(svn_ra_svn__write_cmd_target_rev,

svn_ra_svn__write_cmd_open_root,

svn_ra_svn__write_cmd_delete_entry,

svn_ra_svn__write_cmd_add_dir,

svn_ra_svn__write_cmd_open_dir,

svn_ra_svn__write_cmd_change_dir_prop,

svn_ra_svn__write_cmd_close_dir,

svn_ra_svn__write_cmd_absent_dir,

svn_ra_svn__write_cmd_add_file,

svn_ra_svn__write_cmd_open_file,

svn_ra_svn__write_cmd_change_file_prop,

svn_ra_svn__write_cmd_close_file,

svn_ra_svn__write_cmd_absent_file,

svn_ra_svn__write_cmd_apply_textdelta,

svn_ra_svn__write_cmd_textdelta_chunk,

svn_ra_svn__write_cmd_textdelta_end,

svn_ra_svn__write_cmd_close_edit,

svn_ra_svn__write_cmd_abort_edit,

svn_ra_svn__write_cmd_set_path,

svn_ra_svn__write_cmd_delete_path,

svn_ra_svn__write_cmd_link_path,

svn_ra_svn__write_cmd_finish_report,

svn_ra_svn__write_cmd_abort_report,

svn_ra_svn__write_cmd_reparent,

svn_ra_svn__write_cmd_get_latest_rev,

svn_ra_svn__write_cmd_get_dated_rev,

svn_ra_svn__write_cmd_change_rev_prop2,

svn_ra_svn__write_cmd_change_rev_prop,

svn_ra_svn__write_cmd_rev_proplist,

svn_ra_svn__write_cmd_rev_prop,

svn_ra_svn__write_cmd_get_file,

svn_ra_svn__write_cmd_update,

svn_ra_svn__write_cmd_switch,

svn_ra_svn__write_cmd_status,

svn_ra_svn__write_cmd_diff,

svn_ra_svn__write_cmd_check_path,

svn_ra_svn__write_cmd_stat,

svn_ra_svn__write_cmd_get_file_revs,

svn_ra_svn__write_cmd_lock,

svn_ra_svn__write_cmd_unlock,

svn_ra_svn__write_cmd_get_lock,

svn_ra_svn__write_cmd_get_locks,

svn_ra_svn__write_cmd_replay,

svn_ra_svn__write_cmd_replay_range,

svn_ra_svn__write_cmd_get_deleted_rev,

svn_ra_svn__write_cmd_get_iprops,

svn_ra_svn__write_cmd_finish_replay): move here and "privatize"

* subversion/include/svn_ra_svn.h

(svn_ra_svn_handle_commands,

svn_ra_svn_write_cmd,

svn_ra_svn_write_cmd_response,

svn_ra_svn_drive_editor,

svn_ra_svn_write_cmd_delete_entry,

svn_ra_svn_write_cmd_add_dir,

svn_ra_svn_write_cmd_finish_replay): move already deprecated API

to "deprecated" section

(svn_ra_svn_write_number,

svn_ra_svn_write_string,

svn_ra_svn_write_cstring,

svn_ra_svn_write_word,

svn_ra_svn_write_proplist,

svn_ra_svn_start_list,

svn_ra_svn_end_list,

svn_ra_svn_flush,

svn_ra_svn_write_tuple,

svn_ra_svn_read_item,

svn_ra_svn_skip_leading_garbage,

svn_ra_svn_parse_tuple,

svn_ra_svn_read_tuple,

svn_ra_svn_parse_proplist,

svn_ra_svn_read_cmd_response,

svn_ra_svn_handle_commands2,

svn_ra_svn_write_cmd_response,

svn_ra_svn_write_cmd_failure): deprecate & move to a common section

* subversion/libsvn_ra_svn/deprecated.c

(): new file

(svn_ra_svn_handle_commands,

svn_ra_svn_write_cmd,

svn_ra_svn_write_cmd_response,

svn_ra_svn_drive_editor,

svn_ra_svn_write_cmd_delete_entry,

svn_ra_svn_write_cmd_add_dir,

svn_ra_svn_write_cmd_finish_replay,

svn_ra_svn_write_number,

svn_ra_svn_write_string,

svn_ra_svn_write_cstring,

svn_ra_svn_write_word,

svn_ra_svn_write_proplist,

svn_ra_svn_start_list,

svn_ra_svn_end_list,

svn_ra_svn_flush,

svn_ra_svn_write_tuple,

svn_ra_svn_read_item,

svn_ra_svn_skip_leading_garbage,

svn_ra_svn_parse_tuple,

svn_ra_svn_read_tuple,

svn_ra_svn_parse_proplist,

svn_ra_svn_read_cmd_response,

svn_ra_svn_handle_commands2,

svn_ra_svn_write_cmd_response,

svn_ra_svn_write_cmd_failure): implement deprecated API by forwarding to

our private API

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_write_number,

svn_ra_svn_write_string,

svn_ra_svn_write_cstring,

svn_ra_svn_write_word,

svn_ra_svn_write_proplist,

svn_ra_svn_start_list,

svn_ra_svn_end_list,

svn_ra_svn_write_tuple,

svn_ra_svn_read_item,

svn_ra_svn_skip_leading_garbage,

svn_ra_svn_parse_tuple,

svn_ra_svn_write_cmd_finish_replay): rename to ...

(svn_ra_svn__write_number,

svn_ra_svn__write_string,

svn_ra_svn__write_cstring,

svn_ra_svn__write_word,

svn_ra_svn__write_proplist,

svn_ra_svn__start_list,

svn_ra_svn__end_list,

svn_ra_svn__write_tuple,

svn_ra_svn__read_item,

svn_ra_svn__skip_leading_garbage,

svn_ra_svn__parse_tuple,

svn_ra_svn__write_cmd_finish_replay): ... these

(vwrite_tuple_cstring,

vwrite_tuple_cstring_opt,

vwrite_tuple_string,

vwrite_tuple_string_opt,

vwrite_tuple_word,

vwrite_tuple_word_opt,

vwrite_tuple_revision,

vwrite_tuple_revision_opt,

vwrite_tuple_number,

vwrite_tuple_boolean,

write_tuple_cstring,

write_tuple_cstring_opt,

write_tuple_string,

write_tuple_string_opt,

write_tuple_start_list,

write_tuple_end_list,

write_tuple_revision,

write_tuple_revision_opt,

write_tuple_boolean,

write_tuple_depth,

vwrite_tuple,

svn_ra_svn__read_cmd_response): call private API now

(svn_ra_svn_read_tuple,

svn_ra_svn_parse_proplist,

svn_ra_svn_read_cmd_response,

svn_ra_svn_handle_commands2,

svn_ra_svn_write_cmd_response,

svn_ra_svn_write_cmd_failure): rename to ...

(svn_ra_svn__read_tuple,

svn_ra_svn__parse_proplist,

svn_ra_svn__read_cmd_response,

svn_ra_svn__handle_commands2,

svn_ra_svn__write_cmd_response,

svn_ra_svn__write_cmd_failure): ... these; call private API now

(svn_ra_svn_write_cmd_target_rev,

svn_ra_svn_write_cmd_open_root,

svn_ra_svn_write_cmd_delete_entry,

svn_ra_svn_write_cmd_add_dir,

svn_ra_svn_write_cmd_open_dir,

svn_ra_svn_write_cmd_change_dir_prop,

svn_ra_svn_write_cmd_close_dir,

svn_ra_svn_write_cmd_absent_dir,

svn_ra_svn_write_cmd_add_file,

svn_ra_svn_write_cmd_open_file,

svn_ra_svn_write_cmd_change_file_prop,

svn_ra_svn_write_cmd_close_file,

svn_ra_svn_write_cmd_absent_file,

svn_ra_svn_write_cmd_apply_textdelta,

svn_ra_svn_write_cmd_textdelta_chunk,

svn_ra_svn_write_cmd_textdelta_end,

svn_ra_svn_write_cmd_close_edit,

svn_ra_svn_write_cmd_abort_edit,

svn_ra_svn_write_cmd_set_path,

svn_ra_svn_write_cmd_delete_path,

svn_ra_svn_write_cmd_link_path,

svn_ra_svn_write_cmd_finish_report,

svn_ra_svn_write_cmd_abort_report,

svn_ra_svn_write_cmd_reparent,

svn_ra_svn_write_cmd_get_latest_rev,

svn_ra_svn_write_cmd_get_dated_rev,

svn_ra_svn_write_cmd_change_rev_prop2,

svn_ra_svn_write_cmd_change_rev_prop,

svn_ra_svn_write_cmd_rev_proplist,

svn_ra_svn_write_cmd_rev_prop,

svn_ra_svn_write_cmd_get_file,

svn_ra_svn_write_cmd_update,

svn_ra_svn_write_cmd_switch,

svn_ra_svn_write_cmd_status,

svn_ra_svn_write_cmd_diff,

svn_ra_svn_write_cmd_check_path,

svn_ra_svn_write_cmd_stat,

svn_ra_svn_write_cmd_get_file_revs,

svn_ra_svn_write_cmd_lock,

svn_ra_svn_write_cmd_unlock,

svn_ra_svn_write_cmd_get_lock,

svn_ra_svn_write_cmd_get_locks,

svn_ra_svn_write_cmd_replay,

svn_ra_svn_write_cmd_replay_range,

svn_ra_svn_write_cmd_get_deleted_rev,

svn_ra_svn_write_cmd_get_iprops,

svn_ra_svn_write_cmd_finish_replay): rename to ...

(svn_ra_svn__write_cmd_target_rev,

svn_ra_svn__write_cmd_open_root,

svn_ra_svn__write_cmd_delete_entry,

svn_ra_svn__write_cmd_add_dir,

svn_ra_svn__write_cmd_open_dir,

svn_ra_svn__write_cmd_change_dir_prop,

svn_ra_svn__write_cmd_close_dir,

svn_ra_svn__write_cmd_absent_dir,

svn_ra_svn__write_cmd_add_file,

svn_ra_svn__write_cmd_open_file,

svn_ra_svn__write_cmd_change_file_prop,

svn_ra_svn__write_cmd_close_file,

svn_ra_svn__write_cmd_absent_file,

svn_ra_svn__write_cmd_apply_textdelta,

svn_ra_svn__write_cmd_textdelta_chunk,

svn_ra_svn__write_cmd_textdelta_end,

svn_ra_svn__write_cmd_close_edit,

svn_ra_svn__write_cmd_abort_edit,

svn_ra_svn__write_cmd_set_path,

svn_ra_svn__write_cmd_delete_path,

svn_ra_svn__write_cmd_link_path,

svn_ra_svn__write_cmd_finish_report,

svn_ra_svn__write_cmd_abort_report,

svn_ra_svn__write_cmd_reparent,

svn_ra_svn__write_cmd_get_latest_rev,

svn_ra_svn__write_cmd_get_dated_rev,

svn_ra_svn__write_cmd_change_rev_prop2,

svn_ra_svn__write_cmd_change_rev_prop,

svn_ra_svn__write_cmd_rev_proplist,

svn_ra_svn__write_cmd_rev_prop,

svn_ra_svn__write_cmd_get_file,

svn_ra_svn__write_cmd_update,

svn_ra_svn__write_cmd_switch,

svn_ra_svn__write_cmd_status,

svn_ra_svn__write_cmd_diff,

svn_ra_svn__write_cmd_check_path,

svn_ra_svn__write_cmd_stat,

svn_ra_svn__write_cmd_get_file_revs,

svn_ra_svn__write_cmd_lock,

svn_ra_svn__write_cmd_unlock,

svn_ra_svn__write_cmd_get_lock,

svn_ra_svn__write_cmd_get_locks,

svn_ra_svn__write_cmd_replay,

svn_ra_svn__write_cmd_replay_range,

svn_ra_svn__write_cmd_get_deleted_rev,

svn_ra_svn__write_cmd_get_iprops,

svn_ra_svn__write_cmd_finish_replay): ... these

* subversion/libsvn_ra_svn/client.c

(parse_prop_diffs,

parse_lock,

svn_ra_svn__auth_response,

handle_auth_request,

ra_svn_set_path,

ra_svn_delete_path,

ra_svn_link_path,

ra_svn_abort_report,

handle_child_process_error,

make_tunnel,

open_session,

ra_svn_reparent,

ra_svn_rev_proplist,

ra_svn_rev_prop,

ra_svn_end_commit,

ra_svn_commit,

parse_iproplist,

ra_svn_get_file,

ra_svn_get_dir,

ra_svn_update,

ra_svn_switch,

ra_svn_status,

ra_svn_diff,

ra_svn_log,

ra_svn_check_path,

ra_svn_stat,

ra_svn_get_location_segments,

ra_svn_lock_compat,

ra_svn_lock,

ra_svn_unlock,

ra_svn_get_lock,

ra_svn_get_locks,

ra_svn_replay,

ra_svn_replay_range,

ra_svn_get_deleted_rev,

ra_svn_get_inherited_props): use the now private ra_svn API

* subversion/libsvn_ra_svn/cram.c

(fail,

svn_ra_svn_cram_server,

svn_ra_svn__cram_client): ditto

* subversion/libsvn_ra_svn/cyrus_auth.c

(try_auth): ditto

* subversion/libsvn_ra_svn/editorp.c

(check_for_error_internal,

ra_svn_target_rev,

ra_svn_open_root,

ra_svn_delete_entry,

ra_svn_add_dir,

ra_svn_open_dir,

ra_svn_close_dir,

ra_svn_absent_dir,

ra_svn_add_file,

ra_svn_open_file,

ra_svn_close_file,

ra_svn_absent_file,

ra_svn_close_edit,

ra_svn_abort_edit,

blocked_write,

svn_ra_svn_drive_editor2): ditto

* subversion/libsvn_ra_svn/internal_auth.c

(read_success): ditto

* subversion/svnserve/cyrus_auth.c

(fail_auth,

write_failure,

fail_cmd,

try_auth,

cyrus_auth_request): ditto

* subversion/svnserve/serve.c

(log_fail_and_flush,

send_mechs,

auth,

internal_auth_request,

set_path,

delete_path,

link_path,

accept_report,

write_prop_diffs,

write_lock,

reparent,

get_latest_rev,

get_dated_rev,

do_change_rev_prop,

change_rev_prop2,

change_rev_prop,

rev_proplist,

rev_prop,

commit,

get_file,

get_dir,

update,

switch_cmd,

status,

diff,

get_mergeinfo,

log_receiver,

log_cmd,

check_path,

stat_cmd,

get_locations,

gls_receiver,

svndiff_handler,

file_rev_handler,

get_file_revs,

lock,

lock_many,

unlock,

unlock_many,

get_lock,

get_locks,

replay_one_revision,

replay,

replay_range,

get_deleted_rev,

get_inherited_props,

serve): ditto

  1. … 10 more files in changeset.
Update remaining references to the deprecated svn_ra_do_update2() to refer

to svn_ra_do_update3() instead. A follow-up to r1465292.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_write_cmd_update): Update a cross-reference in the doc string.

(svn_ra_svn_write_cmd_switch): The same for switch, which was deprecated

in an earlier commit.

* tools/client-side/svn-bench/null-export-cmd.c

(bench_null_export): s/svn_ra_do_update2/svn_ra_do_update3/.

  1. … 1 more file in changeset.
Add an 'ignore ancestry' parameter to the RA layer 'update' APIs, for

symmetry with the 'switch' APIs. Also add a scratch pool for the same

reason, although it is as yet unused.

The 'switch' APIs historically ignored ancestry and have recently gained an

'ignore ancestry' control (r1449413) so it can be disabled; they gained a

scratch pool at the same time. The 'update' APIs have historically never

ignored ancestry, and now they can.

For ra_local and ra_serf this works for all existing server versions, but

for ra_svn this requires a new svnserve. (Our DAV protocol already

supported an 'ignore ancestry' flag.)

Note: This 'ignore ancestry' option is the one that tells the server to

report the difference between two unrelated nodes of the same kind as a

content change instead of as a node replacement. This is not the option to

'svn switch' that allows the switch URL to be unrelated to the current URL,

that is also named '--ignore-ancestry'.

This was discussed in the dev@ email thread "Consistency between 'update'

and 'switch' APIs", starting on 2013-03-13, archived at e.g.

<http://svn.haxx.se/dev/archive-2013-03/0200.shtml>.

* subversion/include/svn_ra.h,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra/deprecated.c

(svn_ra_do_update3): New, renamed from svn_ra_do_update2(). Add

'ignore_ancestry' and scratch pool parameters.

(svn_ra_do_update2): Deprecate, and rewrite as a wrapper.

(svn_ra_do_update): Adjust the call to the vtable method.

(svn_ra_do_switch3): Adjust the doc string.

(svn_ra_do_diff3): Adjust a reference in the doc string.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add 'ignore_ancestry' and scratch pool parameters to

the 'do_update' method. Update the doc string of the 'do_switch' method.

* subversion/libsvn_ra/wrapper_template.h

(compat_do_update): Adjust the call to the vtable method.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__do_update): Add 'ignore_ancestry' and scratch pool

parameters, the latter unused.

* subversion/libsvn_ra_serf/ra_serf.h,

subversion/libsvn_ra_serf/update.c

(svn_ra_serf__do_update): Add 'ignore_ancestry' and scratch pool

parameters, the latter unused.

* subversion/include/svn_ra_svn.h,

subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_write_cmd_update): Add the 'ignore_ancestry' flag.

* subversion/libsvn_ra_svn/client.c

(ra_svn_update): Add 'ignore_ancestry' and scratch pool parameters, the

latter unused.

* subversion/svnserve/serve.c

(update): Parse and use the 'ignore_ancestry' parameter; default to false

if not present. Simplify the 'send_copyfrom_args' handling to match how

it is done in 'switch'.

* subversion/libsvn_ra_svn/protocol

Document the addition of the new parameter to the 'update' command.

Update the callers, without ever requesting to ignore ancestry:

* subversion/libsvn_client/copy_foreign.c

(copy_foreign_dir): Track the change to svn_ra_do_update3().

* subversion/libsvn_client/export.c

(export_directory): Track the change to svn_ra_do_update3().

* subversion/libsvn_client/update.c

(update_internal): Track the change to svn_ra_do_update3().

* subversion/svnrdump/svnrdump.c

(dump_initial_full_revision): Track the change to svn_ra_do_update3().

  1. … 16 more files in changeset.
A late minute API change: instead of introducing the "templated"

svn_ra_svn_write_templated_cmd, introduce an explicit API function

with fully typed parameter lists for each svn:// command.

Please note that only the way to express the API changed while the

API itself is still the same. It's basically much safer to use

and extend now.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_cmd_t,

svn_ra_svn_write_templated_cmd): drop that API from 1.8

(svn_ra_svn_write_cmd): update deprecation statement

(svn_ra_svn_write_cmd_target_rev,

svn_ra_svn_write_cmd_open_root,

svn_ra_svn_write_cmd_delete_entry,

svn_ra_svn_write_cmd_add_dir,

svn_ra_svn_write_cmd_open_dir,

svn_ra_svn_write_cmd_change_dir_prop,

svn_ra_svn_write_cmd_close_dir,

svn_ra_svn_write_cmd_absent_dir,

svn_ra_svn_write_cmd_add_file,

svn_ra_svn_write_cmd_open_file,

svn_ra_svn_write_cmd_change_file_prop,

svn_ra_svn_write_cmd_close_file,

svn_ra_svn_write_cmd_absent_file,

svn_ra_svn_write_cmd_apply_textdelta,

svn_ra_svn_write_cmd_textdelta_chunk,

svn_ra_svn_write_cmd_textdelta_end,

svn_ra_svn_write_cmd_close_edit,

svn_ra_svn_write_cmd_abort_edit,

svn_ra_svn_write_cmd_set_path,

svn_ra_svn_write_cmd_delete_path,

svn_ra_svn_write_cmd_link_path,

svn_ra_svn_write_cmd_finish_report,

svn_ra_svn_write_cmd_abort_report,

svn_ra_svn_write_cmd_reparent,

svn_ra_svn_write_cmd_get_latest_rev,

svn_ra_svn_write_cmd_get_dated_rev,

svn_ra_svn_write_cmd_change_rev_prop2,

svn_ra_svn_write_cmd_change_rev_prop,

svn_ra_svn_write_cmd_rev_proplist,

svn_ra_svn_write_cmd_rev_prop,

svn_ra_svn_write_cmd_get_file,

svn_ra_svn_write_cmd_update,

svn_ra_svn_write_cmd_switch,

svn_ra_svn_write_cmd_status,

svn_ra_svn_write_cmd_diff,

svn_ra_svn_write_cmd_check_path,

svn_ra_svn_write_cmd_stat,

svn_ra_svn_write_cmd_get_file_revs,

svn_ra_svn_write_cmd_lock,

svn_ra_svn_write_cmd_unlock,

svn_ra_svn_write_cmd_get_lock,

svn_ra_svn_write_cmd_get_locks,

svn_ra_svn_write_cmd_replay,

svn_ra_svn_write_cmd_replay_range,

svn_ra_svn_write_cmd_get_deleted_rev,

svn_ra_svn_write_cmd_get_iprops,

svn_ra_svn_write_cmd_finish_replay): provide one function for each

svn:// protocol command

* subversion/libsvn_ra_svn/marshal.c

(vwrite_tuple_start_list,

vwrite_tuple_end_list): drop

(write_tuple_cstring,

write_tuple_cstring_opt,

write_tuple_string,

write_tuple_string_opt,

write_tuple_start_list,

write_tuple_end_list,

write_tuple_word,

write_tuple_word_opt,

write_tuple_revision,

write_tuple_revision_opt,

write_tuple_number,

write_tuple_boolean,

write_tuple_depth): duplicates of the vwrite_* functions but with typed

parameters instead of a va_list

(write_cmd_add_node,

write_cmd_open_node,

write_cmd_change_node_prop,

write_cmd_absent_node): renamed from vwrite* but with proper parameter lists

(vwrite_cmd_open_root,

vwrite_cmd_delete_entry,

vwrite_cmd_add_dir,

vwrite_cmd_open_dir,

vwrite_cmd_change_dir_prop,

vwrite_cmd_absent_dir,

vwrite_cmd_add_file,

vwrite_cmd_open_file,

vwrite_cmd_change_file_prop,

vwrite_cmd_close_file,

vwrite_cmd_absent_file,

vwrite_cmd_textdelta_chunk,

vwrite_cmd_apply_textdelta,

vwrite_cmd_no_op,

vwrite_cmd_set_path,

vwrite_cmd_link_path,

vwrite_cmd_change_rev_prop2,

vwrite_cmd_change_rev_prop,

vwrite_cmd_rev_prop,

vwrite_cmd_get_file,

vwrite_cmd_update,

vwrite_cmd_switch,

vwrite_cmd_status,

vwrite_cmd_diff,

vwrite_cmd_check_path,

vwrite_cmd_stat,

vwrite_cmd_get_file_revs,

vwrite_cmd_lock,

vwrite_cmd_unlock,

vwrite_cmd_get_locks,

vwrite_cmd_replay,

vwrite_cmd_replay_range,

vwrite_cmd_get_deleted_rev,

vwrite_cmd_get_iprops): adapt and move to new command implementations

(vwrite_tuple): update

(vwrite_tuple_func,

cmd_template_t,

cmd_templates,

svn_ra_svn_write_templated_cmd): drop them

(svn_ra_svn_write_cmd_target_rev,

svn_ra_svn_write_cmd_open_root,

svn_ra_svn_write_cmd_delete_entry,

svn_ra_svn_write_cmd_add_dir,

svn_ra_svn_write_cmd_open_dir,

svn_ra_svn_write_cmd_change_dir_prop,

svn_ra_svn_write_cmd_close_dir,

svn_ra_svn_write_cmd_absent_dir,

svn_ra_svn_write_cmd_add_file,

svn_ra_svn_write_cmd_open_file,

svn_ra_svn_write_cmd_change_file_prop,

svn_ra_svn_write_cmd_close_file,

svn_ra_svn_write_cmd_absent_file,

svn_ra_svn_write_cmd_apply_textdelta,

svn_ra_svn_write_cmd_textdelta_chunk,

svn_ra_svn_write_cmd_textdelta_end,

svn_ra_svn_write_cmd_close_edit,

svn_ra_svn_write_cmd_abort_edit,

svn_ra_svn_write_cmd_set_path,

svn_ra_svn_write_cmd_delete_path,

svn_ra_svn_write_cmd_link_path,

svn_ra_svn_write_cmd_finish_report,

svn_ra_svn_write_cmd_abort_report,

svn_ra_svn_write_cmd_reparent,

svn_ra_svn_write_cmd_get_latest_rev,

svn_ra_svn_write_cmd_get_dated_rev,

svn_ra_svn_write_cmd_change_rev_prop2,

svn_ra_svn_write_cmd_change_rev_prop,

svn_ra_svn_write_cmd_rev_proplist,

svn_ra_svn_write_cmd_rev_prop,

svn_ra_svn_write_cmd_get_file,

svn_ra_svn_write_cmd_update,

svn_ra_svn_write_cmd_switch,

svn_ra_svn_write_cmd_status,

svn_ra_svn_write_cmd_diff,

svn_ra_svn_write_cmd_check_path,

svn_ra_svn_write_cmd_stat,

svn_ra_svn_write_cmd_get_file_revs,

svn_ra_svn_write_cmd_lock,

svn_ra_svn_write_cmd_unlock,

svn_ra_svn_write_cmd_get_lock,

svn_ra_svn_write_cmd_get_locks,

svn_ra_svn_write_cmd_replay,

svn_ra_svn_write_cmd_replay_range,

svn_ra_svn_write_cmd_get_deleted_rev,

svn_ra_svn_write_cmd_get_iprops,

svn_ra_svn_write_cmd_finish_replay): implement using write_* functions

* subversion/libsvn_ra_svn/client.c

(ra_svn_set_path,

ra_svn_delete_path,

ra_svn_link_path,

ra_svn_abort_report,

ra_svn_reparent,

ra_svn_rev_proplist,

ra_svn_rev_prop,

ra_svn_get_file,

ra_svn_update,

ra_svn_switch,

ra_svn_status,

ra_svn_diff,

ra_svn_check_path,

ra_svn_stat,

ra_svn_lock_compat,

ra_svn_get_lock,

ra_svn_get_locks,

ra_svn_replay,

ra_svn_replay_range,

ra_svn_get_deleted_rev,

ra_svn_get_inherited_props): update to use the new explicit API

* subversion/libsvn_ra_svn/editorp.c

(check_for_error_internal,

ra_svn_target_rev,

ra_svn_open_root,

ra_svn_delete_entry,

ra_svn_add_dir,

ra_svn_open_dir,

ra_svn_close_dir,

ra_svn_absent_dir,

ra_svn_add_file,

ra_svn_open_file,

ra_svn_close_file,

ra_svn_absent_file,

ra_svn_close_edit,

ra_svn_abort_edit): update to use the new explicit API

* subversion/svnserve/serve.c

(replay_one_revision): update to use the new explicit API

  1. … 4 more files in changeset.
Incorporate API review feedback for svn_fs.h and svn_ra_svn.h

* subversion/include/svn_fs.h

(svn_fs_verify): rewrite the docstring for @a start and @a end;

add cross-references

* subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn3): document @a zero_copy_limit parameter

  1. … 1 more file in changeset.
Follow-up to r1459815, moving a private function that depends on a

private structure into a private header so one of our build nanny

scripts doesn't complain.

* subversion/include/svn_ra_svn.h

(svn_ra_svn__set_shim_callbacks): Move this from here ...

* subversion/include/private/svn_ra_svn_private.h

... to here, a(nother) new private header.

* subversion/libsvn_ra_svn/ra_svn.h,

* subversion/svnserve/serve.c

Fun with #include.

  1. … 3 more files in changeset.
Privatize some editor-v2-only APIs.

* subversion/include/svn_delta.h

(svn_delta_fetch_props_func_t, svn_delta_fetch_kind_func_t,

svn_delta_fetch_base_func_t, svn_delta_shim_callbacks_t,

svn_delta_shim_callbacks_default): Temporarily (until post-1.8)

move these from here...

* subversion/include/private/svn_editor.h

(svn_delta_fetch_props_func_t, svn_delta_fetch_kind_func_t,

svn_delta_fetch_base_func_t, svn_delta_shim_callbacks_t,

svn_delta_shim_callbacks_default): ...to here.

* subversion/include/svn_ra_svn.h,

* subversion/libsvn_client/client.h,

* subversion/libsvn_ra_serf/ra_serf.h

Now also include "private/svn_editor.h".

Suggested by: rhuijben

  1. … 4 more files in changeset.
* subversion/include/svn_ra_svn.h

Comment tweaks only.

Following up on r1446118, make the knowledge whether reversed obtaining of

file revisions is available visible by adding an ra capability.

This to allow a future blame improvement to decide whether it can use an

improved algorithm instead of the current one without waiting for an error

on old servers.

* subversion/include/svn_dav.h

(SVN_DAV_NS_DAV_SVN_ATOMIC_REVPROPS): Move new in 1.7 define below one that

exists in 1.6.

(SVN_DAV_NS_DAV_SVN_INHERITED_PROPS): Mark new in 1.8.

(SVN_DAV_NS_DAV_SVN_EPHEMERAL_TXNPROPS): Mark new in 1.8.

(SVN_DAV_NS_DAV_SVN_INLINE_PROPS): Mark new in 1.8.

(SVN_DAV_NS_DAV_SVN_GET_FILE_REVS_REVERSE): New macro.

* subversion/include/svn_ra.h

(SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE): New macro.

* subversion/include/svn_ra_svn.h

(SVN_RA_SVN_CAP_GET_FILE_REVS_REVERSE): New macro.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__has_capability): Declare support for reversed file

revisions *and* ephemeral txnprops.

* subversion/libsvn_ra_serf/options.c

(capabilities_headers_iterator_callback): Forward

SVN_RA_SVN_CAP_GET_FILE_REVS_REVERSE support.

* subversion/libsvn_ra_svn/client.c

(ra_svn_has_capability): Make function table driven. Add

SVN_RA_SVN_CAP_GET_FILE_REVS_REVERSE support.

* subversion/mod_dav_svn/version.c

(get_vsn_options): Write SVN_DAV_NS_DAV_SVN_GET_FILE_REVS_REVERSE.

* subversion/svnserve/serve.c

(serve): Send SVN_RA_SVN_CAP_GET_FILE_REVS_REVERSE support.

  1. … 7 more files in changeset.
Update to non-deprecated API: switch 2 calls from free-form

ra_svn commands to templated commands.

* subversion/include/svn_ra_svn.h

(svn_ra_svn_cmd_t): define new commands

* subversion/libsvn_ra_svn/marshal.c

(vwrite_cmd_get_iprops): new command template

(cmd_template): add entries for new commands

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_inherited_props): use templated ra_svn command

* subversion/svnserve/serve.c

(replay_one_revision): ditto

  1. … 3 more files in changeset.
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.
For issue #4124 ("Give servers sufficient means to disallow commits

from clients based on version numbers"): Add svnserve/ra_svn support

for communicating ephemeral transaction properties in general and,

specifically, the client compat version string.

* subversion/include/svn_ra_svn.h

(SVN_RA_SVN_CAP_EPHEMERAL_TXNPROPS): New.

* subversion/svnserve/serve.c

(serve): Advertise support for ephemeral txnprops.

* subversion/libsvn_ra_svn/client.c

(ra_svn_has_capability): Support queries for ephemeral txnprop support.

(ra_svn_commit): When ephemeral txnprop support is available, pass

along the client compat version property during commits.

* subversion/tests/cmdline/svnlook_tests.py

(test_txn_flag): Now expect the 'txn-client-compat-version' txn prop

for ra_svn, too.

  1. … 3 more files in changeset.
* subversion/trunk/subversion/include/svn_ra_svn.h

(svn_ra_svn_create_conn2): fix deprecation statement

Merge the remainder of the 10Gb branch into /trunk.

This patch revs APIs and touches the UI. For a detailed

description of each merged revision see the respective

log entry.

* Implement zero-copy code path

r1388102: extend the FS vtable. Add a function that allows for

processing file content in-situ.

r1388195: Rev reporter API and attempt zero-copy reporting for

files contents below a given threshold

r1388202: Add --zero-copy-limit parameter to svnserve and pass it

down to the reporter

r1388205: update remaining callers to use svn_repos_begin_report3.

r1388211: rename *_try_process_file_content *_try_process_file_contents.

r1388362: Bugfix: try_process_file_contents code plus a handful of bugs

masked by the first.

r1388640: Bugfix: off-by-one in contents size.

* Implement delayed checking for client-side abortion

r1388375: Extend aready rev'ed APIs and add --error-check-internal

option to svnserve.

* Tune ra_svn TX buffer handling

r1388643: tune ra_svn TX buffer usage by reducing the number of copy

operations etc.

r1388807: page-aligned I/O buffers.

* Finalize APIs and UI

r1390409: replace --zero-copy-limit and --error-check-internal with a

single option (--client-speed) at UI level but keep internal

APIs as they are

r1390414: replace help string for the --client-speed parameter.

r1390419: UI typo

r1390955: Schedule API changes for 1.8 instead of 1.9.

  1. … 25 more files in changeset.
Merge third batch of changes from the 10Gb branch.

Switch ra_svn to templated commands.

Revisions 1388276,1390209

  1. … 4 more files in changeset.