Checkout Tools
  • last updated 6 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Introduce a warning callback to the authz file parser API.

We need this to warn about the use of empty groups in authz files;

this is not an error and doesn't affect the authz file semantics,

but it's nice to be able to tell the user about it.

See issues #4794, #4802 and #4803.

* subversion/include/svn_repos.h

(svn_repos_authz_warning_func_t): New callback function type.

(svn_repos_authz_read4): New; API revision.

(svn_repos_authz_read3): Deprecated.

(svn_repos_authz_parse2): New; API revision.

(svn_repos_authz_parse): Deprecated.

* subversion/libsvn_repos/authz.h

(svn_authz__parse): Add warning function and baton parameters.

* subversion/libsvn_repos/authz.c

(authz_read): Add warning function and baton parameters.

Update calls to svn_authz__parse.

(svn_repos_authz_read4): Revised from svn_repos_authz_read3.

(svn_repos_authz_parse2): Revised from svn_repos_authz_parse.

* subversion/libsvn_repos/authz_parse.c

(struct ctor_baton_t): Add members warning_func and warning_baton.

(create_ctor_baton): Initialise these new members of the constructor baton.

(emit_parser_warning): New.

(SVN_AUTHZ_PARSE_WARN): New; wrapper macro for the above.

(array_insert_ace): Ignore and warn about the use of empty groups.

(svn_authz__parse): Update implementation to match prototype.

* subversion/libsvn_repos/deprecated.c

(svn_repos_authz_read3, svn_repos_authz_parse): Implement deprecated functions.

* subversion/mod_authz_svn/mod_authz_svn.c

(log_svn_message): New; replaces log_svn_error so that it's useful for

logging warnings as well.

(log_svn_error): Reimplement, calling log_svn_message.

(struct authz_warning_baton_t): New.

(log_authz_warning): New.

(get_access_conf): Set up an authz warning handler and baton, and call

svn_repos_authz_read4 instead of svn_repos_authz_read3.

* subversion/svnserve/logger.h

(logger__log_error): Make the 'err' parameter a pointer-to-const.

Update the docstring to say that the error is not cleared.

(logger__log_warning): New.

* subversion/svnserve/logger.c

(log_message): New; common base for logger__log_error and logger__log_message.

Also *do not* allocate 8k on the stack, use the logger pool, which gets

cleared at the end of the function.

(logger__log_error): Reimplement.

(logger__log_warning): Implement.

* subversion/svnserve/serve.c

(log_error): Make the error parameter const. Fix the docstring.

(log_warning): New.

(load_authz_config): Add warning function and baton parameters and fix pool

handling. Now calls svn_repos_authz_read4 instead of svn_repos_authz_read3.

(find_repos): Add warning function and baton parameters for load_authz_config.

(handle_authz_warning): New.

(construct_server_baton): Pass an authz warning handler and baton to find_repos.

* subversion/tests/cmdline/

(group_member_empty_string): Fix docstring.

(empty_group): New test case.

(test_list): Run it.

* subversion/tests/cmdline/

(svnauthz_empty_group_test): Extend the @Issues decorator.

Add a check for the expected warning on stderr.

  1. … 12 more files in changeset.
* subversion/tests/libsvn_repos/authz-test.c

(reposful_reposless_stanzas_inherit): New regression test.

I've manually verified that `svnauthz accessof --repository project1 --path

/foo --username user1 --recursive ./bar` outputs 'rw' in 1.9 and 'no' in trunk,

where 'bar' contains the value of the newly-added variable 'rules'.

Reported by: Michael Ruder


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

(issue_4741_groups): New, regression test for issue 4741.

(test_funcs): Add new test.

Fix pattern-matching of the top level path in a listing with search.

svn list -v PATH --search=PATTERN

The output for the top level PATH will now be included when a

PATTERN matches the last component of its path-within-repository,

or the empty string for the repository root path. This is consistent with

matching all other paths in the listing.

Until now, and since the feature was introduced in r1767186, the top

level path was reported only when a pattern matched the entire

path-within-repository, starting with "/", of PATH's *parent* directory.

For example,

svn ls -v ^/subversion/trunk/README --search=PATTERN

reported the top-level path only if PATTERN matched


Note that "-v" is specified in these examples because otherwise "svn"

omits the top-level path when it is a directory.

* subversion/libsvn_client/list.c

(list_internal): Match the basename, not the dirname, of the top level


* subversion/libsvn_repos/list.c

(svn_repos_list): Same.

* subversion/tests/cmdline/

(filtered_ls): Extend to test both server- and client-side code paths.

(filtered_ls_top_level_path): New test.

(test_list): Run it.

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

(test_list): Expect the top level path also to match.

  1. … 3 more files in changeset.
Don't ignore error returns.

c: [skip]

Found by: danielsh

using tools/dev/

  1. … 6 more files in changeset.
Issue SVN-4729: Add '--include' and '--exclude' options to 'svnadmin dump'.

* include/svn_repos.h

(svn_repos_dump_filter_func_t): New.

(svn_repos_dump_fs4): Update function signature and comment.

(svn_repos_dump_fs3): Update comment.

* libsvn_repos/deprecated.c

(svn_repos_dump_fs3): Update caller.

* libsvn_repos/dump.c

(write_revision_record): Call to svn_repos_fs_revision_proplist() (with

AUTHZ_FUNC) instead of svn_fs_revision_proplist2() to filter revision

properties as well as revisions. Update comment.


dump_filter_authz_func): New.

(svn_repos_dump_fs4): Initialize and pass AUTHZ_FUNC and AUTHZ_BATON to

the repos layer API if FILTER_FUNC is specified by caller.

* subversion/svnadmin/svnadmin.c

(svnadmin__cmdline_options_t): Add enum values for new options.

(options_table): Add new options.

(cmd_table): Add new options to 'dump' subcommand.

(svnadmin_opt_state): Add new fields to represent new options.

(ary_prefix_match): New. Copied from svndumpfilter.


dump_filter_func): New.

(subcommand_dump): Initialize FILTER_BATON. Pass DUMP_FILTER_FUNC and a

pointer to FILTER_BATON to svn_repos_dump_fs() if any filtering prefixes


(sub_main): Handle new options.

* subversion/tests/cmdline/








dump_invalid_filtering_option): New.

(test_list): Add new tests to table.

* subversion/tests/libsvn_repos/dump-load-test.c

(test_dump_bad_props): Update caller.

Patch by: sergey.raevskiy{_AT_}

  1. … 5 more files in changeset.
svnadmin: Introduce the `--normalize-props` option for the load and

load-revprops commands.

Currently, the only performed normalization is the automatic translation

of non-LF line endings in the svn: property values. Apparently, this is

a common issue reported by our users, as Subversion versions prior to 1.6

allowed such values for properties like svn:log and so they can be present

in the dump files. The behavior before this changeset is that a user can

either force loading the dump with such invalid properties using the

--bypass-prop-validation (that affects reading them in the future),

manually repair the dump file or use a tool like svnsync that performs

the property normalization. It would be better if the users had an option

to fix this right in the svnadmin load command.

See also the corresponding FAQ entry and related issues that have been

fixed in svnsync and svnrdump:

* subversion/include/svn_repos.h

(svn_repos_load_fs6): New version of svn_repos_load_fs5() accepting the

new `normalize_props` argument.

(svn_repos_load_fs5): Deprecate.

(svn_repos_load_fs_revprops): Accept the new `normalize_props` argument.

(svn_repos_get_fs_build_parser6): New version of

svn_repos_get_fs_build_parser5() accepting the new `normalize_props`


* subversion/include/private/svn_repos_private.h

(svn_repos__normalize_prop): New private helper. The `normalized_p`

argument will be currently unused by all calling sites, but it's added

as the groundwork to simplify implementing the notifications about

normalized properties in the future.

* subversion/libsvn_repos/deprecated.c

(svn_repos_load_fs5, svn_repos_get_fs_build_parser5): Implement by

forwarding to the new versions of these functions.

* subversion/libsvn_repos/fs-wrap.c

(): Include svn_subst.h.

(svn_repos__normalize_prop): Implement this new helper function.

The implementation is close to how svn_rdump__normalize_prop() is

written, but this function accepts two pools and handles the new

`normalized_p` output argument.

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

(struct parse_baton): Add new `normalize_props` field.

(change_rev_prop): Accept new `normalize_props` argument, call the

new helper function if it's set.

(close_revision): Normalize the revision properties if necessary.

(svn_repos_get_fs_build_parser6): New, replacing ...

(svn_repos_get_fs_build_parser5): ...this function.

(svn_repos_load_fs6): New, replacing ...

(svn_repos_load_fs5): ...this function.

(revprops_close_revision): Update call to change_rev_prop().

(build_revprop_parser): Accept new `normalize_props` argument, use it

to initialize the new field in the parse_baton.

(svn_repos_load_fs_revprops): Handle the new `normalize_props` argument

by forwarding it to build_revprop_parser().

* subversion/svnadmin/svnadmin.c

(svnadmin__cmdline_options_t, options_table): Add svnadmin__normalize_props.

(cmd_table): Enable the new option for load and load-revprops commands.

(struct svnadmin_opt_state): Add new `normalize_props` field and ...

(sub_main): ...initialize it here.

(subcommand_load, subcommand_load_revprops): Normalize properties when

running with --normalize-props. Use separate hints when encountering

invalid properties with non-LF line endings and all other kinds of

invalid properties.

* subversion/svnrdump/svnrdump.h

(svn_rdump__normalize_prop): Remove this declaration. This function is

now superseded by the new svn_repos__normalize_prop() helper.

* subversion/svnrdump/util.c

(): Include svn_repos_private.h, drop other includes.

(svn_rdump__normalize_prop): Remove. This function is now superseded

by the new svn_repos__normalize_prop() helper.

(svn_rdump__normalize_props): Use the new svn_repos__normalize_prop()

helper function.

* subversion/svnrdump/load_editor.c

(set_revision_property, set_node_property): Use the new

svn_repos__normalize_prop() helper function.

* subversion/tests/libsvn_repos/dump-load-test.c

(test_load_bad_props): Use the new svn_repos_load_fs6() function, keep

the previous behavior unchanged, i.e., do not normalize the properties.

* subversion/tests/cmdline/svntest/

(run_and_verify_load, load_repo): Accept new `normalize_props` argument.

* subversion/tests/cmdline/

(load_bad_props): Test loading with --normalize-props. Check for the error

codes reported during load with non-LF line endings and without the new

option. In cases when the load is successful, check the resulting

svn:log property value in the repository.

* tools/client-side/bash-completion

(_svnadmin): Extend completion info.

  1. … 12 more files in changeset.
* subversion/tests/libsvn_repos: Add 'authz-test' to ignore list.

Merging branches/authzperf to /trunk and remove BRANCH-README.
  1. … 32 more files in changeset.
Make the new svn_repos_list easier to use with typical client requests.

Instead of a single pattern, accept an array of alternative patterns of

which at least one must match if any patterns are given. Sort the output

by path to make it match the client-side implementation's output order.

* subversion/include/svn_repos.h

(svn_repos_list): We now support multiple glob patterns and sort the


* subversion/libsvn_repos/list.c

(matches_any): New utility function for matching against an array

instead of a single pattern.

(report_dirent): For efficiency reasons, we now filter early before

calling this reporter function.


compare_filtered_dirent): New filtering and sorting support.

(do_list): Support multiple PATTERNS. Filter and sort the data before

processing it further.

(svn_repos_list): Update signature, filtering and passing of parameters.

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

(test_list): Adapt test case to interface change.

  1. … 2 more files in changeset.
Introduce a "directory list" operation at the repos layer. This is the

first step towards an efficient implementation of 'svn list -r'.

The function is straight-forward with support for operation depth and

authz. One important use-case is "find files". To support this with

minimal system load, the function allows to specify a glob pattern for

the file name and has an option to only report path and node type.

* subversion/include/svn_repos.h


svn_repos_list): The new API.

* subversion/libsvn_repos/list.c

(*): New file implementing the new API. Noteworthy:

(fill_dirent): Factored out from ...

(svn_repos_stat): ... this, which has been moved here from repos.c

* subversion/libsvn_repos/repos.c

(svn_repos_stat): Move from here to list.c due to shared code.

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

(test_list): Simple test-case for the new function.

(test_funcs): Register new test.

  1. … 3 more files in changeset.
Don't leave *conflict_p uninitialized if svn_repos_fs_commit_txn() fails

before calling the FS layer.

This function gives the same promises as svn_fs_commit_txn(), which always

sets the conflict variable to either NULL, or to a valid conflict string.

Make sure that we fulfil this contract even if the commit preparation fails

— e.g., when calling pre-commit hook or removing ephemeral txnprops.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_commit_txn): Start from setting *conflict_p to NULL.

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

(commit_aborted_txn, test_funcs): Add a test for this behavior.

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

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

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

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

(plain_0_length, write_format, test_config_pool): Call

svn_io_atomic_write2() with FLUSH_TO_DISK=FALSE.

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

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

svn_io_write_atomic() was flushing data to disk unconditionally.

* subversion/include/svn_io.h

(svn_io_write_atomic2): New function declaration.

(svn_io_write_atomic): Deprecate.

* subversion/libsvn_subr/io.c

(svn_io_write_atomic2): Revv from svn_io_write_atomic() Add FLUSH_TO_DISK

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

* subversion/libsvn_subr/deprecated.c

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

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_wc/workqueue.c

* subversion/mod_dav_svn/activity.c

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

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

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

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


  1. … 13 more files in changeset.
* subversion/tests/libsvn_repos/repos-test.c

(includes): Add svn_sorts.h and svn_dep_compat.h.

(MAX,MIN): Remove unneeded defines.

Follow up on r1696166: More sizeof changes when using APR hashes.

* subversion/svndumpfilter/svndumpfilter.c


adjust_mergeinfo): Take the key size from the key variable.

* subversion/svnrdump/load_editor.c

(set_revision_mapping): Same.

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


test_get_file_revs): Same.

  1. … 2 more files in changeset.
When accessing an APR hash with a non-string key, take the key size from

the key variable instead of its type. This makes the code more robust in

case we want to change the key type in the future.

* subversion/libsvn_client/ra.c

(repos_locations): Take the key size from the key variable.

* subversion/libsvn_repos/log.c

(do_logs): Same.

* subversion/mod_dav_svn/repos.c

(parse_querystring): Same.

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



set_expected): Same.

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

(open_file): Same.

  1. … 4 more files in changeset.
Implement the new 'svnadmin dump-revprops' sub-command.

The implementation uses a bumped version of svn_repos_dump_fs that can now

be told what kind of information to include in the dump. These new flags

are "positive" and non-restrictive, e.g. INCLUDE_REVPROPS instead of

REVPROPS_ONLY. That way, future revisions may easily extend this scheme.

* subversion/include/svn_repos.h

(svn_repos_dump_fs4): Declared API revision.

(svn_repos_dump_fs3): Deprecate the old one.

* subversion/libsvn_repos/dump.c

(write_revision_record): Make dumping revprops an option.

(svn_repos_dump_fs3): Replaced by ...

(svn_repos_dump_fs4): ... the new API revision. Dump contents depending on

the two new flag parameters.

* subversion/libsvn_repos/deprecated.c

(svn_repos_dump_fs3): Implement here now as forwarding to the latest API.

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

(dump): Call latest API version.

* subversion/tests/libsvn_repos/dump-load-test.c

(test_dump_bad_props): Same.

* subversion/svnadmin/svnadmin.c

(svn_opt_subcommand_t): Declare new sub-command.

(cmd_table): Define its UI.

(get_dump_range): Factored out from ...

(subcommand_dump): ... this.

(subcommand_dump_revprops): Implement new sub-command. Code taken from


  1. … 5 more files in changeset.
Fix CVE-2015-3187: Adjust when svn_repos_trace_node_locations() makes the authz checks.

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_trace_node_locations): Check authz later.

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

(struct authz_read_baton_t): New.

(mkdir_delete_copy, authz_read_func, verify_locations,

set_expected): New helpers.

(trace_node_locations_authz): New test.

(test_funcs): Add new test.

* subversion/tests/cmdline/

(authz_log_and_tracing_test): Expect different error for cat, and

different behaviour for diff.

  1. … 2 more files in changeset.
Fix SEGV in libsvn_repos due to legacy lock API when executing

pre-commit hook.

* subversion/subversion/libsvn_repos/hooks.c

(lock_token_content): Add special handling for 'magic' value

((const char *) 1).

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

(deprecated_access_context_api): New.

(test_funcs): Add new test.

Patch by: sergey.raevskiy{_AT_}


  1. … 1 more file in changeset.
Fix the 'svnadmin load' part of issue #4476 "Mergeinfo containing r0 makes

svnsync and svnadmin dump fail".

Make 'svnadmin load' accept mergeinfo containing r0 (with a warning) if the

option to validate properties is not enabled. In that case that mergeinfo

property will not be adjusted for revision numbers or paths. Add a test.

* subversion/include/svn_repos.h

(svn_repos_notify_warning_t): Add a new value for invalid mergeinfo.

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

(adjust_mergeinfo_property): New, factored out of ...

(set_node_property): ... here. If adjusting the mergeinfo fails, return an

error if validating properties, or give a warning and use the invalid

value otherwise.

* subversion/tests/libsvn_repos/dump-load-test.c

(test_dump_bad_props): New, factored out of...

(test_dump_r0_mergeinfo): ... here.



test_load_r0_mergeinfo): New.

(test_funcs): Add the new test.

  1. … 2 more files in changeset.
Adjust a repository layer test to properly abort each failed commit, to obey

the editor driving rules.

This test was working fine by itself but made too many assumptions, and so

would fail when introducing editor 'shims' into the commit editor code path,

as is typically done when testing Ev2 (or Ev3) code. That's how I found the

problem, while working on the 'move-tracking-2' branch.

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

(fwcc_prepare): New, extracted from ...

(filename_with_control_chars): ... here. Start up and tear down each

failed editor drive separately instead af assuming that the expected

failure would be reported immediately and that the editor would still be

usable after the failure.

* subversion/tests/libsvn_repos/dump-load-test.c

(test_dump_r0_mergeinfo): Fix typo in comment.

Fix fallout from r1537147 and other revision which involved changes to

the way the --srcdir option is handled in the C tests.

Originally, this option was used only by config-test.c and was required,

ie. the test failed if the option wasn't given (i.e. opt.srcdir == NULL).

Since r1537147 these tests would crash if no --srcdir option was given.

Some tests in checksum-test.c and repos-test.c have since started using

the value of --srcdir, also without checking for NULL.

Add a new helper function svn_test_get_srcdir() for these tests, which

falls back to the current working directory if --srcdir isn't given.

This allows tests to pass if invoked from within their directory:

cd subversion/tests/libsvn_subr && ./config-test

The test runner has always been passing --srcdir to C tests, so the

standard 'make check' procedure wasn't affected by this problem.

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

(test_config_pool): Use svn_test_get_srcdir().

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

(zlib_expansion_test): Use svn_test_get_srcdir().

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

(get_config_file_path): New helper function which uses

svn_test_get_srcdir() to build the test configuration file's path.

(test_text_retrieval, test_boolean_retrieval,

test_has_section_case_insensitive, test_has_section_case_sensitive,

test_has_option_case_sensitive, test_stream_interface,

test_read_only_mode): Use get_config_file_path().

* subversion/tests/svn_test.h

(svn_test_get_srcdir): Declare.

* subversion/tests/svn_test_main.c

(svn_test_get_srcdir): New helper function to obtain the value of

the --srcdir option.

  1. … 4 more files in changeset.
Follow-up to r1589048:

Fix deprecation warnings by (trivally) updating callers.

* subversion/libsvn_ra_local/split_url.c

(svn_ra_local__split_URL): Upgrade call to latest API; no separate

scratch pool available.

* subversion/tests/libsvn_repos/dump-load-test.c

(test_dump_r0_mergeinfo): Tests need no extra flags for txn control.

Trivially upgrade call to latest API.

  1. … 1 more file in changeset.
* subversion/tests/libsvn_repos

(svn:ignore): Ignore dump-load-test binary.

Follow-up to r1589048: update callers of deprecated svn_repos_open2().

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/config_pool.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

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

* subversion/tests/svn_test_fs.c

* tools/server-side/svn-populate-node-origins-index.c

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

* tools/server-side/svnauthz.c

(authz_retrieve_config_repo, find_repos_config, open_repos,

get_ctxt_baton, test_repos_fs_type, svn_test__create_repos,

build_index, process, get_authz_from_txn): Use svn_repos_open3()

instead of svn_repos_open2().

  1. … 8 more files in changeset.
Create a new test file for dump/load tests in the libsvn_repos test suite.

The all-in-one 'repos-test.c' file has grown rather large and I added the

first dump/load-related test to it only recently and I want to add more.

* build.conf

(dump-load-test): New section.

(__ALL_TESTS__): Add 'dump-load-test'.

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

(test_funcs): Remove 'test_dump_r0_mergeinfo'.

(dump_r0_mergeinfo_notifier, test_dump_r0_mergeinfo): Move to ...

* subversion/tests/libsvn_repos/dump-load-test.c

... this new file.

  1. … 1 more file in changeset.
Simplify svn_object_pool__t code: Support shared objects only and use

standard APR memory pool handling.

We simply provide ref-counted objects allocated through from a sub-pool

of some user-provided memory pool. References returned will no longer

survive the cleanup of that user-provided container pool. Unused objects

may still be kept but the specifics are now an implementation detail.

* subversion/include/private/svn_object_pool.h

(svn_object_pool__create): Non-sharable objects are no longer supported

and caching policies are hidden now.

(svn_object_pool__pool): Replaced by ...

(svn_object_pool__new_wrapper_pool): ... this one; directly returning a

new sub-pool that may be used to

hold a new object instance.

(svn_object_pool__count): Update docstring.

* subversion/libsvn_subr/object_pool.c

(object_ref_t): Since all objects can be shared, there is no need to

chain multiple instances.

(svn_object_pool__t): We only keep two atomic counters for bookkeeping.

There is only a standard pool now and no user-

defined caching parameters.

(destroy_object_pool): Drop as no specific destruction code is needed.

(object_pool_cleanup): Do standard cleanup now and only verify correct

reference lifetimes.

(root_object_pool_cleanup): No longer needed with standard pool handling.

(remove_unused_objects): Update removal logic. Also, we don't need to

the APR hash as it's implementation ensures that

adding & removing entries does not make memory

consumption to go up.

(exit_on_error): No longer needed with standard pool cleanup.

(object_ref_cleanup): Re-implement. Still keep the actual object around

but notify the container that there are unused

objects that can be cleaned up at its discretion.

(add_object_ref): Update only the counters that we still have.

(insert): Adapt to simplified model and keep it consistent even in case

of an error. Implement caching / lazy object cleanup here.

(svn_object_pool__create): Update to simplified data model and standard

memory pool usage.

(svn_object_pool__pool): Replace by ...

(svn_object_pool__new_wrapper_pool): ... this.

(svn_object_pool__count): Adapt to struct changes.

* subversion/include/private/svn_repos_private.h




svn_repos__authz_pool_get): Update docstrings to reflect the changed

object / pool lifetime restrictions.

* subversion/libsvn_repos/authz_pool.c

(svn_repos__authz_pool_create): Adapt to changed API and put the container

into the POOL provided by the user.

(svn_repos__authz_pool_get): Adapt to changed API.

* subversion/libsvn_repos/config_pool.c

(auto_parse): Ditto

(svn_repos__config_pool_create): Same. Also, put the container into the

POOL provided by the user.

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

(test_config_pool): References must not live longer than the container

anymore. Thus, remove this part of the test case.

  1. … 5 more files 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.