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

Changeset 1801722 is being indexed.

Expose the mergerange canonical form helper functions in the private api

to allow hiding some implementation details. Improve the canonical form

api to verify assumptions related to inheritability.

This is initial plumbing for fixing issue #4686.

* subversion/include/private/svn_mergeinfo_private.h

(svn_rangelist__parse): Update comment.

(svn_rangelist__is_canonical): New function.

(svn_rangelist__combine_adjacent_ranges): Remove function, as users

should really call the canonicalize function.

* subversion/libsvn_subr/deprecated.c

(svn_rangelist_merge): Canonicalize the result, instead of just merging

ranges.

* subversion/libsvn_subr/mergeinfo.c

(is_rangelist_normalized): Rename to...

(svn_rangelist__is_canonical): ... this and remove the existing

limitations.

(svn_rangelist__canonicalize): Update caller and fold in the actual

canonicalization that used to be in...

(svn_rangelist__combine_adjacent_ranges): ... this function.

(svn_rangelist_merge2): In SVN_DEBUG mode verify that the result is

canonical when the input arguments are. Currently this assertion

fails for issue #4686.

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

(test_rangelist_merge_overlap): Add some test assertions using the new

helper function.

  1. … 3 more files in changeset.
Following up on r1800754, simplify the testcase a bit and document

that some ranges are optional for reproducing the issue.

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

(test_rangelist_merge_overlap): Use the private rangelist api directly.

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

(test_rangelist_merge_overlap): Use C89 style comment.

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

(test_rangelist_merge_overlap): Improve C89 compatibility by moving

declaration of variable.

Add regression test for issue #4686, a specific mergeinfo merge that fails.

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

(test_rangelist_merge_overlap): New function.

(test_funcs): Add test_rangelist_merge_overlap as XFail.

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

(verify_mergeinfo_parse): Rewrite conditional to avoid a GCC 5

warning "logical not is only applied to the left hand side of

comparison". It also makes more sense to compare the svn_revnum_t

directly to another integer.

Fix issue #4537 "mergeinfo parsing inconsistency: empty path". When parsing

merginfo, allow the source path to be the empty string, for consistency.

This check was added in r868625. Since r1182771, all other non-canonical

paths have been allowed and canonicalized by the parser for issue 4032 "Be

graceful on non-canonical paths in mergeinfo".

* subversion/libsvn_subr/mergeinfo.c

(parse_pathname): Don't throw an error if the mergeinfo path is empty.

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

(NBR_MERGEINFO_VALS,

mergeinfo_vals,

mergeinfo_paths,

mergeinfo_ranges): Add an empty-path test case here.

(NBR_BROKEN_MERGEINFO_VALS,

broken_mergeinfo_vals): Remove the empty-path test case 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.
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.
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.
Eliminate shared global variables (not constants) in our C tests by

simply declaring them locally in each tests that needs them.

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

(a, b, c): drop these global variables

(test1,

test2,

test3,

test4,

test5,

test6,

test7,

test8,

test9,

test_find_char_backward,

test13,

test14,

test15,

test16,

test17,

test_first_non_whitespace,

test21,

test_stringbuf_unequal,

test_stringbuf_insert,

test_stringbuf_remove,

test_stringbuf_replace): declare variables locally

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

(info1, info2): drop these global variables

(test_parse_combine_rangeinfo,

test_parse_broken_mergeinfo,,

test_mergeinfo_intersect,

test_merge_mergeinfo,

test_rangelist_to_string,

test_mergeinfo_to_string): declare variables locally

  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.
Use svn_hash_gets/svn_hash_sets, part 1: #include "svn_hash.h" everywhere

that <apr_hash.h> is included. I assume most of those use APR_HASH_KEY_STRING.

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

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/import.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs/fs-loader.c

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

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/conflicts.c

* subversion/mod_dav_svn/deadprops.c

* subversion/mod_dav_svn/merge.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/repos.c

* subversion/svn/props.c

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

(svn_hash.h): Add #include.

  1. … 22 more files in changeset.
Consistify a few remaining redundant or odd expressions involving boolean

constants, such as "foo == FALSE" to "!foo" and "number ? TRUE : FALSE" to

"number != 0". A follow-up to r1431017 and r1431040.

* subversion/include/svn_types.h

(svn_depth_from_word): Simplify "boolean ? TRUE : FALSE".

* subversion/libsvn_subr/named_atomic.c

(svn_named_atomic__is_supported): Same.

* subversion/libsvn_subr/stream.c

(svn_stream_supports_mark): Similar.

* subversion/libsvn_client/copy.c

(try_copy): Simplify "x == TRUE" and similar.

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

(test_rangelist_to_string, test_mergeinfo_to_string): Same.

* subversion/libsvn_ra_serf/commit.c

(open_root): Change "pointer ? TRUE : FALSE" to "pointer != NULL".

* subversion/svnadmin/svnadmin.c

(subcommand_load): Same.

* subversion/mod_dav_svn/reports/replay.c

(dav_svn__replay_report): Change "number ? TRUE : FALSE" to "number != 0".

  1. … 7 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.
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.
Silence conversion warnings by adding explicitly casts

* libsvn_client/patch.c

(readline, seek_to_line): always use svn_linenum_t to compare line nos

* libsvn_diff/diff_memory.c

(datasource_get_next_token): explicitly cast to unsigned as counts are >= 0

* libsvn_subr/adler32.c

(svn__adler32): cast len to 32 bits or whatever zlib supports; we only

call it for buffers < 1MB anyways.

* libsvn_subr/io.c

(stringbuf_from_aprfile): cast to unsigned as file sizes are never negative

* libsvn_subr/spillbuf.c

(read_data): same here for spillbuf sizes

* tests/libsvn_subr/mergeinfo-test.c

(test_merge_mergeinfo): cast count to int to match our internal structs

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

(base_dir_insert_remove): cast up to size_t since we are working with sizes

  1. … 6 more files in changeset.
Expose svn_rangelist__parse() as a private API and use it to simplify some

rangelist tests. This exposes a bug in svn_rangelist_merge() so mark the

test for that as XFAIL.

The bug is that svn_rangelist_merge() doesn't always ensure its output is

minimal, contrary to its doc string. The test was previously parsing the

input data with svn_mergeinfo_parse() instead of svn_rangelist__parse(), and

svn_mergeinfo_parse() condenses the ranges so svn_rangelist_merge() was not

getting the intended non-canonical input.

* subversion/include/private/svn_mergeinfo_private.h,

subversion/libsvn_subr/mergeinfo.c

(svn_rangelist__parse): New function.

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

(test_rangelist_reverse, test_rangelist_intersect, test_remove_rangelist,

test_rangelist_merge, test_rangelist_diff): Use svn_rangelist__parse()

instead of svn_mergeinfo_parse() and so remove "path: " prefixes from

the test data.

(test_funcs): Mark 'test_rangelist_merge' as XFAIL.

  1. … 2 more files in changeset.
* subversion/tests/libsvn_subr/mergeinfo-test.c

(test_merge_mergeinfo): Simplify, and eliminate some bugs in the error

messages, by using an existing function to check the results.

For issue 4032, make the server be graceful on non-canonical paths

in svn:mergeinfo.

* subversion/libsvn_subr/mergeinfo.c

(parse_pathname): Change parameter type, canonicalize the returned path.

(parse_revision_line): Change variable type.

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

(NBR_MERGEINFO_VALS, mergeinfo_vals, mergeinfo_paths,

mergeinfo_ranges): New test cases.

  1. … 1 more file in changeset.
The *rest* of r1181090!

* subversion/libsvn_subr/sorts.c

(svn_sort__array_delete): Don't assume we are only removing one element;

since r1181090 we may remove many.

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

(test_rangelist_merge): Add a test that exercises the above modified block.

  1. … 1 more file in changeset.
Tweak the svn_rangelist_merge2 API so it allocates new svn_merge_range_t

elements only when absolutely necessary.

This addresses a serious inefficiency in memory usage when

svn_mergeinfo_catalog_merge, svn_mergeinfo_merge2, or svn_rangelist_merge2

are called in a loop. Prior to this change svn_rangelist_merge2 could

potentially reallocate *every* range in both rangelists.

For example, the peak working set memory for the reintegrate merge described

here http://svn.haxx.se/dev/archive-2011-09/0254.shtml was 1,324,664 KB

with trunk@1179545. With this commit that drops to 26,880 KB.

* subversion/include/svn_sorts.h

(svn_sort__array_delete): New.

* subversion/libsvn_subr/sorts.c

(svn_sort__array_delete): New, moved here from

subversion/libsvn_client/merge.c:remove_element_from_array.

* subversion/libsvn_client/merge.c

(remove_element_from_array): Remove -- replacing it with

svn_sort__array_delete.

(remove_absent_children,

remove_children_with_deleted_mergeinfo): Replace remove_element_from_array

with svn_sort__array_delete.

* subversion/libsvn_subr/mergeinfo.c

(adjust_remaining_ranges): New.

(svn_rangelist_merge2): We are not creating a new rangelist, so modify

the output rangelist in-place as much as possible. Previously we used

combine_with_lastrange, which happily reallocated most of the ranges

in both rangelists. This is fine for the other callers (i.e.

svn_rangelist_intersect, svn_rangelist_remove, and

svn_mergeinfo__filter_mergeinfo_by_ranges) which are allocating a new

output argument, but not for svn_rangelist_merge2 which is *not*

allocating a new rangelist.

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

(test_rangelist_merge): Add some new test cases to exercise all the code

paths in svn_rangelist_merge2 and adjust_remaining_ranges.

  1. … 4 more files in changeset.
Remove deprecation warnings in various tests. We explicitly allow tests

to use deprecated APIs as a way of spot-testing the backward compat wrappers.

* subversion/tests/libsvn_subr/target-test.c,

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

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

subversion/tests/libsvn_repos/dir-delta-editor.c,

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

Define SVN_DEPRECATED before including any Subversion headers.

  1. … 4 more files in changeset.
Just padding my stats.

(Actually, doing my regular trailing whitespace removal, similar to r875968.)

* everywhere:

for extsn in c h cpp java py pl rb; do

sed -i -e 's/[ \t]*$//' `find . -name "*.$extsn" | xargs grep '[ \t]$' -l`

done

  1. … 166 more files in changeset.
Rework svn_mergeinfo__remove_prefix_from_catalog() so that its output

is more consistent with Subversion path handling/passing semantics.

* subversion/include/private/svn_mergeinfo_private.h

(svn_mergeinfo__remove_prefix_from_catalog): Update docstring to

indicate new stricter (and more useful!) semantics.

* subversion/libsvn_subr/mergeinfo.c

(svn_mergeinfo__remove_prefix_from_catalog): Rename 'prefix' to

'prefix_path', and rework this function's logic to always return

paths relative to the prefix path. (That is, suitable for

path_join'ing back to that prefix path to get the originals.)

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

(struct catalog_bits): New test data structure.

(remove_prefix_helper, test_remove_prefix_from_catalog): New functions.

(test_funcs): Add reference to test_remove_prefix_from_catalog().

  1. … 2 more files in changeset.
Tighten merge-range validation to not allow "change number r0" aka "revision

range -1:Y".

* subversion/libsvn_client/mergeinfo.c

(filter_log_entry_with_rangelist): Ignore revision 0 because that doesn't

represent a mergeable change.

* subversion/libsvn_subr/mergeinfo.c

(IS_VALID_FORWARD_RANGE): New macro.

(get_type_of_intersection): Use IS_VALID_FORWARD_RANGE() for tighter

validation of arguments than before: it previously accepted "change 0".

(range_intersect, range_contains): Validate arguments. Add doc strings.

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

(randomly_fill_rev_array, rev_array_to_rangelist): Expand doc strings.

(test_rangelist_remove_randomly, test_rangelist_intersect_randomly): Don't

ever include change number r0 in a merge range.

  1. … 2 more files in changeset.
Fix a bug where the ordering of arguments to svn_rangelist_intersect can

produce different results.

* subversion/include/svn_mergeinfo.h

(svn_mergeinfo_intersect2):

(svn_rangelist_intersect):

Correct/improve doc strings to reflect long standing behaviors regarding

rangelist intersection and range inheritance.

* subversion/libsvn_subr/mergeinfo.c

(rangelist_intersect_or_remove): Fix bug where the order of arguments

could effect the result when finding an intersection. Address an old

### FIXME by adjusting argument names and comments to apply to either

an intersection or removal (i.e. make them generic).

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

(test_rangelist_intersect): Test that order of rangelists passed to

svn_rangelist_intersect() don't effect the result. Test that the

intersection of two ranges is non-inheritable only when both ranges

are non-inheritable. Lastly, test that ranges of differing inheritance

do not intersect when considering inheritance.

  1. … 2 more files in changeset.
Add "const" to all "apr_array_header_t *" input parameters in public and

private APIs.

(Note that we are allowed to add "const" to a pointer parameter of a public

API, and have done so before, because that is a backward-compatible API

change and doesn't change the ABI at all.)

The public functions whose prototypes are changed are listed individually

below; the private functions are not.

* subversion/include/svn_auth.h

(svn_auth_open)

* subversion/include/svn_client.h

(svn_client_get_commit_log_t,

svn_client_copy5,

svn_client_copy4,

svn_client_move5,

svn_client_patch)

* subversion/include/svn_delta.h

(svn_delta_path_driver,

svn_file_rev_handler_t,

svn_file_rev_handler_old_t)

* subversion/include/svn_fs.h

(svn_fs_change_txn_props)

* subversion/include/svn_mergeinfo.h

(svn_rangelist_diff,

svn_rangelist_merge,

svn_rangelist_remove,

svn_rangelist_intersect,

svn_rangelist_inheritable2,

svn_rangelist_inheritable,

svn_rangelist_dup)

* subversion/include/svn_opt.h

(svn_opt_args_to_target_array3,

svn_opt_args_to_target_array2,

svn_opt_args_to_target_array,

svn_opt_eat_peg_revisions)

* subversion/include/svn_ra.h

(svn_ra_file_rev_handler_t,

svn_ra_get_locations,

svn_ra_plugin_t.get_locations)

* subversion/include/svn_ra_svn.h

(svn_ra_svn_command_handler,

svn_ra_svn_set_capabilities,

svn_ra_svn_parse_tuple,

svn_ra_svn_parse_proplist)

* subversion/include/svn_repos.h

(svn_repos_file_rev_handler_t,

svn_repos_trace_node_locations,

svn_repos_fs_get_mergeinfo,

svn_repos_fs_change_txn_props,

svn_repos_remember_client_capabilities)

* subversion/include/svn_sorts.h

(svn_sort__bsearch_lower_bound)

* subversion/include/svn_string.h

(svn_cstring_match_glob_list)

* subversion/include/svn_wc.h

(svn_wc_get_status_editor3,

svn_wc_get_update_editor4,

svn_wc_get_update_editor3,

svn_wc_get_switch_editor4,

svn_wc_get_switch_editor3,

svn_wc_match_ignore_list)

* subversion/include/private/svn_cmdline_private.h

* subversion/include/private/svn_opt_private.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/client.h

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/mergeinfo.h

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/path_driver.c

* subversion/libsvn_fs_base/reps-strings.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/revs-txns.h

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs/fs-loader.h

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra/ra_loader.h

* subversion/libsvn_ra/wrapper_template.h

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_neon/get_locations.c

* subversion/libsvn_ra_neon/props.c

* subversion/libsvn_ra_neon/ra_neon.h

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/cyrus_auth.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/internal_auth.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_ra_svn/ra_svn.h

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/repos.h

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/svn_string.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/util.c

* subversion/mod_dav_svn/dav_svn.h

* subversion/mod_dav_svn/reports/file-revs.c

* subversion/mod_dav_svn/util.c

* subversion/svn/cl.h

* subversion/svn/props.c

* subversion/svn/switch-cmd.c

* subversion/svn/util.c

* subversion/svndumpfilter/main.c

* subversion/svnserve/serve.c

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

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

  1. … 78 more files in changeset.
Trailing whitespace scrub.

* subversion/libsvn_subr/prompt.c,

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

subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java,

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

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

subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java,

subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java,

subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java,

subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java,

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

subversion/bindings/swig/ruby/test/test_wc.rb,

subversion/bindings/swig/ruby/svn/wc.rb,

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

subversion/tests/cmdline/mergeinfo_tests.py,

subversion/tests/cmdline/log_tests.py,

subversion/tests/cmdline/upgrade_tests.py,

subversion/tests/cmdline/lock_tests.py,

subversion/tests/cmdline/switch_tests.py,

subversion/tests/cmdline/merge_authz_tests.py,

subversion/tests/cmdline/update_tests.py,

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

subversion/tests/cmdline/patch_tests.py,

subversion/tests/cmdline/merge_tests.py,

subversion/tests/cmdline/checkout_tests.py,

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

subversion/libsvn_ra_svn/client.c,

subversion/svn/cl.h,

subversion/svn/notify.c,

subversion/include/svn_io.h,

subversion/include/svn_wc.h,

subversion/include/private/svn_wc_private.h,

subversion/libsvn_wc/util.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db.h,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/workqueue.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_ra_neon/ra_neon.h,

subversion/libsvn_repos/load.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs_fs/fs.h,

build/generator/gen_vcnet_vcproj.py,

build/generator/gen_win.py:

Scrub trailing whitespace.

  1. … 54 more files in changeset.
When producing svn_mergeinfo_t from string representations or vice-versa,

tolerate relative merge source paths, but convert such paths to absolute

paths in the resulting string/mergeinfo.

This addresses the problem we have in our own repository, where issue #3547

converted all the merge source paths in our mergeinfo to relative paths, see

http://mail-archives.apache.org/mod_mbox/subversion-dev/200912.mbox/browser.

* subversion/include/private/svn_mergeinfo_private.h

(svn_mergeinfo__catalog_to_formatted_string,

svn_mergeinfo__to_formatted_string): Document new behavior.

* subversion/include/svn_mergeinfo.h

(svn_mergeinfo_parse,

svn_mergeinfo_to_string): Document new behavior.

(parse_revision_line): If mergeinfo has merge source paths that differ

only by a leading slash, combine them.

* subversion/libsvn_subr/mergeinfo.c

(parse_pathname,

mergeinfo_to_stringbuf): Convert relative paths to absolute.

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

(const mergeinfo_paths): Mergeinfo produced by svn_mergeinfo_parse() now

expects absolute merge source paths, even when the input was relative.

(test_mergeinfo_to_string): Expand test to cover new expected behavior

when converting svn_mergeinfo_t to a string representation.

  1. … 3 more files in changeset.