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