Checkout Tools
  • last updated 47 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix Doxygen mark-up, following r1857435.
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

(SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE): New error code.

* 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_GET_STATS, SVN_FS_FS__IOCTL_DUMP_INDEX,

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

operations.

(fs_vtable): Initialize the `ioctl` field.

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

* subversion/libsvn_fs_fs/dump-index.c,

subversion/libsvn_fs_fs/load-index.c,

subversion/libsvn_fs_fs/stats.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.
Docstring typo fix.

* subversion/include/svn_fs.h

Remove an errant 'the'.

Doxygen mark-up fixes.
  1. … 8 more files in changeset.
Follow-up to r1780810 and r1780820:

Docstring fixes. No functional change.

Found by: julianfoad

* subversion/include/svn_fs.h

(svn_fs_get_mergeinfo3): Remove all references to the removed CATALOG

parameter.

* subversion/include/svn_repos.h

(svn_repos_fs_get_mergeinfo2): Same.

  1. … 1 more file in changeset.
Follow-up to r1780810.

* subversion/include/svn_fs.h

(svn_fs_mergeinfo_receiver_t): Add missing @since statement.

No functional change.

First step towards making svn_ra_get_mergeinfo streamy instead of using

unbound amounts of memory.

The server-side implementation of svn_ra_get_mergeinfo does not scale

well as it collects all m/i into a catalog first before sending the data

over the wire. Using callbacks to process the mergeinfo immediately at

the point it was found will fix this issue.

In this first step, we switch the FS API layer to using callbacks.

* subversion/include/svn_fs.h

(svn_fs_mergeinfo_receiver_t): Declare new callback.

(svn_fs_get_mergeinfo3,

svn_fs_get_mergeinfo2): Bump API.

* subversion/libsvn_fs/deprecated.c

(mergeinfo_receiver,

svn_fs_get_mergeinfo2): Implement the old API in terms of the new one.

* subversion/libsvn_fs/fs-loader.h

(root_vtable_t): Adapt the FS Vtable to mirror the API change.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_get_mergeinfo3): The bumped API replaces ...

(svn_fs_get_mergeinfo2): ... this old one.

* subversion/libsvn_fs_fs/tree.c

(crawl_directory_dag_for_mergeinfo): Invoke the receiver callback instead

of accumulating the result. No more

need for the RESULT_POOL, either.

(add_descendant_mergeinfo): Pass new signature through.

(get_mergeinfos_for_paths): Invoke the receiver callback instead of

accumulating the result. No more need for the

RESULT_POOL, either.

(fs_get_mergeinfo): Pass new signature through.

* subversion/libsvn_fs_x/tree.c

(crawl_directory_dag_for_mergeinfo,

add_descendant_mergeinfo,

get_mergeinfos_for_paths,

x_get_mergeinfo): Same changes as for FSFS.

* subversion/libsvn_fs_base/tree.c

(get_mergeinfo_data_and_entries_baton,

txn_body_get_mergeinfo_data_and_entries,

crawl_directory_for_mergeinfo,

get_mergeinfos_for_paths): Invoke the receiver callback instead of

accumulating the result. No more need

for the RESULT_POOL, either.

(base_get_mergeinfo): Pass new signature through.

  1. … 6 more files in changeset.
Corrected spelling mistakes in comments.

* subversion/include/private/svn_utf_private.h

(svn_utf__glob): as above

* subversion/include/svn_fs.h

(svn_fs_refresh_revision_props): as above

* subversion/libsvn_fs_fs/fs.h

(): as above

* subversion/libsvn_fs_fs/pack.c

(tweak_path_for_ordering): as above

* subversion/libsvn_fs_fs/temp_serializer.h

(): as above

* subversion/libsvn_fs_x/pack.c

(): as above

* subversion/libsvn_subr/prefix_string.c

(): as above

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_wclock_find_root): as above

* subversion/svn/conflict-callbacks.c

(find_option_by_id): as above

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

(): as above

Obvious fix.

  1. … 9 more files in changeset.
Deprecate svn_fs_paths_changed2 and friends.

We don't use it anywhere anymore and all non-deprecated FS backends

support the new API natively and efficiently. The old API support

stays in the fs-loader.c "main" file b/c it will keep the native

support in FSFS and BDB - there is just no point to throw that code

away just now.

* subversion/include/svn_fs.h

(svn_fs_path_change2_t): Deprecate.

(svn_fs_paths_changed3): Fix the copy-n-paste comment about runtime

guarantees.

(svn_fs_paths_changed2): Deprecate. Add a note that this not simply

a sub-set of the rev'd API.

Introduce `--no-flush-to-disk' option for `svnadmin load'.

The option can be used to to dramatically speed up the load process when

there's no need to ensure that the resulting data survives a system crash

or power loss — e.g., when loading a dump into a fresh new repository.

This is one of the ideas in http://svn.haxx.se/dev/archive-2015-09/0187.shtml

(Subject: "Whiteboard -- topics list on the white board").

* subversion/include/svn_fs.h

(SVN_FS_CONFIG_NO_FLUSH_TO_DISK): New option.

* subversion/libsvn_fs_fs/fs.h

(fs_fs_data_t): Add `flush_to_disk' boolean field.

* subversion/libsvn_fs_fs/fs.с

(initialize_fs_struct): Initialize the new field.

* subversion/libsvn_fs_fs/fs_fs.c

(read_global_config): Set the new field based on what's in fs->config.

* subversion/libsvn_fs_fs/util.h

(svn_fs_fs__move_into_place): Accept a new `flush_to_disk' argument.

* subversion/libsvn_fs_fs/util.c

(svn_fs_fs__move_into_place): Make the flush optional based on the

new argument.

* subversion/libsvn_fs_fs/transaction.c

(get_and_increment_txn_key_body): Don't flush to disk if that's allowed.

(write_final_revprop): Accept a new `flush_to_disk' argument. Make the

flush optional based on the new argument.

(commit_body): Don't flush to disk if that's allowed. Adjust calls to

write_final_revprop() and svn_fs_fs__move_into_place().

* subversion/libsvn_fs_fs/revprops.c

(switch_to_new_revprop): Adjust the call to svn_fs_fs__move_into_place().

Keep the existing behavior and always flush to disk.

* subversion/svnadmin/svnadmin.c

(svnadmin__no_flush_to_disk): New enum value.

(options_table): Define --no-flush-to-disk option.

(cmd_table): Allow `load' to accept --no-flush-to-disk.

(svnadmin_opt_state): Add `no_flush_to_disk' member.

(open_repos): Move below the definition of svnadmin_opt_state. Accept

an svnadmin_opt_state structure as one of the arguments and initialize

the new SVN_FS_CONFIG_NO_FLUSH_TO_DISK option based on it.

(subcommand_crashtest, subcommand_deltify, subcommand_dump,

subcommand_dump_revprops, subcommand_load, subcommand_load_revprops,

subcommand_lstxns, subcommand_recover, subcommand_rmtxns, set_revprop,

subcommand_setuuid, subcommand_pack, subcommand_verify, subcommand_info,

subcommand_lock, subcommand_lslocks, subcommand_rmlocks,

subcommand_unlock): Adjust these callers of open_repos().

(main): Handle --no-flush-to-disk option.

* subversion/tests/cmdline/svnadmin_tests.py

(load_no_flush_to_disk): New test.

(test_list): Add reference to new test.

* tools/client-side/bash_completion

(_svnadmin): Add new option to `load'.

  1. … 10 more files in changeset.
Switch the repos layer's replay functions to new svn_fs_paths_changed3 API.

To do this, we also need a dup function for svn_fs_path_change3_t.

* subversion/include/svn_fs.h

(svn_fs_path_change3_dup): Declare the new API function.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_path_change3_dup): Implement it.

* subversion/libsvn_repos/replay.c

(add_subdir,

fill_copyfrom,

path_driver_cb_func): All changes now use the new struct type.

(get_relevant_changes): Switch to the new API. Be sure to copy the temp

data before placing it into the output containers.

(add_subdir_ev2,

replay_node): All changes now use the new struct type.

  1. … 2 more files in changeset.
Switch the new svn_fs_paths_changed3 from a using callback to returning

an iterator object.

Suggested by: ivan

* subversion/include/svn_fs.h

(svn_fs_path_change_iterator_t): Declare the new iterator object.

(svn_fs_path_change_get): The only method our new iterator has. To keep

it copy-free, we provide very limited lifetime

guarantees. That's o.k. for such a low-level

API.

(svn_fs_path_change_receiver_t): Drop callback type.

(svn_fs_path_change3_create): Switch from callback to iterator.

* subversion/libsvn_fs/fs-loader.h

(root_vtable_t): Update to match the changed API.

(changes_iterator_vtable_t): V-table type for the new iterator object.

(svn_fs_path_change_iterator_t): Define the generic iterator object.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_path_change_get): Implement new iterator API.

(add_changed_path_baton_t,

add_changed_path): Drop old emulation utilities.

(svn_fs_paths_changed2): Update the emulation to the iterator-based API.

(fsap_iterator_data_t,

changes_iterator_get,

iterator_vtable): Implement the new iterator for old API data.

(svn_fs_paths_changed3): Update implementation.

  1. … 2 more files in changeset.
Define a callback-based FS API to report changed paths.

The old API is not going to be deprecated until the majority of users have

been migrated. Also, there is no backend that implements the new API, so

this will simply segfault when being called. The next patch will fix this

by adding a fallback implementation for it.

* subversion/include/svn_fs.h

(svn_fs_path_change3_t): Declare the new path change data type. Lose

the unusable noderev ID and add the path, so

this struct is now self-sufficient.

(svn_fs_path_change3_create): Declare a suitable constructor to help

future binary compatibility.

(svn_fs_path_change_receiver_t,

svn_fs_paths_changed3): The actual new API & callback function type.

* subversion/include/private/svn_fs_util.h

(svn_fs__path_change_create_internal2): Declare a suitable private API

to instantiate the new data

struct - similar to the old one.

* subversion/libsvn_fs_util/fs-util.c

(svn_fs__path_change_create_internal2): Implement the new internal API

similar to the old one.

* subversion/libsvn_fs/fs-loader.h

(root_vtable_t): Add entry for the new API.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_paths_changed3): Implement as simple vtable call. This will

actually segfault for now b/c nobody provides

the function.

(svn_fs_path_change3_create): Implement like svn_fs_path_change2_create.

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_x/tree.c

(root_vtable): None of these backends actually implement the new API.

  1. … 7 more files in changeset.
Add runtime configuration option to enable FSFS node properties caching

without enabling full-texts caching.

* subversion/include/svn_fs.h

(SVN_FS_CONFIG_FSFS_CACHE_NODEPROPS): New.

* 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

behavior.

* subversion/svnserve/svnserve.c

(SVNSERVE_OPT_CACHE_NODEPROPS): New.

(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.
* subversion/include/svn_fs.h

(svn_fs_node_created_rev): Clarify documentation.

Tweak a comment about reuse of transaction names, following r1712600.

Suggested by: rhuijben

* subversion/include/svn_fs.h

Tweak top-of-file comment: s/reuse/may reuse/.

* subversion/include/svn_fs.h

(svn_fs_txns group): Remove an obsolete comment about transaction names.

It described a naming scheme introduced in r865504 and removed in r865943.

(Committed previously as ^/subversion/branches/move-tracking-2@1607290, but

unrelated to that branch.)

* subversion/include/svn_fs.h

(svn_fs_props_different, svn_fs_props_changed,

svn_fs_contents_different, svn_fs_contents_changed): Describe why do we

require all of these functions in @note statements and cross-link them.

No functional changes.

Following up on r1709388, update the necessary documentation and the

API errata.

* notes/api-errata/1.9/fs001.txt

(): Add a note about the scope of this erratum. Provide references to the

issue tracker and to relevant discussions in the mailing list.

* subversion/include/svn_fs.h

(svn_fs_props_changed, svn_fs_contents_different, svn_fs_contents_changed):

Update the docstrings for these functions. Link the documentation for

svn_fs_props_changed() to svn_fs_contents_changed() and state the design

rationale for the latter. Mention issue 4598 in the docstrings.

  1. … 1 more file in changeset.
Switch svn_fs_create() to result/scratch pool paradigm.

* subversion/include/svn_fs.h

(svn_fs_create2): Revv svn_fs_create() with SCRATCH_POOL argument.

(svn_fs_create): Deprecate.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_create2): Revv. Use SCRATCH_POOL for temporary allocations instead

of creating new subpool.

(svn_fs_create): Implement deprecated function.

* subversion/libsvn_repos/repos.c

(svn_repos_create): Use svn_fs_create2().

* subversion/tests/svn_test_fs.c

(create_fs): Use svn_fs_create2().

  1. … 3 more files in changeset.
Make the recent revprop read function changes in the FS vtable

available through the FS API.

* subversion/include/svn_fs.h

(svn_fs_refresh_revision_props): Declare new public API.

(svn_fs_revision_prop2): Bump version of ...

(svn_fs_revision_prop): ... this now deprecated API.

(svn_fs_revision_proplist2): Bump version of ...

(svn_fs_revision_proplist): ... this now deprecated API.

* subversion/libsvn_fs/deprecated.c

(svn_fs_revision_prop,

svn_fs_revision_proplist): Implement in terms of the new API.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_refresh_revision_props,

svn_fs_revision_prop2,

svn_fs_revision_proplist2): Implement as direct vtable calls.

  1. … 2 more files in changeset.
Add a notification if an svn_fs_pack call is a no-op. Use that to warn

users if they try to pack a non-sharded FSFS repo.

Extending the svn_fs_pack_notify_action_t enum seems to be the only way

to implement this without bumping the svn_fs_pack API: We can't use the

warning function because the svn_fs_t instance is created temporarily

inside the API function such that the user can't set warning function.

No-op packs are not an error condition either, therefore returning an

svn_error_t would be inappropriate.

To get the most milage out of this feature, we also notify if there is

no complete shard that can be packed. 'svnadmin pack' does not report

that condition to minimize UI changes. Other API users might be interested

in that information, though.

* subversion/include/svn_fs.h

(svn_fs_pack_notify_action_t): Add notification for no-op "action".

* subversion/include/svn_repos.h

(svn_repos_notify_action_t): Same in outer API layer.

* subversion/libsvn_fs_fs/pack.c

(pack_body): Notify if there was no shard to be packed.

(svn_fs_fs__pack): Same. Also warn if the repo is non-sharded.

* subversion/libsvn_repos/fs-wrap.c

(pack_notify_func): Translate the new notification as well.

* subversion/svnadmin/svnadmin.c

(repos_notify_handler): Print a warning if the repo is non-sharded.

* subversion/tests/cmdline/svnadmin_tests.py

(fsfs_pack_non_sharded): New test case.

(test_list): Register the new test.

  1. … 5 more files in changeset.
Relax a promise that has never been implemented.

* subversion/include/svn_fs.h

(svn_fs_directories doxygen docstring):

Update documentation on non-directory nodes' paths having trailing slashes.

* subversion/include/svn_fs.h

(SVN_FS_CONFIG_FSFS_CACHE_REVPROPS): Fix typo.

Add an fs layer api that allows obtaining just a boolean indicating whether

properties exist on a node, instead of always obtaining the properties and

checking their count.

This is by far the most expensive operation on 'svn ls -v' in Subversion <=

1.8.x on huge directories as it requires fetching much 'new' data, and has

the risk of trashing the node cache.

r1673153 made new 'svn' clients stop asking for this information for this

scenario but existing clients do ask and so will most likely many third

party clients (confirmed for TortoiseSVN), will keep asking for this

information.

This function introduces the FS api and updates callers, but doesn't provide

optimized implementations yet, so the result is that this doesn't change

runtime behaviour yet, but just moves the implementation into the fs layer.

I hope this patch will be accepted for 1.9.0 to allow further improvements

in later patches, potentially after 1.9.0.

* subversion/include/svn_fs.h

(svn_fs_node_has_props): New function.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_node_has_props): New function.

* subversion/libsvn_fs/fs-loader.h

(root_vtable_t): Add node_has_props.

* subversion/libsvn_fs_base/tree.c

(base_node_has_props): New function.

(root_vtable): Add function.

* subversion/libsvn_fs_fs/tree.c

(fs_node_has_props): New function.

(root_vtable): Add function.

* subversion/libsvn_fs_x/tree.c

(x_node_has_props): New function.

(root_vtable): Add function.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_dir): Use new optimized fs call. Rename subpool

to iterpool.

* subversion/libsvn_repos/repos.c

(svn_repos_stat): Use new optimized fs call.

* subversion/mod_dav_svn/liveprops.c

(insert_prop_internal): Use optimized code for svn clients.

* subversion/svnserve/serve.c

(get_dir): Use optimized fs code.

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

(ra_list_has_props): New function.

(test_funcs): Add ra_list_has_props.

  1. … 10 more files in changeset.
Extend the documentation for new 1.9 FS and Repos (un-)lock-many API.

* subversion/include/svn_fs.h

(svn_fs_lock_many,

svn_fs_unlock_many): Note that these don't process the list of targets

atomically.

* subversion/include/svn_repos.h

(svn_repos_fs_lock_many,

svn_repos_fs_unlock_many): Same as in FS API.

  1. … 1 more file in changeset.
Documentation points raised by API review, no code changes.

* subversion/include/svn_fs.h

(svn_fs_lock_target_create,

svn_fs_lock_many, svn_fs_unlock_many): Tweak docstring.

* subversion/include/svn_fs.h

(svn_repos_fs_lock_many, svn_repos_fs_unlock_many): Tweak docstring.

  1. … 1 more file in changeset.
Address points raised by API review.

* subversion/include/svn_fs.h

(svn_fs_lock_target_create): Rename pool parameter to result_pool.

(svn_fs_lock_callback_t): Rename pool parameter to scratch_pool.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_lock_target_create): Rename pool parameter to result_pool.

* subversion/libsvn_fs_fs/lock.c

(svn_fs_fs__lock, svn_fs_fs__unlock): Use iterpool.

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__lock, svn_fs_base__unlock): Use iterpool.

* subversion/libsvn_fs_x/lock.c

(svn_fs_fs__lock, svn_fs_fs__unlock): Use iterpool.

  1. … 4 more files in changeset.
FS API change:

The new svn_fs_dir_optimal_order shall follow the two pool paradigm.

* subversion/include/svn_fs.h

(svn_fs_dir_optimal_order): Switch to the appropriate new paradigm.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_dir_optimal_order): Update API implementation.

* subversion/libsvn_fs/fs-loader.h

(root_vtable_t): Update v-table.

* subversion/libsvn_fs_base/tree.c

(base_dir_optimal_order): Update BDB implementation.

* subversion/libsvn_fs_fs/tree.c

(fs_dir_optimal_order): Update FSFS vtable implementation.

* subversion/libsvn_fs_fs/pack.h

(svn_fs_fs__order_dir_entries): Update internal function signature.

* subversion/libsvn_fs_fs/pack.c

(svn_fs_fs__order_dir_entries): Update "actual" FSFS implmenentation.

* subversion/libsvn_fs_x/tree.c

(x_dir_optimal_order): Update FSX vtable implementation.

* subversion/libsvn_fs_x/pack.h

(svn_fs_x__order_dir_entries): Update internal function signature.

* subversion/libsvn_fs_x/pack.c

(svn_fs_x__order_dir_entries): Update "actual" FSX implmenentation.

* subversion/libsvn_repos/reporter.c

(delta_dirs): Update caller to provide a scratch pool as well.

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

(test_dir_optimal_order): Same.

  1. … 11 more files in changeset.
FS API change: Rename svn_fs_node_same to svn_fs_node_unchanged.

Note that we currently (ab-)use the same enum in the FS implementation for

ID relationships but this is a mere convenience. They don't have the same

semantics wrt. to edge cases and don't expose their use of the enum through

the FS API.

* subversion/include/svn_fs.h

(svn_fs_node_relation_t): Rename said element and document the semantics

of all elements in terms of (root, path) pairs

other FS API concepts. Be as strict as feasible.

Remove references to #svn_fs_compare_ids as it

does _not_ have the same strictness guarantees.

* subversion/libsvn_fs_base/id.c

(svn_fs_base__id_compare): Update enum element name.

* subversion/libsvn_fs_base/tree.c

(txn_body_copy): Same.

* subversion/libsvn_fs/editor.c

(can_modify): Same.

* subversion/libsvn_fs_fs/id.c

(svn_fs_fs__id_compare): Same.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_compare_ids): Same.

* subversion/libsvn_fs_fs/tree.c

(fs_node_relation): Same.

* subversion/libsvn_fs_x/fs_id.c

(id_compare): Same.

* subversion/libsvn_fs_x/tree.c

(x_node_relation): Same.

* subversion/libsvn_repos/delta.c

(svn_repos_dir_delta2): Same.

* subversion/mod_dav_svn/repos.c

(do_out_of_date_check): Same.

* subversion/mod_dav_svn/util.c

(dav_svn__get_safe_cr): Same.

* subversion/mod_dav_svn/version.c

(dav_svn__checkout): Same.

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

(check_related,

check_txn_related): Same.

  1. … 13 more files in changeset.