Re: Cygwin can't handle huge packfiles?
From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:42:23
Hi, On Mon, 3 Apr 2006, Linus Torvalds wrote:
On Mon, 3 Apr 2006, Johannes Schindelin wrote:quoted
The problem is not mmap() on cygwin, but that a fork() has to jump through loops to reinstall the open file descriptors on cygwin. If the corresponding file was deleted, that fails. Therefore, we work around that on cygwin by actually reading the file into memory, *not* mmap()ing it.Well, we could actually do a _real_ mmap on pack-files. The pack-files are much better mmap'ed - there we don't _want_ them to be removed while we're using them. It was the index file etc that was problematic. Maybe the cygwin fake mmap should be triggered only for the index (and possibly the individual objects - if only because there doing a malloc+read may actually be faster).
I hit the problem *only* with "git-whatchanged -p". Which means that the upcoming we-no-longer-write-temp-files-for-diff version should make that gitfakemmap() hack obsolete. (I have not checked whether there are other places where a file is mmap()ed and then used by a fork()ed process.) Ciao, Dscho