Checkout Tools
  • last updated 8 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1423840 is being indexed.

Resolve issue #4168, by detecting working copy roots when handling the final

step of reverts.

* subversion/libsvn_wc/adm_ops.c

(revert_restore): Add revert_root argument and detect obstructing working

copies if not reverting explicit targets. Update recursion

(revert_internal): Update caller.

* subversion/tests/cmdline/revert_tests.py

(revert_obstructing_wc): Update expected result.

  1. … 1 more file in changeset.
* subversion/libsvn_wc/adm_ops.c

(add_from_disk): Remove unused notification parameters.

(svn_wc_add4, svn_wc_add_from_disk): Adjust callers.

Standardize the naming of the recorded size and time variable names.

No functional changes.

* subversion/libsvn_wc/adm_ops.c

(revert_restore): Rename local variable.

* subversion/libsvn_wc/entries.c

(db_node_t): Rename variables in struct.

(insert_node,

write_entry): Update users.

* subversion/libsvn_wc/props.c

(do_propset): Update comment.

* subversion/libsvn_wc/status.c

(read_info,

assemble_status): Update struct usage.

* subversion/libsvn_wc/update_editor.c

(svn_wc_add_repos_file4): Update comment.

* subversion/libsvn_wc/wc_db.c

(read_info): Rename argument in prototype.

(insert_base_node): Rename variable.

(record_baton_t): Add comment. Use proper variable names.

(db_record_fileinfo,

svn_wc__db_global_record_fileinfo,

set_props_txn): Update baton usage.

(remove_node_txn): Rename variable.

(read_info,

svn_wc__db_read_info_internal,

svn_wc__db_read_info): Rename argument.

(read_children_info): Update struct usage.

(has_local_mods): Rename variable.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_info): Rename argument and update documentation.

(svn_wc__db_info_t): Rename variable.

(svn_wc__db_global_record_fileinfo): Rename arguments and update

documentation.

* subversion/libsvn_wc/workqueue.h

(svn_wc__wq_build_file_install): Update documentation.

* subversion/tests/libsvn_wc/db-test.c

(test_working_info): Rename a few variables.

  1. … 8 more files in changeset.
Make the wc_db property handling code report an error when accessing

properties on deleted (and hidden) nodes, when not explicitly asking for

the pristine properties.

This change will (in a followup commit) allow removing some expensive checks

in higher level apis.

* subversion/libsvn_client/add.c

(svn_client__get_all_ignores): Handle getting the error

SVN_ERR_WC_PATH_UNEXPECTED_STATUS as if touching an unversioned

path.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_add_lock2): When a node doesn't have properties, we can assume

it doesn't need svn:needs-lock special handling.

* subversion/libsvn_wc/wc_db.c

(db_read_pristine_props): Add argument.

(cross_db_copy,

set_props_txn,

db_read_props): Update callers. Expect errors when reading deleted nodes.

(db_read_pristine_props): Add boolean argument to trigger reading while

in an unexpected state errors.

(svn_wc__db_read_pristine_props): Update caller. Suppress deleted node

errors.

  1. … 2 more files in changeset.
Check for the required write lock in another WC function.

* subversion/include/svn_wc.h

(svn_wc_remove_from_revision_control2): In the doc string, state exactly

what write lock is required.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__internal_remove_from_revision_control): Check for the write lock.

  1. … 1 more file in changeset.
Disable automatic working copy upgrades. This has been discussed over and

over, with many people in the community indicating they prefer manual upgrades.

For now, this is a hard-coded default. There is no way to enable auto-upgrade.

And unfortunately there is no single knob to globally switch auto-upgrade on

and off in the code. Rather, function parameters have to be tweaked in various

places where a working copy database is opened.

Some parts of the upgrade code were written and tested exclusively for

upgrading from 1.6 and earlier working copy formats to wc-ng, and thus

needed small fixes to allow 'svn upgrade' to run wc-ng -> wn-ng format

bumps without crashing.

* subversion/libsvn_wc/adm_files.c

(svn_wc_create_tmp_file2): Don't auto-upgrade working copies.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_get_pristine_copy_path): Don't auto-upgrade working copies.

* subversion/libsvn_wc/cleanup.c

(svn_wc_cleanup3): Don't auto-upgrade working copies.

* subversion/libsvn_wc/context.c

(svn_wc_context_create): Don't auto-upgrade working copies.

* subversion/libsvn_wc/lock.c

(pool_cleanup_locked, svn_wc_adm_open3, svn_wc_adm_probe_open3,

open_anchor): Don't auto-upgrade working copies.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_sdb): Initialise *result_format before use if the

working copy is already at format SVN_WC__VERSION to prevent an assertion

during no-op upgrades of wc-ng working copies.

(is_old_wcroot): Remove Subversion version numbers from error messages.

It is now misleading to say that an upgrade is not possible because a

pre-1.7 working copy was found since 'svn upgrade' now runs on any format.

(svn_wc_upgrade): Handle upgrades from wc-ng-style working copies.

Enable auto-upgrade of the db during upgrades from pre-1.7 WCs to avoid

'svn upgrade' advising users to run 'svn upgrade'.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_bump_format): New helper function for wc-ng -> wc-ng upgrades.

Ensures that the upgrade target is a working copy root, and performs a

format bump of wcroot->sdb, which isn't exposed outside of the wc_db layer.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_bump_format): Declare.

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_pdh_create_wcroot): Properly handle the case where we do not

auto-upgrade and run into a working copy using an older format.

Previously, we ended up asserting in VERIFY_USABLE_WCROOT() somewhere

because no upgrade happened but no error was returned either. Instead,

return an error advising the user to upgrade the working copy.

* subversion/tests/cmdline/upgrade_tests.py

(wc_is_too_old_regex): The error message matched by this regex has changed

in some cases, so adjust the regex accordingly.

(basic_upgrade): Expect slightly different error messages resulting from

above changes. The error code returned is unchanged, however.

(upgrade_tree_conflict_data, upgrade_from_format_28): These tests were

running 'svn status' and 'svn info' to trigger auto-upgrades. Make them

run 'svn upgrade' instead to keep them passing.

  1. … 9 more files in changeset.
Avoid a parsing order dependency in the add symlink code. This might fix a

symlink issue on *nix operating systems.

* subversion/libsvn_wc/adm_ops.c

(check_can_add_node): Allow adding symlinks pointing to a working copy to

their parent directories.

* subversion/libsvn_wc/adm_ops.c

(create_delete_wq_items): Pass scratch and result pools in correct order.

If we just want to know whether a path is the working copy root ask

for that instead of asking for the path and performing a comparison.

* subversion/libsvn_wc/adm_files.c

(svn_wc__adm_destroy): Simplify code.

* subversion/libsvn_wc/adm_ops.c

(revert_internal): Simplify code.

* subversion/libsvn_wc/cleanup.c

(cleanup_internal): Simplify code.

* subversion/libsvn_wc/merge.c

(detranslate_wc_file): Don't fetch an unused variable.

  1. … 3 more files in changeset.
In the post commit handling, fetch a bit more information in a single

wc_db operation to avoid two further wc_db transactions.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): Add 3 arguments to avoid db_read_info() call.

(svn_wc__process_committed_internal): Read information before leaf call and

calculate kind after performing the leaf call.

Don't obtain kind and status for early filtering as a simple hash table

lookup and filtering in the next function avoids a db call.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): As commit handles committing to the BASE layer

it should just use the base remove function. In this case both remove

functions have the same effect as the function only opperates on deletes

that directly apply on BASE nodes.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): Remove two unused local variables.

Replace the very wc-1.0 style svn_wc__internal_remove_from_revision_control

function with an atomic wc-ng function. This makes operations like reducing the

depth of a working copy or removing externals from a wc atomic by performing

a db operation and installing workqueue items.

* subversion/libsvn_client/externals.c

(relegate_dir_external): Obtain lock here that was obtained in the caller.

Properly handle working copy renames.

(switch_dir_external): Remove function that has been moved to the callee.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf): Update caller.

* subversion/libsvn_wc/crop.c

(includes): Include workqueue.h.

(IGNORE_LOCAL_MOD): Remove now unused macro.

(crop_children): Use db operation directly.

(svn_wc_exclude): Use db operation directly. Avoid second db operation

by passing absent information.

(svn_wc_crop_tree2): Update caller. Run workqueue.

* subversion/libsvn_wc/externals.c

(svn_wc__external_remove): If we leave an external, leave the whole external

by using the fail early mode.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_WORKING_PRESENT,

STMT_DELETE_NODE_RECURSIVE,

STMT_DELETE_NODE): New queries.

* subversion/libsvn_wc/wc_db.c

(remove_node_baton): Add fields for new options.

(remove_node_txn): Add code to create workqueue items for nodes that exist

on disk. Provide cancellation checking when checking for changes.

Allow setting excluded and not-present.

(svn_wc__db_op_remove_node): Update caller.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_remove_node): Update prototype and documentation.

  1. … 6 more files in changeset.
Handle an currently always FALSE argument of svn_wc_remove_from_revision_control2

in the public wrapper to make it easier to switch the implementation to an

atomic operation.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__internal_remove_from_revision_control): Remove instant_error argument,

assume its value is false trough this function.

(remove_from_revision_status_callback): New function, implementing

instant_error as status walker callback.

(svn_wc_remove_from_revision_control2): Walk status before calling

svn_wc__internal_remove_from_revision_control when instant_error is true.

* subversion/libsvn_wc/crop.c

(crop_children): Update caller.

* subversion/libsvn_wc/wc.h

(svn_wc__internal_remove_from_revision_control): Remove argument.

  1. … 2 more files in changeset.
* subversion/libsvn_wc/adm_ops.c

(revert_partial): Verify type of the child for depth processing (instead

of type of the parent *directory*). This fixes the problem checked for

since r1365549.

Make 'svn rm' remove externals registrations below its targets.

We allow deleting parents of file externals (as we allow deleting

directories that contain switched paths) and directories that have

directory externals somewhere below them.

This patch removes the registration in the EXTERNALS table and for

file externals the entire file external so the next update will find

a normal working copy.

The new behavior is more what users expect, reduces the number of strange

database states and resolves some regressions since 1.6.

Suggested by: Dmitry Pavlenko <pavlenko{_AT_}tmatesoft.com>

* subversion/libsvn_wc/adm_ops.c

(svn_wc__delete_internal): Update caller.

* subversion/libsvn_wc/update_editor.c

(delete_entry): Update caller.

* subversion/libsvn_wc/wc-queries.sql

(STMT_DELETE_FILE_EXTERNALS,

STMT_DELETE_FILE_EXTERNAL_REGISTATIONS,

STMT_DELETE_EXTERNAL_REGISTATIONS): New statements.

* subversion/libsvn_wc/wc_db.c

(op_delete_baton_t): Add delete_dir_externals.

(delete_node): Delete externals if necessary.

(op_delete_many_txn): Update caller.

(svn_wc__db_op_delete): Pass delete_dir_externals.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_delete): Add delete_dir_externals argument and update

documentation.

(svn_wc__db_op_delete_many): Update documentation.

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

(do_delete): Update caller.

(copy_file_externals): Update expected result.

  1. … 5 more files in changeset.
Make svn_wc__delete_many properly handle deletions of multiple targets with

conflict markers by storing them in a guaranteed stable way.

Instead of fixing the original logic to store markers from multiple targets

just create work items to make svn_wc__delete and svn_wc__delete_many

handle all deletes in an atomic way.

* subversion/libsvn_wc/adm_ops.c

(create_delete_wq_items): New function, extracted from ...

(svn_wc__delete_many,

svn_wc__delete_internal): ... these functions which now just install wq

items instead of using in-memory state.

* subversion/libsvn_wc/wc_db.c

(op_delete_many_baton_t): Add work_items and delete_dir_externals flags.

(op_delete_many_txn): Install work items and note a todo.

(svn_wc__db_op_delete_many): Update caller.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_delete_many): Add arguments.

  1. … 2 more files in changeset.
Following up on r1357929, also add conflict and work_items to

svn_wc__db_op_delete(). This allows reinstalling the tree_conflict

again in the update_editor for when it has just been deleted.

Avoid setting up and removing the notification table if no

notifications are required, such as from the update editor.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__delete_internal): Update caller.

* subversion/libsvn_wc/update_editor.c

(delete_entry): Update caller.

(add_directory): Update caller. Pass conflict.

* subversion/libsvn_wc/wc_db.c

(op_delete_baton_t): Add variables.

(delete_node): Allow setting work_items and conflict. Make notify

handling optional.

(svn_wc__db_op_delete): Reorder arguments. Optimize non-notify case

Allow setting work_items and conflict.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_delete): Reorder arguments as suggested by TODO. Add standard

arguments.

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

(do_delete): Update caller.

  1. … 4 more files in changeset.
Make the conflict handling in the revert code ready for conflict skels

by using an array of marker paths instead of specific markers.

(This also allows a simple loop in the callers)

* subversion/libsvn_wc/adm_ops.c

(revert_restore): Update caller. Loop over the conflict markers.

* subversion/libsvn_wc/wc-queries.sql

(STMT_CREATE_REVERT_LIST):

Add conflict_data blob and fill it in the triggers.

(STMT_SELECT_REVERT_LIST): Reorder columns to move the conflicts at the

end.

* subversion/libsvn_wc/wc_db.c

(revert_list_read_baton): Store marker list.

(revert_list_read): Collect a list of markers and add conflict skel code.

(svn_wc__db_revert_list_read): Use marker list.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_revert_list_read): Update prototype and documentation.

  1. … 3 more files in changeset.
Replace all calls to svn_wc__db_read_conflicts() by a call to a new

svn_wc__read_conflicts() to allow switching more of the wc_db api to

conflict skels in a future patch.

No functional changes, but removes some dead code.

* subversion/include/private/svn_wc_private.h

(svn_wc__node_get_conflict_info): Remove unused function.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__delete_many,

svn_wc__delete_internal): Update caller.

* subversion/libsvn_wc/conflicts.c

(svn_wc__read_conflicts): New function.

(resolve_conflict_on_node,

conflict_status_walker): Update caller.

* subversion/libsvn_wc/copy.c

(copy_versioned_file,

remove_node_conflict_markers): Update caller.

* subversion/libsvn_wc/entries.c

(read_one_entry): Update callers.

* subversion/libsvn_wc/info.c

(build_info_for_node,

svn_wc__get_info): Update callers.

* subversion/libsvn_wc/node.c

(svn_wc__node_get_conflict_info): Remove function.

* subversion/libsvn_wc/props.c

(svn_wc__get_prejfile_abspath): Remove function.

* subversion/libsvn_wc/questions.c

(svn_wc__internal_conflicted_p): Update caller.

* subversion/libsvn_wc/tree_conflicts.c

(svn_wc__get_tree_conflict): Update caller.

* subversion/libsvn_wc/wc.h

(svn_wc__read_conflicts): New function.

* subversion/libsvn_wc/workqueue.c

(run_set_text_conflict_markers,

run_set_property_conflict_marker): Update callers.

  1. … 11 more files in changeset.
Teach the get_wc_content() RA callback and supporting code to handle

MD5 checksums as content indexes, too. This *should* result in the

benefits of this enhancement extending to users of all 1.8 clients

irrespective of the server's pedigree, as MD5s have been in the server

streams since ... like ... forever.

* subversion/include/svn_ra.h

(svn_ra_get_wc_contents_func_t): Rename 'sha1_checksum' to merely

'checksum', and relax the requirement that SHA1 be the checksum

algorithm used to call up cached pristine contents.

* subversion/libsvn_client/ra.c

(get_wc_contents): Rename 'sha1_checksum' to 'checksum'.

* subversion/libsvn_ra_serf/update.c

(fetch_file): If we don't have a SHA1 checksum to use, that's okay

-- try the MD5 instead (which we definitely should have for all

extant servers).

* subversion/include/private/svn_wc_private.h

(svn_wc__get_pristine_contents_by_checksum): Rename 'sha1_checksum'

to 'checksum'.

* subversion/libsvn_wc/adm_ops.c

(get_pristine_lazyopen_baton_t): Rename 'sha1_checksum' to 'checksum'.

(get_pristine_lazyopen_func): If the reference checksum isn't a

SHA1, try to lookup the SHA1 based on what we have.

(svn_wc__get_pristine_contents_by_checksum): Rename 'sha1_checksum'

to 'checksum'.

Suggested by: gstein

  1. … 4 more files in changeset.
Add a blank line between declarations and statements where r1352068 didn't.

* subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_util.c,

subversion/tests/libsvn_subr/named_atomic-test.c,

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

Add blank lines.

  1. … 10 more files in changeset.
Do not use non-constant initializers in struct variables, since this

violates C'89 and C'90. Although most compilers used for Subversion support

non-constant initializers, some do not, such as Solaris SunPRO.

Patch by: Daniel Richard G. <skunk{_AT_}iSKUNK.ORG>

(tweaked by me: added a similar change in auth.c)

* subversion/libsvn_client/deprecated.c

(svn_client_propset3, svn_client_status4): Initialize struct variable

fields separately when they are non-constant.

* subversion/libsvn_client/info.c

(svn_client_info3): Same.

* subversion/libsvn_client/merge.c

(merge_locked, do_symmetric_merge_locked): Same.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_options_parse): Same.

* subversion/libsvn_fs_fs/fs_fs.c

(set_cached_window, svn_fs_fs__set_entry): Same.

* subversion/libsvn_fs_fs/lock.c

(walk_locks): Same.

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Same.

* subversion/libsvn_subr/sqlite.c

(wrapped_func): Same.

* subversion/libsvn_wc/adm_ops.c

(svn_wc_get_changelists): Same.

* subversion/libsvn_wc/props.c

(svn_wc__prop_list_recursive, svn_wc_prop_set4): Same.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_sdb): Same.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_op_set_changelist, svn_wc__db_revert_list_read, read_url,

svn_wc__db_revision_status): Same.

* subversion/libsvn_wc/wc_db_util.c

(svn_wc__db_with_txn): Same.

* subversion/svn/merge-cmd.c

(merge_reintegrate): Same.

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

(proc_found, run_procs): Same.

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

(wc_update, check_db_rows, copy_subtest_t, wc_wc_copies, repo_wc_copies):

Same.

  1. … 15 more files in changeset.
Make svn_wc__db_read_kind() handle processing 'hidden', just like

svn_wc_read_kind(). This allows making the lock processing to disallow

locking hidden directories, which in turn fixes the

update_with_parents_and_exclude() test.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_prop_deltas): Update caller.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__process_committed_internal): Update caller.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add3): Update caller.

* subversion/libsvn_wc/diff_local.c

(svn_wc_diff6): Update caller.

* subversion/libsvn_wc/lock.c

(svn_wc_adm_retrieve,

svn_wc_adm_probe_retrieve): Update caller.

(svn_wc__acquire_write_lock): Update caller. This fixes the update test.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_read_kind): Add argument and retrieve and process status if hidden

nodes shouldn't show up as files or directories.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_kind): Update prototype and argument documentation.

  1. … 7 more files in changeset.
Revert should not change permissions of files with svn:needs-lock in

copied directories.

* subversion/libsvn_wc/adm_ops.c

(revert_restore): Only handle svn:needs-lock if status is normal.

* subversion/tests/cmdline/revert_tests.py

(revert_permissions_only: Extend.

Found by: Fergus Slorach <sugref@gmail.com>

  1. … 1 more file in changeset.
Follow-up to r1335566:

* subversion/include/svn_io.h,

* subversion/libsvn_subr/stream.c

(svn_stream_lazyopen_create): Tweak function signature and behavior

to just return the stream directly (rather than an error).

* subversion/libsvn_wc/adm_ops.c

(svn_wc__get_pristine_contents_by_checksum): Update call to

svn_stream_lazyopen_create().

Suggested by: gstein

  1. … 2 more files in changeset.
Avoid opening pristine store file handles until they are actually

required.

* subversion/libsvn_wc/adm_ops.c

(get_pristine_lazyopen_baton_t): New private callback baton type.

(get_pristine_lazyopen_func): Callback implementation.

(svn_wc__get_pristine_contents_by_checksum): Use the new lazyopen

stream mechanics to avoid opening a file handle to the pristine

contents until it's first really needed.

Suggested by: gstein

Follow-up to r1333936, with some tweaks which follow from post-commit

review.

* subversion/include/private/svn_wc_private.h,

* subversion/libsvn_wc/adm_ops.c

(svn_wc__get_pristine_contents_by_checksum): Replace 'wcroot_abspath'

with 'wri_abspath'.

* subversion/libsvn_client/ra.c

(callback_baton_t): Lose unused 'wcroot_abspath' member. Add a new,

temporary (hopefully) 'base_dir_isversioned' member (with

explanation regarding its purpose and temporariness).

(get_wc_contents): Use the baton's 'base_dir_abspath' and

'base_dir_isversioned' members now instead of the (now removed)

'wcroot_abspath'. Also, constify the input checksum.

(svn_client__open_ra_session_internal): Don't calculate a

wcroot_abspath. Instead, remember whether the provided

base_dir_abspath is actually versioned (which will help the

get_wc_contents() callback avoid assuming that it is later).

* subversion/include/svn_ra.h

(svn_ra_get_wc_contents_func_t): Constify 'sha1_checksum'.

* subversion/libsvn_ra_serf/update.c

(local_fetch): Use svn_txdelta_send_stream() instead of a custom

window-building loop. Also, fix error message to mention the

correct request type (HEAD).

Suggested (mostly) by: gstein

  1. … 4 more files in changeset.
Teach libsvn_ra_serf to make use of the server-provided SHA1 checksums

I introduced in 1.7 (iff they are provided, of course) to avoid

downloading server content that's already locally available.

* subversion/include/private/svn_wc_private.h,

* subversion/libsvn_wc/adm_ops.c

(svn_wc__get_pristine_contents_by_checksum): New function.

* subversion/include/svn_ra.h

(svn_ra_get_wc_contents_func_t): New callback type.

(svn_ra_callbacks2_t): Add get_wc_contents vtable member.

* subversion/libsvn_client/ra.c

(callback_baton_t): Add 'wcroot_abspath' member.

(get_wc_contents): New function.

(svn_client__open_ra_session_internal): Initialize new

'get_wc_contents' baton member.

* subversion/libsvn_ra_serf/update.c

(report_ctx_t): Add 'cached_contents' member.

(local_fetch, handle_local_fetch): New functions.

(fetch_file): Use the 'get_wc_contents' RA callback to check for a

local copy of the file contents whose SHA1 checksum we are about to

fetch from the server. If we've got those contents already, read

them (via the callback-returned stream) instead of from the network.

  1. … 4 more files in changeset.
Move private API declarations from svn_hash_private.h to

svn_subr_private.h. Also, fix serf build.

* subversion/include/private/svn_hash_pivate.h

drop

* subversion/include/private/svn_subr_pivate.h

(svn_hash__clear, svn_hash__get_cstring, svn_hash__get_bool,

svn_hash__make, svn_hash__make_fast): move here

* subversion/libsvn_client/merge.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_wc/adm_ops.c,

subversion/svnrdump/dump_editor.c:

include subversion/include/private/svn_subr_pivate.h

Suggested by: gstein

Found by: gstein

  1. … 12 more files in changeset.