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

Changeset 1357972 is being indexed.

* subversion/libsvn_wc/update_editor.c

(add_directory): Update caller.

* subversion/libsvn_wc/wc_db.c

(insert_base_baton_t): Add delete_working bool.

(insert_base_node): Add delete_working support.

(svn_wc__db_base_add_file): Add new flags. Move skels to end.

svn_wc__db_base_add_symlink): Make arguments match _file variant.

(svn_wc__db_temp_op_remove_working): Remove functions.

(svn_wc__db_op_begin_update): Add flags.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_add_file): Add flags.

(svn_wc__db_base_add_symlink): Add flags.

(svn_wc__db_temp_op_remove_working): Remove function.

(svn_wc__db_op_begin_update): Add flags.

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

(test_inserting_nodes): Update caller.

  1. … 3 more files in changeset.
Following up on the recent introduction of the conflict skel as in-memory

conflict exchange, we can now just install the conflict data from the

conflict skel instead of installing a workqueue item that will perform

that change later.

* subversion/libsvn_wc/conflicts.c

(svn_wc__conflict_skel_is_complete): Operate on const skel.

(svn_wc__conflict_create_markers): Stop creating conflict install wq items.

Note a specific corner case that needs further review.

Store the right path as property conflict marker file.

* subversion/libsvn_wc/conflicts.h

(svn_wc__conflict_skel_is_complete): Mark skel argument as const.

* subversion/libsvn_wc/externals.c

(close_file): Pass conflict.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Pass conflict or install conflict directly before running

the wq. (Should move to single operation)

* subversion/libsvn_wc/props.c

(svn_wc__perform_props_merge): Pass conflict.

* subversion/libsvn_wc/update_editor.c

(close_directory,

close_file): Pass conflict.

* subversion/libsvn_wc/wc_db.c

(insert_working_baton_t): Add conflict.

(mark_conflict): Add prototype.

(insert_base_node,

insert_working_node): Enable installing conflict.

(svn_wc__db_external_add_file): Pass conflict.

(svn_wc__db_op_copy_dir,

svn_wc__db_op_copy_file,

svn_wc__db_op_copy_symlink,

set_props_txn): Remove assertion. Pass conflict.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_external_add_file): Add conflict argument.

* subversion/libsvn_wc/workqueue.c

(svn_wc__wq_tmp_build_set_text_conflict_markers,

svn_wc__wq_tmp_build_set_property_conflict_marker): Remove function.

* subversion/libsvn_wc/workqueue.h

(svn_wc__wq_tmp_build_set_text_conflict_markers,

svn_wc__wq_tmp_build_set_property_conflict_marker): Remove function.

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

(test_externals_store): Update caller.

  1. … 10 more files in changeset.
Reintegrate the multi-layer-move branch. This stores NODES.moved_to

in WORKING nodes and will break any working copy moves recorded by

older 1.8 clients transforming the moves into copies+deletes.

  1. … 5 more files in changeset.
Change the scan_deletion function so that BASE_DEL_ABSPATH doesn't

depend on NODES.moved_to. This fixes one regression test.

Note: NODES.moved_to was never set in 1.7 so this means that

scan_deletion reports the same BASE_DEL_ABSPATH as 1.7 (apart

from artificial test cases).

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_scan_addition): Tweak docstring.

* subversion/libsvn_wc/wc_db.c

(scan_deletion_txn): Don't use moved_to to set BASE_DEL_ABSPATH.

* subversion/tests/cmdline/copy_tests.py

(three_nested_moves): Remove XFAIL.

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

(test_scan_deletion): Adjust BASE_DEL_ABSPATH expectations.

  1. … 3 more files in changeset.
Followup to r1181800 by removing the svn_wc__db_kind_t type and replacing it

with the now-public svn_kind_t. This just affects the internals of libsvn_wc,

not any of the public, or quasi-public APIs.

* subversion/tests/libsvn_wc/:

s/svn_wc__db_kind_/svn_kind_/

  1. … 31 more files in changeset.
Fixed version of the change originally committed in r1152345 and

reverted again in r1152348:

Extend svn_wc__db_scan_deletion() to return the moved-to path of

of a moved node, if requested, in MOVED_TO_ABSPATH.

This function previously returned the op-root of the copied-half of the

move as MOVED_TO_ABSPATH, but (luckily) none of the callers requested it.

Return the op-root in a new output parameter COPY_OP_ROOT_ABSPATH instead.

* subversion/libsvn_wc/wc_db.c

(scan_deletion_baton_t): Add COPY_OP_ROOT_RELPATH.

(scan_deletion_txn): If the node has been moved-away, compute

and return the moved-to relpath as well as the the op-root of

the copied-half of the move.

Also, do not assert that every node being moved has a BASE.

This isn't true for sequences like: mv A B; mv B/f B/e;

In the second move, B/f has no BASE because it is part of the

copied-half B of the first move.

(scan_deletion): Add new output parameter COPY_OP_ROOT_RELPATH and

pass it into the scan_deletion baton.

(get_info_for_copy, read_url_txn, svn_wc__db_global_relocate): Update

scan_deletion() callers, passing NULL for COPY_OP_ROOT_RELPATH.

(svn_wc__db_scan_deletion): Add new output parameter COPY_OP_ROOT_ABSPATH.

Convert relative paths in moved-to information provided by scan_deletion()

into absolute paths, and return them.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_scan_deletion): Add COPY_OP_ROOT_ABSPATH parameter and update

the docstring.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_DELETION_INFO): Get moved-to information from the BASE since

it is stored there as of r1152410.

* subversion/libsvn_wc/node.c

(svn_wc__internal_get_repos_info, svn_wc__node_get_deleted_ancestor,

svn_wc__internal_get_commit_base_rev, svn_wc__internal_node_get_schedule):

Update callers, passing NULL for COPY_OP_ROOT_ABSPATH.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted, read_one_entry): Update callers, passing NULL

for COPY_OP_ROOT_ABSPATH.

* subversion/libsvn_wc/info.c

(build_info_for_node): Update caller, passing NULL for COPY_OP_ROOT_ABSPATH.

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

(TESTING_DATA): Put moved-to data into BASE layer. Add some missing

move-target nodes that are needed by scan_deletion() to properly resolve

moved-to information.

(test_scan_deletion): Update callers, verify COPY_OP_ROOT_ABSPATH where

a move is being resolved, else pass NULL for COPY_OP_ROOT_ABSPATH.

  1. … 6 more files in changeset.
Whoops, revert the just-committed r1152345, it wasn't quite ready yet.

  1. … 5 more files in changeset.
[ Note from the future: This change wasn't actually ready for commit yet.

It was reverted in r1152348, and a fixed version was committed in r1152436. ]

Extend svn_wc__db_scan_deletion() to return the moved-to path of

of a moved node, if requested, in MOVED_TO_ABSPATH.

This function already returned the op-root of the copied-half of the move

as MOVED_TO_ABSPATH, but (luckily) none of the callers requested it.

Return this op-root in a new output parameter COPY_OP_ROOT_ABSPATH instead.

Nothing uses the moved-to output parameters yet, so this is no functional

change.

* subversion/libsvn_wc/wc_db.c

(scan_deletion_baton_t): Add COPY_OP_ROOT_RELPATH.

(scan_deletion_txn): If the node has been moved-away, compute

and return the moved-to relpath as well as the the op-root of

the copied-half of the move.

Also, do not assert that every node being moved has a BASE.

This isn't true for sequences like: mv A B; mv B/f B/e;

In the second move, B/f has no BASE because it is part of the

copied-half B of the first move.

(scan_deletion): Add new output parameter COPY_OP_ROOT_RELPATH and

pass it into the scan_deletion baton.

(get_info_for_copy, read_url_txn, svn_wc__db_global_relocate): Update

scan_deletion() callers, passing NULL for COPY_OP_ROOT_RELPATH.

(svn_wc__db_scan_deletion): Add new output parameter COPY_OP_ROOT_ABSPATH.

Convert relative paths in moved-to information provided by scan_deletion()

into absolute paths, and return them.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_scan_deletion): Add COPY_OP_ROOT_ABSPATH parameter and update

the docstring.

* subversion/libsvn_wc/node.c

(svn_wc__internal_get_repos_info, svn_wc__node_get_deleted_ancestor,

svn_wc__internal_get_commit_base_rev, svn_wc__internal_node_get_schedule):

Update callers, passing NULL for COPY_OP_ROOT_ABSPATH.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted, read_one_entry): Update callers, passing NULL

for COPY_OP_ROOT_ABSPATH.

* subversion/libsvn_wc/info.c

(build_info_for_node): Update caller, passing NULL for COPY_OP_ROOT_ABSPATH.

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

(test_scan_deletion): Update callers, passing NULL for COPY_OP_ROOT_ABSPATH.

  1. … 5 more files in changeset.
Make svn_wc__db_scan_addition() provide information about the local source

of a move for nodes with a 'moved-here' status.

Some future callers will only want to act on the op-roots involved in

a move, e.g. the commit code detecting whether both halfs of a move

are among the commit targets.

Other future callers might want to act directly on children of the op-roots,

e.g. code performing automatic tree conflict resolution.

So scan_addition() provides both the moved_from abspath and the abspath of

the operation root of the delete-half of the move. This should satisfy

either use case to some degree. It might not be the optimal solution

for all use cases but won't hurt, either.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_scan_addition, scan_addition): New output parameters

MOVED_FROM_ABSPATH and DELETE_OP_ROOT_ABSPATH.

(get_moved_from_info): New helper function which computes values for

above new output parameters.

(scan_addition_baton_t): Add MOVED_FROM_ABSPATH and DELETE_OP_ROOT_ABSPATH.

(scan_addition_txn): Run get_moved_from_info() for 'moved-here' nodes.

(get_info_for_copy, read_url_txn, svn_wc__db_global_relocate): Update

scan_addition() calls.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_scan_addition): Update declaration and docstring.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_MOVED_FROM_RELPATH): New query which selects the 'moved-from'

path corresponding to a 'moved-here' node.

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

(TESTING_DATA): Create another row for the delete-half of a move.

svn_wc__db_scan_addition() now treats a move without a delete-half

as if it was a normal a copy. (We've been recording delete-halfs

since r1151166.)

(test_scan_addition): Check for moved-from information scan_addition()

now returns for 'moved-here' nodes.

The remaining items list updated callers of svn_wc__db_scan_addition().

All of them pass NULL for the new output parameters.

* subversion/libsvn_wc/props.c

(svn_wc__get_pristine_props): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/adm_ops.c

(check_can_add_to_parent): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc_restore, report_revisions_and_depths,

svn_wc_crawl_revisions5): Update svn_wc__db_scan_addition() calls.

* subversion/libsvn_wc/diff_local.c

(file_diff): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/diff_editor.c

(file_diff, report_wc_file_as_added,

close_file): Update svn_wc__db_scan_addition() calls.

* subversion/libsvn_wc/adm_files.c

(svn_wc__internal_ensure_adm): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/update_editor.c

(create_tree_conflict, add_directory,

add_file): Update svn_wc__db_scan_addition() calls.

* subversion/libsvn_wc/info.c

(build_info_for_node): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/copy.c

(copy_or_move): Update svn_wc__db_scan_addition() calls.

* subversion/libsvn_wc/status.c

(get_repos_root_url_relpath): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/lock.c

(child_is_disjoint): Update svn_wc__db_scan_addition() call.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted,

read_one_entry): Update svn_wc__db_scan_addition() calls.

* subversion/libsvn_wc/node.c

(svn_wc__internal_get_repos_info, svn_wc__node_get_repos_relpath,

svn_wc__internal_get_copyfrom_info, svn_wc__internal_get_commit_base_rev,

svn_wc__internal_get_origin): Update svn_wc__db_scan_addition() calls.

  1. … 16 more files in changeset.
Rename svn_wc__db_base_add_absent_node() to svn_wc__db_base_add_excluded_node()

for consistency.

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

(test_inserting_nodes, test_pdh): Update callers.

* subversion/libsvn_wc/crop.c

(svn_wc_exclude): Another caller.

* subversion/libsvn_wc/update_editor.c

(absent_node): Another caller. The term 'absent' is hardcoded in the

svn_delta_editor_t interface, so we won't be renaming 'absent' to

'server-excluded' above here.

* subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_add_absent_node): Rename this ...

(svn_wc__db_base_add_excluded_node): ... to this. Also fix a small error

in the docstring.

  1. … 4 more files in changeset.
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.
The semi-annual trailing whitespace cleansing ritual.

* 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. … 144 more files in changeset.
Following up on r1094146, remove an unused argument from

svn_wc__db_base_get_info().

* subversion/libsvn_wc/adm_crawler.c

(svn_wc_crawl_revisions5): Update caller.

* subversion/libsvn_wc/ambient_depth_filter_editor.c

(ambient_read_info): Update caller.

* subversion/libsvn_wc/diff_editor.c

(get_pristine_file): Update caller.

* subversion/libsvn_wc/diff_local.c

(file_diff): Update caller.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted,

read_one_entry): Update caller.

* subversion/libsvn_wc/externals.c

(open_file): Update caller.

(svn_wc__crawl_file_external): Update caller.

* subversion/libsvn_wc/info.c

(build_info_for_entry): Update caller.

* subversion/libsvn_wc/node.c

(get_base_rev,

svn_wc__node_get_pre_ng_status_data,

svn_wc__internal_get_commit_base_rev,

svn_wc__node_get_lock_info,

svn_wc__internal_get_origin,

svn_wc__node_get_commit_status): Update caller.

* subversion/libsvn_wc/status.c

(read_info): Update caller.

* subversion/libsvn_wc/update_editor.c

(open_root,

create_tree_conflict,

delete_entry,

open_directory,

close_directory,

open_file,

close_edit,

make_editor): Update caller.

* subversion/libsvn_wc/wc_db.c

(base_get_info,

svn_wc__db_base_get_info): Remove argument.

(insert_external_node,

get_info_for_copy,

remove_node_txn,

read_url_txn,

svn_wc__db_global_relocate,

determine_repos_info,

bump_node_revision,

bump_revisions_post_update,

lock_add_txn,

lock_remove_txn,

svn_wc__db_scan_base_repos,

scan_addition_txn,

end_directory_update,

has_switched_subtrees): Update caller.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_get_info): Remove argument and documentation of argument.

* subversion/libsvn_wc/workqueue.c

(remove_base_node,

run_base_remove): Update caller.

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

(test_getting_info,

validate_node): Update caller.

  1. … 13 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.
Factor out a test function for creating a fake WC DB.

* subversion/tests/libsvn_wc/utils.h,

subversion/tests/libsvn_wc/utils.c

(svn_test__create_fake_wc): New function, factored out from two places.

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

(create_fake_wc): Remove.

(create_open): Use svn_test__create_fake_wc() instead of create_fake_wc().

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

(make_one_db): Remove.

(create_fake_wc): Use svn_test__create_fake_wc() instead of make_one_db().

* build.conf

(db-test, entries-compat-test): Add 'utils.c' to sources and

'libsvn_client' to libs.

  1. … 4 more files in changeset.
Remove all the conditional code for pre-EXTERNALS table support.

* subversion/libsvn_wc/wc.h

(SVN_WC__HAS_EXTERNALS_STORE): Remove

* subversion/libsvn_wc/util.c

(svn_wc__status2_from_3): Remove conditional code.

* subversion/libsvn_wc/status.c

(handle_externals): Remove.

(get_dir_status, svn_wc_get_status_editor5,

svn_wc__internal_walk_status): Remove conditional code.

* subversion/libsvn_wc/upgrade.c

(svn_wc__upgrade_sdb): Remove conditional.

* subversion/libsvn_wc/wc_db_pristine.c

(get_pristine_fname): Remove conditional.

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

(test_externals_store): Remove conditional code.

  1. … 5 more files in changeset.
Make all WC test programs use svn_wc__db_util_open_db() instead of calling

svn_sqlite__open() directly, to ensure that the SQLite user-defined function

'relpath_depth' gets installed in the DB connection. That function will be

needed by the validation triggers in wc-checks.c as soon as we activate

them.

* subversion/libsvn_wc/wc_db_private.h,

subversion/libsvn_wc/wc_db_util.c

(svn_wc__db_util_open_db): Add an optional parameter to specify the list

of statements to prepare instead of the default set. Write a doc string.

* subversion/libsvn_wc/wc_db.c

(create_db): Update the call to svn_wc__db_util_open_db().

[Accidentally missed in this commit; committed in r1127902.]

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_wcroot_parse_local_abspath): Same.

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

(create_fake_wc): Call svn_wc__db_wcroot_parse_local_abspath() instead of

svn_sqlite__open().

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

(make_one_db): Same.

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

(open_wc_db): Same.

  1. … 5 more files in changeset.
* subversion/tests/libsvn_wc/db-test.c

(create_fake_wc): Use abspaths, and so avoid re-constructing a path that

the only caller was constructing anyway.

(create_open): Adjust caller.

Remove an obsolete test and an unused parameter.

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

(create_fake_wc, create_open): Remove the unused 'format' parameter from

each of these.

(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, test_externals_store): Adjust callers.

(test_upgrading_to_f15): Remove this test, as it wasn't actually testing

what it says, as the format 15 code was removed long ago and the 'format'

parameter to create_fake_wc() was ignored.

(test_funcs): Remove test_upgrading_to_f15.

Revert r905744. This removes the ability for svn_wc__db_scan_deletion() to

handle a path whose parent has been moved to a different op-depth, and the

test for the same, as this ability is no longer needed. I found this by

trying to verify that for every NODES row there is a row corresponding to

its op-root; the test created a DB state that violated that constraint.

* subversion/libsvn_wc/wc_db.c

(scan_deletion_txn): Assert that the child is not 'not-present'.

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

(TESTING_DATA): Remove the test nodes 'M' and 'M/M-a'.

(test_children): Update the expected number of children.

(test_scan_deletion): Remove the part that tests 'M/M-a'.

  1. … 1 more file in changeset.
* subversion/tests/libsvn_wc/db-test.c

(test_pdh): Change the relpaths used in this test so that they are not

orphans: so that a row exists at the parent path of each one. This is

to get closer to using only valid DB states in the tests, in advance of

introducing DB verification triggers.

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

subversion/tests/libsvn_wc/entries-compat.c

(TESTING_DATA): Correct the parent_relpath in one row.

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

(create_fake_wc): Accidental change for debugging, reverted in r1127072.

  1. … 1 more file in changeset.
Following up on r1124782, update the format 29 specific code after the redesign

we discussed on SVN Day Berlin 2011.

* subversion/libsvn_wc/wc-metadata.sql

(STMT_CREATE_EXTERNALS): Remove triggers on now unavailable column changes.

* subversion/libsvn_wc/wc-queries.sql

(STMT_INSERT_EXTERNAL): Update to match new definition.

(STMT_SELECT_EXTERNAL_INFO): Update to match new definition.

(STMT_SELECT_EXTERNAL_INFO_WITH_LOCK): Remove query.

* subversion/libsvn_wc/wc_db.c

(insert_external_node): Also create the NODES record after format 29 for

file and symlink externals. Updated for new spec. Serialize just a "1"

in the file external field of the NODES table after we go to format 29

as we only need NULL vs NOT-NULL.

(svn_wc__db_external_read): Just fetch the relevant information.

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

(test_externals_store): Update expectations.

  1. … 3 more files in changeset.
Update the 'public' svn_wc__db_ apis for externals to only return what we

want for 1.7 instead of also some of the NODES information.

* subversion/libsvn_wc/externals.c

(edit_baton): Add some fields for data we can retrieve without

an additional query later.

(open_file): Retrieve data using base functions.

(close_file): Use data we already have in the baton instead of db calls.

(svn_wc__get_file_external_editor): Initialize new fields.

(svn_wc__crawl_file_external): Use nodes for the information crawling.

(svn_wc__read_external_info): Update caller.

* subversion/libsvn_wc/wc-metadata.sql

(STMT_CREATE_EXTERNALS): Remove fields that we don't need.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_external_record_fileinfo): Remove function.

(svn_wc__db_external_read): Update definition and implementation for the

current db format. (But not for format 29 yet).

(svn_wc__db_external_read_pristine_props,

svn_wc__db_external_read_props): Remove function.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_external_add_file): Update documentation.

(svn_wc__db_external_record_fileinfo): Remove function.

(svn_wc__db_external_read): Update prototype and documentation.

(svn_wc__db_external_read_pristine_props,

svn_wc__db_external_read_props): Remove function.

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

(test_externals_store): Update caller.

  1. … 4 more files in changeset.
Finding the w/c base folder using svn_wc__db_wcroot_parse_local_abspath

can be expensive if being called for many different paths (e.g. files instead

of their parents whose w/c root information already got cached).

Please note that this may not reduce the total number of stat calls, yet,

as later invocations won't provide an suitable wri_abspath. However, Bert

sees that as the basis to future improvements.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_add_directory, svn_wc__db_base_add_file,

svn_wc__db_base_add_symlink): add wri_abspath parameter

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_base_add_directory, svn_wc__db_base_add_file,

svn_wc__db_base_add_symlink): use wri_abspath to find the w/c base

folder instead of the local_abspath

* subversion/libsvn_wc/update_editor.c

(close_directory, close_file): provide the w/c root to .._db_base_add_*

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

(base_dir_insert_remove): adapt callers in test code

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

(test_inserting_nodes): dito

  1. … 4 more files in changeset.
[This patch was mostly reverted by r1124402]

Make the svn_client_proplist3 funtion capable of reading properties from

new style file externals.

* subversion/include/private/svn_wc_private.h

(svn_wc__external_read_props): New function.

* subversion/libsvn_client/prop_commands.c

(svn_client_proplist3): When the target node is not versioned, retry as

file external. Stop handling an impossible error.

* subversion/libsvn_wc/externals.c

(svn_wc__external_read_props): New function

(.): Add newline at end of file.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_external_read_pristine_props): Fix column index.

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

(test_externals_store): Test reading pristine properties.

  1. … 4 more files in changeset.
Extend the EXTERNALS schema with a simple presence column for holding just

status normal and excluded. Also apply a few additional constraints and

define that the repository root must be available for dir externals.

Update the libsvn_wc api to allow access to the new data.

* subversion/libsvn_wc/externals.c

(open_file,

close_file,

svn_wc__crawl_file_external,

svn_wc__read_external_info): Update callers.

* subversion/libsvn_wc/wc-metadata.sql

(STMT_CREATE_EXTERNALS): Add constraint to repos_id. Add presence.

* subversion/libsvn_wc/wc-queries.sql

(STMT_INSERT_EXTERNAL,

STMT_SELECT_EXTERNAL_INFO,

STMT_SELECT_EXTERNAL_INFO_WITH_LOCK): Add presence.

* subversion/libsvn_wc/wc_db.c

(insert_external_baton_t): Documentation fix. Add presence.

(insert_external_node): Add presence handling.

(svn_wc__db_external_add_file): Update caller.

(svn_wc__db_external_add_symlink): Update caller. Add missing call to

blank_ieb().

(svn_wc__db_external_add_dir): Add two arguments. Blank the ibb and

update caller.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_external_add_dir): Add two arguments.

(svn_wc__db_external_read): Extend documentation.

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

(test_externals_store): Update caller.

  1. … 5 more files in changeset.
In general svn_wc__internal_file_modified_p() should be called with

compare_text_bases TRUE, as that is what a normal user would call a

modified file.

In other words it should ignore keyword expansion differences and eol

differences, as we would do that on commit and status.

Then we have a property that indicates whether we should use recorded

information or not, which we only use to specialize svn:eol-style in

the commit processing to hide a few bugs.

But for svn:keywords we do a similar thing, but we do that when updating

the property value. (Which doesn't trigger on merges)

Summarized: This moves the recording fixes to the two places where we set

properties. And this makes us always use the recorded information from the

public api. Adds a simple to explain boolean to check if the file matches

what you would get if you restored the file.

* subversion/libsvn_client/commit_util.c

(check_prop_mods): removed. no longer needed.

(harvest_committables): Remove eol checks. (Handled by libsvn_wc now,

just like svn:keywords).

* subversion/libsvn_wc/adm_ops.c

(revert_restore): Do an exact match check.

(svn_wc__internal_remove_from_version_control): This function is only used

from svn_wc_crop and when removing working copies, so stop doing work that

isn't relevant there. Use recursive delete when we find a deleted node.

Only call svn_wc__adm_destroy when we really destroy the wc.

* subversion/libsvn_wc/cleanup.c

(repair_timestamps): Convert to repository form for timestamp repair.

* subversion/libsvn_wc/copy.c

(svn_wc__internal_file_modified_p): Convert to repository form for copy

repair.

* subversion/libsvn_wc/diff_editor.c

(file_diff): Update caller.

* subversion/libsvn_wc/diff_local.c

(file_diff): Update caller.

* subversion/libsvn_wc/externals.c

(close_file): Update caller. Do the right check.

* subversion/libsvn_wc/props.c

(svn_wc__perform_props_merge): Just clear recorded information on magic

property changes.

(do_propset): Handle eol changes like we do keyword changes, but make

wc_db do the hard work in one atomic step.

* subversion/libsvn_wc/questions.c

(compare_and_verify): Remove unused checksum verfication. (Should be handled

by a pristine verification).

(svn_wc__internal_file_modified_p): Update arguments.

(svn_wc_text_modified_p2): Update caller add note.

(argument will be removed in a followup commit).

* subversion/libsvn_wc/status.c

(assemble_status): Update caller.

* subversion/libsvn_wc/update_editor.c

(merge_file): Update caller.

(svn_wc_add_repos_file4): Update caller.

* subversion/libsvn_wc/wc.h

(svn_wc__internal_file_modified_p): Update documentation.

* subversion/libsvn_wc/wc_db.c

(record_baton_t): Moved up in the file, to allow reuse.

(db_record_fileinfo): Added db_ prefix and moved up to allow reuse.

(svn_wc__db_global_record_fileinfo): Moved.

(set_props_baton_t): Add clear_recorded_info boolean.

(set_props_txn): Clear recorded info if requested.

(svn_wc__db_op_set_props): Add argument.

(record_baton_t, record_fileinfo,

svn_wc__db_global_record_fileinfo): Moved up.

(has_local_mods): Update caller.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_op_set_props): Add argument and update documentation.

* subversion/libsvn_wc/workqueue.c

(process_commit_file_install): Update caller. As the result is only used to

update the cache it shouldn't use exact comparison.

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

(validate_node): Update caller.

  1. … 15 more files in changeset.
* subversion/tests/libsvn_wc/db-test.c

(test_externals_store): Remove SVN_DBG() call.