Index: svn/subversion/libsvn_subr/io.c
===================================================================
--- svn/subversion/libsvn_subr/io.c	(revision 31464)
+++ svn/subversion/libsvn_subr/io.c	(working copy)
@@ -71,7 +71,21 @@
   retry loop cannot completely solve this problem either, but can
   help mitigate it.
 */
-#ifdef WIN32
+#if defined(WIN32) || defined(__CYGWIN__)
+
+#if defined(WIN32)
+#define WIN32_SHOULD_RETRY_ON_ERROR(err) \
+      (err == ERROR_ACCESS_DENIED        \
+    || err == ERROR_SHARING_VIOLATION    \
+    || err == ERROR_DIR_NOT_EMPTY)
+#elif defined(__CYGWIN__)
+#define WIN32_SHOULD_RETRY_ON_ERROR(err) \
+      (err == EACCES                     \
+    || err == EPERM                      \
+    || err == EBUSY                      \
+    || err == ENOTEMPTY)
+#endif
+
 #define WIN32_RETRY_LOOP(err, expr)                                        \
   do                                                                       \
     {                                                                      \
@@ -79,9 +93,7 @@
       int sleep_count = 1000;                                              \
       int retries;                                                         \
       for (retries = 0;                                                    \
-           retries < 100 && (os_err == ERROR_ACCESS_DENIED                 \
-                             || os_err == ERROR_SHARING_VIOLATION          \
-                             || os_err == ERROR_DIR_NOT_EMPTY);            \
+           retries < 100 && WIN32_SHOULD_RETRY_ON_ERROR(os_err);           \
            ++retries, os_err = APR_TO_OS_ERROR(err))                    \
         {                                                                  \
           apr_sleep(sleep_count);                                       \

