I have a test repository that I put under Git. Most files are quite small, but there are a lot of them, and just Git operations, such as adding and status, take tens of minutes. What are my options for controlling versions and getting reasonable performance? Should I try to use submodules or should I avoid DVCSes?
Git operations are type addand statusrequire statevery file in the file system (to detect changes). Either you have a really huge number of files (say, tens or hundreds of thousands of files), or you have a file system with a rather slow operation stat.
add
status
stat
, , , " " , Git stat . , Git , . git add, Git . , git config core.ignoreStat true, - git reset --hard HEAD.
git add
git config core.ignoreStat true
git reset --hard HEAD
, " " . , git , . , , , - , - . , , , Subversion, .
EDIT: , , NFS, . , . core.preloadindex.
:
core.preloadindexgit diffgit diff git, , NFS, , , -. true, git , IO.
core.preloadindex
git diff
git diff git, , NFS, , , -. true, git , IO.
EDIT2: 6 . , - .