Am 06.11.18 um 15:53 schrieb Johannes Schindelin via GitGitGadget:
From: Johannes Schindelin <johannes.schindelin@xxxxxx>
On Windows, an absolute POSIX path needs to be turned into a Windows
one.
If I were picky, I would say that in a pure Windows application there
cannot be POSIX paths to begin with.
Even if a path looks like a POSIX paths, i.e. it starts with a directory
separator, but not with drive-letter-colon, it still has a particular
meaning, namely (as far as I know) that the path is anchored at the root
of the drive of the current working directory.
If a user specifies such a path on Windows, and it must undergo
expand_user_path(), then that is a user error, or the user knows what
they are doing.
I think it is wrong to interpret such a path as relative to some random
other directory, like this patch seems to do.
Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
---
path.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/path.c b/path.c
index 34f0f98349..a72abf0e1f 100644
--- a/path.c
+++ b/path.c
@@ -11,6 +11,7 @@
#include "path.h"
#include "packfile.h"
#include "object-store.h"
+#include "exec-cmd.h"
static int get_st_mode_bits(const char *path, int *mode)
{
@@ -709,6 +710,10 @@ char *expand_user_path(const char *path, int real_home)
if (path == NULL)
goto return_null;
+#ifdef __MINGW32__
+ if (path[0] == '/')
+ return system_path(path + 1);
+#endif
if (path[0] == '~') {
const char *first_slash = strchrnul(path, '/');
const char *username = path + 1;