# [MinGW PATCH] 'git clone git://...' was failing inside git-read-tree with 'fatal: Not a valid object name HEAD'

2 messages from 2007-08-04 to 2007-08-04. Participants: Dmitry Kakurin, Johannes Schindelin.
Thread: https://gitlist.dev/t/9380

## Dmitry Kakurin, 2007-08-04 11:38

Subject: [MinGW PATCH] 'git clone git://...' was failing inside git-read-tree with 'fatal: Not a valid object name HEAD'
Message-ID: <F7C35F51E58245FDA1EE1C2F2B4EB204@ntdev.corp.microsoft.com>
URL: https://gitlist.dev/e/F7C35F51E58245FDA1EE1C2F2B4EB204%40ntdev.corp.microsoft.com

```
NOTE: This fix uses is_absolute_path from msysGit-0.3.exe that is not in mingw.git yet.

Correctly test for absolute path

This fix (while correct) actually avoids another nasty bug that must be fixed later:
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.

Signed-off-by: Dmitry Kakurin <Dmitry.Kakurin@gmail.com>
---
 setup.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/setup.c b/setup.c
index e921013..47cd790 100644
--- a/setup.c
+++ b/setup.c
@@ -332,7 +332,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
   * In case there is a work tree we may change the directory,
   * therefore make GIT_DIR an absolute path.
   */
- if (gitdirenv[0] != '/') {
+ if ( !is_absolute_path( gitdirenv ) ) {
   setenv(GIT_DIR_ENVIRONMENT, gitdir, 1);
   gitdirenv = getenv(GIT_DIR_ENVIRONMENT);
   if (!gitdirenv)
-- 
mingw.v1.5.2.4.884.gad85-dirty

```

## Johannes Schindelin, 2007-08-04 14:16

Subject: Re: [MinGW PATCH] 'git clone git://...' was failing inside git-read-tree with 'fatal: Not a valid object name HEAD'
Message-ID: <Pine.LNX.4.64.0708041515251.14781@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0708041515251.14781%40racer.site
In-Reply-To: <F7C35F51E58245FDA1EE1C2F2B4EB204@ntdev.corp.microsoft.com>

```
Hi,

On Sat, 4 Aug 2007, Dmitry Kakurin wrote:

> NOTE: This fix uses is_absolute_path from msysGit-0.3.exe that is not in
> mingw.git yet.

Ooops.  I think I did not even check that into msysgit.git.  Thanks.

> - if (gitdirenv[0] != '/') {
> + if ( !is_absolute_path( gitdirenv ) ) {

Our coding style does not want them extra spaces...

+ if (!is_absolute_path(gitdirenv)) {

is the way we prefer it.

Ciao,
Dscho

```
