I've run into a problem when using the --git-dir option in git. It appears to 
have been introduced since git 2.4.x.
Here's an example of the problem using a locally built version (2.6.3) of git 
with some annotated error output:

[/cygdrive/d/projects]
$ git --version
git version 2.6.3-cyg

[/cygdrive/d/projects]
$ git --git-dir=d:/projects/git-git/.git config alias.foo ls-files
error: Unable to open tempfile: 
/cygdrive/d/projects/d:/projects/git-git/.git/config.lock
error: could not lock config file d:/projects/git-git/.git/config: No such file 
or directory

The problem is that the code that is checking the --git-dir option doesn't work 
properly if you use a DOS drive:/path specification. I tracked it down to the 
fact that has_dos_drive_prefix() is not implemented and always returns false.  
From git-compat-util.h:

#ifndef has_dos_drive_prefix 
static inline int git_has_dos_drive_prefix(const char *path) 
{ 
return 0; 
} 
#define has_dos_drive_prefix git_has_dos_drive_prefix 
#endif 

It looks like there is an implementation of the function for a MinGW build 
(compat/mingw.c) but not for the Cygwin build. There were changes in this area 
about a year ago, but I'm not exactly sure what changed to cause this problem 
to appear.

Thanks. 

-Matt 

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply via email to