On Thu, Apr 04, 2013 at 03:01:36PM +0000, Pyeron, Jason J CTR (US) wrote:

> 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 
          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.

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to