Realta dei monorepo
Un monorepo contiene molti progetti in un solo repository — refactor migliori, modifiche atomiche tra progetti, un solo grafo di dipendenze. Il costo: la scala.
Lo stack di performance
- Sparse checkout (modalita cone).
- Sparse index (Git 2.37+).
- Partial clone.
- Commit-graph + Bloom filter.
- Fsmonitor.
- Background maintenance.
Setup one-shot
git clone --filter=blob:none --sparse https://example.com/big.git
cd big
git sparse-checkout init --cone --sparse-index
git sparse-checkout set apps/web libs/ui
git config feature.manyFiles true
git config core.fsmonitor true
git config core.untrackedCache true
git maintenance start
CODEOWNERS e protezione branch
I monorepo si basano su ownership per directory. Combinare i file CODEOWNERS di GitHub/GitLab con review obbligatorie.
CI consapevole dei path
changed=$(git diff --name-only origin/main..HEAD | cut -d/ -f1 | sort -u)
for pkg in $changed; do
[ -f "$pkg/Makefile" ] && make -C "$pkg" test
done
Strato di tooling
Build orchestrator (Bazel, Buck2, Pants, Nx, Turborepo) consumano il diff e rieseguono solo i target affetti. Scalar di Microsoft (ora incluso in Git) raggruppa molte impostazioni.
Errori comuni
Trattare un monorepo come un piccolo repo e saltare le ottimizzazioni.