Checkout Tools
  • last updated 21 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Various spelling fixes, no functional change

* contrib/client-side/svn-clean

(--exclude): s/exluded/excluded/

* subversion/include/svn_error_codes.h

(SVN_ERR_X509_CERT_VERIFY_FAILED): s/Certficate/Certificate/

* subversion/po/de.po,

subversion/po/ja.po,

subversion/po/ko.po,

subversion/po/pl.po,

subversion/po/sv.po:

(): s/Certficate/Certificate/; s/abandonded/abandoned/

* subversion/libsvn_repos/repos.c:

(): s/abandonded/abandoned/

* subversion/libsvn_repos/repos.c,

subversion/svnadmin/svnadmin.c,

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

(): s/filesytem/filesystem/

  1. … 9 more files in changeset.
Let repository-to-WC copies go through the WC editor.

For issue #4786 "Create a WC working-mods editor".

Similar to the patch committed in r1848892 and reverted in r1848897, except

that attempt failed on Windows because it created the copy target root

directory twice.

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy): Rename to

'svn_client__repos_to_wc_copy_internal'.

(svn_client__repos_to_wc_copy_by_editor): New.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Update to use

'svn_client__repos_to_wc_copy_by_editor'.

* subversion/libsvn_client/copy.c

(copy_foreign_dir): Remove 'depth' parameter: not needed and was wrongly

implemented anyway.

(svn_client__repos_to_wc_copy_dir): Adjust caller.

(is_same_repository): New, moved from 'wc_editor.c'.

(svn_client__repos_to_wc_copy_by_editor): New.

(svn_client__repos_to_wc_copy,

repos_to_wc_copy_single): Determine same-repository here and here...

(repos_to_wc_copy_locked): ... instead of here.

* subversion/libsvn_client/wc_editor.c

(is_same_repository): Delete; moved to 'copy.c'.

(dir_add,

file_add): Don't determine same-repository here. Do set the 'created' flag.

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

(test_foreign_repos_copy): Update caller.

  1. … 4 more files in changeset.
Revert r1848892 as it fails on Windows.

  1. … 4 more files in changeset.
Let repository-to-WC copies go through the WC editor.

For issue #4786 "Create a WC working-mods editor".

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy): Rename to

'svn_client__repos_to_wc_copy_internal'.

(svn_client__repos_to_wc_copy_by_editor): New.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Update to use

'svn_client__repos_to_wc_copy_by_editor'.

* subversion/libsvn_client/copy.c

(copy_foreign_dir): Remove 'depth' parameter: not needed and was wrongly

implemented anyway.

(svn_client__repos_to_wc_copy_dir): Adjust caller.

(is_same_repository): New, moved from 'wc_editor.c'.

(svn_client__repos_to_wc_copy_by_editor): New.

(svn_client__repos_to_wc_copy,

repos_to_wc_copy_single): Determine same-repository here and here...

(repos_to_wc_copy_locked): ... instead of here.

* subversion/libsvn_client/wc_editor.c

(is_same_repository): Delete; moved to 'copy.c'.

(dir_add,

file_add): Don't determine same-repository here. Do set the 'created' flag.

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

(test_foreign_repos_copy): Update caller.

  1. … 4 more files in changeset.
Simplify the physical implementation of foreign-repo copy.

For issue #4786 "Create a WC working-mods editor".

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Remove.

* subversion/libsvn_client/copy.c

(copy_foreign_dir): New here, moved from copy_foreign.c.

(svn_client__repos_to_wc_copy_dir): Call copy_foreign_dir() directly

instead of through svn_client__foreign_copy().

(svn_client__repos_to_wc_copy): Allow a null 'timestamp_sleep' output ptr.

* subversion/libsvn_client/copy_foreign.c

Delete this file; move copy_foreign_dir() to copy.c.

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

(test_foreign_repos_copy): Update callers of svn_client__copy_foreign()

to use svn_client__repos_to_wc_copy() instead.

  1. … 3 more files in changeset.
Deduplicate the make-parents functionality in 'copy' code.

And the verification that WC target paths are suitable.

* subversion/include/private/svn_client_private.h,

subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Remove all that functionality, as it was done

already by 'verify_dsts', and remove the 'make_parents' parameter.

* subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir): Update the call to ...copy_foreign.

(repos_to_wc_copy): Remove all that functionality; from now on it is going

to have been done already by 'verify_dsts'.

(repos_to_wc_copy_locked): Move the 'verify_dsts' call up from here...

(try_copy): ... to here and let it make missing parents.

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

(test_foreign_repos_copy): Update calls to ...copy_foreign.

  1. … 3 more files in changeset.
A small simplification of svn_client__copy_foreign.

Don't open a new RA session; let the caller provide one.

* subversion/include/private/svn_client_private.h,

subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Take an RA session and a resolved location

instead of a URL and peg and operative revisions.

(copy_foreign_dir): Constify a parameter.

* subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir): Adjust the call.

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

(test_foreign_repos_copy): Open an RA session and adjust the calls.

  1. … 3 more files in changeset.
Simplify svn_client__copy_foreign().

Simplify by requiring the caller to hold a WC write lock. The only real

caller already did, and the test callers now do.

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Remove 'already_locked' parameter, and

document the requirement for a WC write lock.

(svn_client__repos_to_wc_copy_dir): Tweak similar comment in the same way.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): Don't pass that parameter.

* subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Remove the ability to acquire and release a

WC write lock.

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

(test_foreign_repos_copy): Acquire and release a write lock here.

  1. … 3 more files in changeset.
Use the typesafe svn_sort__array() helper instead of qsort() in a few places.

* subversion/libsvn_client/merge.c

(get_mergeinfo_paths,

combine_range_with_segments): Use svn_sort__array().

* subversion/libsvn_fs_base/tree.c

(includes): Add svn_sorts_private.h.

(verify_locks): Use svn_sort__array().

* subversion/mod_dav_svn/repos.c

(negotiate_encoding_prefs): Use svn_sort__array(). Remove const from local

variable.

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

(includes): Add svn_sorts_private.h.

(test_remote_only_status): Use svn_sort__array().

  1. … 3 more files in changeset.
Fix a few tests to properly clean up after running.

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

(test_foreign_repos_copy,

test_remote_only_status): Register everything we create as to be cleaned up.

Follow up to r1676538: Instead of comparing property values before and

after pinning, which may be prone to false positives due to whitespace

-only changes, track what we actually pinned to decide if an externals

property needs changing.

* subversion/libsvn_client/copy.c

(pin_externals_prop): Return NULL instead of a property value if

none of the externals definitions were changed in this function.

Update docstring accordingly.

(resolve_pinned_externals): Use the hint from pin_externals_prop

to avoid making no-op property changes.

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

(test_copy_pin_externals_select_subtree): Tweak the test to check

that we're not making any whitespace-only changes to unpinned

externals.

  1. … 1 more file in changeset.
Add a C regression test for issue #4560.

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

(test_copy_pin_externals_select_subtree, test_funcs): New test.

Expose the metadataOnly option that is already implemented in libsvn_client's

copy support through the api.

This should have been added when revving the api, as this api has been

available at the libsvn_wc level since 1.8 (and at least used by AnkhSVN

since then).

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

(Java_org_apache_subversion_javahl_SVNClient_copy): Pass metadataOnly.

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

(SVNClient::copy): Pass metadataOnly.

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

(SVNClient::copy): Pass metadataOnly.

* subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java

(copy): Add and document metadataOnly argument.

* subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java

(copy): Add and document metadataOnly argument.

(copy): Update caller.

* subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java

(testCopy,

testCopyPinExternals_wc2wc,

testCopyPinExternals_wc2repo,

testCopyPinExternals_repo2wc,

testCopyPinExternals_repo2repo,

testCopyPinExternals_repo2repo_explicit,

setupAndPerformMerge): Update caller.

* subversion/include/svn_client.h

(svn_client_copy7): Add argument.

* subversion/libsvn_client/copy.c

(svn_client_copy7): Add argument. Update caller.

* subversion/libsvn_client/deprecated.c

(svn_client_copy6): Update caller.

* subversion/svn/copy-cmd.c

(svn_cl__copy): Update caller.

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

(test_copy_pin_externals): Update caller.

* subversion/tests/libsvn_wc/utils.c

(sbox_wc_copy_url): Update caller.

  1. … 11 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. … 184 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.
Move 'svn_client_mtcc.h' into the 'private' subdirectory, so we don't make

it public in 1.9.

It's not considered stable enough in its current form. See the email thread

"The new svn_client_mtcc API" started on 2014-07-29 by Julian Foad, archived

at e.g. <http://svn.haxx.se/dev/archive-2014-07/0138.shtml>.

* subversion/include/svn_client_mtcc.h

Move ...

* subversion/include/private/svn_client_mtcc.h

... to here, and rename all symbols: s/svn_client_mtcc/svn_client__mtcc/.

* subversion/libsvn_client/mtcc.c,

subversion/svnmucc/svnmucc.c,

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

subversion/tests/libsvn_client/mtcc-test.c

Adjust the '#include', and track the renamed symbols.

  1. … 5 more files in changeset.
Reintegrated the remote-only-status branch.
  1. … 25 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. … 54 more files in changeset.
* subversion/tests/libsvn_client/client-test.c

(includes): Following up on r1562052, add missing include.

Rename variable to be consistent with other tests. No functional change.

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

(test_suggest_mergesources): s/wc_dir/wc_path/

Prevent spurious failures in client-test 8 when CLEANUP isn't used.

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

(test_suggest_mergesources): Have to remove the wc before doing

a checkout, otherwise you get an error on UUID mismatches.

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

(test_suggest_mergesources): Following up on r1552265, and r1552277 extend

test with a working copy path to allow catching the problem fixed in

r1552277 by just running the standard tests.

Re-use ra sessions when determining where a path is copied from using a

libsvn_client internal api. Give public api a caller from our test suite

by adding a simple C test.

* subversion/libsvn_client/client.h

(svn_client__get_copy_source): Add argument.

* subversion/libsvn_client/log.c

(svn_client__get_copy_source): Add support for using an existing session.

* subversion/libsvn_client/merge.c

(normalize_merge_sources_internal): Pass existing ra session.

* subversion/libsvn_client/mergeinfo.c

(svn_client_suggest_merge_sources): Open ra session and pass it to two

functions instead of having them create and close their own sessions.

Use subpool.

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

(test_suggest_mergesources): New test.

(test_funcs): Add test_suggest_mergesources.

  1. … 4 more files in changeset.
* subversion/tests/libsvn_client/client-test.c

subversion/tests/libsvn_fs/fs-test.c

subversion/tests/libsvn_fs/locks-test.c

(test_funcs): Move particularly expensive tests to the top of the

list to maximize parallism. None of these test lists

imply a specific "simply-to-complex" ordering.

  1. … 2 more files 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. … 54 more files in changeset.
All our tests should use separate working sets. This patch fixes

a bunch of C tests that used the same files / folders as other tests.

Most of them were probably the result of copy'n'paste.

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

(test_foreign_repos_copy): use test-specific working set

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

(changes_fetch_raw): ditto

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

(write_null_string): ditto

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

(mixed_to_lf,

unexpand_author,

unexpand_date,

unexpand_author_date,

unexpand_author_rev,

unexpand_rev,

unexpand_rev_url,

unexpand_author_date_rev_url,

lf_to_crlf_unexpand_author,

mixed_to_lf_unexpand_author_date,

crlf_to_cr_unexpand_author_rev,

cr_to_crlf_unexpand_rev,

cr_to_crlf_unexpand_rev_url): ditto

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

(test_adds_change_kind,

movedto_opdepth,

del4_update_edit_AAA,

del4_update_delete_AAA,

del4_update_add_AAA,

del4_update_delself_AAA): ditto

  1. … 4 more files in changeset.
Begin converting C tests to use the same transient directory as the Python

tests, so that both can be run off a RAM disk.

* subversion/tests/svn_test.h (svn_test_data_path): New prototype.

* subversion/tests/svn_test_main.c: Include svn_utf.h.

(data_path): New static variable.

(init_test_data): New; initializes the value of data_path.

(svn_test_data_path): Implement.

(main): Call init_test_data and handle any resulting errors.

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

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

subversion/tests/libsvn_diff/diff-diff3-test.c: Update tests to only

create files in the transient directory.

* subversion/tests/libsvn_client,

subversion/tests/libsvn_diff: Do not ignore names that are no longer

created in the source directory, even for in-tree builds.

  1. … 6 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.
Cast NULL to (char *) in vararg calls to svn_dirent_join_many

and svn_path_join_many.

* subversion/libsvn_fs_fs/lock.c

(digest_path_from_digest, digest_path_from_path): here

* subversion/libsvn_fs_fs/transaction.c

(create_txn_dir, create_txn_dir_pre_1_5): here

* subversion/libsvn_fs_fs/util.c

(svn_fs_fs__path_rev_packed, svn_fs_fs__path_rev_shard,

svn_fs_fs__path_rev, svn_fs_fs__path_revprops_shard,

svn_fs_fs__path_revprops_pack_shard, svn_fs_fs__path_revprops,

svn_fs_fs__path_txn_dir, svn_fs_fs__path_txn_proto_rev,

svn_fs_fs__path_txn_proto_rev_lock, svn_fs_fs__path_node_origin): here

* subversion/libsvn_fs_x/lock.c

(digest_path_from_digest, digest_path_from_path): here

* subversion/libsvn_fs_x/transaction.c

(create_txn_dir): here

* subversion/libsvn_fs_x/util.c

(svn_fs_x__path_rev_packed, svn_fs_x__path_rev_shard,

svn_fs_x__path_revprops_shard,

svn_fs_x__path_revprops_pack_shard,

svn_fs_x__path_txn_dir, svn_fs_x__path_txn_proto_rev,

svn_fs_x__path_txn_proto_rev_lock, svn_fs_x__path_node_origin): here

* subversion/libsvn_subr/config_file.c

(svn_config__sys_config_path, svn_config_get_user_config_path): here

* subversion/libsvn_wc/adm_files.c

(svn_wc__adm_child): here

* subversion/libsvn_wc/upgrade.c

(build_lockfile_path, bump_to_29): here

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_temp_wcroot_tempdir): here

* subversion/libsvn_wc/wc_db_pristine.c

(get_pristine_fname): here

* subversion/mod_authz_svn/mod_authz_svn.c

(get_access_conf): here

* subversion/tests/cmdline/entries-dump.c

(entries_dump): here

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

(test_patch): here

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

(pack_filesystem, pack_even_filesystem, recover_fully_packed): here

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

(pack_filesystem, pack_even_filesystem, recover_fully_packed): here

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

(test_dirent_join): here

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

(test_path_join): here

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

(test_entries_alloc, test_stubs): here

  1. … 18 more files in changeset.
Following up on r1483993, update some callers of svn_io_file_flush_to_disk that

where an fflush is enough for correct behavior. The conflict edit code in svn

doesn't store the paths, so doesn't need power failure guarantees.

* subversion/svn/conflict-callbacks.c

(edit_prop_conflict): Use a normal file flush.

* subversion/svn/file-merge.c

(edit_chunk): Use a normal file flush.

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

(edit_chunk): Use a normal file flush.

  1. … 2 more files in changeset.