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

Changeset 1702983 is being indexed.

Introduce svn_stream_for_stdin2 that supports optional APR buffering.

Update all callers.

* subversion/include/svn_io.h

(svn_stream_for_stdin2): Declare new, bumped API version.

(svn_stream_for_stdin): Depcreate.

* subversion/libsvn_subr/deprecated.c

(svn_stream_for_stdin): Implement in terms of the new API version.

* subversion/libsvn_subr/stream.c

(svn_stream_for_stdin2): Implement.

* subversion/svnadmin/svnadmin.c

(subcommand_load): Update caller.

(subcommand_load_revprops): Same. Also, don't use the buffering

read stream wrapper anymore.

* subversion/svnfsfs/load-index-cmd.c

(subcommand__load_index): Ditto.

* subversion/svnmucc/svnmucc.c

(execute): Update caller.

* subversion/svnserve/svnserve.c

(sub_main): Same.

* tools/dev/x509-parser.c

(main): Same.

  1. … 7 more files in changeset.
Implement svn_io_file_rename2() with FLUSH_TO_DISK flag to require OS to

wait until rename operation is actually written to disk. Discussed in thread

"svn commit: r1682265 - /subversion/trunk/subversion/libsvn_fs_fs/util.c" on

dev@s.a.o [1]

[1] http://svn.haxx.se/dev/archive-2015-05/0211.shtml

* subversion/include/svn_io.h

(svn_io_file_rename2): New function declaration.

(svn_io_file_rename): Deprecate.

* subversion/libsvn_subr/io.c

(win32_file_rename): Use MOVEFILE_WRITE_THROUGH flag in call to

MoveFileExW if FLUSH_TO_DISK is non-zero.

(svn_io_file_rename2): Revv from svn_io_file_rename(). Add FLUSH_TO_DISK

parameter and perform flush to disk operation depending on the platform:

use MoveFileEx flag on Windows, fsync() target directory on POSIX and

fsync() target file on all other platforms. This logic mostly copied

from svn_fs_fs__move_into_place().

(svn_io_copy_link, svn_io_copy_file, svn_io_write_atomic,

svn_io_write_version_file): Use svn_io_rename2() with

FLUSH_TO_DISK=FALSE instead of svn_io_rename().

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

(test_file_rename2): Simple tests for svn_io_file_rename2().

(test_funcs): Add test_file_rename2.

* subversion/libsvn_subr/deprecated.c

(svn_io_file_rename): Call svn_io_file_rename2() with FLUSH_TO_DISK=FALSE.

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/stream.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_pristine.c

* subversion/libsvn_wc/workqueue.c

(*): Use svn_io_file_rename2() with FLUSH_TO_DISK=FALSE instead of

svn_io_file_rename().

  1. … 21 more files in changeset.
Follow up to r1694481: Do not remove a public API implementation.

* subversion/libsvn_subr/auth.h

(svn_auth__get_dummmy_simple_provider): New prototype.

* subversion/libsvn_subr/auth.c

(dummy_first_creds): New.

(svn_auth__get_dummmy_simple_provider): Implement.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_gpg_agent_simple_provider): Always provide an implementation

on non-Windows platforms, but return a dummy provider if GPG agent

support is not available.

  1. … 2 more files in changeset.
Fix UNIX build without GPG agent.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_gpg_agent_simple_provider): Disable compilation when we

don't have GPG agent support.

Patch by: Alexander Dreweke <alexander{_AT_}dreweke.net>

For non-interactive mode, allow fine-grained control over which SSL

certificate failures are considered fatal and which may be ignored.

The --trust-server-cert option only accepts certificates signed by an

unknown CA, and rejects certificates which fail for other reasons.

However, in practice, people run into broken SSL configurations that

trigger other failure conditions such as hostname/CN mismatch, expired

certs, etc. Sometimes they are not in a position to fix the problem themselves

and can't get work done (writing scripts) since SVN refuses to operate.

This topic is one of the most discussed issues in the #svn IRC channel.

Somewhat less so on the users@ mailing lists, though it also occurs there.

There is no real reason to prefer one kind of failure condition over

any other. An invalid cert is an invalid cert, regardless of why it fails

validation. Ultimately, it is up to users to waive trust in SSL when it

gets in the way in a particular situation. We should not be making this

decision for them.

Deprecate the --trust-server-cert option and add the following new options

to 'svn', exposing all possible failure modes the underlying API can handle:

--trust-unknown-ca : with --non-interactive, accept SSL server

certificates from unknown certificate authorities

--trust-cn-mismatch : with --non-interactive, accept SSL server

certificates even if the server hostname does not

match the certificate's common name attribute

--trust-expired : with --non-interactive, accept expired SSL server

certificates

--trust-not-yet-valid : with --non-interactive, accept SSL server

certificates from the future

--trust-other-failure : with --non-interactive, accept SSL server

certificates with failures other than the above

* subversion/include/svn_cmdline.h

(svn_cmdline_create_auth_baton2): Declare and document new parameters.

(svn_cmdline_create_auth_baton): Deprecate.

* subversion/libsvn_subr/cmdline.c

(trust_server_cert_non_interactive_baton): New baton.

(ssl_trust_unknown_server_cert): Rename to ...

(trust_server_cert_non_interactive): .. this and implement generic

validation failure checks according to flags passed in baton.

(svn_cmdline_create_auth_baton): Move to libsvn_subr/deprecated.c.

(svn_cmdline_create_auth_baton2): Implement new revision of this API with

new options trust_server_cert_unknown_ca, trust_server_cert_cn_mismatch,

trust_server_cert_expired, trust_server_cert_not_yet_valid, and

trust_server_cert_other_failure.

* subversion/libsvn_subr/deprecated.c

(svn_cmdline_create_auth_baton): Implement as wrapper around

svn_cmdline_create_auth_baton2.

* subversion/svn/cl.h

(svn_cl__opt_state_t): Add new options trust_server_cert_unknown_ca,

trust_server_cert_cn_mismatch, trust_server_cert_expired,

trust_server_cert_not_yet_valid, and trust_server_cert_other_failure.

.

* subversion/svn/svn.c

(svn_cl__longopt_t): Add new options opt_trust_server_cert_unknown_ca,

opt_trust_server_cert_cn_mismatch, opt_trust_server_cert_expired,

opt_trust_server_cert_not_yet_valid, opt_trust_server_cert_other_failure.

(svn_cl__options): Add options and help text for --trust-unknown-ca,

--trust-cn-mismatch, --trust-expired, --trust-not-yet-valid, and

--trust-other-failure.

(svn_cl__global_options): Add the new options here.

(sub_main): Process new options and use svn_cmdline_create_auth_baton2().

* subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout:

Adjust expected output.

  1. … 5 more files in changeset.
Move two deprecated functions to deprecated.c.

* subversion/libsvn_subr/deprecated.c

(svn_handle_error,

svn_handle_warning): Move here...

* subversion/libsvn_subr/error.c

(svn_handle_error,

svn_handle_warning): ... from here.

  1. … 1 more file in changeset.
Revert r1508225, which moved the include of svn_private_config.h before all

includes of our public headers. Public headers shouldn't depend on private

headers and all changes that required this are long reverted on trunk.

This patch excludes all conflicting cases.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

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

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

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

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

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

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

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

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

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

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

* subversion/tests/libsvn_wc/op-depth-test.c

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

* subversion/tests/svn_test_fs.c

* tools/server-side/fsfs-stats.c

Move the svn_string_private.h include back to the original location.

  1. … 162 more files in changeset.
Following up on r1561688, remove the automatic use of a full read as default

implementation for a possibly partial read. Provide a default full read

implementation for code that only implements partial reads.

* subversion/include/svn_error_codes.h

(SVN_ERR_STREAM_DATA_AVAILABLE_NOT_SUPPORTED): Rename to...

(SVN_ERR_STREAM_NOT_SUPPORTED): ... this instead of adding yet another error.

* subversion/include/svn_io.h

(svn_stream_set_read2,

svn_stream_set_read): Tweak comments.

(svn_stream_read2): Document not implemented behavior.

(svn_stream_data_available): Update error code.

* subversion/libsvn_ra_svn/cyrus_auth.c

(sasl_read_full_cb): Remove function.

(svn_ra_svn__enable_sasl_encryption): Pass null instead of stub.

* subversion/libsvn_ra_svn/streams.c

(sock_read_full_cb): Remove function.

(svn_ra_svn__stream_from_sock): Pass NULL instead of stub.

* subversion/libsvn_subr/deprecated.c

(svn_stream_set_read): Update caller with new rules.

* subversion/libsvn_subr/stream.c

(full_read_fallback): New function.

(svn_stream_read2): Return documented error instead of assert when not set.

(svn_stream_read_full): Fall back to multiple calls to svn_stream_read2

not set.

(data_available_handler_apr): Update error code.

  1. … 5 more files in changeset.
Following up on r1561387, which was (temporarily) reverted in r1561424 extend

the existing stream api with an optional incomplete read function to allow

using the stream api as was intended by r1561387.

After discussion on irc we came with the idea of revving svn_stream_read()

to two separate functions: one with full read semantics (like before) and one

with the new possibly incomplete read support.

This patch currently provides a default implementation of the incomplete read

with a forced complete read. Brane suggests that it might be better to just

return an error for requested incomplete reads. I commit this version under

the assumption that it is very easy to change this later in a separate patch.

* subversion/include/svn_io.h

(svn_stream_t): Tweak documentation.

(svn_stream_set_read2): New function.

(svn_stream_set_read): Deprecate function.

(svn_stream_read_full): New function.

(svn_stream_read2): New function.

(svn_stream_read): Deprecate function.

* subversion/libsvn_subr/deprecated.c

(svn_stream_set_read): New function.

(svn_stream_read): New function.

(md5_stream_baton,

read_handler_md5): Move here from stream.c. Update caller.

(read_full_handler_md5): New function.

(skip_handler_md5,

write_handler_md5,

close_handler_md5): Move here from stream.c.

(svn_stream_checksummed): Move here. Update caller.

* subversion/libsvn_subr/stream.c

(svn_stream_t): Add callback.

(skip_default_handler): Update prototype.

(svn_stream_set_read): Rename to...

(svn_stream_set_read2): ... this and set both callbacks.

(svn_stream_read2): New function.

(svn_stream_read): Rename to...

(svn_stream_read_full): ... this. Update used callback.

(svn_stream_skip): Pass full read callback.

(stream_readline_bytewise,

stream_readline_chunky,

svn_stream_copy3,

svn_stream_contents_same2): Update caller.

(skip_default_handler): Rename argument to auto-document behavior.

(svn_stream_empty): Pass same read handler for both apis.

(read_handler_disown): Update caller.

(read_full_handler_disown): New function.

(svn_stream_disown): Update caller.

(read_handler_apr): New function. Rename the old function

with this name to ...

(read_full_handler_apr): ... this.

(svn_stream_from_aprfile2): Update caller.

(read_handler_checksum): New function. Rename the old function

with this name to ...

(read_full_handler_checksum): ... this.

(close_handler_checksum): Update caller.

(svn_stream_checksummed2): Update caller.

(md5_stream_baton,

read_handler_md5,

skip_handler_md5,

write_handler_md5,

close_handler_md5,

svn_stream_checksummed): Move to deprecated.c

(svn_stringbuf_from_stream,

svn_stream_from_stringbuf,

svn_stream_from_string,

svn_string_from_stream): Update caller.

(read_handler_lazyopen): Update caller.

(read_full_handler_lazyopen): New function.

(svn_stream_lazyopen_create): Update caller.

  1. … 2 more files in changeset.
Mark platform specific svn_auth_get_* functions as deprecated to discourage

api consumers from using them and point them towards

svn_auth_get_platform_specific_provider().

* subversion/include/svn_auth.h

(svn_auth_get_windows_simple_provider,

svn_auth_get_windows_ssl_client_cert_pw_provider,

svn_auth_get_windows_ssl_server_trust_provider,

svn_auth_get_keychain_simple_provider,

svn_auth_get_keychain_ssl_client_cert_pw_provider,

svn_auth_get_gnome_keyring_simple_provider,

svn_auth_get_gnome_keyring_ssl_client_cert_pw_provider,

svn_auth_get_kwallet_simple_provider,

svn_auth_get_kwallet_ssl_client_cert_pw_provider,

svn_auth_get_gpg_agent_simple_provider): Deprecate

* subversion/libsvn_subr/auth.h

(svn_auth__get_windows_simple_provider,

svn_auth__get_windows_ssl_client_cert_pw_provider,

svn_auth__get_windows_ssl_server_trust_provider,

svn_auth__get_keychain_simple_provider,

svn_auth__get_keychain_ssl_client_cert_pw_provider,

svn_auth__get_gnome_keyring_simple_provider,

svn_auth__get_gnome_keyring_ssl_client_cert_pw_provider,

svn_auth__get_kwallet_simple_provider,

svn_auth__get_kwallet_ssl_client_cert_pw_provider,

svn_auth__get_gpg_agent_simple_provider): Add private delcartions.

* subversion/libsvn_subr/gpg_agent.c,

subversion/libsvn_subr/macos_keychain.c,

subversion/libsvn_subr/win32_crypto.c:

(svn_auth__get_*): Convert public versions to private versions.

* subversion/libsvn_subr/deprecated.c

(svn_auth_get_*): Implement public versions as wrappers of the new private

versions.

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Use private versions

of the platform specific svn_auth_get_* functions in order

to avoid warnings about using deprecated functions.

  1. … 6 more files in changeset.
Move deprecated utf function to deprecated.c

* subversion/libsvn_subr/deprecated.c

(svn_utf_cstring_from_utf8_ex): Move function here..

* subversion/libsvn_subr/utf.c

(svn_utf_cstring_from_utf8_ex): ... that used to be here.

  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.
Enforce our standing policy that the cmdline tools and all libraries must be

upgraded in lockstep: fail the library version check if any of the dependency

libraries are not exactly the same version as the calling library or binary.

* subversion/include/svn_version.h

(svn_ver_check_list): Deprecate.

(svn_ver_check_list2): New.

(svn_ver_equal, svn_ver_compatible):

Document their use in svn_ver_check_list2().

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/version.c

(svn_ver_check_list): New deprecated wrapper.

(svn_ver_check_list2): Implement.

* subversion/libsvn_fs_base/fs.c

(svn_fs_base__init):

* subversion/libsvn_fs_fs/fs.c

(svn_fs_fs__init):

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__init):

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__init):

* subversion/libsvn_ra_svn/client.c

(svn_ra_svn__init):

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider):

* subversion/svn/svn.c

(check_lib_versions):

* subversion/svnadmin/svnadmin.c

(check_lib_versions):

* subversion/svnadmin/svnadmin.c

(check_lib_versions):

* subversion/svnadmin/svnadmin.c

(check_lib_versions):

* subversion/svndumpfilter/svndumpfilter.c

(check_lib_versions):

* subversion/svnlook/svnlook.c

(check_lib_versions):

* subversion/svnmucc/svnmucc.c

(init):

* subversion/svnserve/svnserve.c

(check_lib_versions):

* subversion/svnsync/svnsync.c

(check_lib_versions):

* subversion/svnversion/svnversion.c

(check_lib_versions):

Update callers.

  1. … 16 more files in changeset.
Swap the argument order of svn_utf_initialize2() in its definition and all its

callers to follow our standard ordering rules.

* subversion/include/svn_utf.h

(svn_utf_initialize2): Reorder arguments.

* subversion/libsvn_subr/cmdline.c

(svn_cmdline_init): Update caller.

* subversion/libsvn_subr/deprecated.c

(svn_utf_initialize): Update caller.

* subversion/libsvn_subr/utf.c

(svn_utf_initialize2): Update argument order.

* subversion/mod_dav_svn/mod_dav_svn.c

(init): Update caller.

  1. … 4 more files in changeset.
Fix issue #4361 (user/group names in authz files are case-insensitive).

Because of the way the original svn_config structure was designed to be

case-preserving but case-insensitive, when using it to parse authz

and group definition files, we had the following problems:

* User- and group names that differed only in case could not be

represented in the authorization configuration.

* The results returned from authorization queries depended,

although predictably, on the order in which the authz entries

appeared in the authz file.

In 1.7.0, we added an option to svn_config to make configuration groups

(hence, repository paths in the authz config) case-sensitive. This change

does the same for option names, which map to group and user names.

* subversion/include/svn_config.h

(svn_config_create2): New, revised from svn_config_create, with additional

flag to treat option names as case-sensitive.

(svn_config_read3): New, revised from svn_config_read2, with same

additional flag as above.

(svn_config_parse): Add flag to treat option names as case-sensitive.

(svn_config_create): Deprecated.

(svn_config_read2): Deprecated; argument "pool" renamde to "result_pool".

(svn_config_read): Argument "pool" renamde to "result_pool".

* subversion/libsvn_subr/config_impl.h (struct svn_config_t): Add new

struct member option_names_case_sensitive.

* subversion/libsvn_subr/config.c: Replace the newly deprecated

svn_config APIs with their revised versions.

(svn_config_create2): Renamed from

svn_config_create and implementation updated to the new spec.

(svn_config_read3): Renamed from svn_config_read; then same as above.

(svn_config_merge): Make sure both sides of the merged config

have the same case-(in)sensitive behaviour.

(svn_config_create_option): Added case-sensitive flag.

* subversion/libsvn_subr/deprecated.c

(svn_config_create, svn_config_read2): Implement deprecated wrappers.

* subversion/libsvn_repos/authz.c

(authz_retrieve_config_repo, authz_retrieve_config,

svn_repos__authz_read, svn_repos_authz_parse): Parse authz and groups config

files with case-sensitive user and group names.

* subversion/libsvn_repos/hooks.c (svn_repos__parse_hooks_env):

Likewise for the hooks environment file.

* subversion/libsvn_fs_fs/fs_fs.c,

subversion/svnserve/serve.c,

subversion/svnserve/svnserve.c,

subversion/tests/libsvn_subr/cache-test.c,

tools/server-side/mod_dontdothat/mod_dontdothat.c: Replace the newly

deprecated svn_config APIs with their revised versions.

No functional changes were made.

  1. … 12 more files in changeset.
* subversion/libsvn_subr/subst.c

(svn_subst_build_keywords): Move deprecated function ...

* subversion/libsvn_subr/deprecated.c

(svn_subst_build_keywords): ... here.

  1. … 1 more file in changeset.
Use svn_hash_gets and svn_hash_sets.

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/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_subr/xml.c

  1. … 21 more files in changeset.
Optimize a few truename checks on Windows to use a far more efficient code

path.

* subversion/include/svn_io.h

(svn_io_stat_dirent2): New function, allowing optional truename check.

(svn_io_stat_dirent): Deprecate function.

* subversion/libsvn_subr/deprecated.c

(svn_io_stat_dirent): New function.

* subversion/libsvn_subr/io.c

(svn_io_stat_dirent): Rename to ...

(svn_io_stat_dirent2): ... this and use the existing stat call to perform

a truename check.

* subversion/libsvn_subr/sysinfo.c

(includes): Add path handling.

(win32_shared_libs): Just use our own apis instead of the apr ones, that

perform a lot of unnecessary IO for the TRUENAME question that we don't

even need.

* subversion/libsvn_wc/status.c

(stat_wc_dirent_case_sensitive): Use svn_io_stat_dirent2 for a cheaper

truename check.

  1. … 4 more files in changeset.
Coding style patch: in logical expressions, instead of comparing

with arithmetic constants use boolean operations. I.e. replace

<expr> == TRUE with <expr> and

<expr> == FALSE with !<expr>

* subversion/libsvn_delta/svndiff.c

(send_simple_insertion_window,

window_handler): change condition style

* subversion/libsvn_fs_base/fs.c

(svn_fs_base__clean_logs): ditto

* subversion/libsvn_fs_fs/fs_fs.c

(representation_string,

create_rep_state_body,

build_rep_list): ditto

* subversion/libsvn_ra_serf/locks.c

(handle_lock): ditto

* subversion/libsvn_ra_serf/property.c

(create_propfind_body): same here,

* subversion/libsvn_ra_serf/update.c

(cancel_fetch,

handle_fetch,

end_report,

finish_report): here,

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__handle_xml_parser): here,

* subversion/libsvn_ra_svn/client.c

(optbool_to_tristate): here,

* subversion/libsvn_repos/authz.c

(authz_parse_section): and here.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos__validate_prop): here as well

* subversion/libsvn_subr/cmdline.c

(svn_cmdline_create_auth_baton): and here

* subversion/libsvn_subr/deprecated.c

(print_command_info): here

* subversion/libsvn_subr/opt.c

(print_command_info2): more of the same

* subversion/libsvn_subr/subst.c

(translate_chunk): ditto

* subversion/libsvn_subr/win32_crashrpt.c

(write_var_values,

svn__unhandled_exception_filter): ditto

* subversion/svn/svn.c

(sub_main): ditto

* subversion/svnsync/svnsync.c

(filter_props): and more of the

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

(test_readonly): same thing

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

(test21): ditto

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

(test_svn_subst_translate_string2_null_encode): here

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

(test_getting_info,

test_working_info): and here

* tools/client-side/svn-bench/svn-bench.c

(sub_main): and finally here

  1. … 21 more files in changeset.
Catch some typos. No functional changes.

* subversion/include/private/svn_mergeinfo_private.h

(svn_rangelist__parse,

svn_rangelist__combine_adjecent_ranges,

svn_rangelist__combine_adjacent_ranges): Catch typos.

* subversion/include/svn_mergeinfo.h

(svn_rangelist_merge2,

svn_rangelist_merge): Catch typos.

* subversion/libsvn_subr/deprecated.c

(svn_rangelist_merge): Update caller.

* subversion/libsvn_subr/mergeinfo.c

(svn_rangelist__combine_adjecent_ranges): Rename function.

(svn_rangelist__combine_adjacent_ranges): New name.

(parse_revision_line): Update caller.

Found by: julianfoad

  1. … 3 more files in changeset.
Fulfill a promise of a deprecated rangelist api by refactoring some code.

Document that we don't promise this behavior in the newer api, and point users

of an internal api towards an internal api that might help users fulfill this

promise.

* subversion/include/private/svn_mergeinfo_private.h

(svn_rangelist__parse): Add pointer.

(svn_rangelist__combine_adjecent_ranges): Add function.

* subversion/include/svn_mergeinfo.h

(svn_rangelist_merge2): Document real behavior.

(svn_rangelist_merge): Document the old promise as difference.

* subversion/libsvn_subr/deprecated.c

(includes): Add svn_mergeinfo_private.h.

(svn_rangelist_merge): Call svn_rangelist__combine_adjecent_ranges on the

to be returned rangelist to fulfill promise.

* subversion/libsvn_subr/mergeinfo.c

(svn_rangelist__combine_adjecent_ranges): New function. Extracted from

parse_revision_line.

(parse_revision_line): Call svn_rangelist__combine_adjecent_ranges.

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

(test_funcs): Expect 'test_rangelist_merge' to pass, because it uses

svn_rangelist_merge.

  1. … 4 more files in changeset.
Make the extended version info retrieval a public API.

* subversion/include/svn_version.h: Include apr_tables.h.

(svn_version_extended_t): Move here, rename from svn_opt__version_info_t.

(svn_version_linked_lib_t): Move here, rename from svn_sysinfo__linked_lib_t.

(svn_version_loaded_lib_t): Move here, rename from svn_sysinfo__loaded_lib_t.

(svn_version_extended): Move here, rename from svn_opt__get_version_info.

* subversion/libsvn_subr/version.c: Include sysinfo.h.

(svn_version_extended): Move here, renamed and updated from

svn_opt__get_version_info.

* subversion/libsvn_subr/sysinfo.h

(svn_sysinfo__linked_lib_t, svn_sysinfo__loaded_lib_t): Moved and

renamed to subversion/include/svn_version.h.

(svn_sysinfo__linked_libs, svn_sysinfo__loaded_libs): Update docstring.

* subversion/libsvn_subr/sysinfo.c: Include svn_version.h.

(svn_sysinfo__linked_libs, svn_sysinfo__loaded_libs):

Update, using new type names.

* subversion/libsvn_subr/opt.h:

Include svn_version.h. Do not include apr_tables.h.

(svn_opt__version_info_t, svn_opt__get_version_info):

Moved and renamed to subversion/include/svn_version.h

(svn_opt__print_version_info): Update type name in prototype.

* subversion/libsvn_subr/opt.c: Do not include sysinfo.h.

(svn_opt__get_version_info): Moved and renamed to

subversion/libsvn_subr/version.c.

(svn_opt__print_version_info, svn_opt_print_help):

Update, use public svn_version_extended API.

* subversion/libsvn_subr/deprecated.c: Include svn_version.h.

(svn_opt_print_help): Update, use public svn_version_extended API.

* subversion/tests/cmdline/getopt_tests.py

(switch_res_line, switched_del_lines_res, switched_rep_lines_res):

New filters for extended version information.

(process_lines): Use the new filters.

(getopt__version__verbose): New test for "svn --version --verbose".

* subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stdout,

subversion/tests/cmdline/getopt_tests_data/svn--version--verbose_stderr: New.

  1. … 9 more files in changeset.
Make the expensive bits of version retreival optional.

* subversion/libsvn_subr/opt.h (svn_opt__get_version_info):

Change prototype: add verbose flag.

* subversion/libsvn_subr/opt.h (svn_opt__get_version_info):

Gather runtime system info only when verbose is set.

(svn_opt_print_help4): Update.

* subversion/libsvn_subr/deprecated.c (svn_opt_print_help): Update.

  1. … 2 more files in changeset.
Followup to r1379689: gather version and system information in a structure

instead of a huge string, and make combining it to stdout a separate step.

* subversion/libsvn_subr/sysinfo.h: Inclulde apr_tables.h.

(svn_sysinfo__linked_lib_t): New struct type.

(svn_sysinfo__linked_libs): Return an APR array of svn_sysinfo__linked_lib_t

instead of a preconstructed string.

(svn_sysinfo__loaded_lib_t): New struct type.

(svn_sysinfo__loaded_libs): Return an APR array of svn_sysinfo__loaded_lib_t

instead of a preconstructed string.

* subversion/libsvn_subr/sysinfo.c (svn_sysinfo__linked_libs): Update.

(svn_sysinfo__loaded_libs): Update.

(win32_shared_libs): Update, make return value an APR array.

(release_name_from_uname) Define only unless SVN_HAVE_MACOS_PLIST

to avoid compiler warnings about unused static function on Mac OS X.

* subversion/libsvn_subr/opt.h: Include apr_tables.h.

(svn_opt__version_info_t): New struct. Contains all the information that

was formerly returned in a string by svn_opt__get_version_info.

(svn_opt__get_version_info): Change signature; returns a svn_opt__version_info_t.

(svn_opt__print_version_info): Reinstate, but using the outpot from

svn_opt__get_version_info.

* subversion/libsvn_subr/opt.c (svn_opt__get_version_info): Reimplement.

(svn_opt__print_version_info): Reinstate.

(svn_opt_print_help4): Use svn_opt__print_version_info again.

* subversion/libsvn_subr/deprecated.c

(svn_opt_print_help): Use svn_opt__print_version_info again.

  1. … 4 more files in changeset.
First step towards making client version information usable by other than

the svn command-line client.

* subversion/libsvn_subr/opt.h (svn_opt__get_version_info): Renamed from

svn_opt__print_version_info and prototype changed to return a string.

Updated docstring.

* subversion/libsvn_subr/opt.c (svn_opt__get_version_info): Renamed from

svn_opt__print_version_info; constructs a string with the version info

instead of printing directly to the console.

(svn_opt_print_help4): Update to use svn_opt__get_version_info.

* subversion/libsvn_subr/deprecated.c (svn_opt_print_help): Update to use

svn_opt__get_version_info.

  1. … 2 more files in changeset.
Expand "svn --version" output with information about the running system

when --verbose is also given on the command line. Currently available:

- Minimal running system info on systems with uname().

- System info and commercial release name on Windows.

* build.conf (libsvn_subr): Require kernel32.lib on Windows.

* configure.ac: Check for uname() in sys/utsname.h.

* subversion/include/svn_opt.h (svn_opt_print_help4): New, with verbose option.

(svn_opt_print_help3): Deprecate.

* subversion/libsvn_subr/sysinfo.c, subversion/libsvn_subr/sysinfo.h: New.

* subversion/libsvn_subr/opt.h (svn_opt__print_version_info): Add "verbose".

* subversion/libsvn_subr/opt.c: Include sysinfo.h.

(svn_opt__print_version_info): In verbose mode, print svn_sysinfo__*.

(svn_opt_print_help4): Implement.

(svn_opt_print_help3): Remove.

* subversion/libsvn_subr/deprecated.c

(svn_opt_print_help3, svn_opt_print_help3): Reimplenment in terms of

svn_opt_print_help4.

(svn_opt_print_help): Update call to svn_opt__print_version_info.

* subversion/svn/main.c: Add --verbose option to "svn --version".

* subversion/svnlook/main.c: Add --verbose option to "svn --version".

Use svn_opt_print_help4 instead of svn_opt_print_help3.

* subversion/svn/help-cmd.c, subversion/svnadmin/main.c,

subversion/svndumpfilter/main.c, subversion/svnmucc/svnmucc.c,

subversion/svnrdump/svnrdump.c, subversion/svnserve/main.c,

subversion/svnsync/main.c, subversion/svnversion/main.c,

tools/dev/svnraisetreeconflict/main.c,

tools/server-side/svn-rep-sharing-stats.c:

Use svn_opt_print_help4 instead of svn_opt_print_help3.

  1. … 19 more files in changeset.
Add an 'svn_rangelist_t' typedef for use with the existing 'svn_rangelist_*'

APIs, instead of using 'apr_array_header_t' directly.

The immediate reason is to improve the debugging experience: I can make

GDB display 'svn_rangelist_t' values in a simple human-readable form, whereas

the best it can do with 'apr_array_header_t', not knowing the type of the

elements, is print something like 'array of 2 items'.

Beyond that, it makes sense from a coding abstraction point of view, filling

a gap in this hierarchy:

svn_mergeinfo_catalog_t is a collection of

svn_mergeinfo_t is a collection of

svn_rangelist_t is a collection of

svn_merge_range_t

This type has public visibility. Because it is just a typedef, the C API

will be backward-compatible and the ABI won't change. Therefore all uses,

even in deprecated functions, are being changed.

Using such a typedef doesn't provide any additional static type-checking.

Unlike svn_mergeinfo_t and svn_mergeinfo_catalog_t, svn_rangelist_t is not a

pointer type.

* subversion/include/svn_mergeinfo.h

(svn_rangelist_t): New typedef.

(...everywhere...): Use it.

* subversion/include/private/svn_mergeinfo_private.h

(...everywhere...): Use it.

* subversion/include/svn_client.h

(svn_client_mergeinfo_get_merged): Update doc string to refer to this.

* subversion/bindings/javahl/native/CreateJ.cpp,

subversion/bindings/javahl/native/CreateJ.h,

subversion/bindings/javahl/native/SVNClient.cpp,

subversion/bindings/swig/core.i,

subversion/bindings/swig/include/svn_containers.swg,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

(...everywhere...): Update the bindings.

subversion/libsvn_client/diff.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/mergeinfo.h,

subversion/libsvn_client/ra.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_repos/load-fs-vtable.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/svndumpfilter/main.c,

subversion/svnrdump/load_editor.c,

subversion/tests/libsvn_subr/mergeinfo-test.c

(...everywhere...): Use it.

  1. … 22 more files in changeset.
Prevent path-handling related deprecation warnings. Since they happen

in code of functons that are deprecated themselves, we need a workaround

here: move the actual code to a static *_internal function and let

the public deprecated API as well as its users call that internal

(non-deprecated) function.

* subversion/libsvn_subr/deprecated.c

(svn_path_is_canonical): move from here to the next file

* subversion/libsvn_subr/path.c

(svn_path_is_canonical_internal,

svn_path_is_canonical): make the function body available internally

without deprecation warning

(svn_path_join_internal,

svn_path_join): do a similar split; call svn_path_is_canonical_internal

to prevent deprecation warnings

(svn_path_join_many,

svn_path_dirname,

svn_path_basename,

svn_path_decompose): call *_internal functions

  1. … 1 more file in changeset.
Follow-up to r1239841: Fix many crashes and test failures (ooops!)

* subversion/libsvn_subr/deprecated.c

(svn_io_start_cmd2): Properly pass arguments on to svn_io_start_cmd3().

Allow callers of svn_io_start_cmd() to specify custom environments the

child process should inherit.

This commit enhances the svn_io_start_cmd() API, but nothing uses the

new functionality yet.

* subversion/include/svn_io.h

(svn_io_start_cmd3): Declare.

(svn_io_start_cmd2): Deprecate.

* subversion/libsvn_subr/deprecated.c

(svn_io_start_cmd2): Re-implement as wrapper around svn_io_start_cmd3().

* subversion/libsvn_subr/io.c

(svn_io_start_cmd3): New. Like svn_io_start_cmd2(), but with a new

ENV parameter that can be used to inherit a custom environment to

the child process.

  1. … 2 more files in changeset.