Hi all,
I completed reviewing the changes in the Subversion 1.15 public API and
committed a few tweaks (r1930586, r1930587).
In general, I think we're in a good shape, but here are the things that
caught my attention:
1) svn_xml_make_parse_stream()
This is discussed elsewhere, and the currently expressed opinion is that
this public API should not be included in 1.15:
"Also, after some API review, I'm considering that the XML parser stream
should not be included in the 1.15, because there are no real usages up
till this point -- only the test-suite."
I can suggest that we temporarily convert it into a private function
(svn_xml__make_parse_stream) or use any other way to remove it from
public API for the scope of 1.15.x.
2) svn_wc_notify_revert_noaccess
This is a new notification type with the following semantics:
/** A file is readonly for the user but isn't svn:needs-lock.
* So we want to restore RW, but fail since the file has W bits,
* just not for the current user.
* @since New in 1.15. */
My concern is that this seems Unix-specific, although the name implies
cross-platform support. It may also be unclear to implementers how to
handle this notification. Current svn command-line output is as follows:
> User doesn't have WRITE permissions to file '%s' and the file isn't
svn:needslock. But the file is already writeable. Probably owned by
another user.
I don't have a strong opinion on svn_wc_notify_revert_noaccess, since
a notification type isn't as strict a promise as a new API function.
That said, the current API addition does feel slightly incomplete.
Thoughts?
For reference, here is a full list of changed and new APIs:
- svn_client_checkout3 → svn_client_checkout4:
New version supports `wc_format_version` and `store_pristine` arguments
- svn_client_upgrade → svn_client_upgrade2:
New version supports `target_format_version` and `result_format_version_p`
arguments
- svn_client_oldest_wc_version,
svn_client_default_wc_version,
svn_client_latest_wc_version,
svn_client_get_wc_formats_supported,
svn_client_wc_version_from_format:
For multi-wc format support
- svn_wc_info_t.wc_format,
svn_wc_info_t.store_pristine:
New extensions of the svn_wc_info_t structure
- SVN_CONFIG_OPTION_COMPATIBLE_VERSION:
New config option in the SVN_CONFIG_SECTION_WORKING_COPY section
- svn_wc_crawl_revisions5 → svn_wc_crawl_revisions6
svn_wc_diff → svn_wc_diff7
svn_wc_merge → svn_wc_merge6
svn_wc_get_pristine_contents → svn_wc_get_pristine_contents3
svn_wc_revert → svn_wc_revert7
svn_wc_restore → svn_wc_restore2
svn_wc_transmit_text_deltas → svn_wc_transmit_text_deltas4:
Bumped API to make the callers aware of store-pristine=no working copies
- svn_wc_notify_hydrating_start,
svn_wc_notify_hydrating_file,
svn_wc_notify_hydrating_end:
New notifications related to pristine hydration
- svn_wc_textbase_fetch_cb_t,
svn_wc_textbase_sync:
New API to work with store-pristine=no working copies
- svn_ra_fetch_file_contents:
New general RA API, currently used to fetch pristine contents
- svn_txdelta_apply → svn_txdelta_apply2:
New API version always closes both streams
- svn_stream_supports_seek:
New API required to properly use and wrap seekable streams
- svn_diff_patch_parser_t,
svn_diff_patch_parser_create,
svn_diff_patch_parser_next:
A generalization of the patch file parser
- svn_client_patch_stream:
New API function accepting a file handle instead of a path
- svn_opt_parse_revnum,
svn_opt_parse_change_to_range:
New option parsers
- svn_version_ext_character_encoding:
New API that exposes svn_version_extended_t.character_encoding
- SVN_ERR_WC_INCOMPATIBLE_SETTINGS,
SVN_ERR_WC_DEPRECATED_API_STORE_PRISTINE,
SVN_ERR_WC_PRISTINE_DEHYDRATED:
New error codes
- svn_wc_notify_warning:
New general notification type
- svn_wc_notify_revert_noaccess:
New notification type, mentioned in (1)
- svn_xml_make_parse_stream:
New function, mentioned in (2)
Thanks,
Evgeny Kotkov