This document: https://hackmd.io/@UPPMAX/git-large-tei-xml
xmllint
and integrate it with pre-commit hooksEnsure you have a recent version of Git as some of the options are new.
sparse-checkout
and partial clone (per-user narrow clones).gitignore
everything that does not need version controlgit config feature.manyFiles true
lets Git know it's dealing with a large repogit update-index --index-version 4
performs a simple pathname compression that reduces index size by 30%-50% on large repositoriesgit config --global core.preloadIndex true
preloads index in memory, speeds up git status and git diffgit config --global core.deltaBaseCacheLimit 512m
affects delta compression performancegit config --global core.fsync none
reduces I/O latency, safe for scratch/non-critical repos, would be suitable for local work before pushing to the central repogit config --global core.packedGitLimit 512m
the larger, the better, needs to fit in available RAMgit config --global core.packedGitWindowSize 64m
useful during compression/cloning/fetching, value may need tuning, large window sizes increases memory usagegit config --global core.untrackedCache true
useful for repos with many untracked/generated filesgit config status.showUntrackedFiles no
git config diff.renameLimit 0
git config core.fsmonitor true
git config gc.auto 0
), reason: auto garbage collection is too heavy in a shared environmentgit config pack.threads 1
sets the pack threads to 1Example of .gitconfig
(does not include all options above):
References: