LICENSE

Checkout Tools
  • last updated 4 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Switch all SVN++ tests to Boost.Test.

* build/ac-macros/ax_boost_unit_test_framework.m4: New; imported from the Autoconf Archive.

* LICENSE: Add entry for ax_boost_unit_test_framework.m4.

* aclocal.m4: Include ax_boost_unit_test_framework.m4.

* Makefile.in

(BOOST_TEST_CPPFLAGS): Rename from BOOST_CPPFLAGS, redefine.

(BOOST_TEST_LDFLAGS): Rename from BOOST_LDFLAGS, redefine.

(COMPILE_SVNXX): Rename from COMPILE_SVNXX_CXX, redefine.

(COMPILE_SVNXX_TEST): Rename from COMPILE_SVNXX_CXX_BOOST, redefine.

(LINK_SVNXX_TEST): Rename from LINK_CXX_BOOST, redefine.

* build.conf

(libsvnxx, svnxx-tests): Update compile and link commands.

* configure.ac: Update SVN++ bits.

* subversion/bindings/cxx/src/aprwrap/array.hpp:

Add comments to mark obsolete constructs that should change to C++11 idiom.

* subversion/bindings/cxx/src/aprwrap/hash.hpp: Likewise.

* subversion/bindings/cxx/tests/cxxhl-tests.cpp.

* subversion/bindings/cxx/tests/test_aprwrap.cpp: Removed.

* subversion/bindings/cxx/tests/svnxx-tests.cpp,

* subversion/bindings/cxx/tests/fixture_initialize_apr.hpp,

* subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp: New.

* subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_pools.cpp: New; extracted from the

removed test_aprwrap.cpp and reworked for Boost.Test.

* subversion/bindings/cxx/tests/test_exceptions.cpp: Renamed from test_exception.cpp

and reworked for Boost.Test.

  1. … 18 more files in changeset.
Add optional dependency on the Boost C++ libraries for the SVN++ test suite.

* build/ac-macros/ax_boost_base.m4: New; imported from The Autoconf Archive.

* LICENSE, NOTICE: Document the license for ax_boost_base.m4.

* aclocal.m4: Inlcude build/ac-macros/ax_boost_base.m4

* build.conf

(options.private-includes): Add headers from subversion/bindings/cxx/tests.

(svnxx-tests): Declare test target for SVN++.

* configure.ac: Check for Boost availability.

* Makefile.in

(BOOST_CPPFLAGS, BOOST_LDFLAGS, SVN_HAVE_CXX_BOOST): New substitutions.

(COMPILE_SVNXX_CXX_BOOST, LINK_CXX_BOOST): New compile and link commands.

  1. … 6 more files in changeset.
fsfs: Add initial support for LZ4 compression.

This can significantly (up to 3 times) improve the speed of commits and

other operations with large binary or incompressible files, while still

maintaining a decent compression ratio.

Our current use of zlib compression — which, depending on the protocol,

can be used multiple times — heavily affects the speed of commits with

large binary or incompressible files. According to the Squash benchmark

(https://quixdb.github.io/squash-benchmark/) and to my measurements, the

zlib compression speed with the default level is about 30-40 MiB/s, and

it doesn't matter if the file is incompressible or not.

This patch provides an alternative in the form of the LZ4 compression.

While still providing a decent compression ratio, LZ4 offers much faster

compression even than zlib with level=1, and can skip incompressible data

chunks. Presumably, LZ4 is used for on-the-fly compression in different

file systems for these reasons.

With this patch, LZ4 compression will be enabled for fsfs repositories which

specify compression-level=1 in fsfs.conf. The interoperability is implemented

by bumping the format of svndiff to 2 and the repository file system format

to 8. From the client perspective, the patch starts using LZ4 compression

only for file:// protocol, and the support/negotiation of the use of svndiff2

with LZ4 compression for http:// and svn:// can be added later.

The tests for LZ4 compression can be run with one of the following commands:

win-tests.py --fsfs-compression=1

make check FSFS_COMPRESSION=1

* subversion/include/svn_delta.h

(svn_txdelta_to_svndiff3): Update docstring.

* subversion/include/svn_error_codes.h

(SVN_ERR_LZ4_COMPRESSION_FAILED,

SVN_ERR_LZ4_DECOMPRESSION_FAILED): New error codes.

* subversion/include/private/svn_subr_private.h

(svn__compress, svn__decompress): Rename to ...

(svn__compress_zlib, svn__decompress_zlib): ..this.

(svn__compress_lz4, svn__decompress_lz4): Declare new functions.

* subversion/libsvn_subr/compress.c

(): Include LZ4 library header.

(svn__compress, svn__decompress): Rename to ...

(svn__compress_zlib, svn__decompress_zlib): ..this.

(svn__compress_lz4, svn__decompress_lz4): Implement new functions.

* subversion/libsvn_subr/packed_data.c

(write_stream_data, read_stream_data): Update usages of svn__compress()

and svn__decompress().

* subversion/libsvn_delta/svndiff.c

(SVNDIFF_V2): New.

(get_svndiff_header): Update to support svndiff2 headers.

(encode_window, decode_window, write_handler): Support svndiff2 with

LZ4 compression. Tweak the relevant comments.

* subversion/libsvn_fs_fs/fs.h

(SVN_FS_FS__FORMAT_NUMBER): Bump to 8.

(SVN_FS_FS__MIN_SVNDIFF2_FORMAT): New define.

* subversion/libsvn_fs_fs/fs_fs.c

(write_config): Tweak the compression-level option description.

(svn_fs_fs__create, svn_fs_fs__info_format): Update to handle the

format bump.

* subversion/libsvn_fs_fs/transaction.c

(txdelta_to_svndiff): New helper to call svn_txdelta_to_svndiff3() with

appropriate svndiff version and compression level, depending on the

file system configuration.

(rep_write_get_baton, write_container_delta_rep): Use new helper.

* subversion/libsvn_fs_fs/revprops.c

(parse_packed_revprops, repack_revprops, svn_fs_fs__copy_revprops):

Update usages of svn__compress() and svn__decompress().

* subversion/libsvn_fs_fs/structure

(Filesystem formats): Update to describe usage of svndiff2.

* subversion/tests/libsvn_subr/compress-test.c: New.

* subversion/tests/libsvn_delta/random_test.c

(DEFAULT_ITERATIONS): Increase to 60.

(do_random_test, do_random_combine_test): Test different svndiff versions

and compresssion levels.

* build.conf

(libsvn_subr): Build LZ4 library sources.

(compress-test): Add new section.

* notes/svndiff: Describe svndiff2.

* NOTICE, LICENSE: Include license for LZ4.

  1. … 16 more files in changeset.
Merge the 'svnmover' prototype from the 'move-tracking-2' branch to trunk.

See the dev@ email thread "Merge 'svnmover' demo tool to trunk" started on

2015-11-10, archived at e.g. <http://mail-archives.apache.org/mod_mbox/subversion-dev/201511.mbox/%3CCAEcU=1YE5Ci02j_4aAeB_roS1X0H2QWPP3juu0exjVJ-FGCLyg@mail.gmail.com%3E>.

This is a reintegration (performed as an automatic merge) followed by

reverting the unwanted parts. As such, those unwanted parts (such as shim

insertions in several libraries) will be treated as 'record-only merged' and

will not be picked up by any subsequent automatic merge to trunk.

A brief description of the changes follows.

* build.conf

Adjust to build the new files.

* configure.ac

Adjust compiler warning flags to not warn about passing or returning a

structure, because some of the code does so.

* LICENSE

Add the licence text for the embedded 'linenoise' library.

* notes/move-tracking/README

New file, describing this work.

* subversion/include/private/svn_branch.h,

subversion/include/private/svn_branch_compat.h,

subversion/include/private/svn_branch_impl.h,

subversion/include/private/svn_branch_nested.h,

subversion/include/private/svn_branch_repos.h,

subversion/include/private/svn_element.h

New files.

* subversion/libsvn_delta/branch.c,

subversion/libsvn_delta/branch_compat.c,

subversion/libsvn_delta/branch_migrate.c,

subversion/libsvn_delta/branch_nested.c,

subversion/libsvn_delta/branch_repos.c,

subversion/libsvn_delta/element.c

New files.

* subversion/include/private/svn_cmdline_private.h

subversion/libsvn_subr/cmdline.c

(svn_cmdline__stdin_is_a_terminal,

svn_cmdline__stdout_is_a_terminal,

svn_cmdline__stderr_is_a_terminal): New.

* subversion/tests/cmdline/svnmover_tests.py

New file.

* subversion/tests/cmdline/svntest/actions.py

(run_and_verify_svnmover,

run_and_verify_svnmover2): New.

* subversion/tests/cmdline/svntest/main.py

(svnmover_binary,

run_svnmover): New.

(execute_tests): Initialize 'svnmover_binary'.

* subversion/tests/cmdline/svntest/wc.py

(State): Add 'rename' and 'from_eids' methods.

(StateItem): Add an 'eid' attribute.

* tools/dev/svnmover

New tool.

  1. … 25 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.
* NOTICE, LICENSE: Add license info for utf8proc.

  1. … 1 more file in changeset.
Add support for determining the display width of a unicode string, and make

use of this when trimming lines for display by the internal file merge tool.

Based on suitably licensed code by Markus Kuhn:

http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c

* LICENSE, NOTICE: Add Markus Kuhn copyright notices.

* subversion/include/svn_utf.h

(svn_utf_cstring_utf8_width): Declare.

* subversion/libsvn_subr/utf_width.c: New file, implementation of the above

newly declared function. This file is based on Markus Kuhn's code, and has

been adapted to use APR types. The svn_utf_cstring_utf8_width() function

was written from scratch and replaces Markus' mk_wcswidth() function.

* subversion/svn/file-merge.c

(MAX_LINE_DISPLAY_LEN): Rename to ...

(LINE_DISPLAY_WIDTH): ... this, because it is not a maximum but a fixed

length since all lines are either trimmed or padded to this length.

(prepare_line_for_display): Use the new character display width support

to properly detect the width of unicode characters (tested with a bunch

of asian texts from wikipedia). Track rename of MAX_LINE_DISPLAY_LEN.

  1. … 4 more files in changeset.
Clean up the Python bindings testsuite's licensing, remove references that

are no longer valid.

* NOTICE: Reference the top-level LICENSE file instead of the now-removed

one and list all copyright holders for the BSD-licensed code.

* LICENSE: Remove comment marks and list all copyright holders for the

BSD-licensed code.

* subversion/bindings/swig/python/tests/trac/versioncontrol/tests/svn_fs.py,

subversion/bindings/swig/python/tests/trac/versioncontrol/svn_fs.py,

subversion/bindings/swig/python/tests/trac/versioncontrol/main.py,

subversion/bindings/swig/python/tests/trac/test.py: Replace references

to LICENSE_FOR_PYTHON_BINDINGS with the full license text; add the ASF

blurb where it's missing.

Approved by: cmpilato

  1. … 5 more files in changeset.
* LICENSE

Add relative path of the python bindings tests suite.

Suggested by: jerenkrantz

Reduce the scope of the special licensing of the Python bindings to

just the test suite for those bindings. Nothing in the bindings

themselves requires any of Edgewall's software.

* NOTICE

Update the reference to the Python bindings test suite license.

* LICENSE

Note the custom license carried by the Python bindings test suite.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS

Move this...

* subversion/bindings/swig/python/tests/LICENSE

...to here, tweak the formatting a little bit, and note that it

isn't the whole of the Python bindings that are so licensed -- just

the test suite portion.

  1. … 3 more files in changeset.
Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.

* LICENSE: New.

* COPYING,

subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

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

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

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

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

  1. … 882 more files in changeset.