Commit ae6ba7f713804e1c04febee81a8f52ea0abf443b

nulltoken 2011-03-22T19:45:01

Fix gitfo_mv() behavior when running on Windows When the system temporary folder is located on a different volume than the working directory into which libgit2 is executing, MoveFileEx() requires an additional flag.

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/fileops.c b/src/fileops.c
index 237a16a..a884b40 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -263,7 +263,7 @@ int gitfo_mv(const char *from, const char *to)
 	 * file exists, the `rename` call fails. This is as
 	 * close as it gets with the Win32 API.
 	 */
-	return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) ? GIT_SUCCESS : GIT_EOSERR;
+	return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED) ? GIT_SUCCESS : GIT_EOSERR;
 #else
 	/* Don't even try this on Win32 */
 	if (!link(from, to)) {