Author: ivan
Date: Wed Sep 23 08:38:47 2026
New Revision: 1938455

Log:
On the 'reparentless' branch: Catchup from 'trunk'.

Modified:
   subversion/branches/reparentless/   (props changed)
   subversion/branches/reparentless/subversion/libsvn_client/cat.c
   subversion/branches/reparentless/subversion/libsvn_client/diff_local.c
   subversion/branches/reparentless/subversion/libsvn_client/export.c
   subversion/branches/reparentless/subversion/libsvn_client/import.c
   subversion/branches/reparentless/subversion/libsvn_client/patch.c
   subversion/branches/reparentless/subversion/libsvn_ra_serf/get_lock.c
   subversion/branches/reparentless/subversion/libsvn_repos/repos.c
   subversion/branches/reparentless/subversion/libsvn_subr/subst.c
   subversion/branches/reparentless/subversion/libsvn_wc/deprecated.c

Modified: subversion/branches/reparentless/subversion/libsvn_client/cat.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_client/cat.c     Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_client/cat.c     Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -60,7 +60,7 @@ svn_client__get_normalized_stream(svn_st
   apr_hash_t *kw = NULL;
   svn_subst_eol_style_t style;
   apr_hash_t *props;
-  svn_string_t *eol_style, *keywords, *special;
+  const char *eol_style, *keywords, *special;
   const char *eol = NULL;
   svn_boolean_t local_mod = FALSE;
   svn_stream_t *input;
@@ -110,12 +110,11 @@ svn_client__get_normalized_stream(svn_st
         local_mod = TRUE;
     }
 
-  eol_style = svn_hash_gets(props, SVN_PROP_EOL_STYLE);
-  keywords = svn_hash_gets(props, SVN_PROP_KEYWORDS);
-  special = svn_hash_gets(props, SVN_PROP_SPECIAL);
+  eol_style = svn_prop_get_value(props, SVN_PROP_EOL_STYLE);
+  keywords = svn_prop_get_value(props, SVN_PROP_KEYWORDS);
+  special = svn_prop_get_value(props, SVN_PROP_SPECIAL);
 
-  if (eol_style)
-    svn_subst_eol_style_from_value(&style, &eol, eol_style->data);
+  svn_subst_eol_style_from_value(&style, &eol, eol_style);
 
   if (keywords)
     {
@@ -158,7 +157,7 @@ svn_client__get_normalized_stream(svn_st
           rev_str = apr_psprintf(scratch_pool, "%ld", changed_rev);
         }
 
-      SVN_ERR(svn_subst_build_keywords3(&kw, keywords->data, rev_str, url,
+      SVN_ERR(svn_subst_build_keywords3(&kw, keywords, rev_str, url,
                                         repos_root_url, tm, author,
                                         scratch_pool));
     }
@@ -188,8 +187,8 @@ svn_client_cat3(apr_hash_t **returned_pr
 {
   svn_ra_session_t *ra_session;
   svn_client__pathrev_t *loc;
-  svn_string_t *eol_style;
-  svn_string_t *keywords;
+  const char *eol_style;
+  const char *keywords;
   apr_hash_t *props = NULL;
   const char *repos_root_url, *repos_relpath;
   svn_stream_t *output = out;
@@ -274,8 +273,8 @@ svn_client_cat3(apr_hash_t **returned_pr
         }
     }
 
-  eol_style = svn_hash_gets(props, SVN_PROP_EOL_STYLE);
-  keywords = svn_hash_gets(props, SVN_PROP_KEYWORDS);
+  eol_style = svn_prop_get_value(props, SVN_PROP_EOL_STYLE);
+  keywords = svn_prop_get_value(props, SVN_PROP_KEYWORDS);
 
   if (eol_style || keywords)
     {
@@ -284,31 +283,23 @@ svn_client_cat3(apr_hash_t **returned_pr
       const char *eol_str;
       apr_hash_t *kw;
 
-      if (eol_style)
-        svn_subst_eol_style_from_value(&eol, &eol_str, eol_style->data);
-      else
-        {
-          eol = svn_subst_eol_style_none;
-          eol_str = NULL;
-        }
-
+      svn_subst_eol_style_from_value(&eol, &eol_str, eol_style);
 
       if (keywords && expand_keywords)
         {
-          svn_string_t *cmt_rev, *cmt_date, *cmt_author;
+          const char *cmt_rev, *cmt_date, *cmt_author;
           apr_time_t when = 0;
 
-          cmt_rev = svn_hash_gets(props, SVN_PROP_ENTRY_COMMITTED_REV);
-          cmt_date = svn_hash_gets(props, SVN_PROP_ENTRY_COMMITTED_DATE);
-          cmt_author = svn_hash_gets(props, SVN_PROP_ENTRY_LAST_AUTHOR);
+          cmt_rev = svn_prop_get_value(props, SVN_PROP_ENTRY_COMMITTED_REV);
+          cmt_date = svn_prop_get_value(props, SVN_PROP_ENTRY_COMMITTED_DATE);
+          cmt_author = svn_prop_get_value(props, SVN_PROP_ENTRY_LAST_AUTHOR);
           if (cmt_date)
-            SVN_ERR(svn_time_from_cstring(&when, cmt_date->data, 
scratch_pool));
+            SVN_ERR(svn_time_from_cstring(&when, cmt_date, scratch_pool));
 
-          SVN_ERR(svn_subst_build_keywords3(&kw, keywords->data,
-                                            cmt_rev->data, loc->url,
+          SVN_ERR(svn_subst_build_keywords3(&kw, keywords,
+                                            cmt_rev, loc->url,
                                             repos_root_url, when,
-                                            cmt_author ?
-                                              cmt_author->data : NULL,
+                                            cmt_author,
                                             scratch_pool));
         }
       else

Modified: subversion/branches/reparentless/subversion/libsvn_client/diff_local.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_client/diff_local.c      
Wed Sep 23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_client/diff_local.c      
Wed Sep 23 08:38:47 2026        (r1938455)
@@ -305,8 +305,8 @@ translate_if_necessary(const char **loca
                        apr_pool_t *result_pool,
                        apr_pool_t *scratch_pool)
 {
-  const svn_string_t *eol_style_val;
-  const svn_string_t *keywords_val;
+  const char *eol_style_val;
+  const char *keywords_val;
   svn_subst_eol_style_t eol_style;
   const char *eol;
   apr_hash_t *keywords;
@@ -316,19 +316,13 @@ translate_if_necessary(const char **loca
   /* if (svn_hash_gets(props, SVN_PROP_SPECIAL))
       ### TODO: Implement */
 
-  eol_style_val = svn_hash_gets(props, SVN_PROP_EOL_STYLE);
-  keywords_val = svn_hash_gets(props, SVN_PROP_KEYWORDS);
+  eol_style_val = svn_prop_get_value(props, SVN_PROP_EOL_STYLE);
+  keywords_val = svn_prop_get_value(props, SVN_PROP_KEYWORDS);
 
-  if (eol_style_val)
-    svn_subst_eol_style_from_value(&eol_style, &eol, eol_style_val->data);
-  else
-    {
-      eol = NULL;
-      eol_style = svn_subst_eol_style_none;
-    }
+  svn_subst_eol_style_from_value(&eol_style, &eol, eol_style_val);
 
   if (keywords_val)
-    SVN_ERR(svn_subst_build_keywords3(&keywords, keywords_val->data,
+    SVN_ERR(svn_subst_build_keywords3(&keywords, keywords_val,
                                       APR_STRINGIFY(SVN_INVALID_REVNUM),
                                       "", "", 0, "", scratch_pool));
   else

Modified: subversion/branches/reparentless/subversion/libsvn_client/export.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_client/export.c  Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_client/export.c  Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -185,8 +185,7 @@ export_node(void *baton,
   apr_hash_t *kw;
   svn_subst_eol_style_t style;
   apr_hash_t *props;
-  svn_string_t *eol_style, *keywords, *executable, *special;
-  const char *eol_style_val;
+  const char *eol_style, *keywords, *executable, *special;
   const char *eol;
   svn_boolean_t local_mod = FALSE;
   apr_time_t tm;
@@ -342,17 +341,12 @@ export_node(void *baton,
         local_mod = TRUE;
     }
 
-  special = svn_hash_gets(props, SVN_PROP_SPECIAL);
-  eol_style = svn_hash_gets(props, SVN_PROP_EOL_STYLE);
-  keywords = svn_hash_gets(props, SVN_PROP_KEYWORDS);
-  executable = svn_hash_gets(props, SVN_PROP_EXECUTABLE);
+  special = svn_prop_get_value(props, SVN_PROP_SPECIAL);
+  eol_style = svn_prop_get_value(props, SVN_PROP_EOL_STYLE);
+  keywords = svn_prop_get_value(props, SVN_PROP_KEYWORDS);
+  executable = svn_prop_get_value(props, SVN_PROP_EXECUTABLE);
 
-  if (eol_style)
-    eol_style_val = eol_style->data;
-  else
-    eol_style_val = NULL;
-
-  SVN_ERR(get_eol_style(&style, &eol, eol_style_val, eib->native_eol));
+  SVN_ERR(get_eol_style(&style, &eol, eol_style, eib->native_eol));
 
   if (local_mod)
     {
@@ -387,7 +381,7 @@ export_node(void *baton,
           suffix = "";
         }
 
-      SVN_ERR(svn_subst_build_keywords3(&kw, keywords->data,
+      SVN_ERR(svn_subst_build_keywords3(&kw, keywords,
                                         apr_psprintf(scratch_pool, "%ld%s",
                                                      changed_rev, suffix),
                                         url, status->repos_root_url, tm,

Modified: subversion/branches/reparentless/subversion/libsvn_client/import.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_client/import.c  Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_client/import.c  Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -120,7 +120,7 @@ send_file_contents(svn_checksum_t **resu
                    apr_pool_t *pool)
 {
   svn_stream_t *contents;
-  const svn_string_t *eol_style_val = NULL, *keywords_val = NULL;
+  const char *eol_style_val, *keywords_val;
   svn_boolean_t special = FALSE;
   svn_subst_eol_style_t eol_style;
   const char *eol;
@@ -128,26 +128,15 @@ send_file_contents(svn_checksum_t **resu
   open_txdelta_stream_baton_t baton = { 0 };
 
   /* If there are properties, look for EOL-style and keywords ones. */
-  if (properties)
-    {
-      eol_style_val = apr_hash_get(properties, SVN_PROP_EOL_STYLE,
-                                   sizeof(SVN_PROP_EOL_STYLE) - 1);
-      keywords_val = apr_hash_get(properties, SVN_PROP_KEYWORDS,
-                                  sizeof(SVN_PROP_KEYWORDS) - 1);
-      if (svn_hash_gets(properties, SVN_PROP_SPECIAL))
-        special = TRUE;
-    }
-
-  if (eol_style_val)
-    svn_subst_eol_style_from_value(&eol_style, &eol, eol_style_val->data);
-  else
-    {
-      eol = NULL;
-      eol_style = svn_subst_eol_style_none;
-    }
+  eol_style_val = svn_prop_get_value(properties, SVN_PROP_EOL_STYLE);
+  keywords_val = svn_prop_get_value(properties, SVN_PROP_KEYWORDS);
+  if (svn_prop_get_value(properties, SVN_PROP_SPECIAL))
+    special = TRUE;
+ 
+  svn_subst_eol_style_from_value(&eol_style, &eol, eol_style_val);
 
   if (keywords_val)
-    SVN_ERR(svn_subst_build_keywords3(&keywords, keywords_val->data,
+    SVN_ERR(svn_subst_build_keywords3(&keywords, keywords_val,
                                       APR_STRINGIFY(SVN_INVALID_REVNUM),
                                       "", "", 0, "", pool));
   else
@@ -174,7 +163,7 @@ send_file_contents(svn_checksum_t **resu
                                     SVN_PROP_EOL_STYLE,
                                     svn_dirent_local_style(local_abspath,
                                                            pool),
-                                    eol_style_val->data);
+                                    eol_style_val);
 
           /* We're importing, so translate files with 'native' eol-style to
            * repository-normal form, not to this platform's native EOL. */

Modified: subversion/branches/reparentless/subversion/libsvn_client/patch.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_client/patch.c   Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_client/patch.c   Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -378,11 +378,11 @@ obtain_eol_and_keywords_for_file(apr_has
                                  apr_pool_t *scratch_pool)
 {
   apr_hash_t *props;
-  svn_string_t *keywords_val, *eol_style_val;
+  const char *keywords_val, *eol_style_val;
 
   SVN_ERR(svn_wc_prop_list2(&props, wc_ctx, local_abspath,
                             scratch_pool, scratch_pool));
-  keywords_val = svn_hash_gets(props, SVN_PROP_KEYWORDS);
+  keywords_val = svn_prop_get_value(props, SVN_PROP_KEYWORDS);
   if (keywords_val)
     {
       svn_revnum_t changed_rev;
@@ -408,19 +408,14 @@ obtain_eol_and_keywords_for_file(apr_has
                                         scratch_pool);
 
       SVN_ERR(svn_subst_build_keywords3(keywords,
-                                        keywords_val->data,
+                                        keywords_val,
                                         rev_str, url, repos_root_url,
                                         changed_date,
                                         author, result_pool));
     }
 
-  eol_style_val = svn_hash_gets(props, SVN_PROP_EOL_STYLE);
-  if (eol_style_val)
-    {
-      svn_subst_eol_style_from_value(eol_style,
-                                     eol_str,
-                                     eol_style_val->data);
-    }
+  eol_style_val = svn_prop_get_value(props, SVN_PROP_EOL_STYLE);
+  svn_subst_eol_style_from_value(eol_style, eol_str, eol_style_val);
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/reparentless/subversion/libsvn_ra_serf/get_lock.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_ra_serf/get_lock.c       
Wed Sep 23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_ra_serf/get_lock.c       
Wed Sep 23 08:38:47 2026        (r1938455)
@@ -62,8 +62,6 @@ enum {
 typedef struct lock_info_t {
   apr_pool_t *pool;
 
-  const char *path;
-
   svn_lock_t *lock;
 
   svn_boolean_t read_headers;
@@ -283,7 +281,6 @@ svn_ra_serf__get_lock(svn_ra_session_t *
 
   lock_ctx = apr_pcalloc(scratch_pool, sizeof(*lock_ctx));
   lock_ctx->pool = result_pool;
-  lock_ctx->path = req_url;
   lock_ctx->lock = svn_lock_create(result_pool);
   lock_ctx->lock->path = apr_pstrdup(result_pool, path);
 

Modified: subversion/branches/reparentless/subversion/libsvn_repos/repos.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_repos/repos.c    Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_repos/repos.c    Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -1395,24 +1395,27 @@ fs_upgrade_notify(void *baton,
                   apr_pool_t *pool)
 {
   struct fs_upgrade_notify_baton_t *fs_baton = baton;
+  svn_repos_notify_t *notify;
 
-  svn_repos_notify_t *notify = svn_repos_notify_create(
-                                svn_repos_notify_mutex_acquired, pool);
   switch(action)
     {
       case svn_fs_upgrade_pack_revprops:
+        notify = svn_repos_notify_create(svn_repos_notify_pack_revprops, pool);
         notify->shard = number;
-        notify->action = svn_repos_notify_pack_revprops;
+        fs_baton->notify_func(fs_baton->notify_baton, notify, pool);
         break;
 
       case svn_fs_upgrade_cleanup_revprops:
+        notify = svn_repos_notify_create(svn_repos_notify_cleanup_revprops,
+                                         pool);
         notify->shard = number;
-        notify->action = svn_repos_notify_cleanup_revprops;
+        fs_baton->notify_func(fs_baton->notify_baton, notify, pool);
         break;
 
       case svn_fs_upgrade_format_bumped:
-        notify->revision = number;
-        notify->action = svn_repos_notify_format_bumped;
+        notify = svn_repos_notify_create(svn_repos_notify_format_bumped, pool);
+        notify->revision = (svn_revnum_t)number;
+        fs_baton->notify_func(fs_baton->notify_baton, notify, pool);
         break;
 
       default:
@@ -1420,8 +1423,6 @@ fs_upgrade_notify(void *baton,
         SVN_ERR_MALFUNCTION();
     }
 
-  fs_baton->notify_func(fs_baton->notify_baton, notify, pool);
-
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/reparentless/subversion/libsvn_subr/subst.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_subr/subst.c     Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_subr/subst.c     Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -1504,11 +1504,14 @@ stream_translated(svn_stream_t *stream,
                hi; hi = apr_hash_next(hi))
             {
               const void *key;
+              apr_ssize_t klen;
               void *val;
 
-              apr_hash_this(hi, &key, NULL, &val);
-              svn_hash_sets(copy, apr_pstrdup(result_pool, key),
-                            svn_string_dup(val, result_pool));
+              apr_hash_this(hi, &key, &klen, &val);
+              apr_hash_set(copy,
+                           apr_pstrmemdup(result_pool, key, klen),
+                           klen,
+                           svn_string_dup(val, result_pool));
             }
           svn_pool_destroy(subpool);
 

Modified: subversion/branches/reparentless/subversion/libsvn_wc/deprecated.c
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_wc/deprecated.c  Wed Sep 
23 08:35:39 2026        (r1938454)
+++ subversion/branches/reparentless/subversion/libsvn_wc/deprecated.c  Wed Sep 
23 08:38:47 2026        (r1938455)
@@ -3669,8 +3669,8 @@ svn_wc_add_repos_file2(const char *dst_p
             }
 
           svn_subst_eol_style_from_value(&eol_style, &eol_str,
-                                         svn_hash_gets(new_props,
-                                                       SVN_PROP_EOL_STYLE));
+                                         svn_prop_get_value(
+                                           new_props, SVN_PROP_EOL_STYLE));
 
           if (svn_subst_translation_required(eol_style, eol_str, keywords,
                                              FALSE, FALSE))

Reply via email to