Le langage des filtres
Les filtres de partial clone sont spécifiés par de courtes chaînes DSL. Chaque filtre exclut les objets correspondant à la spec du transfert.
Filtres courants
blob:none— omettre tous les blobs.blob:limit=<n>[kmg]— omettre blobs plus grands que le seuil.tree:<depth>— omettre trees plus profonds que depth.sparse:oid=<blob>.object:type=tag(Git 2.36+).combine:F1+F2+....
Exemples
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
Choisir un filtre
| Cas d'usage | Filtre |
|---|---|
| Développement quotidien sur sous-ensemble | blob:none + sparse-checkout |
| CI pour app spécifique | blob:none + sparse-checkout cône |
| Analyse d'historique seule | tree:0 |
| Gros médias séparés | blob:limit=10m |
| Déploiement release lecture seule | blob:none + checkout un tag |
Filtre sparse
blob_oid=$(git hash-object .sparse)
git clone --filter=sparse:oid=$blob_oid url
Combinaison
git clone --filter=combine:blob%3Anone+tree%3A0 url
Vérifier
git config --get remote.origin.partialclonefilter
git rev-list --missing=print HEAD | wc -l
du -sh .git/objects
Erreurs courantes
Utiliser tree:0 pour développement actif.