libsvn_ra_local

Checkout Tools
  • last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix inconsistent handling of svn_dirent_t.size for directories.

Most code uses SVN_INVALID_FILESIZE for them, so change the docs to match

that fact and update all users to consistently follow the new docstring.

* subversion/include/svn_types.h

(svn_dirent_t): Change documentation for SIZE.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_dir): Return the new default for directories.

* subversion/libsvn_ra_serf/list.c

(item_closed): Be sure to default to SVN_INVALID_FILESIZE.

* subversion/libsvn_repos/list.c

(fill_dirent): Set SIZE consistently with other RA layers.

  1. … 3 more files in changeset.
Fix design bug in svn_client_list4()/svn_ra_list()/svn_repos_list() APIs.

* subversion/include/svn_client.h (svn_client_list4):

Make the patterns array const. All dependencies and references updated.

* subversion/include/svn_ra.h (svn_ra_list): Likewise.

* subversion/include/svn_repos.h (svn_repos_list): Likewise.

* subversion/libsvn_client/list.c

(list_externals, list_internal, match_patterns,

get_dir_contents, list_external_items, svn_client_list4):

Make patterns array const.

* subversion/libsvn_ra/ra_loader.h (svn_ra__vtable_t::list): Likewise.

* subversion/libsvn_ra/ra_loader.c (svn_ra_list): Likewise.

* subversion/libsvn_ra_local/ra_plugin.c (svn_ra_local__list): Likewise.

* subversion/libsvn_ra_svn/client.c (ra_svn_list): And again.

* subversion/libsvn_repos/list.c (matches_any, do_list, svn_repos_list):

And some more of the same.

  1. … 8 more files in changeset.
Update the last usage of the deprecated svn_repos_fs_get_mergeinfo API.

* subversion/libsvn_ra_local/ra_plugin.c

(mergeinfo_receiver): New callback function.

(svn_ra_local__get_mergeinfo): Switch to the new API.

Implement svn_ra_list in ra_local.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__has_capability): ra_local new supports the list function.

(dirent_receiver_baton_t,

dirent_receiver,

svn_ra_local__list): New functions implementing the list API by trivially

adapting between RA- and repos-layer.

(ra_local_vtable): Activate the LIST function in the vtable.

Add a RA-level function for svn_repos_list and use that to implement

svn_client_list, if the server should support the new API.

Right now, no RA layer actually implements the new API; this will be

done in follow-up commits.

* subversion/include/svn_ra.h

(svn_ra_dirent_receiver_t,

svn_ra_list): Declare the new interface.

(SVN_RA_CAPABILITY_LIST): Declare a new server capability.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add LIST function.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_list): Implement the new API and check for its availability.

* subversion/libsvn_client/list.c

(receiver_baton_t,

list_receiver): RA-layer-compatible wrapper around the client callback.

(list_internal): If we don't have to fetch any properties, use the new

RA-layer API, if available. Explicitly checking the

existance of the base path is only needed if we use

the client-side code.

* subversion/libsvn_ra_local/ra_plugin.c

(ra_local_vtable): Update vtable.

* subversion/libsvn_ra_serf/serf.c

(serf_vtable): Same.

* subversion/libsvn_ra_svn/client.c

(ra_svn_vtable): Same.

  1. … 6 more files in changeset.
Deprecate svn_repos_get_logs4.

Small twist here: The ra_local log() implementation needs to expose an

repos_log4-esque API. So, we re-use all the shim code that adapts log5

onto log4 by exposing the latter through a new private API.

* subversion/include/svn_repos.h

(svn_repos_get_logs4): Depricate.

* subversion/include/private/svn_repos_private.h

(svn_repos__get_logs_compat): Declare new private API.

* subversion/libsvn_repos/log.c

(log_entry_receiver_baton_t,

path_change_kind_to_char,

log4_path_change_receiver,

log4_entry_receiver,

svn_repos_get_logs4): Move these log5/log4 shims from here ...

* subversion/libsvn_repos/compat.c

(): ... to this new file.

(svn_repos_get_logs4): Rename this ...

(svn_repos__get_logs_compat): ... to that.

* subversion/libsvn_repos/deprecated.c

(svn_repos_get_logs4): Add trivial implementation.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_log): Call the new private API instead of the

deprecated one.

  1. … 5 more files in changeset.
Fix bug when svn_ra_get_dir2() will fail if invoked with SVN_DIRENT_SIZE, but

without SVN_DIRENT_KIND. There is no user visible bug, since Subversion

command line client always ask for SVN_DIRENT_KIND.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_dir): Do not access possibly uninitialized local variable.

* subversion/svnserve/serve.c

(get_dir): Do not access possibly uninitialized local variable.

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

(get_dir_test): Extend test to test svn_ra_get_dir2(SVN_DIRENT_SIZE).

  1. … 2 more files in changeset.
Disable zero-copy code path for ra_local update reporters.

The known and documented limitation of svn_repos_begin_report3() is that

with zero-copy enabled, the delta editor callbacks cannot access FSFS

or use Subversion caches directly. This limitation comes from the fact

that sending delta using the zero-copy code path happens from within a cache

access wrapper — that is, while holding the lock. If a particular delta

consumer happens to access or invalidate the cache, bad things could happen,

spanning from UB due to accessing a dangling pointer to a deadlock caused by

an attempt to take a non-recursive (blocking) lock, that has already been

taken by the same thread.

Within ra_local, we cannot be sure that arbitrary callers of our public

API, namely, svn_ra_do_update3(), svn_ra_do_switch3() or svn_ra_do_status2(),

are aware of this limitation and pass-in the delta editor that doesn't access

FSFS or caches — because everything happens locally and all operations that

use the FS layer have a chance of using the cache.

* subversion/libsvn_ra_local/ra_plugin.c

(make_reporter): Pass 0 as zero_copy_limit when creating the update

reporter.

Rename the ill-defined SVN_LIBSVN_CLIENT_LINKS_* defines to an

easier to maintain SVN_LIBSVN_RA_LINKS_*. LIBSVN_CLIENT didn't

link any of this since well before 1.0.

* trunk/build/generator/gen_win_dependencies.py

* trunk/configure.ac

* trunk/subversion/libsvn_ra/ra_loader.c

* trunk/subversion/libsvn_ra_local/ra_plugin.c

* trunk/subversion/svn_private_config.hw

Update references.

  1. … 4 more files in changeset.
Extend and cleanup the ra api a bit to allow ra session implementations to

open other ra sessions. (This is similar to how the fs layer receives a

pointer to svn_fs_openX())

The ra-git branch will use this to implement ra_git by passing most of the

ra functions to an ra_local session to the local git repository.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_open4,

svn_ra__dup_session): Call set_svn_ra_open.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__open_func_t): New prototype.

(svn_ra__vtable_t): Introduce set_svn_ra_open. Move experimental functions

to the end of the list.

* subversion/libsvn_ra_local/ra_plugin.c

(ra_local_vtable): Update table. Document missing items.

* subversion/libsvn_ra_serf/serf.c

(serf_vtable): Update table. Document missing items.

* subversion/libsvn_ra_svn/client.c

(ra_svn_vtable): Update table. Document missing items.

  1. … 4 more files in changeset.
Fix a client SEGV with ra-local and --enable-runtime-module-search.

When DSO loading is enabled ra-local must pass a pool with an

appropriate lifetime to svn_fs_initialize.

* subversion/include/private/svn_subr_private.h

(svn_dso__pool): New.

* subversion/libsvn_subr/dso.c

(svn_dso__pool): New.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__init): Use svn_dso__pool.

  1. … 2 more files in changeset.
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.
Make al ra layers consistently handle invalid revisions when retrieving

inherited properties: add errors in a few cases that worked before, but

used to provide results that couldn't be trusted.

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

(svn_fs_bdb__get_rev): Show understandable error on SVN_INVALID_REVNUM instead

of a raw database error.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_inherited_props): Remove invalid->youngest handling.

* subversion/mod_dav_svn/reports/inherited-props.c

(dav_svn__get_inherited_props_report): Retrieving iprops on a not existing

path is an error.

* subversion/svnserve/serve.c

(get_inherited_props): Remove invalid->youngest handling. Retrieving iprops

on a not existing path is an error.

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

(ra_revision_errors): Extend tests.

  1. … 4 more files in changeset.
Following up on r1609499, which made all ra layers change the auth baton in a

way that affects all ra session using it, make it possible to create a slave

auth baton that shares everything with the parent baton except for the

parameters.

Each ra session gets its own slave parameters, and thereby allows

applying their own settings from the server group (and other origins),

without affecting other ra sessions.

* subversion/include/private/svn_auth_private.h

(svn_auth__apply_config_for_server): Rename to...

(svn_auth__make_session_auth): ... this and provide a new slave auth

baton as output argument.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_open4): Create scratch pool. Create slave auth instance.

Update caller.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t.open_session): Add auth_baton argument and split pools.

* subversion/libsvn_ra/wrapper_template.h

(compat_open): Update caller.

* subversion/libsvn_ra_local/ra_local.h

(svn_ra_local__session_baton_t): Store auth baton directly.

* subversion/libsvn_ra_local/ra_plugin.c

(get_username): Update auth usage.

(svn_ra_local__open): Update arguments. Store auth baton.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__session_t): Store auth baton reference.

* subversion/libsvn_ra_serf/serf.c

(load_config): Use slave auth baton.

(svn_ra_serf__open): Update arguments. Store auth baton.

Remove local subpool usage with scratch pool.

* subversion/libsvn_ra_serf/util.c

(ssl_server_cert,

handle_client_cert,

handle_client_cert_pw,

svn_ra_serf__credentials_callback): Use auth from session instead

of from callbacks.

* subversion/libsvn_ra_svn/client.c

(open_session): Update arguments. Store auth baton.

(ra_svn_open): Add argument.

(ra_svn_open_pool): Remove function that just doubled the pool.

(ra_svn_vtable): Update reference.

* subversion/libsvn_ra_svn/cyrus_auth.c

(svn_ra_svn__do_cyrus_auth): Use auth from session instead of from callbacks.

* subversion/libsvn_ra_svn/internal_auth.c

(svn_ra_svn__do_internal_auth): Use auth from session instead of from callbacks.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn__session_baton_t): Add auth baton.

* subversion/libsvn_subr/auth.c

(svn_auth_baton_t): Add variable.

(svn_auth_open): Document initial value.

(auth_NULL): New constant.

(svn_auth_set_parameter): Store value in slave parameters if that

exists.

(svn_auth_get_parameter): Check slave parameters before primary

parameters.

(svn_auth__apply_config_for_server): Rename to...

(svn_auth__make_session_auth): ... this and create a slave auth baton

with the new values instead of changing the passed baton.

  1. … 12 more files in changeset.
* subversion/libsvn_ra_local/ra_plugin.c

(commit_callback_wrapper): Following up on r1659863, use ra local specific

api, add error tracing and rename pool to scratch pool.

Fill in the repository root in the commit info when creating it, instead of

relying of a fixup that calls back into the ra layer from an ra layer

callback.

* subversion/libsvn_ra/ra_loader.c

(ccw_baton,

commit_callback_wrapper,

remap_commit_callback): Move to libsvn_ra_local/ra_plugin.

(svn_ra_get_commit_editor3,

svn_ra__get_commit_ev2): Remove unneeded call.

* subversion/libsvn_ra_local/ra_plugin.c

(ccw_baton,

commit_callback_wrapper,

remap_commit_callback): Move here.

(svn_ra_local__get_commit_editor,

svn_ra_local__get_commit_ev2): Add call to remap_commit_callback.

* subversion/libsvn_ra_serf/merge.c

(svn_ra_serf__run_merge): Set repository root.

* subversion/libsvn_ra_svn/client.c

(ra_svn_end_commit): Set repository root.

* subversion/libsvn_repos/commit.c

(invoke_commit_cb): Document that we don't set repository root.

  1. … 4 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.
Revert r1619413. Resolve a text conflict in fs-fs-pack-test.c .
  1. … 8 more files in changeset.
[Reverted in r1619769]

Enforce the "everybody or nobody" restriction on revprop caching, i.e.

either all processes (usually servers) or none must use revprop caching.

This patch makes sure that the first process to use revprop caching will

create the revprop generation file before even reading and caching any

revprops - instead of auto-creating it upon the first write. Then this

file is being used as an indicator that the repo has been accessed at

least once using revprop caching. FS instances without that feature

enabled will then be banned from writing any revprops.

To make this workable, applications that may write revprops but are not

servers themselves (the latter having explicit revprop caching options)

need to engage the revprop caching infrastructure automatically if the

repo that they are accessing requires it. svnadmin, svnlook and ra_local

enable this new mode.

* subversion/include/svn_fs.h

(SVN_FS_CONFIG_FSFS_CACHE_REVPROPS): Document that there is now yet

another mode.

* subversion/libsvn_fs_fs/fs.h

(fs_fs_data_t): Add the flag allowing on-demand activation of revprop

caching.

* subversion/libsvn_fs_fs/fs_fs.h

(svn_fs_fs__initialize_revprop_caches): Declare new function to init

the revprop caches only.

* subversion/libsvn_fs_fs/caching.c

(read_config): Handle the new revprop caching mode.

(cache_key_prefix): Common functionality factored out from

svn_fs_fs__initialize_caches.

(svn_fs_fs__initialize_revprop_caches): Implement, mainly taking out

of ...

(svn_fs_fs__initialize_caches): ... this. Update after refactoring.

* subversion/libsvn_fs_fs/revprops.c

(init_generation_baton_t,

init_revprop_generation_file): New code to create the revprop generation

file before the first cached revprop

access (read or write).

(read_revprop_generation_file): Trigger auto-creation of that file.

(enforce_consistent_caching): New function containing the actual

cache settings consistency check.

(svn_fs_fs__set_revision_proplist): Trigger the new check to make sure

we don't modify revprops w/o telling

caching applications.

* subversion/libsvn_ra_local/split_url.c

(svn_ra_local__split_URL): Set "enable revprop caching on demand" feature

instead of "no revprop caching" on open repos.

* subversion/svnadmin/svnadmin.c

(open_repos): Use the same mode here.

* subversion/svnlook/svnlook.c

(get_ctxt_baton): And here.

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

(enforce_consistent_revprop_caching): New test covering the new mode as

well as new the consistency check.

(test_funcs): Register new test.

  1. … 8 more files in changeset.
Following the availability of apr_hash_this_key() etc. in APR v1.5, use

these in Subversion code instead of svn__apr_hash_index_key() etc. Provide

substitutes only when APR is too old to provide them.

* subversion/include/svn_types.h,

subversion/libsvn_subr/iter.c

(svn__apr_hash_index_key,

svn__apr_hash_index_klen,

svn__apr_hash_index_val):

Rename to apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val.

Declare and define them only if APR is older than 1.5.

Everywhere else: track the renames.

  1. … 102 more files in changeset.
Reverting experimental move-related APIs.

For details see http://svn.haxx.se/dev/archive-2014-05/0155.shtml

This effectively reverts revisions 1595600,1572044,1547039,1535341,

1535330,1535080,1535029,1534280,1532200,1527217,1527088,1526057,

1526014,1526013,1525484,1525467,1525464,1525463,1525462,1525460,

1525459,1525453,1525448,1525442,1525432,1525429 and 1525419.

Remove respective entries from CHANGES.

  1. … 43 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.
Make svn_fs_lock_target_t opaque in the public API so that any

future changes to the target parameters are easier.

* subversion/include/svn_fs.h

(struct svn_fs_lock_target_t): Change to forward declaration.

(svn_fs_lock_target_create, svn_fs_lock_target_set_token): New.

* subversion/libsvn_fs/fs-loader.h

(struct svn_fs_lock_target_t): Define.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_lock_target_create, svn_fs_lock_target_set_token): New.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_lock_many): Use svn_fs_lock_target_set_token.

(svn_repos_fs_lock): Use svn_fs_lock_target_create.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__lock): Use svn_fs_lock_target_create.

* subversion/svnserve/serve.c

(lock_many): Use svn_fs_lock_target_create.

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

(lock_multiple_paths): Use svn_fs_lock_target_create.

  1. … 6 more files in changeset.
Convert the new multi-path lock and unlock functions to a callback API,

rename from _lock2 and _unlock2 to _lock_many and _unlock_many.

* subversion/include/svn_fs.h

(svn_fs_lock_result_t): Remove.

(svn_fs_lock_callback_t):

(svn_fs_lock2): Rename to...

(svn_fs_lock_many): ...this, change to callback API.

(svn_fs_unlock2): Rename to...

(svn_fs_unlock_many): ...this, change to callback API.

* subversion/include/svn_repos.h

(svn_repos_fs_lock2): Rename to...

(svn_repos_fs_lock_many): ...this, change to callback API.

(svn_repos_fs_unlock2): Rename to...

(svn_repos_fs_unlock_many): ...this, change to callback API.

* subversion/libsvn_fs/fs-loader.h

(struct fs_vtable_t): Change lock and unlock to callback API.

* subversion/libsvn_fs/fs-loader.c

(struct lock_many_baton_t, lock_many_cb): New.

(svn_fs_lock2): Rename to...

(svn_fs_lock_many): ...this, change to callback API.

(struct lock_baton_t, lock_cb): New.

(svn_fs_lock): Adapt to callback API.

(svn_fs_unlock2): Rename to...

(svn_fs_unlock_many): ...this, change to callback API.

(svn_fs_unlock): Adapt to callback API.

* subversion/libsvn_fs_fs/lock.h

* subversion/libsvn_fs_fs/lock.c

(svn_fs_fs__lock, svn_fs_fs__unlock): Change to callback API.

* subversion/libsvn_fs_base/lock.h

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__lock, svn_fs_base__unlock): Change to callback API.

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/lock.c

(svn_fs_x__lock, svn_fs_x__unlock): Change to callback API.

* subversion/libsvn_ra_local/ra_plugin.c

(deltify_etc): Adapt to callback API.

(struct lock_baton_t, lock_cb): New.

(svn_ra_local__lock, svn_ra_local__unlock): Adapt to callback API.

* subversion/libsvn_repos/fs-wrap.c

(struct lock_many_baton_t, lock_many_cb): New.

(svn_repos_fs_lock2): Rename to...

(svn_repos_fs_lock_many): ...this, change to callback API.

(struct lock_baton_t, lock_cb): New.

(svn_repos_fs_lock): Adapt to callback API.

(svn_repos_fs_unlock2): Rename to...

(svn_repos_fs_unlock_many): ...this, change to callback API.

(svn_repos_fs_unlock): Adapt to callback API.

* subversion/mod_dav_svn/version.c

(unlock_many_cb): New.

(release_locks): Adapt to callback API.

* subversion/svnserve/serve.c

(write_lock): Make parameter const.

(lock_cb): New.

(unlock_paths): Adapt to callback API.

(struct lock_result_t, struct lock_many_baton_t, lock_many_cb): New.

(clear_lock_result_hash): New.

(lock_many, unlock_many): Adapt to callback API.

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

(struct lock_result_t): New.

(expect_lock, expect_error, expect_unlock, expect_unlock_error): Change

to struct lock_result_t.

(struct lock_many_baton_t, lock_many_cb): New.

(lock_multiple_paths): Adapt to callback API.

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

(struct lock_result_t): New.

(lock_cb, expect_lock, expect_error, expect_unlock, expect_unlock_error,

lock_test): Change to struct lock_result_t.

  1. … 15 more files in changeset.
Merge the fsfs-lock-many branch to trunk. This introduce multiple

path lock and unlock at the FS level and connects it up over ra_local

and ra_svn, and also uses it post-commit to release locks. A summary

of the branch changes:

* subversion/include/svn_fs.h

(svn_fs_lock_target_t, svn_fs_lock_result_t,

svn_fs_lock2, svn_fs_unlock2): new.

* subversion/include/svn_repos.h

(svn_repos_fs_lock2, svn_repos_fs_unlock2): new.

* subversion/include/svn_error.h

(SVN_ERR_IS_LOCK_ERROR, SVN_ERR_IS_UNLOCK_ERROR): Add pre- hook errors.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_lock2, svn_fs_unlock2): New.

* subversion/libsvn_fs/fs-loader.h

(fs_vtable_t): Change lock and unlock parameters.

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_x/lock.c

(svn_fs_fs__lock, svn_fs_fs__unlock): New multiple path implementation.

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__lock, svn_fs_base__unlock): Iterate over paths.

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__lock, svn_fs_fs__unlock): Change parameters.

* subversion/libsvn_fs_x/lock.h

(svn_fs_x__lock, svn_fs_x__unlock): Change parameters.

* subversion/libsvn_fs_base/lock.h

(svn_fs_base__lock, svn_fs_base__unlock): Change parameters.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_lock2, svn_repos_fs_unlock2): New.

* subversion/libsvn_repos/repos.c

(SVN_REPOS__HOOK_POST_LOCK, SVN_REPOS__HOOK_POST_UNLOCK): Tweak hook

template text.

* subversion/libsvn_ra_local/ra_plugin.c

(deltify_etc, svn_ra_local__lock, svn_ra_local__unlock): Use new API.

* subversion/mod_dav_svn/version.c

(release_locks): Use new API.

* subversion/svnserve/serve.c

(unlock_paths, lock_many, unlock_many): Use new API.

* subversion/libsvn_subr/log.c

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__lock, svn_fs_fs__unlock,

svn_log__lock_one_path, svn_log__unlock_one_path): Change parameter.

* subversion/libsvn_client/locking_commands.c

(store_locks_callback): Tweak error handling.

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

(lock_multiple_paths): New test.

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

(lock_test): New test.

* subversion/tests/cmdline/authz_tests.py

(authz_locking): Tweak expectations.

* subversion/tests/cmdline/lock_tests.py

(block_unlock_if_pre_unlock_hook_fails, lock_hook_messages): Tweak

expectations.

(failing_post_hooks): New.

  1. … 26 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.
Kick off work on pkg-config support (issue #738, and also #4435).

pkg-config support allows API consumers on UNIX-like systems to link

to Subversion libraries without having to manually specify the correct

set of linker flags, including the particular flags for dependencies

required by a particular build of Subversion (bdb, serf, etc.).

pkg-config uses libsvn_foo.pc files which describe the set of flags

required to link to libsvn_foo.

See http://www.freedesktop.org/wiki/Software/pkg-config/ for more information.

Make gen-make.py produce .pc.in files for all Subversion libraries,

and make the configure script produce .pc files from these .pc.in files.

Dependency declarations and linker flags are based on information

parsed from build.conf.

Dependencies of Subversion which support pkg-config can be marked

as such in build.conf, allowing pkg-config to resolve them. The

name of the dependency's pkg-config script has to be specified

without the .pc extension, e.g.:

[gnome-keyring]

type = lib

external-lib = $(SVN_GNOME_KEYRING_LIBS)

pkg-config = gnome-keyring-1

Dependencies not aware of pkg-config are added to linker flags directly.

To illustrate, the generated libsvn_client.pc file on my system contains:

[[[

prefix=/home/stsp/svn/prefix/svn-trunk

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

Name: libsvn_client

Description: Subversion Client Library

Version: 1.9.0

Required: apr-1

Required.private:

Libs: -L${libdir} -lsvn_wc -lsvn_ra -lsvn_delta -lsvn_diff -lsvn_subr

Cflags: -I${includedir}

]]]

There is no support for optional dependencies between Subversion libraries

yet, however. For instance, libsvn_client might or might not be linked to

libsvn_ra_serf. Such dependencies are currently omitted. Also, I'm not

sure yet what to do in cases where a dependency might be statically or

dynamically linked, e.g. sqlite.

The .pc files are not being installed yet. I don't want to expose these

files to systems using pkg-config until all outstanding issues are resolved.

* build/generator/gen_make.py

(Generator.write): Generate .pc.in files.

(Generator.write_pkg_config_dot_in_files): New helper function.

* build/generator/templates/pkg-config.in.ezt: New file, the .pc.in template.

* build.conf: apr, apr-util, serf, gnome-keyring, and sqlite support pkg-config.

There may be others (kwallet?) but I haven't investiged more yet.

I also haven't checked yet if all versions of these dependencies support

pkg-config. The most recent versions do support it.

* configure.ac

(SVN_APR_MAJOR_VERSION): Declare. APR's major version number is needed

to select the correct pkg-config script name (e.g. apr-1 or apr-2).

Generate .pc files from pc.in files.

* subversion/libsvn_auth_gnome_keyring, subversion/libsvn_auth_kwallet,

subversion/libsvn_client, subversion/libsvn_delta, subversion/libsvn_diff,

subversion/libsvn_fs, subversion/libsvn_fs_base, subversion/libsvn_fs_fs,

subversion/libsvn_fs_util, subversion/libsvn_fs_x, subversion/libsvn_ra,

subversion/libsvn_ra_local, subversion/libsvn_ra_serf,

subversion/libsvn_ra_svn, subversion/libsvn_repos, subversion/libsvn_subr,

subversion/libsvn_wc: Ignore generated .pc and .pc.in files.

  1. … 20 more files in changeset.
Tweak ra session open failure error generation to produce a localizable message

and use an easy to check code.

* subversion/include/svn_error_codes.h

(SVN_ERR_RA_CANNOT_CREATE_SESSION): New error code.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_open4): Wrap provider specific error codes with generic error.

Make message localizable.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__open): Remove wrapping that has been in ra_loader.c for some

versions to avoid duplicated error messages.

  1. … 2 more files in changeset.
Small code cleanup in ra_plugin.c. No functional changes.

* subversion/libsvn_ra_local/ra_plugin.c

(get_node_props): Remove iprop support and cleanup arguments.

(svn_ra_local__get_file,

svn_ra_local__get_dir): Update caller that only needs node props.

(svn_ra_local__get_inherited_props): Obtain iprops directly.

Introduce a new ra api: svn_ra_session_dup() which allows opening a new ra

session from an existing ra session. While this by itself might help

performance in a few specific scenarios where opening a repository is

expensive, it also allows moving certain kinds of ra backwards

compatibility code into the ra layer itself, that are otherwise impossible.

Update two usages to add some test coverage.

* subversion/include/svn_ra.h

(svn_ra_dup_session): New function.

* subversion/libsvn_client/diff.c

(diff_repos_repos,

diff_summarize_repos_repos): Showcase for testing. Update caller.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_dup_session): New function.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add member.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__dup_session): New function.

(ra_local_vtable): Update vtable.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__session_t): Add comment. Add config.

* subversion/libsvn_ra_serf/serf.c

(svn_ra_serf__open): Store config.

(ra_serf_dup_session): New function.

(serf_vtable): Update vtable.

* subversion/libsvn_ra_svn/client.c

(open_session): Add argument. Store config.

(ra_svn_dup_session): New function.

(ra_svn_reparent): Update caller.

(ra_svn_vtable): Update vtable.

* subversion/libsvn_ra_svn/ra_svn.h

(svn_ra_svn__session_baton_t): Add variable.

  1. … 8 more files in changeset.