Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1139088 is being indexed.

As a follow-up to r1138871, rename status_unauthz again (formerly

status_absent), this time to status_server_excluded.

See for related discussion this post and follow-ups:

From: C. Michael Pilato

To: dev@

Subject: Re: svn commit: r1138871 - in /subversion/trunk/subversion:

include/private/ libsvn_client/ libsvn_wc/ tests/libsvn_wc/

Message-ID: <4E0346D4.4040400@collab.net>

http://svn.haxx.se/dev/archive-2011-06/0727.shtml

Suggested by: julianfoad

(the new name 'server-excluded')

* subversion/include/private/svn_wc_private.h

(svn_wc__node_is_status_unauthz): Rename to...

(svn_wc__node_is_status_server_excluded): ... this, and rename the

'is_unauthz' output parameter to 'is_server_excluded'.

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

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/crop.c,

subversion/libsvn_wc/diff_editor.c

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/ambient_depth_filter_editor.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db.h,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/cleanup.c,

subversion/libsvn_wc/workqueue.c,

subversion/libsvn_client/copy.c,

(test_getting_info, validate_node, test_inserting_nodes, test_pdh,

svn_wc__perform_props_merge, svn_wc__get_pristine_props, svn_wc_delete4,

check_can_add_to_parent, revert_restore, report_revisions_and_depths,

recursive_resolve_conflict, crop_children, svn_wc_exclude, svn_wc_crop_tree2,

walk_local_nodes_diff, report_wc_directory_as_added,

svn_wc__text_base_path_to_read, svn_wc__get_pristine_contents,

IS_NODE_PRESENT, check_tree_conflict, delete_entry, absent_node,

svn_wc__check_wc_root, build_info_for_entry, copy_versioned_dir,

svn_wc_copy3, make_file_baton, open_root, delete_entry, open_directory,

get_dir_status, internal_status, svn_wc__internal_check_wc, adm_available,

read_one_entry, write_entry, kind_map, insert_base_node,

add_absent_excluded_not_present_node, svn_wc__db_base_add_absent_node,

db_op_copy, db_op_copy_shadowed_layer, check_replace_txn,

bump_node_revision, bump_revisions_post_update, svn_wc__db_node_hidden,

svn_wc__db_status_t, svn_wc__db_base_add_symlink,

svn_wc__db_op_set_tree_conflict, convert_db_kind_to_node_kind,

walker_helper, svn_wc__internal_walk_children,

svn_wc__node_is_status_absent, svn_wc__internal_node_get_schedule,

svn_wc__check_for_obstructions, repair_timestamps, remove_base_node,

repos_to_wc_copy_locked): Rename things as follows:

status_unauthz -> status_server_excluded; is_unauthz -> is_server_excluded

  1. … 21 more files in changeset.
As part of internal API cleanup, and in the name of code clarity,

rename svn_wc__db_status_absent to svn_wc__db_status_unauthz (not

authorized), because this is what 'absent' really means. Now there

is less potential for confusing 'absent' with 'not-present' and 'excluded'.

Discussed on IRC with Julian and Bert (not on dev@, but I still wanted

to mention that this wasn't just my own idea).

We considered postponing this step to post-1.7 but Bert pointed out

that doing so would unnecessarily make backport merges harder.

But note that this does not rename all occurrences of the term 'absent'

so we'll have to live with historical baggage in some function names,

comments, etc.

Neither does this change the wc.db schema. But I think it would be good

to rename the NODES presence value "absent" to "unauthz" as well in a

separate step (including a format bump).

Suggested by: julianfoad

(the new name 'unauthz')

* subversion/include/private/svn_wc_private.h

(svn_wc__node_is_status_absent): Rename to...

(svn_wc__node_is_status_unauthz): ... this, and rename the 'is_absent'

output parameter to 'is_unauthz'.

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

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/crop.c,

subversion/libsvn_wc/diff_editor.c

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/ambient_depth_filter_editor.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db.h,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/cleanup.c,

subversion/libsvn_wc/workqueue.c,

subversion/libsvn_client/copy.c,

(test_getting_info, validate_node, test_inserting_nodes, test_pdh,

svn_wc__perform_props_merge, svn_wc__get_pristine_props, svn_wc_delete4,

check_can_add_to_parent, revert_restore, report_revisions_and_depths,

recursive_resolve_conflict, crop_children, svn_wc_exclude, svn_wc_crop_tree2,

walk_local_nodes_diff, report_wc_directory_as_added,

svn_wc__text_base_path_to_read, svn_wc__get_pristine_contents,

IS_NODE_PRESENT, check_tree_conflict, delete_entry, absent_node,

svn_wc__check_wc_root, build_info_for_entry, copy_versioned_dir,

svn_wc_copy3, make_file_baton, open_root, delete_entry, open_directory,

get_dir_status, internal_status, svn_wc__internal_check_wc, adm_available,

read_one_entry, write_entry, kind_map, insert_base_node,

add_absent_excluded_not_present_node, svn_wc__db_base_add_absent_node,

db_op_copy, db_op_copy_shadowed_layer, check_replace_txn,

bump_node_revision, bump_revisions_post_update, svn_wc__db_node_hidden,

svn_wc__db_status_t, svn_wc__db_base_add_symlink,

svn_wc__db_op_set_tree_conflict, convert_db_kind_to_node_kind,

walker_helper, svn_wc__internal_walk_children,

svn_wc__node_is_status_absent, svn_wc__internal_node_get_schedule,

svn_wc__check_for_obstructions, repair_timestamps, remove_base_node,

repos_to_wc_copy_locked): Rename things as follows:

status_absent -> status_unauthz; is_absent -> is_unauthz

  1. … 21 more files in changeset.
Allow the operation to fetch a workqueue item to mark a previous item

completed. This removes one database transaction for every processed

workqueue item.

* subversion/libsvn_wc/lock.c

(pool_cleanup_locked): Update caller.

* subversion/libsvn_wc/wc_db.c

(wq_fetch_next_baton_t): New struct.

(wq_fetch_next): New function.

(svn_wc__db_wq_fetch): Rename to ...

(svn_wc__db_wq_fetch_next): ... this and call wq_fetch_next,

inside a transaction to fetch and complete items.

(svn_wc__db_wq_completed): Remove function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_wq_fetch): Rename to ...

(svn_wc__db_wq_fetch_next): ... this and update documentation.

* subversion/libsvn_wc/workqueue.c

(svn_wc__wq_run): Update caller.

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

(test_work_queue): Update caller.

  1. … 4 more files in changeset.
Remove some ### markers by simple code rearrangement. No functional changes.

* subversion/libsvn_wc/lock.c:

(do_close): needless forward decl removed

(add_to_shared, get_from_shared, close_single): moved further up the

file in order to remove forward declarations.

* subversion/libsvn_wc/workqueue.c:

(dispatch_work_item): needless forward decl removed

(svn_wc__wq_build_file_copy_translated): remove ### comment since we are

already translating to relative paths

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

(missing): Silence a warning: Constant objects should be initialized.

Add three more arguments to our function with the most arguments. Do this to

allow handling more operations with a single read transaction and to allow

fixing code that should know about multiple WORKING layers.

This patch adds the following three new (optional) boolean output arguments:

had_props - Does it have pristine properties

op_root - Is it a layer defining operation

have_more_work - Does it have multiple working layers

Because I had to update all callers anyway, I moved a few arguments to a more

sensible location. (See the wc_db.h change for more information on that).

This patch just updates the callers to get the same information as before.

No functional changes in any of the callers.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc_restore,

report_revisions_and_depths,

find_base_rev,

svn_wc_crawl_revisions5,

read_and_checksum_pristine_text): Update callers.

* subversion/libsvn_wc/adm_files.c

(svn_wc__text_base_path_to_read,

svn_wc__get_pristine_contents,

svn_wc__internal_ensure_adm): Update callers.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf,

svn_wc__process_committed_internal,

svn_wc_delete4,

check_can_add_to_parent,

check_can_add_node,

revert_restore,

new_revert_partial,

svn_wc__internal_remove_from_revision_control,

svn_wc__internal_changelist_match): Update callers.

* subversion/libsvn_wc/ambient_depth_filter_editor.c

(ambient_read_info): Update caller.

* subversion/libsvn_wc/cleanup.c

(repair_timestamps): Update caller.

* subversion/libsvn_wc/conflicts.c

(recursive_resolve_conflict): Update caller.

* subversion/libsvn_wc/copy.c

(copy_pristine_text_if_necessary,

svn_wc_copy3): Update callers.

* subversion/libsvn_wc/crop.c

(crop_children,

svn_wc_exclude,

svn_wc_crop_tree2): Update callers.

* subversion/libsvn_wc/diff.c

(get_nearest_pristine_text_as_file,

file_diff,

report_wc_file_as_added,

report_wc_directory_as_added,

delete_entry,

apply_textdelta,

close_file,

* subversion/libsvn_wc/entries.c

(get_base_info_for_deleted,

read_one_entry,

svn_wc_walk_entries3,

* subversion/libsvn_wc/lock.c

(svn_wc__internal_check_wc,

adm_available,

child_is_disjoint): Update callers.

* subversion/libsvn_wc/node.c

(svn_wc__node_get_repos_info,

svn_wc_read_kind,

svn_wc__node_get_depth,

svn_wc__node_get_changed_info,

svn_wc__node_get_changelist,

svn_wc__node_get_base_checksum,

svn_wc__node_get_translated_size,

svn_wc__node_get_repos_relpath,

svn_wc__internal_get_copyfrom_info,

svn_wc__internal_walk_children,

svn_wc__node_is_status_deleted,

svn_wc__node_is_status_absent,

svn_wc__node_is_status_not_present,

svn_wc__node_is_status_excluded,

svn_wc__node_is_added,

svn_wc__node_get_base_rev,

svn_wc__node_get_working_rev_info,

svn_wc__node_get_commit_base_rev,

svn_wc__internal_node_get_schedule,

svn_wc__node_get_info_bits,

svn_wc__get_mergeinfo_walk_info,

svn_wc__node_depth_is_exclude,

svn_wc__node_get_origin,

svn_wc__node_get_commit_status): Update callers.

* subversion/libsvn_wc/props.c

(svn_wc__get_pristine_props,

svn_wc__internal_propset,

svn_wc__props_modified): Update callers.

* subversion/libsvn_wc/questions.c

(compare_and_verify,

svn_wc__internal_file_modified_p,

svn_wc__internal_conflicted_p,

svn_wc__expand_keywords): Update caller.

* subversion/libsvn_wc/relocate.c

(svn_wc_relocate4): Update callers.

* subversion/libsvn_wc/status.c

(read_info,

internal_status): Update callers. Avoid C++ keyword mutable.

* subversion/libsvn_wc/translate.c

(svn_wc__expand_keywords): Update callers.

* subversion/libsvn_wc/update_editor.c

(already_in_a_tree_conflict,

delete_entry,

add_directory,

open_directory,

add_file,

open_file,

make_editor,

svn_wc__check_wc_root,

svn_wc_add_repos_file4):

* subversion/libsvn_wc/wc_db.c

(read_info): Update argument list of prototype.

(cross_db_copy,

get_info_for_copy,

temp_op_delete_txn): Update callers.

(read_info): Update argument list and calculate new values.

(svn_wc__db_read_info): Update argument list and update caller.

(read_url_txn,

svn_wc__db_global_relocate,

svn_wc__db_node_hidden,

has_switched_subtrees): Update callers.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_info): Update, extend and cleanup documentation. Update argument

list.

* subversion/libsvn_wc/workqueue.c

(remove_base_node,

log_do_committed,

run_file_install): Update callers.

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

(test_working_info,

test_global_relocate): Update callers.

  1. … 21 more files in changeset.
Silence a bunch of deprecation warnings. These are expected, and not going

away anytime soon.

* subversion/libsvn_wc/lock.c:

Define SVN_DEPRECATED prior to any includes.

Fix issue #3843 ("file externals cause non-inheritable mergeinfo") on

trunk. (A fix was already made for the 1.6.x line.)

* subversion/include/private/svn_wc_private.h

(svn_wc__path_switched): Remove as unused.

(svn_wc__get_mergeinfo_walk_info): Add 'is_switched' and

'is_file_external' return parameters.

* subversion/libsvn_wc/lock.c

(svn_wc__path_switched): Remove as unused.

* subversion/libsvn_wc/node.c

(svn_wc__get_mergeinfo_walk_info): Add 'is_switched' and

'is_file_external' return parameters (and do the needful to return

them accurately).

* subversion/libsvn_client/merge.c

(get_mergeinfo_walk_cb): Update call to svn_wc__get_mergeinfo_walk_info(),

losing logic that's now encapsulated in that function and making

use of its is-file-external determination.

* subversion/tests/cmdline/externals_tests.py

(merge_target_with_externals): Drop @XFail() decorator.

  1. … 4 more files in changeset.
Fold a one-line function into its callsites.

* subversion/libsvn_wc/lock.c

(alloc_db): Remove.

(pool_cleanup_locked, svn_wc_adm_open3, open_anchor): Call

svn_wc__db_open() directly.

Remove svn_wc__db_openmode_t and its references. We no longer use it, and

SQLite handles its functionality for us automatically.

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

(create_open): Remove smode param, and don't use it to open the database.

(test_getting_info, test_inserting_nodes, test_children, test_working_info,

test_pdh, test_scan_addition, test_scan_deletion, test_global_relocate,

test_work_queue): Update callers.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_openmode_t): Remove.

(svn_wc__db_open): Remove openmode_t param, and update docstring.

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_open): Remove param, and don't set it in the struct.

* subversion/tests/libsvn_wc/entries-compat.c

(create_open),

* subversion/libsvn_wc/adm_ops.c

(svn_wc_get_pristine_copy_path),

* subversion/libsvn_wc/adm_files.c

(svn_wc_create_tmp_file2),

* subversion/libsvn_wc/context.c

(svn_wc_context_create),

* subversion/libsvn_wc/upgrade.c

(svn_wc_upgrade),

* subversion/libsvn_wc/cleanup.c

(svn_wc_cleanup3),

* subversion/libsvn_wc/lock.c

(alloc_db, svn_wc_adm_probe_open3):

Update callers.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_t): Remove mode member.

  1. … 10 more files in changeset.
Stylistic changes only.

* subversion/libsvn_wc/lock.c:

(svn_wc__acquire_write_lock): add a blank line to separate declarations

from the code. add comments to the params in the obtain() call.

(svn_wc__call_with_write_lock): add blank line between decls and code

* subversion/libsvn_wc/wc_db_private.h:

(...): add a few blank lines

(svn_wc__db_wcroot_t): fix OWNED_LOCKS description

  1. … 1 more file in changeset.
Just padding my stats.

(Actually, doing my regular trailing whitespace removal, similar to r875968.)

* everywhere:

for extsn in c h cpp java py pl rb; do

sed -i -e 's/[ \t]*$//' `find . -name "*.$extsn" | xargs grep '[ \t]$' -l`

done

  1. … 166 more files in changeset.
* subversion/libsvn_wc/lock.c

(open_single): Replace an error report that 'should never be reached' with

an assertion.

Remove obsolete multi-db code.

* subversion/libsvn_wc/lock.c

(svn_wc__internal_check_wc, svn_wc__acquire_write_lock,

svn_wc__release_write_lock): Remove conditional multi-db code.

(adm_available): Remove OBSTRUCTED parameter, remove conditional

multi-db code.

(do_open, open_anchor): Adjust call to adm_available, remove conditional

multi-db code.

(acquire_locks_recursively): Remove.

Remove the remaining checks for obstruction statee in libsvn_wc. These

statee are no longer returned from the wc_db api since we switched to

single-db. This is a a final cleanup step before removing some parts

of the multi-db support.

No functional change.

* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths): Disable check for obstructed.

* subversion/libsvn_wc/adm_files.c

(svn_wc__get_pristine_contents): Disable check for obstructed and

remove base-deleted check (value is wc_db internal).

(svn_wc__internal_ensure_adm): Disable check for obstructed.

* subversion/libsvn_wc/adm_ops.c

(process_committed_leaf,

svn_wc__process_committed_internal,

svn_wc_add4): Disable obstructed status checks.

* subversion/libsvn_wc/copy.c

(svn_wc_copy3): Disable obstructed check.

* subversion/libsvn_wc/crop.c

(svn_wc_exclude,

svn_wc_crop_tree2): Disable obstructed checks.

* subversion/libsvn_wc/diff.c

(file_diff): Remove obstructed check (file couldn't be obstructed)

* subversion/libsvn_wc/entries.c

(get_base_info_for_deleted,

read_one_entry): Disable obstructed checks.

* subversion/libsvn_wc/lock.c

(adm_available): Disable obstructed checks.

* subversion/libsvn_wc/node.c

(svn_wc__node_get_repos_info,

svn_wc__internal_node_get_url,

svn_wc__node_get_repos_relpath,

svn_wc__internal_get_copyfrom_info,

svn_wc__node_is_status_deleted,

svn_wc__node_is_added,

svn_wc__internal_is_replaced,

svn_wc__node_get_commit_base_rev,

svn_wc__internal_node_get_schedule): Disable checks for obstructed statee.

* subversion/libsvn_wc/props.c

(svn_wc__get_pristine_props): Disable check for obstructed.

* subversion/libsvn_wc/revision_status.c

(analyze_status): Disable check for obstructed status.

* subversion/libsvn_wc/status.c

(internal_status): Disable obstructed test.

* subversion/libsvn_wc/update_editor.c

(node_get_relpath_ignore_errors,

create_tree_conflict,

check_tree_conflict,

add_directory): Disable obstructed checks.

* subversion/libsvn_wc/workqueue.c

(remove_base_node,

log_do_committed): Disable obstructed checks.

  1. … 13 more files in changeset.
Remove the svn_wc__adm_missing() and svn_wc__adm_available() transitational

apis by properly checking for an obstructions status in the last two

remaining callers.

* subversion/libsvn_wc/adm_ops.c

(revert_entry): Check for the exact obstruction type.

(svn_wc__internal_remove_from_revision_control): Retrieve status and use that

for obstruction decisions.

* subversion/libsvn_wc/lock.c

(svn_wc__adm_available): Make static and rename to ...

(adm_available): ... this.

(do_open): Update caller.

(open_anchor): Update caller.

(svn_wc__adm_missing): Remove function.

* subversion/libsvn_wc/lock.h

(svn_wc__adm_missing,

svn_wc__adm_available): Remove functions.

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

(svn_wc__adm_available): Stop checking for depth excluded, as that is

already covered by status excluded.

* subversion/libsvn_wc/lock.c

(svn_wc__release_write_lock): Don't define variables in single-DB mode

that aren't used in single-DB mode.

In preparation for removing the final bits of the wc-loggy subsystem, remove

some includes of log.h

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/merge.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/upgrade.c

(includes): Remove log.h

  1. … 6 more files in changeset.
* subversion/libsvn_wc/lock.c.c

(svn_wc__internal_check_wc): Remove shadowing variable.

Don't assume that every node that has a record in a single-db database

is a working copy root. This resolves the regression that you can't

checkout a new working copy over a deleted node in single-db.

(So this fixes copy_tests.py 21 for single-db).

Before this patch the wc-db did a simple check to see if a row

existed for the directory node, but this is not the task of the wc-db

layer (which should just return the relevant wcroot info for a working

copy).

This patch moves this check to svn_wc__internal_check_wc().

* subversion/libsvn_wc/adm_files.c

(svn_wc__internal_ensure_adm): Update caller. Passing TRUE here fixes

copy-tests.py 21 for us.

* subversion/libsvn_wc/lock.c

(svn_wc__internal_check_wc): In single-db mode, verify if the directory

is really part of the wc-ng working copy, or if it just some node

below a wcroot.

(svn_wc_check_wc2): Update caller, passing false for compatibility with

before this patch. Add todo marker.

(probe,

open_single): Update callers, passing FALSE to allow locking missing

nodes.

* subversion/libsvn_wc/lock.h

(svn_wc__internal_check_wc): Update prototype.

* subversion/libsvn_wc/log.c

(can_be_cleaned): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_temp_get_format): Remove single-db root test.

  1. … 4 more files in changeset.
* subversion/libsvn_wc/lock.c

(acquire_locks_recursively): Following up on r967018, mark variable const.

* subversion/libsvn_wc/lock.c

(acquire_locks_recursively): Fix typo in function name.

(svn_wc__acquire_write_lock): Update caller.

Found by: philip

Revert to the original behavior that locking an unversioned directory is an

error. The current behavior of just ignoring this, moves the real problem

to other locations.

* subversion/libsvn_wc/lock.c

(acquire_locks_recurively): New function, handling the recursive locking

behavior for non-single db with knowledge about whether we are locking

the root or a subdir. Return an error when locking the lock root

fails.

(svn_wc__acquire_write_lock): Move the recursive locking behavior to

acquire_locks_recurively.

* subversion/libsvn_wc/wc_db.c

(wclock_obtain_cb): When using single-db verify that the path to lock

exists.

  1. … 1 more file in changeset.
Make the lock release code a bit less smart on finding which target a caller

might want to unlock to avoid having to ignore errors on releasing locks on

just deleted directories, or on the wrong target if it just turned from a file

into a directory, etc. etc.

The lock acquire code can now (optionally) always return the path it tried

to acquire a lock on and the unlock code must now alway pass a valid locked

target. (Except for a few specific cases for handling multi-db as single-db)

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_wclock_release): Just allow releasing locks on 'hidden'

directories, in multi db mode. Return an error if neither the node

itself exist, nor its parent.

* subversion/libsvn_wc/update_editor.c

(prep_directory): Update caller.

* subversion/libsvn_wc/lock.c

(svn_wc__acquire_write_lock): Split lock_abspath retrieval from anchor

calculation, to allow callers always access to the lock_root_abspath.

(svn_wc__release_write_lock): If the node is not locked, just unlock it

in wc_db, to allow ignoring errors on not-wcroot directories.

Ignore not-locked on subdirs, but not on the root of the operation.

(svn_wc__call_with_write_lock): Allow locking an anchor of a node. Obtain

the lock_root_abspath and release the lock on this node.

* subversion/libsvn_client/update.c

(update_internal): Don't release locks not obtained here!

(svn_client__update_internal): Store the lock-path and release the lock

on that.

* subversion/libsvn_client/switch.c

(svn_client__switch_internal): Update caller.

* subversion/libsvn_client/revert.c

(svn_client_revert2): Update caller. Lock the anchor of the operation.

* subversion/libsvn_client/prop_commands.c

(svn_client_propset3): Update caller.

* subversion/libsvn_client/patch.c

(svn_client_patch): Update caller.

* subversion/libsvn_client/merge.c

(svn_client_merge3,

svn_client_merge_reintegrate,

svn_client_merge_peg3): Update callers.

* subversion/libsvn_client/externals.c

(switch_dir_external): On relegating only obtain a lock

and don't release it.

(switch_file_external): Update caller.

(handle_external_item_change): Update caller.

* subversion/libsvn_client/delete.c

(svn_client_delete4): Update caller.

* subversion/libsvn_client/copy.c

(do_wc_to_wc_copies): Update caller.

* subversion/libsvn_client/commit.c

(svn_client_commit5): Update caller.

* subversion/libsvn_client/add.c

(add_parent_dirs): Update caller.

* subversion/include/private/svn_wc_private.h

(svn_wc__acquire_write_lock): Update arguments and documentation.

(svn_wc__release_write_lock): Add new requirements to documentation.

(svn_wc__call_with_write_lock): Add lock_anchor argument.

  1. … 14 more files in changeset.
Following up on r922926, fix an accidental lock release in the lock acquire

code. This fixes the externals tests failures on ra_serf/ra_neon.

* subversion/libsvn_wc/lock.c

(svn_wc__acquire_write_lock): When failing to acquire a lock, don't try

to release obtained locks on non-directories, as that will just release

the parent directory's lock.

* subversion/libsvn_wc/lock.c

(svn_wc__acquire_lock):

Revert some accidentally committed test code accidentally introduced

in r964653.

When using single-db, obtain an infinite depth lock on the root

of the operation instead of a lock on each separate directory

below the root.

* subversion/libsvn_wc/lock.c

(svn_wc__acquire_write_lock): Use infinite depth lock instead of

recursion when we have a single db layout.

[Also adds some experimental test code that shouldn't have

been in this commit. Reverted this part in r964656]

(svn_wc__release_write_lock): Assume we can just release an infinite

depth lock instead of recursing to find locks to release.

* subversion/libsvn_wc/lock.c (child_is_disjoint): Remove unused variables.

* subversion/libsvn_wc/lock.c

(child_is_disjoint): Use svn_wc__db_is_wcroot, to check if a subdir is

registered in its parent instead of reading all nodes in the parent

and checking locally.