Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Re-implement shelving to use a separate WC for the storage of each shelf.

* subversion/include/svn_client.h

(svn_client__shelf_mods_editor): New.

(svn_client__shelf_replay): Add a notification callback.

* subversion/libsvn_client/shelf.c

(shelf_version_files_dir_abspath): Tweak the directory name to end in

".wc", for clarity.

(get_metadata_abspath,

get_base_file_abspath,

get_working_file_abspath,

get_base_props_abspath,

get_working_props_abspath): Delete.

(status_create,

kind_to_char,

char_to_kind,

status_to_char,

char_to_status,

wc_status_serialize,

wc_status_unserialize,

status_write): Delete.

(status_augment): New.

(status_read): Read WC status directly from shelf-storage WC.

(shelf_status_visitor_t,

shelf_status_baton_t,

shelf_status_visitor,

shelf_status_visit_path,

shelf_status_walk): Adjust to use a WC status walk directly.

(write_changes_baton_t,

notify_shelved,

notify_not_shelved,

read_props_from_wc,

write_props_to_shelf,

read_props_from_shelf,

store_file,

write_changes_visitor,

changelist_filter_baton_t,

changelist_filter_func,

wc_walk_status_multi,

shelf_write_changes): Delete.

(get_shelves_dir): New.

(shelf_construct): Use a different storage dir.

(paths_changed_walk_baton_t,

paths_changed_visitor,

shelf_paths_changed,

svn_client__shelf_paths_changed): Remove unneeded 'as abspath' option.

(send_notification,

apply_prop_mods,

apply_file_mods,

path_driver_cb_baton_t,

path_driver_cb_func,

shelf_replay_path_baton_t,

shelf_replay_path_visitor): Delete.

(svn_client__shelf_replay): Use the WC replay API instead of a shelf-

specific implementation.

(test_apply_file_visitor): Tweak constness.

(file_changed,

file_deleted,

file_added,

diff_baton_t,

diff_visitor): Delete.

(wc_mods_editor): Add explicit notification callback and result pool.

(svn_client__shelf_mods_editor): Expose in the semi-public API.

(svn_client__shelf_apply): Adjust calls.

(unapply_walk_baton_t,

unapply_visitor): New.

(svn_client__shelf_unapply): Rewrite, using a shelf status walk that

reverts each visited path.

(svn_client__shelf_diff): Rewrite, using a WC diff instead of a

shelf-specific implementation.

(shelf_copy_base): New.

(shelf_save_notifer_baton_t,

shelf_save_notifier): New.

(svn_client__shelf_save_new_version3): Rewrite, using a WC replay piped

into a shelf mods editor.

(svn_client__shelf_list): Adjust the shelf storage dir.

* subversion/tests/cmdline/shelf_tests.py

(shelve_mkdir,

shelve_replace_dir): Don't expect "cannot shelve". Do expect failure, for

now.

(shelve_rmdir,

shelve_file_copy,

shelve_dir_copy): Don't expect "cannot shelve".

(refuse_to_shelve_conflict): Change the test case to avoid a known,

unrelated bug.

* subversion/tests/cmdline/svntest/sandbox.py

(Sandbox.build): Expect each sandbox to use an additional WC directory

"<wc-dir-basename>.shelves".

* notes/shelving/shelf-structure.txt

Update to this version.

  1. … 4 more files in changeset.