Checkout Tools
  • last updated 6 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Introduce 'svnadmin build-repcache' command.

Implement the 'svnadmin build-repcache' CLI and add an ioctl API for building

the representation cache.

The implementation iterates over revisions in the specified range and recursively

processes the changed nodes, starting from the corresponding revision roots.

For each changed node, it ensures that its data and property representations

exist in the rep-cache. The nodes are processed in the same order as when

committing a transaction (see write_final_rev() function in libsvn_fs_fs/transaction.c),

so that the rep-cache.db files are fully consistent.

* subversion/svnadmin/svnadmin.c

(cmd_table): Add and document the 'build-repcache' command.



build_rep_cache_progress_func): New.

* subversion/include/svn_error_codes.h



* subversion/include/private/svn_fs_fs_private.h



* subversion/libsvn_fs_fs/fs.c

(fs_ioctl): Handle SVN_FS_FS__IOCTL_BUILD_REP_CACHE.

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs_fs/fs_fs.c

(): Include 'low_level.h'.



ensure_representation_sha1): New. Iterate over revisions and recursively

process the changed nodes. For each changed node, ensure that its data

and property representations exist in the rep-cache.

* subversion/tests/cmdline/

(build_repcache): New test.

(test_list): Add the new test.

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

(): Include 'libsvn_fs_fs/rep-cache.h' and 'libsvn_fs/fs-loader.h'.

(build_rep_cache): New test.

(test_funcs): Add the new test.

* tools/client-side/bash_completion

(_svnadmin): Add the 'build-repcache' command.

Patch by: Denis Kovalchuk <>

  1. … 8 more files in changeset.
* everywhere: Run tools/dev/ to remove

trailing whitespace before we branch 1.14.

  1. … 105 more files in changeset.
Fix test failures seen on 32-bit architectures (Fedora Raw Hide, both

i686 and armv7hl) when building with GCC 10 snapshots.

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

(get_rev_contents): Avoid signed integer overflow on platforms with

32-bit long.

Reimplement fsfs private operations required by `svnfsfs` (stats, dump index,

load index) as "ioctls".

Technically we achieve this by introducing the new svn_fs_ioctl() API that

adds a generic way of performing backend-specific I/O operations.

This change serves two purposes:

- It allows us to properly expose FS-specific details and invoke FS-specific

operations everywhere without necessarily promoting them into a proper

public API (the ioctl code itself may be made either public or private,

depending on the requirements).

- It solves a potential dependency/linking problem where tools like `svnfsfs`

work through the libsvn_fs's loader, but also have to load and call private

APIs from libsvn_fs_fs thus ignoring the loader. The latter part may

potentially cause issues with the global shared state, etc. With the

patch, all such operations always go through the FS loader.

* subversion/include/svn_fs.h

(svn_fs_ioctl, SVN_FS_DECLARE_IOCTL_CODE, svn_fs_ioctl_code_t): New.

* subversion/include/svn_error_codes.h


* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__get_stats, svn_fs_fs__dump_index, svn_fs_fs__load_index):

These functions are now implemented as...


SVN_FS_FS__IOCTL_LOAD_INDEX): ...these new ioctls, which ...

(svn_fs_fs__ioctl_get_stats_input_t, svn_fs_fs__ioctl_get_stats_output_t,

svn_fs_fs__ioctl_dump_index_input_t, svn_fs_fs__ioctl_load_index_input_t):

...use these new structures.

* subversion/libsvn_fs/fs-loader.h

(fs_library_vtable_t.ioctl, fs_vtable_t.ioctl): New vtable members.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_ioctl): Implement the new API by forwarding it to an appropriate

vtable member.

* subversion/libsvn_fs_fs/fs_fs.h

(svn_fs_fs__get_stats, svn_fs_fs__dump_index, svn_fs_fs__load_index):

These functions are now declared here.

* subversion/libsvn_fs_fs/fs.c

(): Include `svn_fs_fs_private.h`.

(fs_ioctl): Implement the ioctl dispatcher for three current fsfs-specific


(fs_vtable): Initialize the `ioctl` field.

(library_vtable): Initialize the `ioctl` field to NULL.

* subversion/libsvn_fs_fs/dump-index.c,



(): Tweak includes.

* subversion/libsvn_fs_base/fs.c

(library_vtable, fs_vtable): Initialize the `ioctl` field to NULL.

* subversion/libsvn_fs_x/fs.c

(library_vtable, fs_vtable): Initialize the `ioctl` field to NULL.

* subversion/svnfsfs/dump-index-cmd.c

(dump_index): Invoke an appropriate svn_fs_ioctl().

* subversion/svnfsfs/load-index-cmd.c

(load_index): Invoke an appropriate svn_fs_ioctl().

* subversion/svnfsfs/stats-cmd.c

(subcommand__stats): Invoke an appropriate svn_fs_ioctl().

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

(test_unrecognized_ioctl): New test.

(test_funcs): Run the new test.

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

(get_repo_stats, dump_index, load_index): Switch to svn_fs_ioctl().

* build.conf

(svnfsfs, fs-fs-private-test): Don't link to libsvn_fs_fs.

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

c: [skip]

Found by: danielsh

using tools/dev/

  1. … 7 more files in changeset.
Make the fsfs stats test work properly with LZ4 compression.

One of the expectations has been that for our test Greek Tree repository,

the on-disk size of the directory representations should be _more_ than

their actual size (due to the overheads associated with serializing them

on the disk).

This assumption is quite sensitive to the used compression algorithm.

For example, the actual size of the directory representations is 618 bytes.

Assuming directory deltification is enabled, with zlib compression the size

is 708 bytes (more than actual), but with LZ4 compression it's 571 bytes,

and that is less than the actual size. While I think that such result can

be explained just by the fact that the compression algorithms are just

different, the test should take that into account.

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

(verify_representation_stats): Expect sane relation between the packed

and the actual sizes, but don't assume that the packed size will

_always_ exceed the actual size.

Add a test case for issue #4658.

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

(large_delta_against_plain): New test.

(test_funcs): Register new test.

Docstring fixes. No functional change.

* subversion/libsvn_fs_fs/pack.c

(pack_context_t): Fix the wording in the docstring.

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

(aligned_seek_test): Same.

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

(recover_fully_packed): Fix typo.

  1. … 2 more files in changeset.
Make FSFS packing with restricted memory testable and add a test for it.

We basically expose the MAX_MEM parameter used internally at our private

FSFS API level and call that in the test. We could also expose it in the

public FS API but that doesn't seem to be necessary ATM.

* subversion/libsvn_fs_fs/pack.h

(svn_fs_fs__pack): Add optional MAX_MEM parameter.

* subversion/libsvn_fs_fs/pack.c


pack_shard): Take the MAX_MEM parameter from the baton now.

(svn_fs_fs__pack): Pass the optional parameter on to the baton.

* subversion/libsvn_fs_fs/fs.c

(fs_pack): Update caller.

* subversion/libsvn_fs_fs/tree.c

(svn_fs_fs__commit_txn): Same.

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

(create_non_packed_filesystem): Extract this new utility function out

from ...

(create_packed_filesystem): ... this.

(pack_with_limited_memory): New test.

(test_funcs): Register the new test.

  1. … 4 more files in changeset.
* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

(compare_0_length_rep): Fix the list of test filenames.

Add runtime configuration option to enable FSFS node properties caching

without enabling full-texts caching.

* subversion/include/svn_fs.h


* subversion/libsvn_fs_fs/caching.c

(read_config): Parse SVN_FS_CONFIG_FSFS_CACHE_NODEPROPS FS config flag.

(svn_fs_fs__initialize_caches): Enable node properties caching if needed.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn__get_nodeprop_cache_flag): New.

* subversion/mod_dav_svn/mod_dav_svn.c

(dir_conf_t): Add NODEPROP_CACHE member.

(merge_dir_config): Merge NODEPROP_CACHE setting.

(SVNCacheNodeProps_cmd): New.

(dav_svn__get_nodeprop_cache_flag): New.

(cmds): Add SVNCacheNodeProps directive.

* subversion/mod_dav_svn/repos.c

(get_resource): Pass node properties caching setting to svn_repos_open3().

* subversion/svnadmin/svnadmin.c

(open_repos): Enable node properties caching to match Subversion 1.9.0


* subversion/svnserve/svnserve.c


(svnserve__options): Add '--cache-nodeprops' command line parameter.

(sub_main): Handle '--cache-nodeprops' command line parameter.

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

(fuzzing_1_byte_1_rev): Enable node properties caching to match

Subversion 1.9.0 behavior.

  1. … 7 more files in changeset.
Follow-up to 1717869: Second attempt to fix the compile error with VC .

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

(compare_0_length_rep): When in doubt, use macros.

Follow-up to 1717869: Try to fix the compile error with VC .

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

(compare_0_length_rep): Add few more 'const's into the mix.

Add a test for why r1712927 was wrong.

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

(compare_0_length_rep): New test case.

(test_funcs): Register new test.

Teach 'svnfsfs stats' to show the average lengths of the representation

delta chains.

We build that info as we go: The chain length is the chain length of the

base representation we deltify against + 1. For log. addressed repositories,

we want to keep the single pass process in place. Therefore, we collect the

delta chain references and only after the whole rev / pack file was read,

will we set the counters.

Once at it, also determine and store the correct rep header size for phys.

addressed reps.

* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__representation_stats_t): Add the field to hold the sum of the

lengths of the delta chains.

* subversion/libsvn_fs_fs/stats.c

(rep_stats_t): Add field to hold the delta chain length.

(rep_ref_t): New temporary data structure.

(parse_representation): Set the chain length for phys. addressed reps.


resolve_representation_refs): New functions to do the same for log.

addressed reps as a post-scan step.

(read_log_rev_or_packfile): Scan the file for reps as well and collect

the delta chain links. Call the above to

update the rep info afterwards.

(add_rep_stats): One more field to process in the aggregator.

* subversion/svnfsfs/stats-cmd.c


print_stats): Print the average delta chain lengths for these sections.

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

(verify_representation_stats): Have some check on the new data as well.

* subversion/tests/cmdline/

(test_stats): Update expected output pattern.

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

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

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

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

(plain_0_length, write_format, test_config_pool): Call

svn_io_atomic_write2() with FLUSH_TO_DISK=FALSE.

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

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

svn_io_write_atomic() was flushing data to disk unconditionally.

* subversion/include/svn_io.h

(svn_io_write_atomic2): New function declaration.

(svn_io_write_atomic): Deprecate.

* subversion/libsvn_subr/io.c

(svn_io_write_atomic2): Revv from svn_io_write_atomic() Add FLUSH_TO_DISK

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

* subversion/libsvn_subr/deprecated.c

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

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/util.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_wc/workqueue.c

* subversion/mod_dav_svn/activity.c

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

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

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

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


  1. … 13 more files in changeset.
Make 'svnfsfs load-index' more convenient to use in case the revision

footer is corrupted or missing. Also, as long as the footer is valid,

make sure the new index actually covers all revision contents.

* subversion/libsvn_fs_fs/load-index.c

(get_max_covered): New utility function.

(svn_fs_fs__load_index): In case of a footer parser error, truncate

the rev file where the coverage of new index

data ends. Otherwise, require the coverage

to be the same as the old index coverage.

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

(load_index): Update test to pass the stricter internal checks.

  1. … 1 more file in changeset.
Reimplement svn_repos_verify_fs3() to support an arbitrary callback that

receives the information about an encountered problem and lets the caller

decide on what happens next. This supersedes the keep_going argument for

this API. A callback is optional; the behavior of this API if the callback

is not provided is equivalent to how svn_repos_verify_fs2() deals with

encountered errors. This allows seamless migration to the new API, if the

callback is not necessary. The idea is partly taken from how our existing

svn_fs_lock_many() API works with a svn_fs_lock_callback_t and passes error

information to the caller.

Immediately use the new API to provide an alternative solution for the

encountered problem with 'svnadmin verify --keep-going -q' (see r1684940)

being useless in terms that it was only giving an indication of whether a

particular repository passes the verification or not, without providing a

root cause (details) of what's wrong.

Discussion can be found in

(Subject: "Possible incompatibility of svn_repos_verify_fs2() in 1.9.0-rc1")

* subversion/include/svn_error_codes.h

(SVN_ERR_REPOS_VERIFY_FAILED): Remove this error code, as we no longer

need to send a specific error from within svn_repos_verify_fs3().


* subversion/include/svn_repos.h

(svn_repos_notify_action_t): Remove svn_repos_notify_failure.

(svn_repos_notify_t): Remove 'err' field, as it is no longer needed.

(svn_repos_verify_callback_t): New optional callback type to be used with


(svn_repos_verify_fs3): Drop 'keep_going' argument in favor of accepting a

svn_repos_verify_callback_t. Update the docstring accordingly.

(svn_repos_verify_fs2): Update the docstring for this deprecated function.

* subversion/libsvn_repos/deprecated.c

(svn_repos_verify_fs2): Update the call to svn_repos_verify_fs3() in this

compatibility wrapper. Don't pass the verify callback.

* subversion/libsvn_repos/dump.c

(notify_verification_error): Remove; this function is no longer required.

(report_error): New helper function.

(svn_repos_verify_fs3): In case we've got a svn_repos_verify_callback_t,

call it upon receiving an FS-specific structure failure or a revision

verification failure. Delegate this action to the new report_error()

helper function. Doing so makes the caller responsible for what's going

to happen with the error. The caller can choose to store the error,

ignore it or use it in any other necessary way. If a callback returns an

error, stop the verification process and immediately return that error.

If no callback is provided, mimic the behavior of svn_repos_verify_fs2()

and return the first encountered error. Drop the logic related to error

formatting, as we no longer need it at this layer. We are going to make

a simpler replacement for it is the UI code (svnadmin.c), where it is

supposed to live.

* subversion/svnadmin/svnadmin.c

(struct repos_verify_callback_baton): New. Contains the fields that are

required to track the --keep-going errors taken from ...

(struct repos_notify_handler_baton): ...this baton. After the previous

step, this baton only contains the 'feedback_stream' field, so inline it

into every calling site.

(repos_notify_handler): Baton is now simply an svn_stream_t. Remove the

boolean-based filtering logic from this handler and drop the handling of

svn_repos_notify_failure. The latter is moved, with a bit of tweaking,

into ...

(repos_verify_callback): ...this new function, that implements a callback

for svn_repos_verify_fs3(). Depending on whether we are in --keep-going

mode or not, either dump the failure details to stderr and track them to

produce a summary, or immediately return it through the callback, thus

ending the verification process. Remember all errors in the --keep-going

mode, not only those that are associated with a particular revision.

Prior to handling the error itself, tell that we failed to verify the

revision or metadata by writing corresponding messages to stderr.

(subcommand_dump, subcommand_load, subcommand_recover, subcommand_upgrade,

subcommand_hotcopy, subcommand_pack): Inline repos_notify_handler_baton

here, as it now contains a single svn_stream_t field.

(subcommand_verify): Inline repos_notify_handler_baton here, as it now

contains a single svn_stream_t field. Avoid manipulations with boolean

fields like b->silent_errors and b->silent_running, because we no longer

need them, and the fields themselves are gone. Create a feedback stream

only in non-quiet mode, as we do in other subcommand implementations.

Create a baton for repos_verify_callback() and adjust the calling site of

svn_repos_verify_fs3(), that now needs a callback. Adjust --keep-going

summary printing to the new approach with the verification callback.

Finally, provide a simple error if we encountered at least one failure

in the --keep-going mode.

* subversion/tests/cmdline/

(verify_keep_going, verify_keep_going_quiet, verify_invalid_path_changes):

Adjust the expectations, because now errors go straight to stderr in both

--keep-going and ordinary modes. Where possible, make the expectations a

bit stricter by extending the lines that we check with RegexListOutput().

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

(load_index, load_index_keep_going): Squash two tests into one; basically,

undo the corresponding hunk from r1683311. As we no longer have separate

keep_going mode in svn_repos_verify_fs3(), and the caller decides if the

verification continues or not, we don't have to check two different


(test_funcs): Track the test changes.

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

(fuzzing_1_byte_1_rev): Adjust the call to svn_repos_verify_fs3().

[in subversion/bindings]

* javahl/src/org/apache/subversion/javahl/

(ReposNotifyInformation.Action): Remove value that used to correspond

to svn_repos_notify_failure.

* javahl/src/org/apache/subversion/javahl/

(ISVNRepos.verify): Remove 'keepGoing' argument from the newest overload

of this method and update the docstring. This patch does not expose

the ability to have control over verification failures through a custom

callback in JavaHL bindings, but we're going to address this separately.

* javahl/src/org/apache/subversion/javahl/

(SVNRepos.verify): Adjust two overloads of this method in the ISVNRepos

interface implementation.

* javahl/native/SVNRepos.h

(SVNRepos::verify): Remove 'keepGoing' argument from declaration.

* javahl/native/SVNRepos.cpp

(SVNRepos::verify): Remove 'keepGoing' argument. Do not pass a verify

callback when calling svn_repos_verify_fs3().

* javahl/native/org_apache_subversion_javahl_SVNRepos.cpp

(Java_org_apache_subversion_javahl_SVNRepos_verify): Remove 'jkeepGoing'

argument from this JNI wrapper.

  1. … 12 more files in changeset.
Fix the behaviour of 'svnadmin verify' alias svn_repos_verify_fs3.

Without --keep-going, 'svnadmin verify' must not obscure the error

returned by the FS implementation. With --keep-going, it should not

assume that a reported error implies repository corruption, only

that the verificaton process failed.


Patch by: kotkov


* subversion/include/svn_error_codes.h


* subversion/libsvn_fs_fs/cached_data.c (svn_fs_fs__check_rep),

subversion/libsvn_fs_x/cached_data.c (svn_fs_x__check_rep):

Return SVN_ERR_FS_CORRUPT instead of the incorrect and


* subversion/libsvn_repos/dump.c

(verify_fs_notify_func_baton_t): Renamed from verify_fs2_notify_func_baton_t.

There's no need to 'version' file-local symbols. All uses updated.

(verify_fs_notify_func): Renamed from verify_fs2_notify_func; see above.

(svn_repos_verify_fs3): Track metadata and revision verification failures

separately and, in keep-going mode, summarize them separately, too.

Do not obscure FS backend errors in normal mode and do not ignore

cancellations in keep-going mode.

* subversion/tests/cmdline/

(verify_keep_going, verify_invalid_path_changes, verify_quickly):

Adjust test case expectations.

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

(load_index_test): Renamed from load_index.

Parametrize the test to check both normal and keep-going verification

and adjust test case expectations.

(load_index, load_index_keep_going): New test cases.

(test_funcs): Add load_index_keep_going.

  1. … 5 more files in changeset.
Provide a regression test for issue #4577.

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

(delta_chain_with_plain): New test.

(test_funcs): Register new test.

Follow-up to r1669743:

Fix sub-condition and provide a test for rep-sharing in general.

* subversion/libsvn_fs_fs/transaction.c

(get_shared_rep): Actually check what the comment says.

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



multiply_string): New utility functions.

(rep_sharing_effectiveness): New test.

(test_funcs): Register new test.

Found by: danielsh

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


There should be no functional changes.


* build/generator/

* build/generator/

* 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/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* subversion/tests/cmdline/

* 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/

* tools/dev/benchmarks/RepoPerf/

* tools/dev/

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

* tools/dev/

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/

* tools/dist/

* tools/hook-scripts/mailer/

* tools/server-side/svnpubsub/


Remove unneeded whitespace via script.

  1. … 183 more files in changeset.
Make the test added in r1654933 somewhat more robust by using the

parser / serializer functions provided by FSFS.

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

(stringbuf_find): Just return a position, not a pointer.

(plain_0_length): Modify the revision content using FSFS noderev I/O and

tweak the native structure instead of its serialized


Suggested by: danielsh

Add a test demonstrating issue #4554.

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



get_line): New, test-specific utility functions.

(plain_0_length): The new test case.

(test_funcs): Register new test case.

Silence a warning by casting to the appropriate type.

* subversion/tests/libsvn-fs_fs/fs-fs-fuzzy-test.c

(fuzzing_1_byte_1_rev): Cast an apr_off_t to apr_uint64_t in order

to use the APR_UINT64_T_HEX_FMT since there is no APR_OFF_T_FMT.

Rename 'svn_io_file_create_binary' to 'svn_io_file_create_bytes' and accept

a pointer to anything for the contents.

The former name sounded too much like it was processing the contents in

binary mode. The API is as yet unreleased so can simply be changed.


Update the mention of it.

* subversion/include/svn_io.h,


(svn_io_file_create_binary): Rename to svn_io_file_create_bytes. Change

the 'contents' parameter from 'const char *' to 'const void *'. Don't

describe the contents as 'binary' in the doc string.


svn_io_file_create_empty): Track the rename.

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

(metadata_checksumming): Track the rename.

  1. … 3 more files in changeset.
More signed/unsigned conversation warning fixes.

* subversion/libsvn_ra_serf/update.c

(get_best_connection): Use proper types for connection number and

requests count.

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

(verify_representation_stats, verify_node_stats): Change EXPECTED_COUNT

argument type to apr_uint64_t.

(verify_histogram): Change SUM_COUNT and SUM_SIZE local variable type to


  1. … 1 more file in changeset.
* subversion/tests/libsvn_fs_fs: Ignore temporary FSFS test data (fs-fs-*-test)

Update the FSFS revprop pack tests to reflect the recent packing

granularity changes.

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

(get_set_large_revprop_packed_fs): Reduce the numbers by roughly 16

to create the same file splitting

effects as before.