Par Anonyme (non vérifié) , 29 avril 2026

Fetching paresseux d'objets

Partial clone (--filter) permet à un clone d'omettre certains objets du transfert initial, les fetchant paresseusement quand nécessaires. Le remote promisor tient sa promesse de les fournir à la demande.

Spécifications de filtre

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

Comment fonctionne le fetching

git rev-list --objects --missing=allow-promisor HEAD | \
  awk '{print $1}' | git cat-file --batch-check
git fetch --refetch

Inspection

git config --get-all remote.origin.partialclonefilter
git rev-list --missing=print HEAD | head
git config --get extensions.partialClone

Avertissements

  • Des opérations comme git log -p sur tout l'historique peuvent déclencher des fetches massifs à la demande.
  • L'usage déconnecté est limité.
  • Le serveur doit supporter partial clone (Git 2.22+ ; uploadpack.allowFilter=true).

Config serveur

[uploadpack]
allowFilter = true
allowAnySHA1InWant = true

Combiner avec 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

Erreurs courantes

Utiliser --filter=tree:0 pour le travail de développement.