* Git issue. [not found] <1032375163.9174650.1448234447549.JavaMail.zimbra@comcast.net> @ 2015-11-22 23:30 ` boulderfans 2015-12-03 20:42 ` Adam Dinwoodie 0 siblings, 1 reply; 4+ messages in thread From: boulderfans @ 2015-11-22 23:30 UTC (permalink / raw) To: cygwin 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Git issue. 2015-11-22 23:30 ` Git issue boulderfans @ 2015-12-03 20:42 ` Adam Dinwoodie 2015-12-04 0:07 ` Matt Smith 0 siblings, 1 reply; 4+ messages in thread From: Adam Dinwoodie @ 2015-12-03 20:42 UTC (permalink / raw) To: cygwin On Sun, Nov 22, 2015 at 11:30:27PM +0000, boulderfans wrote: > [/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. Hi Matt, Cygwin applications, including applications you've compiled yourself using the Cygwin toolchain, normally expect Cygwin's Linux-like paths, e.g. /cygdrive/d/projects/git-git. Attempting to use Windows paths simply isn't meant to work. You can convert from a Windows path to the equivalent Cygwin path using the cygpath utility, e.g.: git --git-dir="$(cygpath 'd:/projects/git-git/.git')" config alias.foo ls-files Adam -- 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Git issue. 2015-12-03 20:42 ` Adam Dinwoodie @ 2015-12-04 0:07 ` Matt Smith 2015-12-04 17:04 ` Adam Dinwoodie 0 siblings, 1 reply; 4+ messages in thread From: Matt Smith @ 2015-12-04 0:07 UTC (permalink / raw) To: cygwin Ok. I wasn't sure as the behavior changed. It worked in 1.9.5 and then stopped working when I moved to 2.5.x. I'm not sure if it matters to you, but doing some bisecting it looks like the behavior changed between 2.2.0 and 2.3.0: ------------------------- [/cygdrive/d/projects] $ git --version git version 2.2.0.dirty [/cygdrive/d/projects] $ git --git-dir=d:/projects/git-git/.git config alias.foo ls-files [/cygdrive/d/projects] $ ------------------------- [/cygdrive/d/projects] $ git --version git version 2.3.0.dirty [/cygdrive/d/projects] $ git --git-dir=d:/projects/git-git/.git config alias.foo ls-files error: could not lock config file d:/projects/git-git/.git/config: No such file or directory ---------------------------- We'll adjust accordingly. Thanks! -Matt ----- Original Message ----- From: "Adam Dinwoodie" <adam@dinwoodie.org> To: cygwin@cygwin.com Sent: Thursday, December 3, 2015 1:42:21 PM Subject: Re: Git issue. On Sun, Nov 22, 2015 at 11:30:27PM +0000, boulderfans wrote: > [/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. Hi Matt, Cygwin applications, including applications you've compiled yourself using the Cygwin toolchain, normally expect Cygwin's Linux-like paths, e.g. /cygdrive/d/projects/git-git. Attempting to use Windows paths simply isn't meant to work. You can convert from a Windows path to the equivalent Cygwin path using the cygpath utility, e.g.: git --git-dir="$(cygpath 'd:/projects/git-git/.git')" config alias.foo ls-files Adam -- 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 -- 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Git issue. 2015-12-04 0:07 ` Matt Smith @ 2015-12-04 17:04 ` Adam Dinwoodie 0 siblings, 0 replies; 4+ messages in thread From: Adam Dinwoodie @ 2015-12-04 17:04 UTC (permalink / raw) To: cygwin On Fri, Dec 04, 2015 at 12:07:19AM +0000, Matt Smith wrote: > > On Sun, Nov 22, 2015 at 11:30:27PM +0000, boulderfans wrote: > > > [/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. > > > > Cygwin applications, including applications you've compiled yourself > > using the Cygwin toolchain, normally expect Cygwin's Linux-like paths, > > e.g. /cygdrive/d/projects/git-git. Attempting to use Windows paths > > simply isn't meant to work. > > > > You can convert from a Windows path to the equivalent Cygwin path using > > the cygpath utility, e.g.: > > > > git --git-dir="$(cygpath 'd:/projects/git-git/.git')" config alias.foo ls-files > > Ok. I wasn't sure as the behavior changed. It worked in 1.9.5 and > then stopped working when I moved to 2.5.x. I'm not sure if it > matters to you, but doing some bisecting it looks like the behavior > changed between 2.2.0 and 2.3.0: Please don't top post on this list, and please don't quote raw email addresses. See https://cygwin.com/acronyms/#TOFU for a brief note on the whys. Out of curiosity, I wrote a short bisect script to test this behaviour; the behaviour changed in v2.2.0-rc0-1-gfa137f6, which changed handling of lock files; it looks like it broke your scenario as a side-effect. However, as I say, this isn't something that was ever supposed to work; that it did in the past was coincidence rather than design, so I don't think you'll have any luck getting the old behaviour back. Using cygpath to convert between Windows and Cygwin paths, and otherwise sticking to Linux/Cygwin-style paths for Cygwin applications and Windows paths for Windows ones, is the correct way to go about this. -- 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 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-12-04 17:04 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1032375163.9174650.1448234447549.JavaMail.zimbra@comcast.net> 2015-11-22 23:30 ` Git issue boulderfans 2015-12-03 20:42 ` Adam Dinwoodie 2015-12-04 0:07 ` Matt Smith 2015-12-04 17:04 ` Adam Dinwoodie
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).