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

Changeset 1103589 is being indexed.

Reverted in r1103671.

Eliminate unnecessary stat calls during checkout, part 2 of 2.

If provided as parameter, svn_wc__db_wcroot_parse_local_abspath

does not need to use a stat call to detect the kind of node

behind the given abspath. For many *frequent* callers that

is known.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_wcroot_parse_local_abspath): add kind parameter

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_wcroot_parse_local_abspath): stat for kind of

if it is not already known

* subversion/libsvn_wc/wc_db_pristine.c

(svn_wc__db_pristine_get_path, svn_wc__db_pristine_read,

svn_wc__db_pristine_get_tempdir, svn_wc__db_pristine_install,

svn_wc__db_pristine_get_md5, svn_wc__db_pristine_get_sha1,

svn_wc__db_pristine_remove, svn_wc__db_pristine_cleanup,

svn_wc__db_pristine_check): don't use the optimization

* subversion/libsvn_wc/wc_db.c

(kind_by_filesize): new utility function

(get_statement_for_path, svn_wc__db_to_relpath,

svn_wc__db_from_relpath, svn_wc__db_get_wcroot,

svn_wc__db_base_add_symlink, add_absent_excluded_not_present_node,

svn_wc__db_base_get_info, svn_wc__db_base_get_children,

svn_wc__db_base_clear_dav_cache_recursive, svn_wc__db_external_add_file,

svn_wc__db_external_add_symlink, svn_wc__db_external_remove,

svn_wc__db_external_read, svn_wc__db_external_read_pristine_props,

svn_wc__db_external_read_props, svn_wc__db_op_copy,

svn_wc__db_op_copy_shadowed_layer, svn_wc__db_op_copy_file,

svn_wc__db_op_copy_symlink, svn_wc__db_op_add_symlink,

svn_wc__db_op_set_props, svn_wc__db_op_set_changelist,

svn_wc__db_op_mark_resolved, svn_wc__db_op_set_tree_conflict,

svn_wc__db_op_revert, svn_wc__db_revert_list_read,

svn_wc__db_revert_list_notify, svn_wc__db_op_read_all_tree_conflicts,

svn_wc__db_op_read_tree_conflict, svn_wc__db_op_remove_node,

svn_wc__db_temp_op_remove_working, svn_wc__db_op_delete,

svn_wc__db_read_info, svn_wc__db_read_pristine_info,

svn_wc__db_read_node_install_info, svn_wc__db_read_url,

svn_wc__db_read_props, svn_wc__db_read_props_streamily,

svn_wc__db_read_pristine_props, svn_wc__db_read_children_of_working_node,

svn_wc__db_node_check_replace, svn_wc__db_read_children,

svn_wc__db_global_commit, svn_wc__db_global_update,

svn_wc__db_op_bump_revisions_post_update, svn_wc__db_lock_add,

svn_wc__db_lock_remove, svn_wc__db_scan_base_repos,

svn_wc__db_scan_addition, svn_wc__db_scan_deletion,

svn_wc__db_wq_add, svn_wc__db_wq_fetch, svn_wc__db_wq_completed,

svn_wc__db_read_conflict_victims, svn_wc__db_read_conflicts,

svn_wc__db_read_kind, svn_wc__db_node_hidden, svn_wc__db_is_wcroot,

svn_wc__db_temp_wcroot_tempdir, svn_wc__db_wclock_obtain,

svn_wc__db_wclock_release, svn_wc__db_wclock_owns_lock,

svn_wc__db_temp_op_start_directory_update, svn_wc__db_temp_op_make_copy,

svn_wc__db_temp_op_set_text_conflict_marker_files,

svn_wc__db_temp_op_set_property_conflict_marker_file,

svn_wc__db_temp_op_set_new_dir_to_incomplete,

svn_wc__db_info_below_working, svn_wc__db_get_not_present_descendants,

svn_wc__db_min_max_revisions, svn_wc__db_is_sparse_checkout,

svn_wc__db_has_switched_subtrees, svn_wc__db_get_absent_subtrees,

svn_wc__db_has_local_mods, svn_wc__db_revision_status,

svn_wc__db_base_get_lock_tokens_recursive, svn_wc__db_verify):

don't use the optimization

(svn_wc__db_base_add_directory, svn_wc__db_base_get_children_info,

svn_wc__db_external_add_dir, svn_wc__db_op_copy_dir,

svn_wc__db_op_add_directory, svn_wc__db_op_set_base_depth,

svn_wc__db_read_children_info, svn_wc__db_read_children_walker_info,

svn_wc__db_global_relocate, svn_wc__db_temp_get_format,

svn_wc__db_temp_get_access, svn_wc__db_temp_set_access,

svn_wc__db_temp_close_access, svn_wc__db_temp_clear_access,

svn_wc__db_temp_borrow_sdb, svn_wc__db_temp_op_end_directory_update):

path parameters are known to be directories

(svn_wc__db_base_add_file, svn_wc__db_op_add_file):

path parameters are known to be files

(svn_wc__db_external_record_fileinfo, svn_wc__db_global_record_fileinfo):

path parameters are files, if the file length is > 0.

  1. … 3 more files in changeset.
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.
Make the 'always open wc.db as readwrite' hack official. This change just

makes official what we've been doing for a while.

Even if requested to open in read/write mode, if the underlying filesystem is

read-only, the open will still succeed, and only fail upon an attempt to write

the database.

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_wcroot_parse_local_abspath): Codify our decision to always open

the sqlite database as read/write.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_wcroot_parse_local_abspath): Remove param and update docs.

* subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_pristine.c:

Update callers.

  1. … 3 more files in changeset.
* subversion/libsvn_wc/wc_db_wcroot.c

(get_path_kind): Use svn_stringbuf_set()'s code for growing the buffer

instead of reimplementing that function locally.

* subversion/libsvn_wc/wc_db_wcroot.c

(header): Fix filename in comment.

PDHs are dead, long live the WCROOT!

* subversion/libsvn_wc/wc_db_pdh.c:

Renamed to...

* subversion/libsvn_wc/wc_db_wcroot.c

...this.

  1. … 1 more file in changeset.