Re: Commit cce8d6fdb introduces file t/t5100/nul, git tree is now incompatible with Cygwin (and probably Windows)
- From
Eric Blake <ebb9@byu.net>
- Date
- May 27, 2008, 13:26 UTC
- Message-ID
- <loom.20080527T131535-95@post.gmane.org>
- In-Reply-To
- <alpine.DEB.1.00.0805261521130.30431@racer>
Johannes Schindelin <Johannes.Schindelin <at> gmx.de> writes:
Show 10 quoted lines
> On Mon, 26 May 2008, Mark Levedahl wrote: > > > 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