Checkout Tools
  • last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
fsfs, fsx: Make an error message clearer to developers.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_footer),

* subversion/libsvn_fs_x/low_level.c

(svn_fs_x__parse_footer):

Make the output radix explicit, so the values aren't mistaken for decimal.

(Actually, I wonder why the values aren't printed in decimal to begin with.)

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

c: [skip]

Found by: danielsh

using tools/dev/warn-unused-result.sh

  1. … 7 more files in changeset.
fsfs: Lay the groundwork for an extended fix for issues #4623 and #4700.

As per r1813898, we now store both the SHA1 and the uniquifier in the

on-disk property representation strings. The SHA1 value is not required,

but has to be stored due to an existing dependency in the serializer

where the resulting strings can either have both the SHA1 value *and*

the uniquifier, or don't have them at all.

Untie this dependency by introducing a new notation ("-") for such

optional values, which would be supported by the new filesystem format 8.

This would allow us to skip writing SHA1, and only store the uniquifier

in the representation strings for the new formats.

See https://lists.apache.org/thread.html/d282f27c1260c620fe5deb7c9976f4c05bfb34d5156dee1fa6dad644@%3Cdev.subversion.apache.org%3E

* subversion/libsvn_fs_fs/fs.h

(SVN_FS_FS__MIN_REP_STRING_OPTIONAL_VALUES_FORMAT): New.

* subversion/libsvn_fs_fs/structure

(Revision file format): Describe the format extension.

* subversion/libsvn_fs_fs/low_level.c

(format_uniquifier): New helper function, factored out from ...

(svn_fs_fs__unparse_representation): ...here. Support the "-"

notation for the absent SHA1 and uniquifier values in the new format.

Tweak the code to handle the older formats one by one. Keep the code

for the newest format in the end to simplify extending it in the future.

(svn_fs_fs__parse_representation): Handle the new "-" notation when

parsing SHA1 and uniquifier values.

  1. … 2 more files in changeset.
* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_representation): Note a potentially unexpected side

effect of this function, as currently it modifies the input string.

* subversion/libsvn_fs_fs/low_level.c

(format_digest): Remove the `is_null` parameter, which is always passed

in as FALSE by the three calling sites in ...

(svn_fs_fs__unparse_representation): ...this function. Note that for

the SHA1 digest this parameter depends on the `has_sha1` field, but

the code above tests for the (!rep->has_sha1) case, and thus the

actual value of the parameter is always FALSE.

Don't crash in FSFS upon all-zero MD5 or SHA1.

Subversion basically ignores / forgets all-0 checksums. This is due to

svn_checksum_parse_hex treating them equivalent to 'not given' at various

API levels.

The 1.9 did not account for this quirky behavior and would crash. With

this patch, those checksums are correctly represented as all-0 internally.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_representation): Don't attempt to copy from a checksum

object that does not exist.

Reported by: danielsh

Replicate r1744981 in FSFS:

Add a limit parameter to the low-level changed paths list parser.

In this commit, the callers will never set a true limit, though.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__read_changes): Add MAX_COUNT parameter.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__read_changes): Limit the result to MAX_COUNT entries.

* subversion/libsvn_fs_fs/cached_data.c

(svn_fs_fs__get_changes,

block_read_changes): Update callers. However, don't impose an

actual limit other than what is already

implied by the APR array data structure.

  1. … 2 more files in changeset.
Include the revision number into FSFS format 7 footer error messages.

Contains accidental changes to subversion/tests/svn_test_fs.c, which

got reverted by 1680479.

* subversion/libsvn_fs_fs/low_level.c

(wrap_footer_error): New utility function, replacing SVN_ERR_W in ...

(svn_fs_fs__parse_footer): ... this one. Include the REV in the other

error messages as well.

* subversion/tests/svn_test_fs.c: [accidental changes].

  1. … 1 more file in changeset.
Put stricter bounds on the index offset values read by the FSFS format7

footer parser.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__parse_footer): Take the footer offset instead of the filesize.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_footer): Indexes must begin before the footer and L2P

must precede P2L.

* subversion/libsvn_fs_fs/rev_file.c

(svn_fs_fs__auto_read_footer): Provide footer offset.

  1. … 2 more files in changeset.
fsfs7: Validate index offsets in rev file footer.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_footer): Take FILESIZE argument, use it for validation.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__parse_footer): Take FILESIZE argument.

* subversion/libsvn_fs_fs/rev_file.c

(svn_fs_fs__auto_read_footer): Pass FILESIZE.

Patch by: danielsh

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

tools/dev/remove-trailing-whitespace.zsh

There should be no functional changes.

* .ycm_extra_conf.py

* build/generator/gen_win.py

* build/generator/gen_win_dependencies.py

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

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

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

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h

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

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/bindings/swig/ruby/test/test_fs.rb

* subversion/bindings/swig/ruby/test/util.rb

* subversion/bindings/swig/ruby/test/windows_util.rb

* subversion/include/private/svn_fs_fs_private.h

* subversion/include/private/svn_packed_data.h

* subversion/include/private/svn_repos_private.h

* subversion/include/private/svn_sorts_private.h

* subversion/include/private/svn_subr_private.h

* subversion/include/private/svn_wc_private.h

* subversion/include/svn_auth.h

* subversion/include/svn_cache_config.h

* subversion/include/svn_client.h

* subversion/include/svn_cmdline.h

* subversion/include/svn_diff.h

* subversion/include/svn_fs.h

* subversion/include/svn_io.h

* subversion/include/svn_ra.h

* subversion/include/svn_repos.h

* subversion/include/svn_string.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/hotcopy.c

* subversion/libsvn_fs_fs/id.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/index.h

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/low_level.h

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/recovery.c

* subversion/libsvn_fs_fs/rev_file.c

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/stats.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_fs/verify.c

* subversion/libsvn_fs_x/cached_data.c

* subversion/libsvn_fs_x/changes.c

* subversion/libsvn_fs_x/dag.h

* subversion/libsvn_fs_x/fs.h

* subversion/libsvn_fs_x/fs_id.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/hotcopy.c

* subversion/libsvn_fs_x/hotcopy.h

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/index.h

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/low_level.h

* subversion/libsvn_fs_x/noderevs.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_fs_x/rev_file.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/revprops.h

* subversion/libsvn_fs_x/string_table.c

* subversion/libsvn_fs_x/string_table.h

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/tree.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_fs_x/verify.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz_pool.c

* subversion/libsvn_repos/config_pool.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_subr/bit_array.c

* subversion/libsvn_subr/cache-membuffer.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_subr/fnv1a.c

* subversion/libsvn_subr/gpg_agent.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/object_pool.c

* subversion/libsvn_subr/packed_data.c

* subversion/libsvn_subr/prefix_string.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/sqlite.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/sysinfo.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/utf8proc/utf8proc_data.c

* subversion/libsvn_subr/x509info.c

* subversion/libsvn_wc/diff.h

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc.h

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db.h

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/status.c

* subversion/svn/auth-cmd.c

* subversion/svn/info-cmd.c

* subversion/svn/mergeinfo-cmd.c

* subversion/svn/notify.c

* subversion/svn/propget-cmd.c

* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnserve/logger.c

* subversion/svnserve/serve.c

* subversion/svnserve/server.h

* subversion/svnserve/svnserve.c

* subversion/tests/cmdline/blame_tests.py

* subversion/tests/cmdline/checkout_tests.py

* subversion/tests/cmdline/commit_tests.py

* subversion/tests/cmdline/export_tests.py

* subversion/tests/cmdline/externals_tests.py

* subversion/tests/cmdline/lock_tests.py

* subversion/tests/cmdline/merge_tests.py

* subversion/tests/cmdline/merge_tree_conflict_tests.py

* subversion/tests/cmdline/move_tests.py

* subversion/tests/cmdline/redirect_tests.py

* subversion/tests/cmdline/stat_tests.py

* subversion/tests/cmdline/svnadmin_tests.py

* subversion/tests/cmdline/switch_tests.py

* subversion/tests/cmdline/update_tests.py

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

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

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

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

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

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

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

* subversion/tests/libsvn_fs_x/string-table-test.c

* subversion/tests/libsvn_ra/ra-test.c

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

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

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

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

* subversion/tests/libsvn_subr/packed-data-test.c

* subversion/tests/libsvn_subr/priority-queue-test.c

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

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

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

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

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

* subversion/tests/svn_test_main.c

* tools/dev/benchmarks/RepoPerf/copy_repo.py

* tools/dev/benchmarks/RepoPerf/win_repo_bench.py

* tools/dev/build-svn-deps-win.pl

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

* tools/dev/po-merge.py

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/backport.pl

* tools/dist/backport_tests.py

* tools/hook-scripts/mailer/mailer.py

* tools/server-side/svnpubsub/daemonize.py

* win-tests.py

Remove unneeded whitespace via script.

  1. … 184 more files in changeset.
Finalize the FSFS f7 format by adding checksums to the P2L and L2P index

data itself. Now, all of the rev / pack files can be verified.

We simply wrap the streams through which we write the two indexes with

MD5 generator wrappers and put the results into the footer next to the

index offsets. Updating generators, parsers and writers is pretty

straight forward.

The checksum verification code will be added in the next patch.

* subversion/libsvn_fs_fs/index.h

(svn_fs_fs__l2p_index_append,

svn_fs_fs__p2l_index_append): Return the index content checksum as well.

* subversion/libsvn_fs_fs/index.c

(svn_fs_fs__l2p_index_append,

svn_fs_fs__p2l_index_append): Use simple stream wrappers to automatically

calculate the MD5 checksums.

* subversion/libsvn_fs_fs/transaction.c

(svn_fs_fs__add_index_data): Receive the index checksums and pass

them on to the serialization code.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__parse_footer): Update signature to return the index

checksums as well.

(svn_fs_fs__unparse_footer): Update signature to accept the index

checksums, too.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_footer): Update the footer reader.

(svn_fs_fs__unparse_footer): Update the footer writer.

* subversion/libsvn_fs_fs/rev_file.h

(svn_fs_fs__revision_file_t): Add members for the index checksums.

* subversion/libsvn_fs_fs/rev_file.c

(init_revision_file): Update struct initialization code.

(svn_fs_fs__auto_read_footer): Receive the checksums as well.

* subversion/libsvn_fs_fs/structure

(Revision file format): Update the description of the file footer.

* subversion/tests/cmdline/svnadmin_tests.py

(set_changed_path_list): Update to preserve the two checksums

in the footer as well.

  1. … 8 more files in changeset.
* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__write_changes): Add a comment about changed path ordering.

No functional change.

Found by: julianfoad

Rename a minimum format constant for consistency with others.

* subversion/libsvn_fs_fs/fs.h

(SVN_FS_FS__MIN_MERGEINFO_IN_CHANGES_FORMAT): Rename to ...

(SVN_FS_FS__MIN_MERGEINFO_IN_CHANGED_FORMAT): ... this.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__write_changes): Update usage.

Suggested by: julianfoad

  1. … 1 more file in changeset.
* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__write_changes): Correct the docstring. No functional change.

* subversion/libsvn_fs_fs/low_level.c

(write_change_entry): Same.

Found by: julianfoad

  1. … 1 more file in changeset.
* subversion/libsvn_fs_fs/low_level.c

(read_change): Fix reporting of the "mergeinfo_mod" flag for changed

paths if the flag insn't actually stored in the repo.

We must explicitly initialize it to svn_tristate_unknown.

Found by: julianfoad

Resolve several easy to fix compiler warnings.

* subversion/libsvn_fs_fs/lock.c

(add_to_digest): Use unsigned int type to match apr_hash_count() signature.

* subversion/libsvn_fs_fs/low_level.c

(read_header_block): Use apr_size_t for indexes instead of apr_ssize_t and

refactor code to avoid subtraction.

* subversion/libsvn_fs_fs/temp_serializer.c

(serialize_dir): Use int type for index to match apr_array_header->nelts

type.

  1. … 2 more files in changeset.
Follow up to r1622926: Use the correct canonicalization check for FS paths.

* subversion/libsvn_fs_fs/low_level.c

(read_change, svn_fs_fs__read_noderev): Use svn_fspath__is_canonical

instead of the (incorrect, platform-specific) svn_dirent_is_canonical.

Harden FSFS parsers against corrupted ID strings.

Currently, we would simply return a NULL ID in case of invalid input.

That leads to NULL struct members in other places - which is a bad idea.

Make the ID parser follow the usual svn_error_t * return pattern.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_MALFORMED_NODEREV_ID): Declare a new error code.

* subversion/libsvn_fs_fs/id.h

(svn_fs_fs__id_copy): Change signature to return svn_error_t *.

* subversion/libsvn_fs_fs/id.c

(svn_fs_fs__id_parse): Rename to ...

(id_parse): ... this and make it static.

(svn_fs_fs__id_parse): New, error generating wrapper.

* subversion/libsvn_fs_fs/cached_data.c

(read_dir_entries): Update caller.

* subversion/libsvn_fs_fs/fs_fs.c

(svn_fs_fs__get_node_origin): Same.

* subversion/libsvn_fs_fs/low_level.c

(read_change,

svn_fs_fs__read_noderev): Same.

* subversion/libsvn_fs_fs/recovery.c

(recover_find_max_ids): Same.

  1. … 6 more files in changeset.
Harden FSFS's low-level path parsers against data corruption.

* subversion/libsvn_fs_fs/low_level.c

(read_change

svn_fs_fs__read_noderev): All paths must be canonical and start with '/'

Harden FSFS's revision number parsing. Replace the combination

of tokenizing and SVN_STR_TO_REV with a strict parsing function.

* subversion/libsvn_fs_fs/low_level.c

(parse_revnum): New revnum parsing function. It detects invalid

values, overflows and invalid terminators.

(read_change,

svn_fs_fs__parse_representation,

svn_fs_fs__read_noderev,

svn_fs_fs__read_rep_header): Use the new function to parse revnums.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__read_changes): Fine-tune result buffer pre-allocation strategy.

Final touches to the FSFS low-level API implementation:

Update docstrings and change pool names of internal functions.

No functional change.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__read_changes_incrementally): Correct pool name in docstring.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__read_changes_incrementally): Use the same pool name as in

the declaration.

(write_change_entry): The pool is actually a scratch pool.

(read_header_block,

svn_fs_fs__read_noderev,

format_digest): The pools are actually result pools.

  1. … 1 more file in changeset.
Switch the remainder of the FSFS low-level interal API to the two-pool

paradigm.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__parse_representation,

svn_fs_fs__unparse_representation): These functions create internal

temporary objects.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__parse_representation): Use the new scratch pool for parsing

checksums.

(read_rep_offsets): Switch to two-pool paradigm as well and update it

as a caller of the above.

(svn_fs_fs__read_noderev): Update caller.

(svn_fs_fs__unparse_representation): Allocate temporary strings in scratch

pool.

(svn_fs_fs__write_noderev): Update caller.

* subversion/libsvn_fs_fs/cached_data.c

(create_rep_state): Update caller.

* subversion/libsvn_fs_fs/transaction.c

(store_sha1_rep_mapping,

get_shared_rep): Update callers.

  1. … 3 more files in changeset.
Reduce the memory consumption of the FSFS ID parser.

In the past, fs_fs__id_t would contain string elements and therefore,

the incoming data got copied before being chopped and processed. Since

1.9 uses integers only, no copy is required anymore.

The incoming data is usually writable and disposable as well so we process

it directly. Only one caller doesn't already provide a writable buffer.

* subversion/libsvn_fs_fs/id.h

(svn_fs_fs__id_parse): Mark incoming DATA buffer as mutable and drop the

unnecessary LENGTH argument.

* subversion/libsvn_fs_fs/id.c

(svn_fs_fs__id_parse): Don't duplicate DATA, process it directly.

* subversion/libsvn_fs_fs/cached_data.c

(read_dir_entries): Update caller.

* subversion/libsvn_fs_fs/fs_fs.c

(svn_fs_fs__get_node_origin): This is the only caller that needs to

duplicate the DATA buffer. It's only

invoked for very old repo formats.

* subversion/libsvn_fs_fs/low_level.c

(read_change,

svn_fs_fs__read_noderev): Update caller.

* subversion/libsvn_fs_fs/recovery.c

(recover_find_max_ids): Same.

  1. … 5 more files in changeset.
In FSFS, low-level internal API layer, rename pool arguments of single

pool functions in accordance to the two-pool paradigm.

No functional change.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__unparse_revision_trailer,

svn_fs_fs__unparse_footer): These use a single RESULT_POOL.

(svn_fs_fs__write_changes,

svn_fs_fs__write_noderev,

svn_fs_fs__write_rep_header): These use a single SCRATCH_POOL.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__unparse_revision_trailer,

svn_fs_fs__unparse_footer): These use a single RESULT_POOL.

(svn_fs_fs__write_changes,

svn_fs_fs__write_noderev,

svn_fs_fs__write_rep_header): These use a single SCRATCH_POOL.

  1. … 1 more file in changeset.
Switch svn_fs_fs__read_rep_header() to the dual-pool idiom.

* subversion/libsvn_fs_fs/cached_data.c

(create_rep_state_body, read_rep_header): Pass a scratch pool.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__read_rep_header): Switch to dual-pool. Use scratch pool

for temporary allocations.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__read_rep_header): Tweak declaration and docstring.

* subversion/libsvn_fs_fs/pack.c

(copy_rep_to_temp): Pass standard pool as scratch pool.

* subversion/libsvn_fs_fs/recovery.c

(recover_find_max_ids): Pass standard pool as scratch pool.

* subversion/libsvn_fs_fs/transaction.c

(upgrade_transaction): Pass an iterpool as scratch pool.

  1. … 5 more files in changeset.
Switch svn_fs_fs__read_changes() to the dual-pool idiom.

* subversion/libsvn_fs_fs/cached_data.c

(svn_fs_fs__get_changes, block_read_changes): Pass a scratch_pool.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__read_changes): Switch to dual-pool. Use scratch pool

for temporary allocations.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__read_changes): Tweak declaration and docstring.

  1. … 2 more files in changeset.
Switch svn_fs_fs__rev_get_root() and svn_fs_fs__read_noderev() to the dual

pool pattern.

* subversion/libsvn_fs_fs/cached_data.c

(get_node_revision_body,

get_fs_id_at_offset): Update caller.

(svn_fs_fs__rev_get_root): Use scratch pool for temporary work.

(block_read_noderev): Update caller.

* subversion/libsvn_fs_fs/cached_data.h

(svn_fs_fs__rev_get_root): Change to dual pool.

* subversion/libsvn_fs_fs/dag.c

(svn_fs_fs__dag_revision_root): Update caller.

* subversion/libsvn_fs_fs/low_level.c

(svn_fs_fs__read_noderev): Read data in scratch pool as it is copied anyway.

* subversion/libsvn_fs_fs/low_level.h

(svn_fs_fs__read_noderev): Change to dual pool.

* subversion/libsvn_fs_fs/pack.c

(copy_node_to_temp): Update caller.

* subversion/libsvn_fs_fs/recovery.c

(recover_find_max_ids): Update caller.

* subversion/libsvn_fs_fs/transaction.c

(svn_fs_fs__create_txn): Update caller.

  1. … 7 more files in changeset.
Introduce another scratch pool in the server-side log code, reducing the

the resident memory size of an 'svn log -v' process from 407M to 317M while

showing r11708 of ruby's Subversion repository via ra_local (on OpenBSD).

Ruby's r11708 sets svn:eol-style on 123934 files...

* subversion/libsvn_fs_fs/low_level.c

(read_change): Switch to dual-pool parameters, and use a scratch pool for

lines read from the revision file and a result_pool for returned data.

(svn_fs_fs__read_changes): Use an iterpool while looping over changes

and pass it as a scratch pool to read_change().

(svn_fs_fs__read_changes_incrementally): Same, except this was already

passing an iterpool pool as the result pool.