Recupero pigro degli oggetti
Il clone parziale (--filter) consente a un clone di omettere alcuni oggetti dal trasferimento iniziale, recuperandoli pigrame quando necessario. Il promisor remote mantiene la sua promessa di fornirli su richiesta.
Spec di filtro
git clone --filter=blob:none url
git clone --filter=blob:limit=1m url
git clone --filter=tree:0 url
git clone --filter=sparse:oid=<oid> url
Come funziona il fetching
git rev-list --objects --missing=allow-promisor HEAD | \
awk '{print $1}' | git cat-file --batch-check
git fetch --refetch
Ispezione
git config --get-all remote.origin.partialclonefilter
git rev-list --missing=print HEAD | head
git config --get extensions.partialClone
Caveat
- Operazioni come
git log -psu tutta la storia possono attivare fetch massicci on-demand. - L'uso disconnesso e limitato.
- Il server deve supportare il clone parziale (Git 2.22+).
Configurazione server
[uploadpack]
allowFilter = true
allowAnySHA1InWant = true
Combinare con sparse
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
git checkout main
Errori comuni
Usare --filter=tree:0 per lavoro di sviluppo.