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

Reply via email to