I have a big repository in a shared folder. I use git from within a VM on that folder. Everything works nice, but the repository is big and git\'s searching through all director
As an alternative to changing your natural workflow, you could work on a clone that lives in a directory that's private to the VM. Then you push to the repository on the shared folder (which can probably be a bare repository) only when you want to publish your work to the outside environment.
git commit <specific-files-and-directories>
maybe? But I don't like the idea of sharing repository on the filesystem. Git is the tool for sharing repository content already.
You can try enabling the preloadindex option, described in the git-config man page:
core.preloadindex
Enable parallel index preload for operations like git diff
This can speed up operations like git diff and git status especially on filesystems like NFS that have weak caching semantics and thus relatively high IO latencies. With this set to true, git will do the index comparison to the filesystem data in parallel, allowing overlapping IO's.
To turn this on use:
git config core.preloadindex true