On the 'shelving-v3' branch: copy WC base using 'checkout' instead of 'cp -r'.For now, this completely ignores the mixed-rev, switched-URL,mixed-depth WC state, and performs a simple checkout from the repo.Eventually it will need to recreate the exact base state, and will need toread data from the user's WC instead of the repo for fast local operation.* subversion/libsvn_client/shelf.c (shelf_copy_base): Create shelf base WC by a simple checkout.
On the 'shelving-v3' branch: don't include unversioned files in count of changed paths.* subversion/libsvn_client/shelf.c (shelf_status_walk): Tweak a comment. (shelf_copy_base): Be sure to remove all unversioned files.
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.