Checkout Tools
  • last updated 24 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix various typos detected by codespell

* tests/cmdline/externals_tests.py, tests/cmdline/lock_tests.py,

tests/cmdline/log_tests.py, tests/cmdline/merge_authz_tests.py,

tests/cmdline/merge_tests.py, tests/cmdline/move_tests.py,

tests/cmdline/svnadmin_tests.py, tests/cmdline/switch_tests.py,

tests/libsvn_client/conflicts-test.c, tests/libsvn_client/mtcc-test.c,

tests/libsvn_fs/fs-test.c, tests/libsvn_fs_x/fs-x-pack-test.c,

tests/svn_test_main.c:

(): Spelling fixes

  1. … 12 more files in changeset.
Fix an initialization / life time issue with FSX's batch-fsync.

The svn_fs_x__init function may be called more than once and the FSX

module might later be unloaded and reloaded. So, make sure to create

the thread pool only once and to clean it up when the module unloads.

* subversion/libsvn_fs_x/batch_fsync.h

(svn_fs_x__batch_fsync_init): Add a owner pool parameter.

* subversion/libsvn_fs_x/batch_fsync.c

(thread_pool_initialized): Init flag to be used with svn_atomic__init_once.

(thread_pool_pre_cleanup): Cleanup only once but also make the batch-

fsync API re-initializable.

(create_thread_pool): Move the init code to here. Destroy the thread pool

whenever either the owning pool (i.e. during unload)

or the containing pool (apr_terminate) got cleaned up.

(svn_fs_x__batch_fsync_init): Run the actual initialization only once.

(svn_fs_x__batch_fsync_run): Error out on cases where the FS API init /

tear-down was not properly ordered with

the API usage.

* subversion/libsvn_fs_x/fs.c

(svn_fs_x__init): Update caller.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(test_batch_fsync): Update caller.

  1. … 3 more files in changeset.
Sync FSX with FSFS:

Replicate the "--no-flush-to-disk" support, effectively merging revisions

r1736357, r1737355 and r1737356 from FSFS.

While the API glue logic could be re-used, the fsync code in FSX is mainly

based on svn_fs_x__batch_fsync_t object. So, all we have to do is to add

a flag to its constructor and update a few callers.

* subversion/libsvn_fs_x

(svn:mergeinfo): Mark revisions as "merged".

* subversion/libsvn_fs_x/batch_fsync.h

(svn_fs_x__batch_fsync_create): Add new FLUSH_TO_DISK option.

* subversion/libsvn_fs_x/batch_fsync.c

(svn_fs_x__batch_fsync_t): Add new option field.

(svn_fs_x__batch_fsync_create): Set new option field.

(svn_fs_x__batch_fsync_run): Call fsync if required by the option field.

* subversion/libsvn_fs_x/fs.h

(svn_fs_x__data_t): Add FLUSH_TO_DISK option field.

* subversion/libsvn_fs_x/fs.c

(initialize_fs_struct): Initialize the new field.

* subversion/libsvn_fs_x/fs_x.c

(svn_fs_x__write_format): fsync only if requested.

(read_global_config): New function - had been removed as empty previously

but now reads the new global option.

(svn_fs_x__open,

svn_fs_x__create_file_tree): Invoke the new function.

(svn_fs_x__set_uuid): fsync only if requested.

* subversion/libsvn_fs_x/pack.c

(pack_shard): Set the new fsync batch option.

* subversion/libsvn_fs_x/revprops.c

(svn_fs_x__set_revision_proplist): Same.

* subversion/libsvn_fs_x/transaction.c

(commit_body): Same.

* subversion/libsvn_fs_x/util.c

(svn_fs_x__write_min_unpacked_rev): fsync only if requested.

* subversion/libsvn_fs_x/util.h

(svn_fs_x__move_into_place): Update docstring.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(test_batch_fsync): Update caller.

  1. … 11 more files in changeset.
Fix an FSX test carried over from FSFS.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(test_info): We get a FSX format info struct instead of a FSFS one.

Make the batch fsync object in FSX easier to use:

When we create a new file through svn_fs_x__batch_fsync_open_file,

implicitly call svn_fs_x__batch_fsync_new_path if necessary.

* subversion/libsvn_fs_x/batch_fsync.c

(internal_open_file): Test whether a new file will be created and

schedule any necessary additional fsyncs.

* subversion/libsvn_fs_x/revprops.c

(svn_fs_x__pack_revprops_shard): Remove redundant call.

* subversion/libsvn_fs_x/transaction.c

(write_final_revprop,

write_next_file): Same.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(test_batch_fsync): Same.

  1. … 3 more files in changeset.
Do not perform flush to disk when it's completely unnecessary.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

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

(plain_0_length, write_format, test_config_pool): Call

svn_io_atomic_write2() with FLUSH_TO_DISK=FALSE.

  1. … 2 more files in changeset.
Implement svn_io_write_atomic2() with FLUSH_TO_DISK flag to control whether

wait or not until file is actually written to disk. The old

svn_io_write_atomic() was flushing data to disk unconditionally.

* subversion/include/svn_io.h

(svn_io_write_atomic2): New function declaration.

(svn_io_write_atomic): Deprecate.

* subversion/libsvn_subr/io.c

(svn_io_write_atomic2): Revv from svn_io_write_atomic() Add FLUSH_TO_DISK

parameter and perform flush to disk only if FLUSH_TO_DISK is non-zero.

* subversion/libsvn_subr/deprecated.c

(svn_io_write_atomic): Call svn_io_write_atomic2() with FLUSH_TO_DISK=TRUE.

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_wc/workqueue.c

* subversion/mod_dav_svn/activity.c

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

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

(*): Use svn_io_write_atomic2() with FLUSH_TO_DISK=TRUE instead of

svn_io_write_atomic().

  1. … 13 more files in changeset.
Time for some dog-fooding: Run 'svn-mergeinfo-normalizer normalize' on /trunk

and let it remove redundant sub-tree mergeinfo. This is the output of

'svn-mergeinfo-normalizer analyze' for those nodes (tweak to show the

FS paths instead of working copy paths in the "Trying..." lines) :

Removing obsolete branches and redundant mergeinfo, combining revision ranges ...

Trying to elide mergeinfo at path /subversion/trunk/subversion/tests/libsvn_fs_x

elide branch /subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_x

revisions implied in sub-node: 1507730

revisions inoperative in sub-node: 1498103,1498155,1500054,1507729,1507731,1507735-1507736

elide branch /subversion/branches/fsfs-improvements/subversion/tests/libsvn_fs_x

revisions inoperative in sub-node: 1517477-1532582,1532584-1536948,1536950-1545954,1545956-1546836,1546838-1547039

elide branch /subversion/branches/fsx/subversion/tests/libsvn_fs_x

revisions implied in sub-node: 1508077,1509247,1509911

revisions inoperative in sub-node: 1508078-1509246,1509248-1509910,1509912-1509914

elide branch /subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_x

revisions inoperative in sub-node: 1492640-1546001

elide branch /subversion/trunk/subversion/tests/libsvn_fs_x

revisions inoperative in sub-node: 1414756-1509914

All sub-tree mergeinfo has been elided.

Trying to elide mergeinfo at path /subversion/trunk/notes

elide branch /subversion/branches/fsfs-improvements/notes

revisions inoperative in sub-node: 1499981-1504850,1504852-1505659,1505661-1532582,1532584-1536948,1536950-1545954,1545956-1546836,1546838-1547039

All sub-tree mergeinfo has been elided.

* notes

* subversion/tests/libsvn_fs_x

remove sub-tree mergeinfo.

  1. … 1 more file in changeset.
Complete some sub-tree mergeinfo by --record-only merging revisions

r1532583, r1536949, r1545955 and r1546837 from branches/fsfs-improvements.

Those changes were syncs with /trunk and for some reason did not update

all sub-tree mergeinfo.

* notes

* subversion/libsvn_fs_x

* subversion/tests/libsvn_fs_x

Update svn:mergeinfo.

  1. … 2 more files in changeset.
Merge the svn-mergeinfo-normalizer development branch to trunk and remove

the BRANCH-README file. There were no conflicts.

This brings the client-side tool svn-mergeinfo-normalizer to /trunk.

  1. … 5 more files in changeset.
Only test FSX's batch fsync code when we test the FSX backend.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(test_batch_fsync): Skip if we are not testing the FSX backend.

Merge the fsx-1.10 development branch to trunk and remove the

BRANCH-README file. There were no conflicts.

Changes brings the latest FSX changes to /trunk.

  1. … 54 more files in changeset.
Apply the standard pre-branch whitespace cleanup via

tools/dev/remove-trailing-whitespace.zsh

There should be no functional changes.

* .ycm_extra_conf.py

* build/generator/gen_win.py

* build/generator/gen_win_dependencies.py

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

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

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

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

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

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

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

* subversion/bindings/swig/ruby/test/test_fs.rb

* subversion/bindings/swig/ruby/test/util.rb

* subversion/bindings/swig/ruby/test/windows_util.rb

* subversion/include/private/svn_fs_fs_private.h

* subversion/include/private/svn_packed_data.h

* subversion/include/private/svn_repos_private.h

* subversion/include/private/svn_sorts_private.h

* subversion/include/private/svn_subr_private.h

* subversion/include/private/svn_wc_private.h

* subversion/include/svn_auth.h

* subversion/include/svn_cache_config.h

* subversion/include/svn_client.h

* subversion/include/svn_cmdline.h

* subversion/include/svn_diff.h

* subversion/include/svn_fs.h

* subversion/include/svn_io.h

* subversion/include/svn_ra.h

* subversion/include/svn_repos.h

* subversion/include/svn_string.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/hotcopy.c

* subversion/libsvn_fs_fs/id.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/index.h

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/low_level.h

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/recovery.c

* subversion/libsvn_fs_fs/rev_file.c

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/stats.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_fs/verify.c

* subversion/libsvn_fs_x/cached_data.c

* subversion/libsvn_fs_x/changes.c

* subversion/libsvn_fs_x/dag.h

* subversion/libsvn_fs_x/fs.h

* subversion/libsvn_fs_x/fs_id.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/hotcopy.c

* subversion/libsvn_fs_x/hotcopy.h

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/index.h

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/low_level.h

* subversion/libsvn_fs_x/noderevs.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_fs_x/rev_file.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/revprops.h

* subversion/libsvn_fs_x/string_table.c

* subversion/libsvn_fs_x/string_table.h

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/tree.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_fs_x/verify.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz_pool.c

* subversion/libsvn_repos/config_pool.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_subr/bit_array.c

* subversion/libsvn_subr/cache-membuffer.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_subr/fnv1a.c

* subversion/libsvn_subr/gpg_agent.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/object_pool.c

* subversion/libsvn_subr/packed_data.c

* subversion/libsvn_subr/prefix_string.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/sqlite.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/sysinfo.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/utf8proc/utf8proc_data.c

* subversion/libsvn_subr/x509info.c

* subversion/libsvn_wc/diff.h

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc.h

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db.h

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/status.c

* subversion/svn/auth-cmd.c

* subversion/svn/info-cmd.c

* subversion/svn/mergeinfo-cmd.c

* subversion/svn/notify.c

* subversion/svn/propget-cmd.c

* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnserve/logger.c

* subversion/svnserve/serve.c

* subversion/svnserve/server.h

* subversion/svnserve/svnserve.c

* subversion/tests/cmdline/blame_tests.py

* subversion/tests/cmdline/checkout_tests.py

* subversion/tests/cmdline/commit_tests.py

* subversion/tests/cmdline/export_tests.py

* subversion/tests/cmdline/externals_tests.py

* subversion/tests/cmdline/lock_tests.py

* subversion/tests/cmdline/merge_tests.py

* subversion/tests/cmdline/merge_tree_conflict_tests.py

* subversion/tests/cmdline/move_tests.py

* subversion/tests/cmdline/redirect_tests.py

* subversion/tests/cmdline/stat_tests.py

* subversion/tests/cmdline/svnadmin_tests.py

* subversion/tests/cmdline/switch_tests.py

* subversion/tests/cmdline/update_tests.py

* subversion/tests/libsvn_client/client-test.c

* subversion/tests/libsvn_client/mtcc-test.c

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

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

* subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

* subversion/tests/libsvn_fs_x/string-table-test.c

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

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

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

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

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

* subversion/tests/libsvn_subr/packed-data-test.c

* subversion/tests/libsvn_subr/priority-queue-test.c

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

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

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

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

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

* subversion/tests/svn_test_main.c

* tools/dev/benchmarks/RepoPerf/copy_repo.py

* tools/dev/benchmarks/RepoPerf/win_repo_bench.py

* tools/dev/build-svn-deps-win.pl

* tools/dev/fsfs-access-map.c

* tools/dev/po-merge.py

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/backport.pl

* tools/dist/backport_tests.py

* tools/hook-scripts/mailer/mailer.py

* tools/server-side/svnpubsub/daemonize.py

* win-tests.py

Remove unneeded whitespace via script.

  1. … 183 more files in changeset.
Merge the pin-externals branch to trunk.

The discussion thread start in this post:

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

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

development of this feature can happen on trunk.

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

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

during copy operations (issue #1258).

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

last-changed revision (recommended when tagging)

This feature makes the svncopy.pl contrib script unnecessary.

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

For example, the external definition:

^/foo/bar ext_bar

might become:

^/foo/bar@400 ext_bar

This table shows which revision is used for pinning:

copy source: working copy (WC) REPOS

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

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

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

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

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

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

Please see the branch log for details about these changes.

  1. … 22 more files in changeset.
Reintegrate the 'dump-load-cross-check' branch: implement optional dump/load

cross-checking in the test suite.

This is activated by passing 'DUMP_LOAD_CROSS_CHECK=1' to 'make check' and

friends, or by passing '--dump-load-cross-check' to the Python tests.

Remaining items mentioned in the BRANCH-README file were:

TODO:

- Fix FAIL: svnmucc_tests.py 2: a no-op content-change is reported

differently in different cases. (Fix it how? I'd prefer to make the

output of a no-op change the same as a no-change.)

Ideas for improvement:

- Improve the logic for finding repositories created by a test: detect

when a test created a repository even if the sandbox is not marked as

'built'; detect when a test created additional repositories.

- Implement the same cross-checking for the C tests.

  1. … 13 more files in changeset.
Merge the svn-auth-x509 branch to trunk.

This adds an X.509 parser which we use to display certificates via the auth

command rather than storing the details provided by serf from a connection.

* LICENSE,

NOTICE: Note that the X.509 parser is based on the parser from TropicSSL.

* build.conf

(libsvn_subr): Add svn_x509.h header to msvc-export.

(x509-test, __ALL_TESTS__): Add C tests for X.509 parser.

* subversion/include/private/svn_utf_private.h

(svn_utf__encode_ucs4_string, svn_utf__utf16_to_utf8,

svn_utf__utf32_to_utf8): New functions for converting various Unicode

character encodings needed by the X.509 parser.

* subversion/include/svn_x509.h: New header.

* subversion/include/svn_error_codes.h

(SVN_ERR_X509_CATEGORY_START): New category for errors from X.509 parser.

(SVN_ERR_ASN1_OUT_OF_DATA, SVN_ERR_ASN1_UNEXPECTED_TAG,

SVN_ERR_ASN1_INVALID_LENGTH, SVN_ERR_ASN1_LENGTH_MISMATCH,

SVN_ERR_ASN1_INVALID_DATA, SVN_ERR_X509_FEATURE_UNAVAILABLE,

SVN_ERR_X509_CERT_INVALID_PEM, SVN_ERR_X509_CERT_INVALID_FORMAT,

SVN_ERR_X509_CERT_INVALID_VERSION, SVN_ERR_X509_CERT_INVALID_SERIAL,

SVN_ERR_X509_CERT_INVALID_ALG, SVN_ERR_X509_CERT_INVALID_NAME,

SVN_ERR_X509_CERT_INVALID_DATE, SVN_ERR_X509_CERT_INVALID_PUBKEY,

SVN_ERR_X509_CERT_INVALID_SIGNATURE, SVN_ERR_X509_CERT_INVALID_EXTENSIONS,

SVN_ERR_X509_CERT_UNKNOWN_VERSION, SVN_ERR_X509_CERT_UNKNOWN_PK_ALG,

SVN_ERR_X509_CERT_SIG_MISMATCH, SVN_ERR_X509_CERT_VERIFY_FAILED):

New error codes.

* subversion/include/svn_config.h

(SVN_CONFIG_AUTHN_HOSTNAME_KEY, SVN_CONFIG_AUTHN_FINGERPRINT_KEY,

SVN_CONFIG_AUTHN_VALID_FROM_KEY, SVN_CONFIG_AUTHN_VALID_UNTIL_KEY,

SVN_CONFIG_AUTHN_ISSUER_DN_KEY): Remove constants used as keys for

storing parsed certificate info in authn files.

* subversion/libsvn_subr/x509parse.c,

subversion/libsvn_subr/x509info.c,

subversion/include/x509.h: New files for implementing the X.509 parser.

* subversion/libsvn_subr/ssl_server_trust_providers.c

(ssl_server_trust_file_first_credentials,

ssl_server_trust_file_save_credentials): Don't store/retrive parsed

details of X.509 certificates.

* subversion/libsvn_subr/utf.c

(membuf_insert_ucs4, svn_utf__utf16_to_utf8, svn_utf__utf32_to_utf8):

New functions to implement Unicode conversions.

* subversion/libsvn_subr/utf8proc.c

(encode_ucs4_string): Convert to the private function ...

(svn_utf__encode_ucs4_string): New function.

(svn_utf__glob): Update caller.

* subversion/svn/auth-cmd.c

(match_credential): Remove code to match the hostname/fingerprint since

the data isn't stored.

(show_cert): New function to drive the X.509 parser and then display

the certificate to the user.

(list_credential): Use show_cert().

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

(test_utf_conversions, test_funcs): Add tests for new unicode character

set conversions.

* subversion/tests/libsvn_subr/x509-test.c: Add tests for X.509 parser.

[in subverison/bindings/javahl]

* native/jniwrapper/jni_base.cpp,

native/jniwrapper/jni_exception.hpp:

Add IllegalArgumentException exeption.

* native/AuthnCallback.cpp,

native/AuthnCallback.hpp,

src/org/apache/subversion/javahl/callback/AuthnCallback.java:

(AuthnCallback::SSLServerCertInfo): Update the getters and constructor to

reflect the info available from the X.509 parser.

* native/org_apache_subversion_javahl_util_ConfigLib.cpp

(build_credential): Update to feed AuthnCallback::SSLServerCertInfo the info

that is available.

(Java_org_apache_subversion_javahl_util_ConfigLib_nativeSearchCredentials):

Update the searching of the certificates to parse the certificate rather

than depending on the stored data.

* src/org/apache/subversion/javahl/SVNUtil.java

(SVNUtil.searchCredentials): Update hostnamePattern documentation.

* native/Promper.cpp

(Prompter::dispatch_ssl_server_trust_prompt): Update to reflect changes

to SSLServerCertInfo.

* src/org/apache/subversion/javahl/util/ConfigLib.java: Remove some commented

out code.

* tests/org/apache/subversion/javahl/UtilTests.java

(util_cred_ssl_server, testCredentials): Update tests as needed.

  1. … 29 more files in changeset.
Make FSX tests pass again.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(pack_filesystem): Don't test for separate index files anymore.

That info is now part of the rev / pack file.

Docstring fixes. No functional change.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

(): Fix file docstring.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(): Same.

  1. … 1 more file in changeset.
Explicitly limit the dimensions of a star delta container which allows us

to cast sizes to 32 bits.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_CONTAINER_SIZE): Declare new error code.

* subversion/libsvn_fs_x/reps.h

(svn_fs_x__reps_add): Allow for error returns.

* subversion/libsvn_fs_x/reps.c

(MAX_TEXT_BODY,

MAX_INSTRUCTIONS): Formally declare dimensional limit to the star

delta container.

(svn_fs_x__reps_add_base): Update caller. Explicitly cast index to 32 bits.

(add_new_text): Explicitly cast length values to 32 bits. They have been

limited to < 2GB be the caller already.

(svn_fs_x__reps_add): Make sure the container size stays within set limits.

* subversion/libsvn_fs_x/pack.c

(write_reps_containers): Update caller.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(test_reps): Same.

  1. … 4 more files in changeset.
Follow-up to r1589048: update callers of deprecated svn_fs_open().

* subversion/tests/cmdline/lock-helper.c

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

* subversion/tests/svn_test_fs.c

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

(main, create_packed_filesystem, prepare_revprop_repo, read_packed_fs,

recover_fully_packed, file_hint_at_shard_boundary, test_info,

pack_shard_size_one, upgrade_txns_to_log_addressing, svn_test__create_fs,

fs_open): Use svn_fs_open2() instead of svn_fs_open().

  1. … 4 more files in changeset.
Reintegrated the remote-only-status branch.
  1. … 25 more files in changeset.
More constant definition cleanup in our test code.

* subversion/tests/libsvn_fs_x/string-table-test.c

(large_string_table_body,

many_strings_table_body): Use APR macros to define 64 bit constants.

* subversion/tests/libsvn_subr/packed-data-test.c

(test_uint_stream): Same. Also use APR constants of min/max values.

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

(test24,

test_base36): Ditto.

  1. … 2 more files in changeset.
Merge the fsfs-lock-many branch to trunk. This introduce multiple

path lock and unlock at the FS level and connects it up over ra_local

and ra_svn, and also uses it post-commit to release locks. A summary

of the branch changes:

* subversion/include/svn_fs.h

(svn_fs_lock_target_t, svn_fs_lock_result_t,

svn_fs_lock2, svn_fs_unlock2): new.

* subversion/include/svn_repos.h

(svn_repos_fs_lock2, svn_repos_fs_unlock2): new.

* subversion/include/svn_error.h

(SVN_ERR_IS_LOCK_ERROR, SVN_ERR_IS_UNLOCK_ERROR): Add pre- hook errors.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_lock2, svn_fs_unlock2): New.

* subversion/libsvn_fs/fs-loader.h

(fs_vtable_t): Change lock and unlock parameters.

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_x/lock.c

(svn_fs_fs__lock, svn_fs_fs__unlock): New multiple path implementation.

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__lock, svn_fs_base__unlock): Iterate over paths.

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__lock, svn_fs_fs__unlock): Change parameters.

* subversion/libsvn_fs_x/lock.h

(svn_fs_x__lock, svn_fs_x__unlock): Change parameters.

* subversion/libsvn_fs_base/lock.h

(svn_fs_base__lock, svn_fs_base__unlock): Change parameters.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_lock2, svn_repos_fs_unlock2): New.

* subversion/libsvn_repos/repos.c

(SVN_REPOS__HOOK_POST_LOCK, SVN_REPOS__HOOK_POST_UNLOCK): Tweak hook

template text.

* subversion/libsvn_ra_local/ra_plugin.c

(deltify_etc, svn_ra_local__lock, svn_ra_local__unlock): Use new API.

* subversion/mod_dav_svn/version.c

(release_locks): Use new API.

* subversion/svnserve/serve.c

(unlock_paths, lock_many, unlock_many): Use new API.

* subversion/libsvn_subr/log.c

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__lock, svn_fs_fs__unlock,

svn_log__lock_one_path, svn_log__unlock_one_path): Change parameter.

* subversion/libsvn_client/locking_commands.c

(store_locks_callback): Tweak error handling.

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

(lock_multiple_paths): New test.

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

(lock_test): New test.

* subversion/tests/cmdline/authz_tests.py

(authz_locking): Tweak expectations.

* subversion/tests/cmdline/lock_tests.py

(block_unlock_if_pre_unlock_hook_fails, lock_hook_messages): Tweak

expectations.

(failing_post_hooks): New.

  1. … 26 more files in changeset.
Make the C tests work with the --enable-optimize configure option.

Because the main() function used to be defined in libsvn_test,

the -flto option (which performs rather aggressive link-time

optimizations) would cause the linker to remove all "unreferenced"

static functions ... which includes all the actual tests.

Which this change, main() is now defined in each test driver.

* subversion/tests/svn_test.h

(test_funcs, svn_test_max_threads): Remove external declarations.

(svn_test_main): New prototype for the (existing-but-renamed) test driver.

(SVN_TEST_MAIN): Bolierplate macro that generates a main() implementation.

* subversion/tests/svn_test_main.c

(svn_test_main): Renamed from 'main', and takes two extra parameters,

'max_threads' and 'test_funcs'. Propagates test_funcs to get_array_size,

do_test_num and do_tests_concurrently.

(get_array_size, do_test_num,

test_params_t, test_thread, do_tests_concurrently): Require a test_funcs

parameter. All uses updated.

* subversion/tests/libsvn_client/client-test.c,

subversion/tests/libsvn_client/mtcc-test.c,

subversion/tests/libsvn_delta/random-test.c,

subversion/tests/libsvn_delta/window-test.c,

subversion/tests/libsvn_diff/diff-diff3-test.c,

subversion/tests/libsvn_diff/parse-diff-test.c,

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

subversion/tests/libsvn_fs/locks-test.c,

subversion/tests/libsvn_fs_base/

subversion/tests/libsvn_fs_base/changes-test.c,

subversion/tests/libsvn_fs_base/fs-base-test.c,

subversion/tests/libsvn_fs_base/strings-reps-test.c,

subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c,

subversion/tests/libsvn_fs_x/fs-x-pack-test.c,

subversion/tests/libsvn_fs_x/string-table-test.c,

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

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

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

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

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

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

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

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

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

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

subversion/tests/libsvn_subr/error-code-test.c,

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

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

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

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

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

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

subversion/tests/libsvn_subr/packed-data-test.c,

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

subversion/tests/libsvn_subr/prefix-string-test.c,

subversion/tests/libsvn_subr/priority-queue-test.c,

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

subversion/tests/libsvn_subr/root-pools-test.c,

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

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

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

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

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

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

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

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

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

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

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

subversion/tests/libsvn_wc/entries-compat.c,

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

subversion/tests/libsvn_wc/pristine-store-test.c,

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

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

(max_threads): Renamed from svn_test_max_threads and made static.

(test_funcs): Made static.

(SVN_TEST_MAIN): Expanded boilerplate main() function.

  1. … 53 more files in changeset.
Fix accidentally-global variables.

[ Changes to libsvn_subr and named_atomic-test-common.h reverted in r1571500 ]

* configure.ac

(CMAINTAINERFLAGS): Add -Wmissing-variable-declarations.

* subversion/libsvn_fs_fs/hotcopy.c

(hotcopy_body_baton):

* subversion/libsvn_fs_x/hotcopy.c

(hotcopy_body_baton):

* subversion/libsvn_repos/hooks.c

(parse_hooks_env_option_baton, parse_hooks_env_section_baton):

* subversion/libsvn_wc/wc_db.c

(struct op_delete_many_baton_t):

* subversion/svn/file-merge.c

(struct file_merge_baton):

Remove accidental declaration of global variables.

* subversion/libsvn_subr/ctype.c

(svn_ctype_table_internal):

* subversion/svndumpfilter/svndumpfilter.c

(filtering_vtable):

* subversion/svnserve/svnserve.c

(connection_pools, threads):

* subversion/tests/libsvn_fs_x/string-table-test.c

(basic_strings):

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

(proplist, new_proplist, review):

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

(test_file_definitions_template):

* subversion/tests/libsvn_subr/named_atomic-test-common.h

(name_namespace, name_namespace1, name_namespace2):

* subversion/tests/libsvn_subr/packed-data-test.c

(sub_records, test_data_:

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

(test_cases):

* subversion/tests/libsvn_subr/priority-queue-test.c

(numbers, expected_modified):

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

(phrase_1, phrase_2):

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

(test_timestamp, test_timestring, test_old_timestring):

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

(base_origin_subtests):

* subversion/tests/svn_test_main.c

(mode_filter):

Make these variables file-static.

* subversion/tests/svn_test_main.c

(test_argc, test_argv):

* tools/server-side/mod_dontdothat/mod_dontdothat.c

(dontdothat_module):

Make these variables truly global by also declaring them extern.

  1. … 21 more files in changeset.
Clean up FSX pack tests. Use a centralized check to skip these

tests for non-FSX repositories. Also, drop unnecessary version

checks that were carried over from FSFS, i.e. dead code.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

(create_packed_filesystem): Skip tests for pre-1.9 compat or

non-FSX repositories.

(pack_even_filesystem,

read_packed_fs,

commit_packed_fs,

get_set_revprop_packed_fs,

get_set_large_revprop_packed_fs,

get_set_huge_revprop_packed_fs,

recover_fully_packed,

file_hint_at_shard_boundary,

test_reps,

pack_shard_size_one): Remove local test compat check.

(pack_filesystem,

test_info): Ditto. Also, remove dead code.

Merge the verify-keep-going branch to trunk.

'svnadmin verify --keep-going' now shows a summary of errors at the end.

  1. … 4 more files in changeset.
Reduce execution time of some C tests by reducing the number of

iterations to a more reasonable level.

* subversion/tests/libsvn_fs_x/string-table-test.c

(many_strings_table_body): Having over 50 sub-tables is no better

than 6 sub-tables when we simply want

to test for large strings and multiple

sub-tables.

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

(calibrate_iterations): Limiting the number of iterations to 250k

still gives plenty of opportunity for faulty

sync to show up.

  1. … 1 more file in changeset.
Add "--parallel" option to our C tests.

Besides shaving off a few seconds off our total test execution time,

parallel execution also stresses our code and the tests themselves

harder. It uncovers things like improperly separated working sets

that make post-failure analysis harder.

Parallel mode is only available with APR 1.3+ and threads enabled.

The option will simply be ignored in other configurations. Further

limitations are cleanups being delayed to after all tests completed

and segfaults not being intercepted.

Some tests can't be executed in parallel. Therefore, we introduce

svn_test_max_threads a simple upper limit to the number of threads

supported that each test must define alongside the test_funcs array.

This patch sets it to "1" in many cases because the tests are so

small that multi-threaded execution is simply not worth it.

* build/run_tests.py

(TestHarness._run_c_test): Pass --parallel option to the individual

test applications.

* subversion/tests/svn_test.h

(svn_test_max_threads): Declare new external setting to be set by

every test application.

* subversion/tests/svn_test_main.c

(parallel): New command line option presence flag.

(parallel_opt,

cl_options): Declare the new "--parallel" option.

(svn_test_add_dir_cleanup): Synchronize shared pool access since

this might be called from multiple

threads at the same time.

(log_results): Result logger function factored out from do_test_num

to be shared between serialized and parallel test

execution code.

(do_test_num): Use that new function.

(test_params_t,

test_thread,

do_tests_concurrently): Threads, their parameter and the thread

starter for thread-pooled test execution.

(main): Handle the new option.

Call concurrent execution when in PARALLEL mode.

* subversion/tests/libsvn_delta/random-test.c

subversion/tests/libsvn_subr/named_atomic-test.c

(svn_test_max_threads): These tests don't support concurrent execution.

* subversion/tests/libsvn_delta/random-test.c

subversion/tests/libsvn_delta/window-test.c

subversion/tests/libsvn_diff/parse-diff-test.c

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

subversion/tests/libsvn_ra/ra-test.c

subversion/tests/libsvn_subr/auth-test.c

subversion/tests/libsvn_subr/cache-test.c

subversion/tests/libsvn_subr/checksum-test.c

subversion/tests/libsvn_subr/compat-test.c

subversion/tests/libsvn_subr/config-test.c

subversion/tests/libsvn_subr/crypto-test.c

subversion/tests/libsvn_subr/dirent_uri-test.c

subversion/tests/libsvn_subr/error-code-test.c

subversion/tests/libsvn_subr/error-test.c

subversion/tests/libsvn_subr/hashdump-test.c

subversion/tests/libsvn_subr/mergeinfo-test.c

subversion/tests/libsvn_subr/named_atomic-test.c

subversion/tests/libsvn_subr/opt-test.c

subversion/tests/libsvn_subr/packed-data-test.c

subversion/tests/libsvn_subr/path-test.c

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

subversion/tests/libsvn_subr/priority-queue-test.c

subversion/tests/libsvn_subr/revision-test.c

subversion/tests/libsvn_subr/root-pools-test.c

subversion/tests/libsvn_subr/skel-test.c

subversion/tests/libsvn_subr/spillbuf-test.c

subversion/tests/libsvn_subr/sqlite-test.c

subversion/tests/libsvn_subr/stream-test.c

subversion/tests/libsvn_subr/string-test.c

subversion/tests/libsvn_subr/subst_translate-test.c

subversion/tests/libsvn_subr/time-test.c

subversion/tests/libsvn_subr/utf-test.c

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

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

(svn_test_max_threads): These are too small to benefit from multi-threading.

* subversion/tests/libsvn_client/client-test.c

subversion/tests/libsvn_diff/diff-diff3-test.c

subversion/tests/libsvn_fs_base/changes-test.c

subversion/tests/libsvn_fs_base/fs-base-test.c

subversion/tests/libsvn_fs_base/strings-reps-test.c

subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

subversion/tests/libsvn_fs/fs-test.c

subversion/tests/libsvn_fs/locks-test.c

subversion/tests/libsvn_fs_x/fs-x-pack-test.c

subversion/tests/libsvn_fs_x/string-table-test.c

subversion/tests/libsvn_repos/repos-test.c

subversion/tests/libsvn_subr/io-test.c

subversion/tests/libsvn_subr/translate-test.c

subversion/tests/libsvn_wc/db-test.c

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

subversion/tests/libsvn_wc/wc-test.c

(svn_test_max_threads): Set concurrency limit to whatever various test

runs suggested as the most efficient value.

* subversion/tests/libsvn_wc/entries-compat.c

subversion/tests/libsvn_wc/pristine-store-test.c

(svn_test_max_threads): Set concurrency limit to "unbounded".

  1. … 53 more files in changeset.
Introduce a null-pointer constant that we can use as a termination sentinel

in variable argument lists. This avoids the ugliness of writing

"(char *) NULL" all over the place.

* subversion/include/svn_types.h (SVN_VA_NULL): New symbol.

* subversion/include/svn_dirent_uri.h (svn_dirent_join_many),

subversion/include/svn_path.h (svn_path_join_many),

subversion/include/svn_xml.h (svn_xml_make_open_tag):

Update docstrings, mentioning SVN_VA_NULL as the argument list terminator.

[Lots of implementation files]: Replace typecast-NULL with SVN_VA_NULL in

function calls with variable argument lists.

  1. … 89 more files in changeset.