summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/win32/posix.h1
-rw-r--r--src/win32/posix_w32.c3
-rw-r--r--tests/threads/diff.c8
3 files changed, 11 insertions, 1 deletions
diff --git a/src/win32/posix.h b/src/win32/posix.h
index 0ba05a16f..64769ecd3 100644
--- a/src/win32/posix.h
+++ b/src/win32/posix.h
@@ -15,6 +15,7 @@
#include "dir.h"
extern unsigned long git_win32__createfile_sharemode;
+extern int git_win32__retries;
typedef SOCKET GIT_SOCKET;
diff --git a/src/win32/posix_w32.c b/src/win32/posix_w32.c
index 874892eb6..bf132966d 100644
--- a/src/win32/posix_w32.c
+++ b/src/win32/posix_w32.c
@@ -37,6 +37,7 @@ typedef DWORD(WINAPI *PFGetFinalPathNameByHandleW)(HANDLE, LPWSTR, DWORD, DWORD)
unsigned long git_win32__createfile_sharemode =
FILE_SHARE_READ | FILE_SHARE_WRITE;
+int git_win32__retries = 10;
GIT_INLINE(void) set_errno(void)
{
@@ -162,7 +163,7 @@ GIT_INLINE(bool) last_error_retryable(void)
#define do_with_retries(fn, cleanup) \
do { \
int __tries, __ret; \
- for (__tries = 0; __tries < 10; __tries++) { \
+ for (__tries = 0; __tries < git_win32__retries; __tries++) { \
if (__tries && (__ret = (cleanup)) != 0) \
return __ret; \
if ((__ret = (fn)) != GIT_RETRY) \
diff --git a/tests/threads/diff.c b/tests/threads/diff.c
index c32811469..92fd7061b 100644
--- a/tests/threads/diff.c
+++ b/tests/threads/diff.c
@@ -19,12 +19,20 @@ static git_repository *_repo;
static git_tree *_a, *_b;
static git_atomic _counts[4];
static int _check_counts;
+static int _retries;
#define THREADS 20
+void test_threads_diff__initialize(void)
+{
+ _retries = git_win32__retries;
+ git_win32__retries = 1;
+}
+
void test_threads_diff__cleanup(void)
{
cl_git_sandbox_cleanup();
+ git_win32__retries = _retries;
}
static void setup_trees(void)