From: Johannes Sixt <johannes.sixt@xxxxxxxxxx> Hannes, You introduced "minoffset" in 861429a7c37c7. Here is your original message: ''' An earlier patch has implemented getcwd() so that it converts the drive letter into the POSIX-like path that is used internally by MinGW (C:\foo => /c/foo), but this style does not work outside the MinGW shell. It is better to just convert the backslashes to forward slashes and handle the drive letter explicitly. ''' Dmitry replaced setenv() with set_git_dir in 855f254b2b5b08. Here is his original message: ''' git clone was failing with 'invalid object name HEAD' if ran from cmd.exe directly environment.c caches results of many getenv calls. Under MinGW setenv(X) invalidates all previous values returned by getenv(X) so cached values become dangling pointers. Replaced all setenv(GIT_DIR, ...) with set_git_dir Signed-off-by: Dmitry Kakurin <Dmitry.Kakurin@xxxxxxxxx> ''' Signed-off-by: Steffen Prohaska <prohaska@xxxxxx> --- setup.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/setup.c b/setup.c index 6cf9094..1fd30c4 100644 --- a/setup.c +++ b/setup.c @@ -381,6 +381,7 @@ const char *setup_git_directory_gently(int *nongit_ok) const char *gitdirenv; const char *gitfile_dir; int len, offset, ceil_offset; + int minoffset = 0; /* * Let's assume that we are in a git repository. @@ -431,6 +432,8 @@ const char *setup_git_directory_gently(int *nongit_ok) if (!getcwd(cwd, sizeof(cwd)-1)) die("Unable to read current working directory"); + if (has_dos_drive_prefix(cwd)) + minoffset = 2; ceil_offset = longest_ancestor_length(cwd, env_ceiling_dirs); if (ceil_offset < 0 && has_dos_drive_prefix(cwd)) @@ -461,11 +464,11 @@ const char *setup_git_directory_gently(int *nongit_ok) inside_git_dir = 1; if (!work_tree_env) inside_work_tree = 0; - setenv(GIT_DIR_ENVIRONMENT, ".", 1); + set_git_dir("."); check_repository_format_gently(nongit_ok); return NULL; } - while (--offset > ceil_offset && cwd[offset] != '/'); + while (offset > minoffset && --offset > ceil_offset && cwd[offset] != '/'); if (offset <= ceil_offset) { if (nongit_ok) { if (chdir(cwd)) -- 1.5.6.1.255.g32571 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html