--- subversion/libsvn_subr/io.c.orig	2020-03-25 05:04:28.000000000 -0400
+++ subversion/libsvn_subr/io.c	2021-08-24 15:42:15.000000000 -0400
@@ -216,7 +216,7 @@
                 const char *path_apr,
                 apr_pool_t *pool)
 {
-#if defined(WIN32) || defined(DARWIN)
+#if defined(WIN32)
   *path_utf8 = path_apr;
   return SVN_NO_ERROR;
 #else
@@ -299,7 +299,7 @@
                    const char *parent,
                    apr_pool_t *pool)
 {
-#if defined(WIN32) || defined(DARWIN)
+#if defined(WIN32)
   *name_p = apr_pstrdup(pool, name);
   return SVN_NO_ERROR;
 #else
--- subversion/libsvn_subr/path.c.orig	2016-01-10 13:35:21.000000000 -0500
+++ subversion/libsvn_subr/path.c	2021-08-24 15:42:15.000000000 -0400
@@ -40,6 +40,9 @@
 
 #include "dirent_uri.h"
 
+#if defined(DARWIN)
+#include <CoreFoundation/CoreFoundation.h>
+#endif /* DARWIN */
 
 /* The canonical empty path.  Can this be changed?  Well, change the empty
    test below and the path library will work, not so sure about the fs/wc
@@ -1111,7 +1114,7 @@
 }
 
 
-#if !defined(WIN32) && !defined(DARWIN)
+#if !defined(WIN32)
 /** Get APR's internal path encoding. */
 static svn_error_t *
 get_path_encoding(svn_boolean_t *path_is_utf8, apr_pool_t *pool)
@@ -1138,7 +1141,7 @@
                            const char *path_utf8,
                            apr_pool_t *pool)
 {
-#if !defined(WIN32) && !defined(DARWIN)
+#if !defined(WIN32)
   svn_boolean_t path_is_utf8;
   SVN_ERR(get_path_encoding(&path_is_utf8, pool));
   if (path_is_utf8)
@@ -1147,7 +1150,7 @@
       *path_apr = apr_pstrdup(pool, path_utf8);
       return SVN_NO_ERROR;
     }
-#if !defined(WIN32) && !defined(DARWIN)
+#if !defined(WIN32)
   else
     return svn_utf_cstring_from_utf8(path_apr, path_utf8, pool);
 #endif
@@ -1159,18 +1162,38 @@
                          const char *path_apr,
                          apr_pool_t *pool)
 {
-#if !defined(WIN32) && !defined(DARWIN)
+#if defined(DARWIN)
+  /*
+    Special treatment for Mac OS X to support UTF-8 MAC encodings.
+    Convert any decomposed unicode characters into precomposed ones.
+    This will solve the problem that the 'svn status' command sometimes
+    cannot recognize the same file if it contains composed characters,
+    like Umlaut in some European languages.
+  */
+  CFMutableStringRef cfmsr = CFStringCreateMutable(NULL, 0);
+  CFStringAppendCString(cfmsr, path_apr, kCFStringEncodingUTF8);
+  CFStringNormalize(cfmsr, kCFStringNormalizationFormC);
+  CFIndex path_buff_size = 1 + CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfmsr), kCFStringEncodingUTF8);
+  path_apr = apr_palloc(pool, path_buff_size);
+  CFStringGetCString(cfmsr, path_apr, path_buff_size, kCFStringEncodingUTF8);
+  CFRelease(cfmsr);
+  *path_utf8 = path_apr;
+  return SVN_NO_ERROR;
+#else
+  /* Use the default method on any other OS */
+ #if !defined(WIN32)
   svn_boolean_t path_is_utf8;
   SVN_ERR(get_path_encoding(&path_is_utf8, pool));
   if (path_is_utf8)
-#endif
+ #endif
     {
       *path_utf8 = apr_pstrdup(pool, path_apr);
       return SVN_NO_ERROR;
     }
-#if !defined(WIN32) && !defined(DARWIN)
+ #if !defined(WIN32)
   else
     return svn_utf_cstring_to_utf8(path_utf8, path_apr, pool);
+ #endif
 #endif
 }
 
--- subversion/svn/proplist-cmd.c.orig	2021-08-24 15:41:59.000000000 -0400
+++ subversion/svn/proplist-cmd.c	2021-08-24 15:42:15.000000000 -0400
@@ -98,6 +98,11 @@
   else
     name_local = path;
 
+#if defined(DARWIN)
+  if (! is_url)
+    SVN_ERR(svn_path_cstring_to_utf8(&name_local, name_local, pool));
+#endif
+
   sb = NULL;
 
 
@@ -137,6 +142,11 @@
   else
     name_local = path;
 
+#if defined(DARWIN)
+  if (! is_url)
+    SVN_ERR(svn_path_cstring_to_utf8(&name_local, name_local, pool));
+#endif
+
   if (inherited_props)
     {
       int i;
--- subversion/svn/status-cmd.c.orig	2015-04-10 03:58:19.000000000 -0400
+++ subversion/svn/status-cmd.c	2021-08-24 15:42:15.000000000 -0400
@@ -114,6 +114,10 @@
 {
   svn_stringbuf_t *sb = svn_stringbuf_create_empty(pool);
 
+#if defined(DARWIN)
+  SVN_ERR(svn_path_cstring_to_utf8(&target, target, pool));
+#endif
+
   svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "target",
                         "path", target, SVN_VA_NULL);
 
