Re: Commit cce8d6fdb introduces file t/t5100/nul, git tree is now incompatible with Cygwin (and probably Windows)
From: Eric Blake <hidden>
Date: 2016-06-15 22:44:39
Johannes Schindelin <Johannes.Schindelin <at> gmx.de> writes:
On Mon, 26 May 2008, Mark Levedahl wrote:quoted
Beginning with the referenced commit, the git project cannot be checked out on Cygwin (and I assume cannot be checked out on Windows using msysgit, though I have not verified this) as this commit introduces the file "t/5100/nul." On Windows, the file name "nul" is reserved, regardless of path, and cannot be created or deleted. It serves essentially the same function as /dev/null.Even when referencing the full (or a relative) path? That's bad!
Yes. And it is not limited to the case-insensitive name NUL; it also covers names like "aux". See the very last paragraph in this section: http://www.gnu.org/software/autoconf/manual/html_node/File-System-Conventions.html#File-System-Conventions This will affect all versions of MSYS. However, with cygwin 1.5.x, you can use the workaround of a managed mount which intentionally (and transparently) munges such invalid file names so that you can appear to name a file "nul" in spite of Windows (at the expense of making an already short PATH_MAX of 256 even shorter). And if you are willing to experiment with the (still-in-development) cygwin 1.7.0, this munging is done without even needing a managed mount and without any penalty to the larger PATH_MAX of 4k. At any rate, I agree with your patch to rename the file, as well as with your aversion to rewriting history just so that a checkout on MSYS or a non-managed mount on older cygwin can do a 'git bisect' that hits the small window of commits with an invalid tree. -- Eric Blake