Re: trouble on windows network share
- From
Jeff King <peff@peff.net>
- Date
- Apr 4, 2013, 15:51 UTC
- Message-ID
- <20130404155112.GA11622@sigill.intra.peff.net>
- In-Reply-To
- <871B6C10EBEFE342A772D1159D1320853F63D205@umechphj.easf.csd.disa.mil>
On Thu, Apr 04, 2013 at 03:01:36PM +0000, Pyeron, Jason J CTR (US) wrote:
Show 9 quoted lines
> I am having trouble when the .git folder is on a network share, given the below where should I start on my debugging? > [...] > jason.pyeron@localhost //server/share/dir/subdir/test > $ git add test.txt > > jason.pyeron@localhost //server/share/dir/subdir/test > $ git commit -m test > error: unable to find 8b7323820a21ebd1360e27262b3c61283c266c23 > fatal: 8b7323820a21ebd1360e27262b3c61283c266c23 is not a valid object
Hmm. That message probably comes from:
static int sha1_loose_object_info(const unsigned char *sha1, unsigned long *sizep)
{
[...]
map = map_sha1_file(sha1, &mapsize);
if (!map)
return error("unable to find %s", sha1_to_hex(sha1));So we have found the object and know that it is loose, but then mmap-ing it fails. My guess is that your system does not support mmap across network shares (whether this is an OS issue or a cygwin limitation, I don't know). You could confirm it by running your "git commit" under strace, which I expect would show mmap returning -ENODEV or similar.
You can work around it by compiling git with NO_MMAP=1.
You might also try msysgit rather than cygwin, which seems to have its own win32 mmap compatibility layer.
Finally, I suspect we could include our emulate-mmap-with-pread compatibility wrapper all the time, and drop back to it automatically at run-time when we see ENODEV or a similar error return from mmap.
-Peff