Il linguaggio dei filtri
I filtri di clone parziale sono specificati da brevi stringhe DSL.
Filtri comuni
blob:none— omette tutti i blob.blob:limit=<n>[kmg].tree:<depth>.sparse:oid=<blob>.object:type=tag(Git 2.36+).combine:F1+F2+....
Esempi
git clone --filter=blob:none url big-no-blobs
git clone --filter=blob:limit=10m url big-small-blobs
git clone --filter=tree:0 --no-checkout url history-only
git clone --filter=combine:blob:none+tree:0 url metadata-only
Scegliere un filtro
| Caso d'uso | Filtro |
|---|---|
| Sviluppo quotidiano su un sottoinsieme | blob:none + sparse-checkout |
| CI per app specifica | blob:none + sparse-checkout cone |
| Solo analisi della storia | tree:0 |
| File media grandi separati | blob:limit=10m |
| Deploy di release read-only | blob:none + checkout di un tag |
Filtro sparse
blob_oid=$(git hash-object .sparse)
git clone --filter=sparse:oid=$blob_oid url
Combinare
git clone --filter=combine:blob%3Anone+tree%3A0 url
Verifica
git config --get remote.origin.partialclonefilter
git rev-list --missing=print HEAD | wc -l
du -sh .git/objects
Errori comuni
Usare tree:0 per sviluppo attivo.