On 03.02.2022 17:30, Julian Foad wrote:
Julian Foad wrote:
Branko Čibej wrote:
way to report the actual format (from the wc-db) through libsvn-wc to
the client?
Ah yes, there is no API for that, [...]
These exist on the branch currently ("*_supported_*" are new on the branch):

- At libsvn_client (public):
     svn_client_version()  // e.g. svn_version_t("1.15.0-dev")
     svn_client_supported_wc_version()  // e.g. svn_version_t("1.8.0")

- In libsvn_wc (internal declarations):
     SVN_WC__VERSION  // e.g. "32" for svn 1.15-dev
     SVN_WC__SUPPORTED_VERSION  // e.g. "31" for svn 1.8 through 1.14

- Conversion between WC format number and svn_version_t:
     svn_wc__format_from_version()  // exposed in svn_wc_private.h
     svn_wc__version_string_from_format()  // internal only

I suggest:

- Keep the SVN_WC__* constants internal, as they are.

- Expose *both* conversion functions equally as private APIs. No reason
not to, and I think the new --wc-format option in the test suite is
going to need them. (I could wait and see if it does; I'm writing it
now.) One already is in svn_wc_private.h. The other says:

    * ### It's not ideal to encode this sort of knowledge in this low-level
    * library.  On the other hand, it doesn't need to be updated often and
    * should be easily found when it does need to be updated.  */

which applies equally to both and is fine for private APIs.

- Expose the min and max WC format numbers privately in
svn_wc_private.h. It seems perverse not to, when higher level APIs
exist. Code outside libsvn_wc, such as wc tests, will need or want
these. (I can wait and see if it does. I'm writing it soon.)

   svn_wc__format()  // e.g. "32" for svn 1.15-dev
   svn_wc__supported_format()  // e.g. "31" for svn 1.8 through 1.14

Good points. I wanted to avoid widening the libsvn_wc API, but, indeed, that train is long gone.


There is no libsvn_client API for getting the WC format number directly.
I suppose it makes sense that client-level code is written with
reference to client-level version numbers.

Exactly. libsvn_client needs to know, but its users do not.

-- Brane

Reply via email to