LFS non e l'unica risposta
Git LFS risolve un problema ma ne introduce altri: infrastruttura extra, costi di hosting, e una dipendenza soft da un server.
Object storage con manifesti
# assets.json
{
"logo.psd": {
"sha256": "8a1b...",
"url": "s3://my-bucket/assets/8a1b.psd"
}
}
aws s3 cp s3://my-bucket/assets/8a1b.psd ./logo.psd
git-annex
git annex init
git annex add big-file.psd
git commit -m "Add big-file via annex"
git annex copy --to=cloud-remote
DVC per dataset ML
dvc init
dvc add data/raw
git add data/raw.dvc .gitignore
git commit -m "Track raw dataset with DVC"
dvc push
Submodule che puntano a un repo binario
git submodule add https://example.com/assets-repo assets
git commit -m "Add assets submodule"
Generazione al build time
npm run build:assets
# .gitignore: dist/
Sparse checkout per cloni parziali
git clone --filter=blob:none --sparse <url>
cd repo
git sparse-checkout set src docs
Scegliere
- Pochi binari, aggiornamenti occasionali → object storage manifest.
- Molti binari, storia profonda → git-annex o LFS.
- Dataset e modelli ML → DVC.
- Contenuto generato → build pipeline.