On 14. 1. 26 14:36, [email protected] wrote:
Author: brane
Date: Wed Jan 14 13:36:52 2026
New Revision: 1931314

Log:
On the better-pristines branch: Move all knowledge of the relation between
working copy formats and Subversion versions into libsvn_wc. Having them
in two places was slightly unmaintainable if the format numbers changed.
[...]
@@ -288,10 +276,14 @@ svn_client_get_wc_formats_supported(apr_
  const svn_version_t *
  svn_client_oldest_wc_version(apr_pool_t *result_pool)
  {
-  /* NOTE: For consistency, always return the version of the client
-     that first introduced the format. */
-  static const svn_version_t version = { 1, 8, 0, NULL };
-  return &version;
+  const svn_wc__version_info_t *const version_info =
+    svn_wc__version_info_from_format(SVN_WC__SUPPORTED_VERSION);
+
+  /* NOTE: This can be the "null" version "0.0.0" and that's an
+           unrecoverable programming error. */
+  SVN_ERR_ASSERT_NO_RETURN(version_info->text != NULL);
+
+  return &version_info->version;
  }

I have a question for someone with a bit more insight into the multi-wc-version support code. On the better-pristines branch, I removed these hard-coded constants and move the format -> version mapping to libsvn_wc, to keep it in one place.

As you can see above, I added assertions. They should never trigger if the format versions and their mapping are defined correctly, and I think it's better to abort() than to return NULL and crash instead.

So, any opinions on this change? Note that svn_client_wc_version_from_format() still returns NULL if our internal data are invalid which, IMO, is not so nice and also harder to track down than an assertion.

-- Brane

Reply via email to