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 directories and files
when committing is slow.
I cannot move this repository out of the shared folder.
I tried to git add
specific files and directories,
but when I do git commit -m "something"
it still goes off onto
it's oddyssey through the directory tree.
Can I do commits that ignore the rest of the tree?
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
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.